2

我正在尝试了解 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 的人的正确说法是什么?

4

1 回答 1

4

RDF 是一种使用三元组(又名 RDF语句)来表达数据的模型。每个陈述都有一个主语、一个谓语和一个宾语。通常,谓词表示主语和宾语之间的关系。这些语句的集合可以被认为是一个(主语和宾语作为顶点,谓词作为边)。

因此,在您的 Documents 和 Persons 示例中,让我们首先确定Documents和 Persons 之间的关系。例如,假设您希望表示 Document 有一个author,他是一个 Person。

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

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

顺便说一下,上面是 Turtle 语法,一种更容易读/写的 RDF 语法。有关详细信息,请参阅RDF 入门

在 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 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 词汇表(或本体)用于描述世界。以上所说的是我们的世界中存在文件和人,如果两个事物之间存在“作者”关系,那么这两个事物就是文件和人。

于 2018-04-08T00:18:45.263 回答