schema.org中相对URL的语义JSON-LD中的Breadcrumbs

时间:2016-07-18 10:29:41

标签: schema.org json-ld

schema.org website gives an example of a breadcrumb represented in JSON-LD

<script type="application/ld+json">
{
 "@context": "http://schema.org",
 "@type": "BreadcrumbList",
 "itemListElement":
 [
  {
   "@type": "ListItem",
   "position": 1,
   "item":
   {
    "@id": "https://example.com/dresses",
    "name": "Dresses"
    }
  },
  {
   "@type": "ListItem",
  "position": 2,
  "item":
   {
     "@id": "https://example.com/dresses/real",
     "name": "Real Dresses"
   }
  }
 ]
}
</script>

对我来说大部分内容都很清楚,但我并不完全确定此示例中提供的链接的语义。

我觉得令人困惑的是@id属性。它们的值是URL,看起来这些应该导致由breadcrumb项链接到的实际网页。但是,该属性的名称表明URL实际上可能指向某些本体中的概念标识符。这是什么?

无标记标签包含一个未注释的HTML,表明我的第一个猜测是正确的,并且网址实际上会导致网页。

<ol>
  <li>
    <a href="https://example.com/dresses">Dresses</a>
  </li>
  <li>
    <a href="https://example.com/dresses/real">Real Dresses</a>
  </li>
</ol>

是这种情况,是否可以在此上下文中使用相对网址?

<script type="application/ld+json">
{
 "@context": "http://schema.org",
 "@type": "BreadcrumbList",
 "itemListElement":
 [
  {
   "@type": "ListItem",
   "position": 1,
   "item":
   {
    "@id": "https://dresses.com/dresses",
    "name": "Dresses"
    }
  },
  {
   "@type": "ListItem",
  "position": 2,
  "item":
   {
     "@id": "/dresses/cocktail",
     "name": "Cocktail Dresses"
   }
  }
 ]
}
</script>

4 个答案:

答案 0 :(得分:1)

我有同样的问题,最终进行了我在https://webuniverse.io/relative-urls-in-structured-data/上记录的研究。关键部分是这样:

  

如果您将标记直接粘贴到Google验证器中,并且有一个   相对路径-验证者不知道它属于哪个域,并且   只需追加自己的域(https://search.google.com)。部署变更并进行测试后   真实网址,您会看到验证器将附加正确的域,因此您   绝对可以在结构化数据中使用相对网址。

答案 1 :(得分:1)

是这种情况,在这种情况下可以使用相对URL吗?

在GitLab上,我们也对此感到困惑(请参阅relevant issue),因为Google's Rich Results Test炸毁了相对URL,但是生产。

因此,我们尝试了一下。我们将一些带有相对URL的json+ld推送到了生产环境中,并推送了一位工程师received an alert that the id field was invalid

简短的回答-否,不能在json + ld中使用相对URL(但可以在标记中使用相对URL,请参见this comment),而Google显然希望使用绝对URL。如果它现在可以正常工作,则不能保证将来会成功。

答案 2 :(得分:0)

在我看来应该没问题。

检查:https://search.google.com/structured-data/testing-tool

具有相对网址的示例测试数据:

<script type="application/ld+json">
{
  "@context": "http://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [{
    "@type": "ListItem",
    "position": 1,
    "item": {
      "@id": "http://www.example.com/",
      "name": "Home"
    }
  },{
    "@type": "ListItem",
    "position": 2,
    "item": {
      "@id": "/furniture/",
      "name": "Furniture"
    }
  },{
    "@type": "ListItem",
    "position": 3,
    "item": {
      "@id": "/furniture/kitchen/",
      "name": "Kitchen"
    }
  }]
}
</script>

更新 再次检查: 哦,谷歌添加域http://www.example.com/为结构数据测试工具的输出中没有绝对URL的项目。所以丢弃我的消息,我不确定是否支持相对路径,而是使用绝对路径。

答案 3 :(得分:0)

所有网址都应该是绝对的。 您可以使用将在相对URL中出错的官方测试工具https://search.google.com/structured-data/testing-tool/u/0/