引用RDF / XML中的类

时间:2018-04-07 22:01:35

标签: xml reference rdf rdf-xml

我正在尝试理解RDF / XML基础知识。我有一个问题,包括数据引用。

举一个简单的例子,让我们考虑一下Person和Document之间的关系。

在关系数据模型中,这将是一个简单的一对多关系(Person可以有很多文档,但Document只能属于一个Person)。所以这可以通过在文档表中使用 person_id 来解决。

但是我如何在RDF / XML中实现这样的目标呢?

我使用所有属性定义我的<namespace:Person rdf:about="http://www.foo.com">,我也有<namespace:Document rdf:about="http://www.bar.com">,但是说文档属于id = x的人的正确方法是什么?

1 个答案:

答案 0 :(得分:4)

RDF是一个使用三元组(a.k.a。RDF 语句)来表达数据的模型。每个语句都有一个主语,一个谓词和一个对象。通常,谓词表达主语和宾语之间的关系。这些语句的集合可以被认为是图形(主题和对象作为顶点,谓词作为边缘)。

因此,在您的文档和人员示例中,首先让我们建立 关系文档和人员的关系。为了举例,我们假设你想表达一个文件有作者,谁是一个人。

如果我们将此应用于特定文档ex:d1和特定人ex:p1,我们只需编写以下三元组来表达关系:

ex:d1 a ex:Document;
      ex:hasAuthor ex:p1 .
ex:p1 a ex:Person .

以上是Turtle语法,RDF更易于读/写语法。有关详细信息,请参阅RDF Primer

在RDF / XML语法中,相同的数据看起来像这样:

<ex:Document rdf:about="http://example.org/d1">
   <ex:hasAuthor rdf:resource="http://example.org/p1"/>
</ex:Document>
<ex:Person rdf:about="http://example.org/p1"/>

但是,就像我在评论中提到的那样:尝试理解RDF建模(考虑三元组和图形)比尝试理解如何编写RDF / XML更有效。

回到示例:上面显示了如何建模特定文档与特定人之间的关系。如果您希望表达更一般的信息,即文档和人员是可通过作者关系相关的类,那么您可以使用RDF模式词汇表。您可以表达如下:

ex:Document a rdfs:Class .
ex:Person a rdfs:Class .
ex:hasAuthor a rdf:Property ;
             rdfs:domain ex:Document ;
             rdfs:range ex:Person .

请注意,RDF Schema与关系模式不同!关系模式的目的是规定结构并允许数据验证。 RDF词汇表(或本体)用于描述世界。以上所说的是文档和人在我们的世界中存在,如果两件事之间存在着“作者 - 关系”,那么这两件事就是文件和人。