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

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

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

最佳答案

微数据和RDFa之间的区别

尽管有很多(技术上的,较小的)差异,但这里有一些我认为很重要的差异(以my answer on Webmasters为基础)。

技术指标

  • 当W3C的HTML WG found no volunteer用于编辑微数据规范时,它就是now merely a W3C Group Note(请参阅history),这意味着没有计划对其进行任何进一步的工作。

    因此,WHATWG的“HTML生活标准”中的Microdata section是唯一可以发展微数据的地方。根据更改的内容,它们的微数据可能会与W3C的HTML5不兼容。

    更新:在2017年,work started again,旨在将微数据作为W3C建议发布。
  • RDFa被发布为W3C Recommendation

  • 适用性
  • 微数据只能在(X)HTML5(由WHATWG定义的HTML)中使用。
  • RDFa可以用于多种宿主语言,即几种(X)HTML变体和XML(因此也可以在SVG,MathML,Atom等中使用)。

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

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

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

    尽管RDF的W3C注意微数据定义了实验性 itemprop-reverse ,但此属性不是W3C或WHATWG的微数据的一部分。
  • RDFa支持使用反向属性(使用 rev attribute)。

  • 语义网
  • 通过使用Microdata,您不会直接参与语义网(而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(以及Microformats,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>
    

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

    10-07 13:09