最佳 JSON-LD 实践:使用多个 <script> 元素?

新手上路,请多包涵

我很好奇将 JSON-LD 应用到 schema.org 站点的最佳实践。

如果我有一个带有 Article 的页面,并且我还想在我的页面上定义 WebSite ,我会有这个:

 <script type="application/ld+json">
{
    "@context": "http://schema.org",
    "@type": "WebSite",
    "url": "http://www.example.com/",
    "potentialAction": {
      "@type": "SearchAction",
      "target": "http://www.example.com/search?&q={query}",
      "query-input": "required"
    }
}
</script>

<!- … -->

<script type="application/ld+json">
{
  "@context": "http://schema.org",
  "@type": "Article",
  "author": "John Doe",
  "interactionCount": [
    "UserTweets:1203",
    "UserComments:78"
  ],
  "name": "How to Tie a Reef Knot"
}
</script>

这是对还是错?将它们合并到同一个脚本或项目数组中是否有任何好处或需要?

原文由 Stu Furlong 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 702
2 个回答

这是有效的。您可以根据需要拥有任意数量的数据块(= script 元素)。

仅使用一个 script 元素的可能好处:它允许使多个项目之间的关系更容易(例如,如果您决定使用 hasPartmainEntity )因为您只需要嵌套这些项目。

但是,通过使用 @id 引用项目的 URI,使用单独的数据块当然也可以建立这些关系( 谢谢,@ Gregg Kellogg )。

(作为参考, 在单个 script 中添加两个或多个顶级项目 可以使用 @graph 。)

原文由 unor 发布,翻译遵循 CC BY-SA 3.0 许可协议

拥有单个或多个数据块没有任何好处,除了限制您在网站中存储和管理模式数据的方式。

例如,如果您网站中的不同组件负责独立生成每个数据块,您可能需要将它们分开。或者,如果您的网站能够在一个地方管理一个页面的所有模式,那么管理单个数据块并将其呈现为单个 script 元素可能会更简单。

您可以通过将每个模式列为数组来将它们组合到一个脚本中,如下所示:

 <script type="application/ld+json">
[
  {
    "@context": "http://schema.org",
    "@type": "WebSite",
    "url": "http://www.example.com/",
    "potentialAction": {
      "@type": "SearchAction",
      "target": "http://www.example.com/search?&q={query}",
      "query-input": "required"
    }
  },
  {
    "@context": "http://schema.org",
    "@type": "Article",
    "author": "John Doe",
    "interactionCount": [
      "UserTweets:1203",
      "UserComments:78"
    ],
    "name": "How to Tie a Reef Knot"
  }
]
</script>

原文由 teaforchris 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题