首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >rdf:resource、rdf:about和rdf:ID之间的差异

rdf:resource、rdf:about和rdf:ID之间的差异
EN

Stack Overflow用户
提问于 2011-08-19 15:32:06
回答 2查看 14.9K关注 0票数 30

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

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-08-19 16:41:21

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

有了免责声明:

我们要做的是编写以下形式的语句:

代码语言:javascript
复制
subject predicate object

尤其是:

代码语言:javascript
复制
subjectURI predicate objectURI

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

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

不鼓励使用rdf:ID,因为

  1. 您可以将其替换为rdf:about,或将rdf:resource替换为片段#baz
  2. 。如果多次使用相同的id,则可能会导致xml问题。

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

在retrospect中,通常只需要一个属性来指定URI,因为从RDF/XML语法可以明显看出某个对象是主体还是宾语:

代码语言:javascript
复制
<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;dr

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

附加内容

忘了提一下,rdf:ID可以在属性元素上使用,但它做了一些您可能会感到意想不到的事情:它实现了三元组。避免使用rdf:ID

票数 56
EN

Stack Overflow用户

发布于 2015-04-03 21:51:19

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

标记用于构建URI。如果没有提供完整的URI (比如rdf:ID="x"),那么生成的URI相对于范围内的基URI(通常是从文档的位置派生的),但是可以用xml:base属性来指定。

问题是(上面提到的) rdf:about可能是一个完全限定的URI,所以只需设置它就很容易。

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7118326

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档