为什么在上下文之后需要在JSON-LD中指定类型?

时间:2016-06-29 03:56:37

标签: json schema.org json-ld

在JSON-LD中,@type不仅显示在顶层,而且显示在contactPoint属性中。如果已经提供了上下文,为什么需要它?

<script type="application/ld+json">
  { "@context" : "http://schema.org",
    "@type" : "Organization",
    "url" : "http://www.your-company-site.com",
    "contactPoint" : [
      { "@type" : "ContactPoint",
        "telephone" : "+1-401-555-1212",
        "contactType" : "customer service"
      }
    ]
  }
</script>

解析器不知道上下文以及我们与组织合作的第一个@type行,因此属性contactPoint意味着具有该类型对象呢?否则,我是否可以将该属性重命名为contact,然后指定@type应该告知它是什么?这个例子对我来说似乎多余。也许我误解了JSON-LD如何在这里工作。

1 个答案:

答案 0 :(得分:2)

Schema.org does not require,它可以对属性进行评估。它列出了预期的值,但是作者不必遵循它,这只是一个建议。

例如,contactPoint属性的预期值是具有ContactPoint类型的实体。但是可以使用字符串或URL值(严格来说甚至是Thing项或任何其他类型)。

即使您始终遵循建议并使用预期类型,仍然不一定清楚您的意思是哪种类型,因为

  • 有些属性需要将多种类型中的一种作为值(例如,itemOffered需要ProductService
  • 一个属性可能会在未来版本的Schema.org中出现一个addtional类型,然后就不再清楚你的意思了
  • 可以在Schema.org的未来版本中删除预期类型的​​属性,但是您已发布的结构化数据可能对新的预期类型没有意义