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 对象似乎合并了类型 OfferPriceSpecification。 但为什么 @type 属性 中没有提到它?

有两种price-属性可能会出现:

第一种就是SoldOut例子中的那种。第二种我在下面的示例中向您展示,基于 SoldOuttoo

<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,您可以使用 OfferIntangibleThing 的属性:

Thing > Intangible > Offer

所有可用的属性都列在类型页面的第一个 table 中(除非出现错误)。