我有一个关于RDFa和Microdata的快速问题。
我目前的理解是RDFa是在HTML中实现的RDF,但对于像我这样的新开发人员来说很复杂,Microdata看起来非常容易和快速实现。
围绕这两种语义格式的其他优点和缺点是什么?
虽然存在许多(技术上的,较小的)差异,但这里有一些我认为重要的选择(使用my answer on Webmasters作为基础)。
parent
而不是parent
和child
)。流行的Schema.org就是这样一个词汇表(只有少数几个例外)。
虽然W3C Note Microdata to RDF定义了实验性的itemprop-reverse
,但这个属性不是W3C和WHATWG的Microdata的一部分。rev
attribute)。规格RDFa Core和HTML+RDFa可能比HTML Microdata更复杂,但它不是“公平”比较,因为它们提供更多功能。
与Microdata相似的是RDFa Lite(“确实适用于大多数日常需求”),而且至少在我看来,这个规范并不像Microdata那么复杂。
如果您想支持特定的消费者(例如,搜索引擎和浏览器插件),您应该检查他们关于支持的语法的文档。
如果您只想学习一种语法并且没有特定的消费者,(注意,主观意见!)请使用RDFa。 Why?
请注意,you can also use several syntaxes的内容相同,因此您可以使用Microdata和RDFa(以及Microformats和JSON-LD,以及...)以获得最大的兼容性。
<p itemscope itemtype="http://schema.org/Person">
<span itemprop="name">John Doe</span> is his name.
</p>
<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>
但通常没有必要/建议沿着这条路走下去。
您从任何语义格式中获得的主要优势是消费者能够重用您的数据。
例如,像谷歌这样的搜索引擎是重用您的数据来显示Rich Snippets的消费者,例如:
为了确定哪种格式最佳,您需要知道要定位的消费者。例如,Google在他们的FAQ中说他们只会处理微数据(尽管测试工具现在可以使用RDFa,因此他们可能接受RDFa)。
除非您知道您的目标消费者只接受RDFa,否则您最好使用微数据。虽然许多消费RDFa的服务(例如语义搜索引擎Sindice)也接受微数据,但微数据消费服务不太可能接受RDFa。
这很长,但是你会得到这个问题最全面的答案之一是Jeni Tennison的博客文章:Microdata and RDFa Living Together in Harmony
我不确定是否有人建议使用Microdata和RDFa是一个好主意。如果您在他的示例中使用Google的结构化数据测试工具(或其他类似工具),则会显示重复数据,这似乎意味着Google机器人会在网页上挑选两个名为John Doe的人,而不是原来的意图。
因此我假设对给定项使用一种语法是一个更好的想法(只要它们描述单独的实体,你仍然应该能够混合语法)。
虽然我很高兴在这方面被证明是错误的。