我想将两种结构化数据联系在一起:WebPage
(是JSON-LD)和BreadcrumbList
(是内联微数据)。
主题不是重复的!我在SO上看到了许多类似的答案,但是我使用Google Structured Data Test工具测试了每个人,没有一个答案得到有效测试。
代码示例为:
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "Webpage",
"id": "https://www.example.com#Webpage",
"breadcrumb": {
"@type": "BreadcrumbList",
"@id": "https://www.example.com#BreadcrumbList"
}
}
</script>
<nav class="breadcrumbs">
<ol itemscope itemtype="http://schema.org/BreadcrumbList" itemid="https://www.example.com#BreadcrumbList">
<li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem">
<a itemprop="item" rel="up up up" title="a" href="/a/">
<span itemprop="name">a</span></a>
<meta itemprop="position" content="1" /></li>
<li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem">
<a itemprop="item" rel="up up" title="b" href="/b/">
<span itemprop="name">b</span></a>
<meta itemprop="position" content="2" /></li>
<li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem">
<a itemprop="item" rel="up" title="c" href="/c/">
<span itemprop="name">c</span></a>
<meta itemprop="position" content="3" /></li>
</ol>
</nav>
正如我所说,WebPage
是JSON-LD代码段中的主要数据类型。它具有辅助数据类型BreadcrumbList
,该数据类型具有ID。微数据中的BreadcrumbList
与JSON-LD中的itemid相关联-我希望测试工具能够显示JSON-LD的BredcrumbList
与微数据中的ItemList
之间的关系。但不是:测试工具将它们显示为不同,并因为不需要<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "Webpage",
"id": "https://www.example.com#Webpage",
"breadcrumb": {
"@type": "BreadcrumbList",
"@id": "https://www.example.com#BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"id": "https://www.example.com#ListItem"
}
]
}
}
</script>
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "ListItem",
"id": "https://www.example.com#ListItem",
"position": "1",
"item": {
"@id": "https://www.example.com/item1",
"name": "name1"
}
}
}
</script>
而在JSON-LD代码段中触发错误。
这是测试工具的错误还是我遗漏了一些实质性内容?
PS :按预期验证了仅在JSON-LD上构建的相同构造:
.example
答案 0 :(得分:1)
我已经解决了这个问题大约一个月了;它很快就消失了。
因此,JSON + LD只是linked data的容器。我认为您的问题是在“您可以混合使用微格式吗”领域,即:架构,RDFa,微数据..答案是Yes!
我为Google使用json + ld格式的顶级链接定义;诸如组织,localBusiness等有点抽象的事物,然后进一步深化,我将RDFa / Microdata内联用于页面元素。面包屑,标题,电话等内容。
Google支持每种微格式(JSON-LD带有preference),并且mixing Attributes似乎没有任何冲突,只要数据链接为consistent并且语法有效。因此您可以使用适合代码结构的内容。
因此,根据Google开发人员文档和优秀的开发人员的说法,您的代码示例是一种有效的方法,截至2019年,创建此方法将创建一个有效的页面。它使开发变得更加容易。