在RDFa中,property =“”& rel =“”和resource =“”&关于= “”?

时间:2013-06-01 14:15:21

标签: attributes semantic-markup ambiguity rdfa

在成功学习RDFa Lite之后,我正在教自己RDFa Core 1.1。直截了当,我无法理解两件事:propertyrel之间的差异,以及resourceabout之间的差异。

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

3 个答案:

答案 0 :(得分:2)

propertyrel

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

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

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

略有简化,rel在两个方面有所不同:

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

about vs resource

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

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

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

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

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

答案 1 :(得分:1)

我个人建议忽略/避免使用rel和about,如果遵循经验法则你不应该编写RDFa,你不应该试图通过在给定的内容中填充尽可能多的属性来过于聪明HTML元素。由于向后兼容的原因存在。 1.1中的其他属性值得学习:内容和数据类型。

答案 2 :(得分:1)

斯蒂芬的建议总体上与RDF Lite 1.1一致,正是出于这些原因,这些建议不包括@rel@about

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

@property@rel彼此非常相似,但在RDFa 1.0中有不同的用途,但即使对于专家来说也是如此。 (以前,@rel用于指定其他节点的对象,@property用于指定文字值。虽然存在一些差异,但坚持非聪明的标记,你可以做任何事情使用@property可以使用@rel

同样,只需使用@about即可避免使用@resource。不同之处在于@about设置当前主题,@resource设置当前对象,但对于子节点,parent object(取自父{C} current object成为{ {1}}。current subject的存在还存在另一个细微差别,但如果你只使用@typeof,那么它几乎就是你想要的。

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

  • 坚持@resource@vocab@prefix@property@resource
  • 避免在给定元素中创建多个语句