50 lines
2.2 KiB
JSON
50 lines
2.2 KiB
JSON
{
|
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
"$id": "schema:ProductModel",
|
|
"title": "ProductModel",
|
|
"description": "A datasheet or vendor specification of a product (in the sense of a prototypical description).",
|
|
"type": "object",
|
|
"allOf": [
|
|
{
|
|
"description": "Any offered product or service. For example: a pair of shoes; a concert ticket; the rental of a car; a haircut; or an episode of a TV show streamed online.",
|
|
"$ref": "schema:Product"
|
|
}
|
|
],
|
|
"properties": {
|
|
"isVariantOf": {
|
|
"description": "Indicates the kind of product that this is a variant of. In the case of [[ProductModel]], this is a pointer (from a ProductModel) to a base product from which this product is a variant. It is safe to infer that the variant inherits all product features from the base model, unless defined locally. This is not transitive. In the case of a [[ProductGroup]], the group description also serves as a template, representing a set of Products that vary on explicitly defined, specific dimensions only (so it defines both a set of variants, as well as which values distinguish amongst those variants). When used with [[ProductGroup]], this property can apply to any [[Product]] included in the group.",
|
|
"oneOf": [
|
|
{
|
|
"anyOf": [
|
|
{ "$ref": "schema:ProductGroup" },
|
|
{ "$ref": "schema:ProductModel" }
|
|
]
|
|
},
|
|
{
|
|
"type": "array",
|
|
"items": {
|
|
"anyOf": [
|
|
{ "$ref": "schema:ProductGroup" },
|
|
{ "$ref": "schema:ProductModel" }
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"predecessorOf": {
|
|
"description": "A pointer from a previous, often discontinued variant of the product to its newer variant.",
|
|
"oneOf": [
|
|
{ "$ref": "schema:ProductModel" },
|
|
{ "type": "array", "items": { "$ref": "schema:ProductModel" } }
|
|
]
|
|
},
|
|
"successorOf": {
|
|
"description": "A pointer from a newer variant of a product to its previous, often discontinued predecessor.",
|
|
"oneOf": [
|
|
{ "$ref": "schema:ProductModel" },
|
|
{ "type": "array", "items": { "$ref": "schema:ProductModel" } }
|
|
]
|
|
}
|
|
}
|
|
}
|