在 RDF/XML 中引用 类

Referencing classes in RDF/XML

我正在尝试了解 RDF/XML 基础知识。我在理解数据引用时遇到问题。

举个简单的例子,考虑Person和Document的关系

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

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

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

RDF是一种使用triples(a.k.a.RDFstatements)来表达数据的模型。每个语句都有一个主语、一个谓语和一个宾语。通常,谓语表示主语和宾语之间的关系。可以将此类语句的集合视为 (主语和宾语作为顶点,谓语作为边)。

因此,在您的文档和人员示例中,让我们首先建立文档和人员之间的什么 关系。举个例子,假设您希望表达一个文档有一个 author,他是一个人。

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

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

以上是 Turtle 语法,一种更容易 read/write 的 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 更有效。

回到示例:上面显示了如何为 specific 文档和 specific 人之间的关系建模。如果希望表达"documents and persons are classes that can be related through an author-relation"更一般的信息,可以使用RDF Schema词汇表。你可以这样表达:

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

请注意,RDF 模式与关系模式不同!关系模式的目的是规定结构并允许数据验证。 RDF 词汇表(或 ontology)用于描述 世界。综上所述,我们的世界存在文件和人,如果两个事物之间存在 'author' 关系,那么这两个事物就是文件和人。