为什么需要在JSON-LD中指定类型在context之后?
Why do types need to be specified in JSON-LD after the context?
在 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 在这里的工作方式有一些误解。
Schema.org does not require 属性 可以有哪些值。它列出了 预期的 值,但作者不必遵循该值,这只是一个建议。
例如contactPoint
property is an entity with the ContactPoint
类型的期望值。但是可以使用字符串或 URL 值来代替(严格来说甚至是 Thing
项目,或任何其他类型)。
即使您始终遵循建议并使用预期的类型,也不一定清楚您指的是哪种类型,因为
- 有些属性需要几种类型之一作为值(例如,
itemOffered
需要 Product
或 Service
)
- a 属性 可能会在 Schema.org 的未来版本中增加一个类型,然后就不再清楚你指的是哪个
- 属性 的预期类型可能会在 Schema.org 的未来版本中删除,但您已经发布的结构化数据可能对新的预期类型没有意义
在 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 在这里的工作方式有一些误解。
Schema.org does not require 属性 可以有哪些值。它列出了 预期的 值,但作者不必遵循该值,这只是一个建议。
例如contactPoint
property is an entity with the ContactPoint
类型的期望值。但是可以使用字符串或 URL 值来代替(严格来说甚至是 Thing
项目,或任何其他类型)。
即使您始终遵循建议并使用预期的类型,也不一定清楚您指的是哪种类型,因为
- 有些属性需要几种类型之一作为值(例如,
itemOffered
需要Product
或Service
) - a 属性 可能会在 Schema.org 的未来版本中增加一个类型,然后就不再清楚你指的是哪个
- 属性 的预期类型可能会在 Schema.org 的未来版本中删除,但您已经发布的结构化数据可能对新的预期类型没有意义