微数据与RDFa


70

我对RDFa和微数据有一个快速的问题。

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

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


2
虽然RDFa的的全功率难度比微观理解,微数据是用RDFa精简版更comparible,一个编辑起草,其中可在w3.org/2010/02/rdfa/sources/rdfa-lite。阅读相关内容,看看是否对您来说更容易。
Alohci 2012年

3
正在更新(现在HTML5已成为标准!)... Microdata 只是“ W3C注意事项”(不是推荐),并且失去了成为HTML5标准的机会:请参阅W3C阻止Microdata Working Draft的进展。今天(以及未来的几年!)“最佳标准方法”是使用RFDa Lite。PS:今天,比较并不重要,因为只有RDFa(和Lite)保留为标准。
彼得·克劳斯

@PeterKrauss好的,彼得,我现在将删除帖子。
mary_berry

Answers:


98

微数据和RDFa之间的区别

尽管有很多(技术上的,较小的)差异,但是我认为很重要(我以网站管理员的回答为基础)。

技术指标

适用性

  • 微数据只能在(X)HTML5(由WHATWG定义的HTML)中使用。

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

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

使用多个词汇

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

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

反向属性的使用

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

    尽管RDF的W3C注意微数据定义了实验性功能itemprop-reverse,但此属性不是W3C或WHATWG的微数据的一部分。

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

语义网

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

  • RDFa是RDF序列化,而RDF是W3C语义Web的基础。


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

与Microdata相似的是RDFa Lite(“可以满足大多数日常需求”),并且至少在我看来,此规范比Microdata复杂得多。

该怎么办?

如果要支持特定使用者(例如,搜索引擎和浏览器加载项),则应查看其有关受支持语法的文档。

如果您只想学习一种语法并且没有特定的使用对象,(请注意,主观意见!)可以使用RDFa。为什么?

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

不能决定?同时使用。

请注意,您还可以使用多种语法相同内容,所以你可以有微数据RDFa的(微格式,以及JSON-LD,以及...)的最大兼容性。

  • 这是一个简单的Microdata代码段:

    <p itemscope itemtype="http://schema.org/Person">
      <span itemprop="name">John Doe</span> is his name.
    </p>
    
  • 这是使用RDFa(精简版)的相同代码段:

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

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


完美的答案。谢谢@unor。
iep

31

从任何语义格式中获得的主要优点是消费者可以重用数据。

例如,诸如Google之类的搜索引擎就是消费者,它们重用您的数据以显示Rich Snippets,例如:

食谱丰富的代码段

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

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


7
不知道我明白这个问题。当我提供此答案时,Schema.org就出现了,并且Rich Snippet是Schema.org术语使用的示例。Schema.org不是微数据的竞争对手,就像Schema.org不是HTML的竞争对手,而是依赖HTML一样。Schema.org文档中的示例是用于放置Schema.org术语的微数据示例。
linclark

11
答案已经过时了。Google现在支持RDFa:“结构化数据应使用schema.org定义的最具体的适用类型和属性名称来表示。可以使用以下三种受支持的格式将数据嵌入网页中:JSON-LD,RDFa和微数据。 “((developers.google.com/structured-data/policies)您应该遵循unor的回答。
jelhan

6

很长,但是您将获得关于此问题的最全面的答案之一是Jeni Tennison的博客文章:Microdata和RDFa和谐共处


16
愿意为我们总结一下吗?
2014年

5
我同意@ S.Pinkus。目前,这是仅链接的答案。meta.stackexchange.com/a/8259/189763
瑞安·盖茨

1
抱歉,如果对这个已有3年历史的问题已有不错的答案(包括已接受的答案),那么花时间改进这个答案有什么价值?
伊恩·迪金森

1
对于初学者来说,链接可能会失效,从而使答案无用。
安德烈·布拉托夫

4

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

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

尽管我很乐意被证明是错误的。


0

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

为了丰富网站,现在建议使用JSON-LD(由Google提出)。

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.