6

在成功学习 RDFa Lite 之后,我目前正在自学 RDFa Core 1.1。直截了当,我无法理解两件事: and 之间的区别property和andrel之间的区别。resourceabout

请用比规范更简单的术语向我解释:)

4

3 回答 3

2

propertyrel

这两个属性都表示一个三元组的谓词,例如rel="http://purl.org/dc/terms/creator,它是谓词... has as a creator: ...

不同之处在于,他们从哪里获取他们的对象。稍微简化一下,规则property是:对象被采取......

  • 来自有效的content属性,或者,如果标签中不存在该属性,
  • (如果datatype标签中不存在 attr :) 来自有效resource属性,或者,如果标签中不存在 attr,
  • (如果datatype标签中不存在 attr :) 来自有效href属性,或者,如果标签中不存在 attr,
  • (如果datatype标签中不存在 attr :) 来自有效src属性,或者,如果标签中不存在 attr,
  • 从标签开始的元素的内部内容。

稍微简化,rel有两个方面的不同:

  • 它仅从 aresource或 ahrefsrc属性中获取其对象。
  • 它不仅可以从同一个标签的属性中获取其对象,还可以从后代标签中获取它。整个机制被称为“链接”:“这是@property 和@rel 之间的主要区别:后者引起链接,而前者通常不会。” 1通常,但property如果与typeof(cf. 2 ) 一起使用会导致链接。

aboutresource

about是指示三元组主题的属性。的规则resource更复杂:它可能表示一个主题或一个对象,并且链接在这里也起作用。

恕我直言,链接是 RDFa 中最复杂和最令人困惑的部分(并且除了语法糖之外没有给你更多)。我会避免链接。这可以通过避免属性rel、和来实现rev,这同时带来了一些进一步的简化。因此,我只使用以下属性:resourcetypeof

  • about主题
  • property对于谓词
  • content对象的或hrefsrc(或元素的内部内容),遵循上述规则
  • lang用于对象文字的语言标签,例如lang="en"
  • datatype用于对象文字的数据类型标记
  • prefix(但在文档中只有一次),这样我就可以通过前缀来缩写 URL,例如property="dc:creator"
  • vocab(在文档中很少且最多一次),以便我可以隐式缩写 URL,例如property="creator".

(并且我使用标签<base href="...">来指示文档的 URL 基值。)

这是 RDFa 的一个严格、安全、易于使用和易于解析的子集,并且允许表达您想要的任何三元组。

于 2013-09-17T15:15:55.163 回答
1

我个人建议忽略/避免使用 rel 和 about,如果您遵循经验法则,即您不应该通过在给定的 HTML 元素中填充尽可能多的属性来尝试变得太聪明,那么编写 RDFa 并不是真正必要的。出于向后兼容性的原因,周围存在。1.1 的其他属性值得学习:内容和数据类型。

于 2013-06-05T05:11:02.620 回答
1

Stephan 的建议大体上与RDF Lite 1.1保持一致,它不包括这些原因@rel@about正是出于这些原因。

另一个好的经验法则是不要尝试在给定元素上包含多个实体的标记,这通常是指定图像许可的示例。

@property并且@rel彼此非常相似,但在 RDFa 1.0 中有不同的用途,但这令人困惑,即使对于专家来说也是如此。(以前,@rel用于指定作为其他节点的对象,并@property用于指定文字值。虽然还有一些差异,但坚持非聪明的标记,你可以@property@rel.

同样,@about可以避免只使用@resource. 不同之处在于@about设置当前主题和@resource当前对象,但对于子节点parent object(取自父节点current object变为current subject。关于 的存在还有另一个细微差别@typeof,但如果您只使用@resource,它几乎可以满足您的需求。

要总结 RDFa Lite 1.1 的最佳实践,您还可以查看RDFa 1.1 Primer

  • 坚持@vocab, @prefix, @property, @resource, 和@typeof
  • 避免在给定元素中做出多个陈述
于 2013-06-07T23:22:16.283 回答