rdf:resource、rdf:about和rdf:ID在概念上有何区别。我做了一些调查,但它们之间的区别对我来说还不清楚。例如,在第一次声明资源时是否使用rdf:ID,rdf:resource用于引用已经存在的资源等。
如果你能提供一些小例子,我会很高兴的。
发布于 2011-08-19 16:41:21
明确地说,这只是关于编写RDF的一种特定方式:即RDF/XML。其他语法没有这些差异。
有了免责声明:
我们要做的是编写以下形式的语句:
subject predicate object尤其是:
subjectURI predicate objectURI那么我们如何在RDF/XML中引入主题和对象URI呢?
rdf:about设置语句的主题URI,它可以是绝对的(http://example.com/),也可以相对于文档的基址进行解析(例如/foo/bar、#frag)。(与html)rdf:resource中的href设置语句的对象URI类似,absolute或relative.rdf:ID也设置主题URI,但它只能在本文档内。一个ID也只能使用一次。非常像html中的<a name="baz">或id="baz"。不鼓励使用rdf:ID,因为
rdf:about,或将rdf:resource替换为片段#baz和也就是说,它是多余的,并且是一个潜在的错误来源。
在retrospect中,通常只需要一个属性来指定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几乎总是错误的(您要么处于主语位置,要么处于宾语位置)。
tl;dr
避免使用rdf:ID。使用rdf:about和rdf:resource非常像href,前者用于主题,后者用于对象。
附加内容
忘了提一下,rdf:ID可以在属性元素上使用,但它做了一些您可能会感到意想不到的事情:它实现了三元组。避免使用rdf:ID。
发布于 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。
https://stackoverflow.com/questions/7118326
复制相似问题