rdf:resource,rdf:about和rdf:ID之间的差异

sua*_*uat 27 xml rdf

之间有什么概念上的差异rdf:resource,rdf:aboutrdf:ID.我做了一些调查,但他们之间的区别对我来说还不清楚.例如,是否rdf:ID在第一次声明资源时rdf:resource使用,用于引用已存在的资源等.

如果你提供一些小例子,我会很高兴的.

use*_*512 49

要清楚这只是关于编写rdf的一种特殊方式:即RDF/XML.其他语法没有这些差异.

有了免责声明:

我们要做的是写下以下形式的陈述:

subject predicate object
Run Code Online (Sandbox Code Playgroud)

特别是:

subjectURI predicate objectURI
Run Code Online (Sandbox Code Playgroud)

那么我们如何在RDF/XML中引入主题和对象URI呢?

  1. rdf:about设置一个语句,其可以是绝对的(的主题URI http://example.com/)或解析相对于文档的碱(例如/foo/bar,#frag).(比如href在html中)
  2. rdf:resource 设置语句的对象URI,再次设置为绝对或相对.
  3. rdf:ID设置主题URI,但它只能在此文档中.ID也只能使用一次.非常喜欢<a name="baz">id="baz"在HTML中.

rdf:ID 因此不鼓励

  1. 你可以用它代替rdf:aboutrdf:resource与片段#baz
  2. 如果您多次使用相同的ID,它可能会导致xml问题.

也就是说,它是多余的并且是潜在的错误来源.

回想起来,通常只需要一个属性来指定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) 
...
Run Code Online (Sandbox Code Playgroud)

(经验法则:奇数行rdf:about,偶数行rdf:resource)

并且在元素上使用rdf:aboutrdf:resource几乎总是一个错误(你要么处于主题位置或对象位置).

TL;博士

避免rdf:ID.使用rdf:aboutrdf:resource很像href,前者用于主题,后者用于对象.

额外

忘了提到rdf:ID可以在属性元素上使用,但是它会做一些你可能会发现意想不到的事情:它会使三元组重新启用.避免rdf:ID.