71

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

我目前的理解是 RDFa 是 RDF 在 HTML 中实现的,但对于像我这样的新开发人员来说很复杂,Microdata 似乎真的很容易实现并且快速实现。

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

4

5 回答 5

102

微数据和 RDFa 的区别

虽然存在许多(技术上的、较小的)差异,但这里有一些我认为重要的选择(以我对网站管理员的回答为基础)。

规格

适用性

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

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

    并且可以支持新的宿主语言,因为RDFa 核心“是一种用任何标记语言表达结构化数据的属性规范”。

使用多个词汇

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

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

使用反向属性

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

    虽然 W3C Note Microdata to RDF定义了实验性itemprop-reverse,但此属性既不是 W3C 的一部分,也不是 WHATWG 的 Microdata 的一部分。

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

语义网

  • 通过使用 Microdata,您不会直接参与语义 Web(AFAIK Microdata 也不打算这样做),主要是因为它没有定义为 RDF 序列化(尽管有一些方法可以从 Microdata 中提取 RDF)。

  • RDFa 是一个RDF序列化,RDF 是 W3C语义网的基础。


RDFa CoreHTML+RDFa规范可能比HTML Microdata更复杂,但这并不是一个“公平”的比较,因为它们提供了更多的功能。

与 Microdata 类似的是RDFa Lite(“确实可以满足大多数日常需求”),至少在我看来,这个规范远没有 Microdata 复杂。

该怎么办?

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

如果您只想学习一种语法并且没有特定的消费者,(注意,主观意见!)选择RDFa。为什么?

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

无法决定?两者都用。

请注意,您还可以对相同的内容使用多种语法,因此您可以使用 MicrodataRDFa(以及Microformats、JSON -LD……)以获得最大的兼容性。

  • 这是一个简单的微数据片段:

    <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>
    

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

于 2014-09-17T10:41:21.503 回答
30

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

例如,像谷歌这样的搜索引擎是消费者,他们重用你的数据来显示丰富的片段,比如这个:

食谱丰富的片段

为了决定哪种格式最好,您需要知道您想要定位哪些消费者。例如,谷歌在他们的常见问题解答中说他们只会处理微数据(尽管测试工具现在可以使用 RDFa,所以他们有可能接受 RDFa)。

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

于 2012-01-30T15:56:25.160 回答
5

这很长,但是您将获得的最全面的答案之一是 Jeni Tennison 的博客文章:Microdata and RDFa Living Together in Harmony

于 2012-01-27T09:07:55.440 回答
3

我不确定 unor 建议同时使用 Microdata 和 RDFa 是否是个好主意。如果您在他的示例中使用 Google 的结构化数据测试工具(或其他类似工具),它会显示重复数据,这似乎暗示 Google 机器人会在网页上找到两个名为 John Doe 的人,而不是最初意图的一个人。

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

虽然我很高兴被证明是错误的。

于 2015-09-17T13:53:54.627 回答
1

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

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

嵌入在页面头部或正文中的标记中的 JavaScript 表示法。标记不与用户可见的文本交错,这使得嵌套数据项更易于表达,例如事件的 MusicVenue 的 PostalAddress 的 Country。此外,当 JSON-LD 数据动态注入页面内容时,Google 可以读取它,例如通过 JavaScript 代码或内容管理系统中的嵌入式小部件。

于 2021-01-05T10:25:42.693 回答