Google 未在同一页面中使用相同的 URI id 正确合并微数据和 json+ld
Google does not correctly merge microdata and json+ld in the same page using same URI id
我有一个包含 "microdata" 和 "json+ld" 代码的产品页面。这两个代码都引用相同的 @id URI 对象 (http://www.example.org/product#this),所以我希望 "mix/merge" 这两个属性,但是结构化数据测试工具显示 2 "individual" 产品所以...... .
1- Google 是否支持在同一页面中使用两种语法?
2- 这实施得好吗?我可以使用 itemId 为微数据和 @id 为 json+ld 引用同一个对象的两个代码吗?
3- 这会在结构数据索引方面损坏我的页面吗?
谢谢
您可以使用 test tool 中的代码查看:
<div itemscope itemtype="http://schema.org/Product" itemid="http://www.example.org/product#this">
<a itemprop="url" href="http://www.example.org/product">
<div itemprop="name"><strong>Product Name</strong></div></a>
<div itemprop="description">Product Description</div>
<div itemprop="brand" itemscope itemtype="http://schema.org/Organization"><span itemprop="name">Product Brand</span></div>
<div itemprop="offers" itemscope itemtype="http://schema.org/Offer"> <span itemprop="price">100</span><link itemprop="itemCondition" href="http://schema.org/NewCondition" /> New</div>
</div>
<script type="application/ld+json">
{
"@context": "http://schema.org/",
"@id": "http://www.example.org/product#this",
"name": "Product Name",
"@type": "Product",
"image": "http://www.example.com/anvil_executive.jpg",
"mpn": "925872",
"brand": {
"@type": "Thing",
"name": "ACME"
},
"offers": {
"@type": "Offer",
"priceCurrency": "USD",
"price": "119.99",
"itemCondition": "http://schema.org/UsedCondition",
"availability": "http://schema.org/InStock"
}
}
</script>
我的猜测是 Google 的结构化数据测试工具不支持不同的语法,因为如果使用相同的语法它似乎可以工作。但是由于它们仍然正确显示 URI(在这两种情况下 http://www.example.org/product#this
),您可能会争辩说只是工具的界面没有合并它们。
然而,据我所知 Google 无论如何都没有文档支持这些主题 URI(但这并不一定意味着他们不支持它),所以这对他们来说可能无关紧要。
如果使用 http://linter.structured-data.org/,您的示例工作正常:它会创建 一个 项目,其中包含两个品牌和两个报价。
虽然在技术上合并来自两种不同语法的数据是可行的(读取微数据和 json-ld)并且结构化数据 Linter 证实了这一点,但 Google 不 支持它,这意味着不会合并属性(并且不会满足 Rich Snippets 的要求)。
我们得到了 SEO 界的几位参与者的最终确认,包括 Dan Brickley and Jarno van Driel。
in general you can use both syntaxes side by side, but you won't get
the fine-grained merging of triples by ID that a pure RDF application
might expect (Dan Brickley on Twitter, Jan 14th, 2020, bold mine)
--
I think @danbri already was pretty clear. Highly doubt you'll get a
different answer from other Googlers. (Jarno van Driel on Twitter, Jan 14th, 2020)
目前提出的解决方案是解析微数据并将其发布为 JSON-LD。
我有一个包含 "microdata" 和 "json+ld" 代码的产品页面。这两个代码都引用相同的 @id URI 对象 (http://www.example.org/product#this),所以我希望 "mix/merge" 这两个属性,但是结构化数据测试工具显示 2 "individual" 产品所以...... .
1- Google 是否支持在同一页面中使用两种语法?
2- 这实施得好吗?我可以使用 itemId 为微数据和 @id 为 json+ld 引用同一个对象的两个代码吗?
3- 这会在结构数据索引方面损坏我的页面吗?
谢谢
您可以使用 test tool 中的代码查看:
<div itemscope itemtype="http://schema.org/Product" itemid="http://www.example.org/product#this">
<a itemprop="url" href="http://www.example.org/product">
<div itemprop="name"><strong>Product Name</strong></div></a>
<div itemprop="description">Product Description</div>
<div itemprop="brand" itemscope itemtype="http://schema.org/Organization"><span itemprop="name">Product Brand</span></div>
<div itemprop="offers" itemscope itemtype="http://schema.org/Offer"> <span itemprop="price">100</span><link itemprop="itemCondition" href="http://schema.org/NewCondition" /> New</div>
</div>
<script type="application/ld+json">
{
"@context": "http://schema.org/",
"@id": "http://www.example.org/product#this",
"name": "Product Name",
"@type": "Product",
"image": "http://www.example.com/anvil_executive.jpg",
"mpn": "925872",
"brand": {
"@type": "Thing",
"name": "ACME"
},
"offers": {
"@type": "Offer",
"priceCurrency": "USD",
"price": "119.99",
"itemCondition": "http://schema.org/UsedCondition",
"availability": "http://schema.org/InStock"
}
}
</script>
我的猜测是 Google 的结构化数据测试工具不支持不同的语法,因为如果使用相同的语法它似乎可以工作。但是由于它们仍然正确显示 URI(在这两种情况下 http://www.example.org/product#this
),您可能会争辩说只是工具的界面没有合并它们。
然而,据我所知 Google 无论如何都没有文档支持这些主题 URI(但这并不一定意味着他们不支持它),所以这对他们来说可能无关紧要。
如果使用 http://linter.structured-data.org/,您的示例工作正常:它会创建 一个 项目,其中包含两个品牌和两个报价。
虽然在技术上合并来自两种不同语法的数据是可行的(读取微数据和 json-ld)并且结构化数据 Linter 证实了这一点,但 Google 不 支持它,这意味着不会合并属性(并且不会满足 Rich Snippets 的要求)。
我们得到了 SEO 界的几位参与者的最终确认,包括 Dan Brickley and Jarno van Driel。
in general you can use both syntaxes side by side, but you won't get the fine-grained merging of triples by ID that a pure RDF application might expect (Dan Brickley on Twitter, Jan 14th, 2020, bold mine)
--
I think @danbri already was pretty clear. Highly doubt you'll get a different answer from other Googlers. (Jarno van Driel on Twitter, Jan 14th, 2020)
目前提出的解决方案是解析微数据并将其发布为 JSON-LD。