微数据与RDFa

时间:2012-01-22 00:12:00

标签: html5 semantic-web microdata rdfa

我对RDFa和Microdata有一个简单的问题。

我目前的理解是RDFa是在HTML中实现的RDF,但对于像我这样的新开发者来说很复杂,Microdata看起来非常简单快捷。

这两种语义格式有哪些其他优点和缺点?

5 个答案:

答案 0 :(得分:84)

Microdata和RDFa

之间的差异

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

规格

适用性

  • 微数据只能用于(X)HTML5(分别由WHATWG定义的 HTML )。

  • RDFa可用于各种主语言,即几种(X)HTML变体和XML(因此也可用于SVG,MathML,Atom等)。

    可以支持新的主机语言,因为RDFa Core“是用任何标记语言表达结构化数据的属性规范”。

使用多个词汇表

  • 在Microdata中,对同一内容使用多个词汇表会更难,有时甚至是不可能的。

  • 由于使用了前缀,RDFa允许混合词汇。

使用反向属性

  • Microdata不提供使用反向属性的方法。对于没有定义反向属性的词汇表,您需要这样做(例如,他们只定义parent而不是parent& child)。流行的Schema.org就是这样一个词汇表(只有少数几个例外)。

    虽然W3C Note Microdata to RDF 定义了实验itemprop-reverse,但该属性不属于W3C和WHATWG的微数据。

  • RDFa支持使用反向属性(使用rev attribute)。

语义网

  • 通过使用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允许对相同内容混合使用词汇表,并且它本身支持使用反向属性。

无法决定?同时使用两者。

请注意相同内容的you can also use several syntaxes,因此您可以使用Microdata RDFa(微格式, 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>
    

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

答案 1 :(得分:31)

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

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

Recipe Rich Snippet

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

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

答案 2 :(得分:6)

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

答案 3 :(得分:2)

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

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

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

答案 4 :(得分:1)

我会说这在很大程度上取决于用例:对于科学用例,RDF 很常见并且用于不同方面。

现在推荐使用 JSON-LD 来丰富网站,至少由 Google 推荐。

<块引用>

嵌入在页面头部标签中的 JavaScript 符号或 身体。标记不与用户可见的文本交错, 使嵌套数据项更易于表达,例如国家/地区 活动音乐场所的邮政地址。此外,谷歌可以阅读 动态注入页面内容时的 JSON-LD 数据, 例如通过 JavaScript 代码或内容中的嵌入式小部件 管理系统。