Schema.org 和对象层次结构
Schema.org and object hierarchy
实际上,我对 Schema.org 对象如何 "composed" 不符合给定规范缺乏了解。不幸的是,到目前为止我还没有找到明确的解释。
让我们以 https://schema.org/SoldOut 给出的 JSON-LD 为例。
在 "Example 1" 中,我们给出了类型 Offer
的 属性 offers
。在唯一的 Offer
中,指定了 price
属性 ("13.00")。
但是如果我查看 https://schema.org/Offer 处给出的对象 Offer
的规范,根本没有指定 price
属性。
所以我的问题是,它来自哪里 - price
属性?
Offer
对象似乎合并了类型 Offer
和 PriceSpecification
。
但为什么 @type
属性 中没有提到它?
有两种price
-属性可能会出现:
第一种就是SoldOut
例子中的那种。第二种我在下面的示例中向您展示,基于 SoldOut
too
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "Event",
"location": {
"@type": "Place",
"address": {
"@type": "PostalAddress",
"addressLocality": "Denver",
"addressRegion": "CO",
"postalCode": "80209",
"streetAddress": "7 S. Broadway"
},
"name": "The Hi-Dive"
},
"name": "SOLD OUT! Typhoon with Radiation City",
"offers": {
"@type": "Offer",
"availability": "http://schema.org/SoldOut",
"price": {
"@type": "PriceSpecification",
"price": "13.00",
"priceCurrency": "USD",
},
"url": "http://www.ticketfly.com/purchase/309433"
},
"startDate": "2013-09-14T21:30"
}
</script>
用文字来说,您可以将 price
用作独立的 属性,也可以作为类型 PriceSpecification
的一部分。两种用法都可以,作为类型 PriceSpecification
的一部分的用法适用于您必须将更多属性指定为仅价格及其货币的情况,如 https://schema.org/PriceSpecification 下所列。
But if I look at the specification of object Offer
given at https://schema.org/Offer there is no price
property specified at all.
Offer
类型 是否 指定 price
属性.
price
属性 列在 https://schema.org/Offer, and the Offer
type is also listed under "Used on these types" on https://schema.org/price。
(有时 a bug 类型页面没有列出所有属性,所以也许这就是您没有看到它的原因。)
类型总是指定其自身的属性及其所有父类型的属性。因此,对于 Offer
,您可以使用 Offer
、Intangible
和 Thing
的属性:
Thing
> Intangible
> Offer
所有可用的属性都列在类型页面的第一个 table 中(除非出现错误)。
实际上,我对 Schema.org 对象如何 "composed" 不符合给定规范缺乏了解。不幸的是,到目前为止我还没有找到明确的解释。
让我们以 https://schema.org/SoldOut 给出的 JSON-LD 为例。
在 "Example 1" 中,我们给出了类型 Offer
的 属性 offers
。在唯一的 Offer
中,指定了 price
属性 ("13.00")。
但是如果我查看 https://schema.org/Offer 处给出的对象 Offer
的规范,根本没有指定 price
属性。
所以我的问题是,它来自哪里 - price
属性?
Offer
对象似乎合并了类型 Offer
和 PriceSpecification
。
但为什么 @type
属性 中没有提到它?
有两种price
-属性可能会出现:
第一种就是SoldOut
例子中的那种。第二种我在下面的示例中向您展示,基于 SoldOut
too
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "Event",
"location": {
"@type": "Place",
"address": {
"@type": "PostalAddress",
"addressLocality": "Denver",
"addressRegion": "CO",
"postalCode": "80209",
"streetAddress": "7 S. Broadway"
},
"name": "The Hi-Dive"
},
"name": "SOLD OUT! Typhoon with Radiation City",
"offers": {
"@type": "Offer",
"availability": "http://schema.org/SoldOut",
"price": {
"@type": "PriceSpecification",
"price": "13.00",
"priceCurrency": "USD",
},
"url": "http://www.ticketfly.com/purchase/309433"
},
"startDate": "2013-09-14T21:30"
}
</script>
用文字来说,您可以将 price
用作独立的 属性,也可以作为类型 PriceSpecification
的一部分。两种用法都可以,作为类型 PriceSpecification
的一部分的用法适用于您必须将更多属性指定为仅价格及其货币的情况,如 https://schema.org/PriceSpecification 下所列。
But if I look at the specification of object
Offer
given at https://schema.org/Offer there is noprice
property specified at all.
Offer
类型 是否 指定 price
属性.
price
属性 列在 https://schema.org/Offer, and the Offer
type is also listed under "Used on these types" on https://schema.org/price。
(有时 a bug 类型页面没有列出所有属性,所以也许这就是您没有看到它的原因。)
类型总是指定其自身的属性及其所有父类型的属性。因此,对于 Offer
,您可以使用 Offer
、Intangible
和 Thing
的属性:
Thing
>Intangible
>Offer
所有可用的属性都列在类型页面的第一个 table 中(除非出现错误)。