我有一个网站,客户端请求 JSON-LD(不是微数据)schema.org 标签。他们想要的其中一个是每个页面上都有一个基本的“WebPage”标签,其中包含有关每个页面上的内容的一些信息。另一个是“FAQPage”,仅添加在特定的 FAQ 页面上。两者都将作为内联脚本标记直接添加到页面上。
FAQPage继承自WebPage,因此包含了WebPage的所有属性。
如果我只是让页脚代码生成“WebPage”标签,而 FAQ 组件生成“FAQPage”标签,则两者最终都会作为单独的 JSON-LD 脚本标签出现在页面上 - 我相信这会被解释为两个独立的“网页” - 不是我们正在寻找的。p>
是否可以标记架构标签,以便两个 JSON-LD 标签代表彼此的“扩展”?由于 FAQPage 继承了 WebPage,我希望有一种方法可以设置一个标识符,以显示两者是正在记录的同一页面。
(是的,我可以使用后端的逻辑将有关 FAQPage 的信息“传递”到页脚,并让页脚组件动态输出 FAQPage 或 WebPage,但这不是我在这里要寻找的。) p>
@id
关键字 可以用于此。它为节点对象提供一个 IRI 形式的标识符(或空白节点标识符)。具有相同
@id
值的节点对象是同一事物,无论这些事物的类型是否具有继承关系。这些 IRI 不必解析为 Web 上的文档。如果他们这样做,您应该确保区分事物和有关该事物的文档。
但是,在您的具体情况下,该事物和有关该事物的文档实际上表示相同。因此,您可以使用页面的规范 IRI 作为
@id
:如果对象表示相同的事物,但具有不同的
@id
值,您可以使用属性owl:sameAs
。但只支持 Schema.org 的消费者不会认识到这一点。 (Schema.org 也有一个sameAs
属性,但它有不同的含义。 )