在网页中放置多个JSON-LD对象的位置?

时间:2018-04-07 22:25:42

标签: schema.org json-ld

我的webapge

我正在为会议建立一个webpage。该页面包含多个对象,例如speakerPerson)或sessionEvent)。

我的问题

我想在页面中添加语义数据,以便搜索引擎和社交网络可以轻松理解其内容。我想将页面整体描述为部分页面 - 就像单个会话一样

我的问题

如何以标准方式标记整个页面和内部对象? 我可以在同一页面中使用多个JSON-LD,还是应该将JSON-LD用作整个页面以及内部对象的其他标记?

澄清,注释

感谢您指出JSON-LD Schema.org: Multiple video/image page的答案。但是,我不知道我应该在哪里放置不同的JSON-LD对象,以便它们中的每一个都引用文档的特定部分。它们应该使用div ID链接吗? <script>是否应该放在相关的div中?

2 个答案:

答案 0 :(得分:1)

如果您希望根据Google的指南,可以在网页上包含多个结构化数据元素

判断它是否可以解析预期的JSON-LD对象和属性的最佳方法是使用他们的Structured Data Testing Tool

答案 1 :(得分:0)

  

我不知道应该在哪里放置不同的JSON-LD对象,以便每个对象引用文档的特定部分。

使用JSON-LD,结构化数据不会耦合&#34;到HTML。 (对于Microdata和RDFa语法,这是可能的,但即使在那里,提取结构化数据之后,它与指定的HTML元素无关。)

如果您有一个关于两个人的页面,您只需提供一个WebPage和两个Person个对象。为了能够从其他地方对这些对象进行陈述,give them URIs是一个很好的做法,可以指定with @id。对于WebPage,URI通常是页面的规范URL。

<script type="application/ld+json">
{
  "@context": "http://schema.org",
  "@type": "WebPage",
  "@id": "",
  "about": [
    {
      "@type": "Person",
      "@id": "#person-1"
    },
    {
      "@type": "Person",
      "@id": "#person-2"
    }
  ]
}
</script>

理论上,可能有一个属性允许您引用描述实体的HTML元素。 Schema.org目前具有Pending中的属性,用于SpeakableSpecification (Pending)cssSelector (Pending)(使用CSS选择器引用元素),xpath (Pending)(使用XPath引用元素)。但这些不能用于其他情况(如目前所定义)。因此,您必须为此目的定义自己的属性。

  

它们是否应使用div ID链接?

您可以在对象的id属性中提供url值。它没有&#34;链接&#34;但是HTML到结构化数据。它只传达:您可以通过以下URL找到有关此节点对象描述的实体的信息。

通常每个实体都有自己的页面,但当然,在同一页面上描述多个实体完全没问题。

扩展上面的例子:

<script type="application/ld+json">
{
  "@context": "http://schema.org",
  "@type": "WebPage",
  "@id": "",
  "about": [
    {
      "@type": "Person",
      "@id": "#person-1",
      "url": "#about-person-1"
    },
    {
      "@type": "Person",
      "@id": "#person-2",
      "url": "#about-person-2"
    }
  ]
}
</script>
  

<script>是否应该放在相关的div中?

对于结构化数据,它makes no difference在HTML文档中放置script元素。

您可以将所有对象放在一个script元素中(如上面的示例中所示),或者您可以使用多个script元素,但是您应该引用它们的@id值,以便您仍然可以使用about之类的属性(上面链接的答案中的示例)。它在语义上没有区别。