rdf:resource
、rdf:about
和rdf:ID
之间的概念区别是什么?我进行了一些调查,但它们之间的差异对我来说还不太清晰。例如,在第一次声明资源时是否要使用rdf:ID
,在引用已经存在的资源时是否要使用rdf:resource
等。
如果您能提供一些小例子,我将不胜感激。明确一点,这只是关于一种写RDF的方式,即RDF/XML。其他语法不会有这些差异。
有了这个声明:
我们试图编写以下形式的语句:
subject predicate object
特别地,包括:
subjectURI predicate objectURI
如何在RDF/XML中引入主体和对象URI?
rdf:about
设置语句的主体URI,可以是绝对的(http://example.com/
)或相对于文档的基础URI解析后的值(例如: /foo/bar
,#frag
)。 (类似于html中的href
)rdf:resource
设置语句的对象URI,同样可以是绝对的或相对的。rdf:ID
设置语句的主体URI,但它只能在此文档中使用。 ID也只能使用一次。与html中的<a name="baz">
或id =" baz "
非常相似。rdf:ID
不建议使用,因为:
#baz
的rdf:about
或rdf:resource
即它是多余的且可能导致错误的一个潜在来源。
回顾来看,通常只需要一个属性来指定URI,因为主体或对象是根据RDF/XML语法明显的。
<ex:Foo ...> - subject
<ex:prop ... /> - property then object
</ex:Foo>
<ex:Foo ...> - subject
<ex:prop> - property
<ex:Bar ... /> - subject (and implictly an object chaining from previous)
...
经验法则:奇数行使用rdf:about
,偶数行使用rdf:resource
。
在元素中同时使用rdf:about
和rdf:resource
几乎总是一个错误(你要么处于主语位置,要么处于对象位置)。
避免使用rdf:ID
。像使用href一样使用rdf:about
和rdf:resource
,前者用于主语,后者用于对象。
忘了提到rdf:ID
可以用于属性元素,但它会做一些你可能意想不到的事情:重新定义三元组。避免使用rdf:ID
。