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。