Microdata,RDFa或JSON-LD适当还是最适用?

我一直在想,哪种格式是“最好的”? Schema.org,Microdata和RDFa实施起来有点痛苦。 他们可以打破validation,并需要相当大的努力把文件。

对于我来说,JSON-LD对于实现结构化数据是一种更好的方式。 但是它工作? 对此有何级别的支持(至lessGoogle)?

Schema.org是一个可以像任何其他词汇一样以多种forms使用的词汇。 网站http://schema.org/具有使用;Microdata和RDF语法RDFaJSON-LD的示例,但这些语法并不是可以使用的唯一语法。 例如,您可以将其与任何其他RDF语法(如TurtleRDF / XML)一起使用

没有最好的语法。 他们都有优点和缺点。 看看我的回答,例如Microdata和RDFa之间的差异 。 请注意, 您可以在同一个文档中使用不同的语法(和词汇表) 。

现在,如果你有一个特定的消费者,你应该咨询他们的文档。 然而,对语法的支持来来往往,并不是所有他们可能支持的东西都必须logging下来,并不是所有被logging的东西都是必须的。

对于Google来说,您可能对他们的Rich Snippets感兴趣。 他们关于Rich Snippets的文档提到了Microdata,Microformats和RDFa。 但是请注意,并非所有链接的示例都使用Schema.org词汇表,而是使用较旧的Data- vocabulary.org或Microformats(因为您不能使用像Schema.org这样的词汇表和Microformats的Data- vocabulary.org)。 还有一些Rich Snippets没有列在页面上,比如Sitelinkssearch框 ,他们甚至推荐使用JSON-LD语法。

作为一般build议:search引擎通常赞成隐藏的元数据可见内容。 例如,将关键字作为隐藏的元数据很容易让作者声称他们的文档与实际情况有所不同(或者是因为试图欺骗search引擎,或者是因为作者忘记在两个地方更新内容)。 因此,将元数据与内容解耦(就像JSON-LD的情况一样), 可能 (可能!)导致当前search引擎对隐藏元数据的相同问题。 (如果或者哪个search引擎实际上处理这个问题,这个问题就是堆栈溢出问题。

将元数据与内容(例如RDFa)耦合的另一个可能的优点是,您可以轻松自动地在JSON-LD,Turtle等中生成相同的信息,因为一切都只是RDF。 只要parsingRDFa,转换成你喜欢的格式,并embedded(在script )或链接(与relalternate ),如果它是有道理的。

但是,是的,添加RDFa通常比添加JSON-LD blob更复杂,因为您必须将其调整为现有的标记。 (但是,除非你犯错误,否则不应该“破坏确认”。)

MicrodataRDFaJSON-LD之间的界限确实非常模糊,三者之间还没有被广泛接受。 这将不得不等待现在。 也许是几年或更长时间。

同时,Microdata不应该像Schema.org那样标注,因为这两者是不同的东西。 Schema.org是一个词汇表,因此可以用于Microdata,RDFa和JSON-LD。

使用Schema.org作为词汇表并使用JSON-LD作为数据表示可能是最值得期待的一对,因为它们有两个共同的方面:

  1. 易于阅读的人类; 和
  2. 轻便的机器可读

但即使如此,这两个例子之间仍然存在断开。

关于JSON-LD支持,由于Bing,Google,Yahoo!和Yandex承认使用schema.org,因此可能可以安全地说他们也支持这个例子 。

2017更新

过去两三年,Google一直非常积极地推广JSON-LD-schema.org。

看来谷歌倾向于使用JSON-LD,但是并没有针对每个用例实现它!

Google正在将JSON-LD支持添加到更多标记驱动function。 到目前为止,JSON-LD支持所有知识图谱function,附加链接search框,事件丰富片段和配方丰富片段; Googlebuild议为这些function使用JSON-LD。 对于剩余的Rich Snippetstypes和面包屑,Googlebuild议使用微数据或RDFa。

http://developers.google.com/structured-data/schema-org

Google使用JSON-LD作为其知识图谱(公司和个人)的结构化数据search引擎优化的参考示例。 请参阅https://developers.google.com/structured-data/customize/overview

我个人使用JSON-LD和Microdata的组合(暂时)。

我想说,他们还有其他方法来确定您通过JSON-LD提供的信息是否与他们的search引擎相关(例如检查您的页面实际上是在谈论它所声称的内容)。

(更新答案!)

关于“人气”,请看这个问题/答案 。

今天微数据是最受欢迎的:在3400万个域名中,563万(约17%)使用RDFa(0,9百万), Microdata(250万)的 “内容标记”(我将使用行话标记 或Microformats,less于一半使用分离的语义描述符,注意到最stream行的JSON-LD,有212万(6%)。
PS:我们更喜欢“每域统计”(而不是每页统计),因为同一域中的页面通常具有相同的模板和其他本地权威惯例强制。

在“expression语义的领域”(7,75百万)的宇宙中,统计概况是:

  • 73%的标记语义
  • 27%的语义分离
  • (…交叉点作为混合“分离+标记”可以是零来简化…)

在2017年的经验法则

Microdata中使用标记语义之后如果需要更多地向机器expression一些东西,可以使用JSON-LD


使用标记语义是因为它是最stream行的,因为标记的满足将被人类和机器同时validation/可审核。

重要提示:请记住,Microdata,RDFa(W3C标准)和JSON-LD(W3C标准)可以(轻松)转换为RDF,所有这些格式都是兼容的。


PS:对于HTML表格,另请参阅W3C的表格元数据 。 对于打开的非HTML资源(如CSV文件) ,请使用符合RDF的W3C的表格数据模型和/或无摩擦数据/规范 。