每页有多个JSON-LD脚本元素还是有嵌套的单个元素?

时间:2018-05-30 12:21:25

标签: html schema.org json-ld

我们说我们有像阿迪达斯这样的电子商务。我们有WebSsite的基本JSON-LD结构:

{
  "@context": "http://schema.org",
  "@type": "WebSite",
  "url": "https://adidas.com/us",
  "potentialAction": {
    "@type": "SearchAction",
    "target": "https://adidas.com/us/search?q={search_term_string}",
    "query-input": "required name=search_term_string"
  }
}

我们有Organization

{
  '@context': 'http://schema.org',
  '@type': 'Organization',
  'name': 'Adidas',
  'description': 'Sport Shop',
  'email': 'adidas@adidas.us',
  'url': 'http://www.adidas.us',
  'logo': 'http://www.adidas.us/logo.svg'
}

该网站也是Store

 "@context":"http://schema.org",
 "@type":"Store",
 "url": 'http://www.adidas.us',
 "description": "Adidas Shop !",
 "name": "Adidas"
}

我们还有经典BreadcrumbList

 "@context":"http://schema.org",
 "@type":"BreadcrumbList",
 "itemListElement":
  [  
    {  
       "@type":"ListItem",
       "position":1,
       "item":{  
          "@type":"Thing",
          "@id":"https://www.adidas.us",
          "name":"Adidas"
       }
    },
    {  
       "@type":"ListItem",
       "position":2,
       "item":{  
          "@type":"Thing",
          "@id":"https://www.adidas.us/shoes",
          "name":"Adidas shoes"
       }
    },
    {  
       "@type":"ListItem",
       "position":3,
       "item":{  
          "@type":"Thing",
          "@id":"https://www.adidas.us/shoes/Featured",
          "name":"Adidas featured shoes"
       }
    }
  ]
}

这3个JSON-LD很常见(当然或多或少都很详细),有时我在网页上找到了3 script个元素,这些元素有JSON-LD,有时只有1个,有时是2个。

我们是否应该尝试将它们嵌套到一个script中(如果是这样,如何!?),还是将它们分开来更好?

1 个答案:

答案 0 :(得分:1)

重要的是,您要使用合适的属性not how many script元素连接实体。

如果页面上有这三个实体,则should convey如何关联它们。你可能想传达的内容:有一个网页是该网站的一部分,由该组织发布,并且有一个面包屑列表。

所以你缺少的是一个代表网页的实体(→WebPage)和连接所有实体的属性(→publisherbreadcrumbisPartOf

您指定的script元素数量取决于您:

  • 一个script,筑巢所有人。
  • 一个script,包含多个顶级对象(使用@graph@id)。
  • 每个实体script(使用@id)。
  • 以上的组合。

第一个是最简单的:

{
  "@context": "http://schema.org",
  "@type": "WebPage",
  "isPartOf": {
    "@type": "WebSite"
  },
  "publisher": {
    "@type": "Organization"
  },
  "breadcrumb": {
    "@type": "BreadcrumbList"
  }
}

Give each relevant entity an @id,因此您可以reference在同一页面上(在同一script元素或其他元素中),甚至在外部页面上使用这些实体。

我在这里使用它来表达同一Organizationpublisher WebPage以及WebSite

{
  "@context": "http://schema.org",
  "@type": "WebPage",
  "@id": "",
  "isPartOf": {
    "@type": "WebSite",
    "@id": "/#this-site",
    "publisher": {"@id": "/#this-org"}
  },
  "publisher": {
    "@type": "Organization",
    "@id": "/#this-org"
  },
  "breadcrumb": {
    "@type": "BreadcrumbList"
  }
}