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

giu*_*lio 4 rdf semantic-web rdfs rdf-xml

在RDF 1.1中rdf:resource,定义空属性元素时,XML语法文档用作缩短形式:

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

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

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

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

Jee*_*tra 5

它们根本不相关。他们只是碰巧共用一个名字,因为它们都有什么做的资源。

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

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>
Run Code Online (Sandbox Code Playgroud)

在这里,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> .
Run Code Online (Sandbox Code Playgroud)

在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 . 
Run Code Online (Sandbox Code Playgroud)

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