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