微数据与RDFa

问题描述 投票:58回答:4

我有一个关于RDFa和Microdata的快速问题。

我目前的理解是RDFa是在HTML中实现的RDF,但对于像我这样的新开发人员来说很复杂,Microdata看起来非常容易和快速实现。

围绕这两种语义格式的其他优点和缺点是什么?

html5 semantic-web microdata rdfa
4个回答
87
投票

微数据与RDFa之间的差异

虽然存在许多(技术上的,较小的)差异,但这里有一些我认为重要的选择(使用my answer on Webmasters作为基础)。

Specifications

Applicability

  • 微数据只能用于(X)HTML5(分别由WHATWG定义的HTML)。
  • RDFa可以用于各种主语言,即几个(X)HTML变体和XML(因此也在SVG,MathML,Atom等中)。 并且可以支持新的主机语言,因为RDFa Core“是用于表达任何标记语言的结构化数据的属性的规范”。

Use of multiple vocabularies

  • 在Microdata中,对同一内容使用多个词汇表更难,有时甚至是不可能的。
  • 由于使用了前缀,RDFa允许混合词汇表。

Use of reverse properties

  • 微数据不提供使用反向属性的方法。对于没有定义反向属性的词汇表,你需要这个(例如,他们只定义parent而不是parentchild)。流行的Schema.org就是这样一个词汇表(只有少数几个例外)。 虽然W3C Note Microdata to RDF定义了实验性的itemprop-reverse,但这个属性不是W3C和WHATWG的Microdata的一部分。
  • RDFa支持使用反向属性(使用rev attribute)。

Semantic Web

  • 通过使用Microdata,您不是直接参与语义Web(而AFAIK Microdata不打算参与),主要是因为它没有被定义为RDF序列化(尽管有方法可以使用extract RDF from Microdata)。
  • RDFa是RDF序列化,RDF是W3C的Semantic Web的基础。

规格RDFa CoreHTML+RDFa可能比HTML Microdata更复杂,但它不是“公平”比较,因为它们提供更多功能。

与Microdata相似的是RDFa Lite(“确实适用于大多数日常需求”),而且至少在我看来,这个规范并不像Microdata那么复杂。

该怎么办?

如果您想支持特定的消费者(例如,搜索引擎和浏览器插件),您应该检查他们关于支持的语法的文档。

如果您只想学习一种语法并且没有特定的消费者,(注意,主观意见!)请使用RDFa。 Why?

  • RDFa多年来已成熟并且是W3C Rec,而Microdata是一项相对较新的发明,并未由W3C标准化。
  • RDFa可以用于多种语言,而不仅仅是HTML5。
  • RDFa允许对相同内容混合使用词汇表,并且它本身支持使用反向属性。

Can’t decide? Use both.

请注意,you can also use several syntaxes的内容相同,因此您可以使用Microdata和RDFa(以及Microformats和JSON-LD,以及...)以获得最大的兼容性。

  • 这是一个简单的Microdata片段: <p itemscope itemtype="http://schema.org/Person"> <span itemprop="name">John Doe</span> is his name. </p>
  • 这是使用RDFa(Lite)的相同代码段: <p typeof="schema:Person"> <span property="schema:name">John Doe</span> is his name. </p>
  • 这里两个语法一起使用: <p itemscope itemtype="http://schema.org/Person" typeof="schema:Person"> <span itemprop="name" property="schema:name">John Doe</span> is his name. </p>

但通常没有必要/建议沿着这条路走下去。


31
投票

您从任何语义格式中获得的主要优势是消费者能够重用您的数据。

例如,像谷歌这样的搜索引擎是重用您的数据来显示Rich Snippets的消费者,例如:

为了确定哪种格式最佳,您需要知道要定位的消费者。例如,Google在他们的FAQ中说他们只会处理微数据(尽管测试工具现在可以使用RDFa,因此他们可能接受RDFa)。

除非您知道您的目标消费者只接受RDFa,否则您最好使用微数据。虽然许多消费RDFa的服务(例如语义搜索引擎Sindice)也接受微数据,但微数据消费服务不太可能接受RDFa。


6
投票

这很长,但是你会得到这个问题最全面的答案之一是Jeni Tennison的博客文章:Microdata and RDFa Living Together in Harmony


2
投票

我不确定是否有人建议使用Microdata和RDFa是一个好主意。如果您在他的示例中使用Google的结构化数据测试工具(或其他类似工具),则会显示重复数据,这似乎意味着Google机器人会在网页上挑选两个名为John Doe的人,而不是原来的意图。

因此我假设对给定项使用一种语法是一个更好的想法(只要它们描述单独的实体,你仍然应该能够混合语法)。

虽然我很高兴在这方面被证明是错误的。

© www.soinside.com 2019 - 2024. All rights reserved.