在 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' 关系,那么这两个事物就是文件和人。
我正在尝试了解 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' 关系,那么这两个事物就是文件和人。