可以嵌套(如果可能)JSON-LD schema.org 参考吗?
Is it ok to nest (when possible) JSON-LD schema.org reference?
搜索引擎是否对这两个示例一视同仁?
如果是,是否有理由选择一个而不是另一个?
如果不是,有什么区别?
非嵌套结构化数据:
[{
"@context": "http://schema.org",
"@type": "WebPage",
...
},{
"@context": "http://schema.org",
"@type": "BreadcrumbList",
...
},{
"@context": "http://schema.org",
"@type": "VideoObject",
...
}]
嵌套结构化数据:
[{
"@context": "http://schema.org",
"@type": "WebPage",
"breadcrumb": {
"@type": "BreadcrumbList",
...
},
"video": {
"@type": "VideoObject",
...
},
...
}]
它们不等价。
第一个例子仅表示存在三个实体:a WebPage
、a BreadcrumbList
和 a VideoObject
。但他们没有任何关系。
第二个示例表示存在三个实体(与第一个示例相同),但它们是相关的(由于使用了属性 breadcrumb
and video
):Webpage
实体具有面包屑和一个嵌入式视频。
所以使用第二个例子当然更可取
请注意,您不必嵌套来表达这一点。您还可以使用第一个示例中的结构并为每个节点提供一个 URI(使用 @id
),然后使用这些 URI 作为属性的值 (example)。但消费者可能会更好地支持嵌套。
搜索引擎是否对这两个示例一视同仁?
如果是,是否有理由选择一个而不是另一个?
如果不是,有什么区别?
非嵌套结构化数据:
[{
"@context": "http://schema.org",
"@type": "WebPage",
...
},{
"@context": "http://schema.org",
"@type": "BreadcrumbList",
...
},{
"@context": "http://schema.org",
"@type": "VideoObject",
...
}]
嵌套结构化数据:
[{
"@context": "http://schema.org",
"@type": "WebPage",
"breadcrumb": {
"@type": "BreadcrumbList",
...
},
"video": {
"@type": "VideoObject",
...
},
...
}]
它们不等价。
第一个例子仅表示存在三个实体:a WebPage
、a BreadcrumbList
和 a VideoObject
。但他们没有任何关系。
第二个示例表示存在三个实体(与第一个示例相同),但它们是相关的(由于使用了属性 breadcrumb
and video
):Webpage
实体具有面包屑和一个嵌入式视频。
所以使用第二个例子当然更可取
请注意,您不必嵌套来表达这一点。您还可以使用第一个示例中的结构并为每个节点提供一个 URI(使用 @id
),然后使用这些 URI 作为属性的值 (example)。但消费者可能会更好地支持嵌套。