rdf:resource和rdfs:Resource有什么区别?

时间:2019-07-07 17:07:00

标签: rdf semantic-web rdfs rdf-xml

在RDF 1.1 XML语法文档中, rdf:resource 在定义Empty Property Elements时用作简化形式:

  

当RDF图中的谓词弧指向没有其他谓词弧的对象节点时,该对象弧在RDF / XML中显示为空节点元素(或),可以缩短这种形式。通过使用对象节点的IRI作为包含属性元素上XML属性rdf:resource的值并将该属性元素为空来完成此操作。

在RDF Schema 1.1中, rdfs:Resource 被定义为class

  

RDF描述的所有事物都称为资源,并且是类rdfs:Resource的实例。这就是所有的事情。所有其他类都是该类的子类。 rdfs:Resourcerdfs:Class的实例。

两者之间有何关系? rdf:resource值是否始终属于rdfs:Resource类,反之亦然?

1 个答案:

答案 0 :(得分:4)

它们根本不相关。他们只是碰巧共享一个名字,因为他们都有与资源有关的东西。

术语“资源”是RDF数据模型的核心(毕竟,它是资源描述框架)。一般来说,RDF中的资源是可以通过URI标识的任何内容(存在大量技术细节,如空白节点和文字如何属于此定义,但为简单起见,我们在这里将其忽略)。 / p>

rdf:resource只是RDF / XML语法中的语法元素,即用来标识作为属性值的资源的属性。例如,这是RDF / XML中的简单RDF模型(1个三元组):

<rdf:Description rdf:about="http://example.org/Bob">
    <foaf:address rdf:resource="http://example.org/address1"/>
</rdf:Description>

在这里,http://example.org/Bob是主题资源,foaf:address是该主题的属性(用于将主题资源链接到值)。在这种情况下,属性值也是资源(http://example.org/address1),因此在RDF / XML语法中,我们使用rdf:resource属性进行链接。但是,如果您使用不同的语法编写相同的RDF模型(例如Turtle),则根本看不到rdf:resource

<http://example.org/Bob> foaf:address <http://example.org/address1> .

在RDF架构中,类rdfs:Resource是所有资源的类。这是一个概念,而不是特定于语法的机制。由于RDF中的几乎所有东西都是资源,因此它是“顶层”的东西。万物都是资源,因此,如果您引入一个新类,例如“ Person”,它将(自动)成为rdfs:Resource的子类。

<http://example.org/Bob> rdf:type <http://example.org/Person> . 
<http://example.org/Bob> rdf:type rdfs:Resource . 

请注意,第二个三元组是第一个三元组的逻辑结果。因此,在实践中,鲍勃是资源这一事实几乎从未在RDF模型中明确记录下来-如果需要,可以推断出来。