我对RDFa和Microdata有一个简单的问题。
我目前的理解是RDFa是在HTML中实现的RDF,但对于像我这样的新开发者来说很复杂,Microdata看起来非常简单快捷。
这两种语义格式有哪些其他优点和缺点?
答案 0 :(得分:84)
虽然存在许多(技术上的,较小的)差异,但这里有一些我认为重要的选择(使用my answer on Webmasters作为基础)。
作为W3C编辑Microdata规范的HTML WG found no volunteer,它是now merely a W3C Group Note(请参阅history),这意味着没有任何进一步工作的计划
所以WHATWG的“HTML生活标准”中的Microdata section是Microdata可能发展的唯一地方。根据改变的内容,可能会发生他们的Microdata与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
而不是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 Core和HTML+RDFa可能比HTML Microdata更复杂,但它不是“公平”比较,因为它们提供了更多功能。
与Microdata相似的是RDFa Lite(“适用于大多数日常工作”),至少在我看来,这个规范并不像Microdata那么复杂。
如果您想支持特定的消费者(例如,搜索引擎和浏览器插件),您应该查看他们关于支持的语法的文档。
如果您只想学习一种语法并且没有特定的消费者,(注意,主观意见!)请使用RDFa。 Why?
请注意相同内容的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的消费者,例如:
为了确定哪种格式最佳,您需要知道要定位的消费者。例如,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 代码或内容中的嵌入式小部件 管理系统。