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

时间:2011-08-19 07:32:06

标签: xml rdf

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

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

2 个答案:

答案 0 :(得分:46)

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

将该免责声明排除在外:

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

subject predicate object

,特别是:

subjectURI predicate objectURI

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

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

    而不鼓励
    1. 您可以使用rdf:aboutrdf:resource替换片段#baz
    2. 如果您多次使用相同的ID,则会导致xml问题。
    3. 也就是说,它是多余的,也是潜在的错误来源。

      回想起来,通常只需要一个属性来指定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:aboutrdf:resource几乎总是错误(您处于主题位置或对象位置)。

      TL;博士

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

      其他

      忘记提及rdf:ID可以在属性元素上使用,但它可能会发现一些意外的事情:它会使三元组具体化。避免使用rdf:ID

答案 1 :(得分:0)

我想澄清一下提供的答案中的一些优点,但仅限于rdf:ID和rdf:about。

标签用于构建URI。如果未提供完整URI(例如rdf:ID =“x”),则生成的URI相对于通常从文档的位置派生的范围内基URI,但可以使用xml:base属性指定。

关键点(如上所述)是rdf:about可能是一个完全限定的URI,所以很容易设置它。

rdf:ID不能是完全限定的URI,但是,如果手动设置xml:base属性,仍然可以控制它。

因此,对我来说,一般的经验法则是使用rdf:about作为“全局已知”标识符(当您希望URI始终相同时)并在描述本地资源时使用rdf:ID URI不在当前文档之外。