SEO. JSONLD. ProductModel
(SEO v0.3.0-rc.0)
View Source
A datasheet or vendor specification of a product (in the sense of a prototypical description).
Helper for building a Schema.org ProductModel JSON-LD structure.
Summary
Types
A JSON-LD map ready to be nested or rendered. String-keyed, always
includes "@type" set to "ProductModel", plus any camelCased
field keys the caller provided (see build/1). "@context" is added
at render time by SEO.JSONLD.meta/1 on the top-level node only.
Functions
Build a ProductModel JSON-LD map.
Types
@type attrs() :: %{ optional(:is_variant_of) => t() | map() | SEO.JSONLD.ProductGroup.t(), optional(:predecessor_of) => t() | map(), optional(:successor_of) => t() | map(), optional(:additional_property) => SEO.JSONLD.PropertyValue.t() | map(), optional(:aggregate_rating) => SEO.JSONLD.AggregateRating.t() | map(), optional(:asin) => String.t() | URI.t(), optional(:audience) => SEO.JSONLD.Audience.t() | map(), optional(:award) => String.t(), optional(:awards) => String.t(), optional(:brand) => SEO.JSONLD.Organization.t() | map() | SEO.JSONLD.Brand.t(), optional(:category) => String.t() | URI.t() | SEO.JSONLD.Thing.t() | map() | :aerobic_activity | :anaerobic_activity | :balance | :flexibility | :leisure_time_activity | :occupational_activity | :strength_training | SEO.JSONLD.CategoryCode.t(), optional(:color) => String.t(), optional(:color_swatch) => URI.t() | String.t() | SEO.JSONLD.ImageObject.t() | map(), optional(:country_of_assembly) => String.t(), optional(:country_of_last_processing) => String.t(), optional(:country_of_origin) => SEO.JSONLD.Country.t() | map(), optional(:depth) => SEO.JSONLD.QuantitativeValue.t() | map(), optional(:display_location) => SEO.JSONLD.Place.t() | map(), optional(:funding) => SEO.JSONLD.Grant.t() | map(), optional(:gtin) => String.t() | URI.t(), optional(:gtin12) => String.t(), optional(:gtin13) => String.t(), optional(:gtin14) => String.t(), optional(:gtin8) => String.t(), optional(:has_adult_consideration) => :alcohol_consideration | :dangerous_good_consideration | :healthcare_consideration | :narcotic_consideration | :reduced_relevance_for_children_consideration | :sexual_content_consideration | :tobacco_nicotine_consideration | :unclassified_adult_consideration | :violence_consideration | :weapon_consideration, optional(:has_certification) => SEO.JSONLD.Certification.t() | map(), optional(:has_energy_consumption_details) => SEO.JSONLD.EnergyConsumptionDetails.t() | map(), optional(:has_gs1_digital_link) => URI.t() | String.t(), optional(:has_measurement) => SEO.JSONLD.QuantitativeValue.t() | map(), optional(:has_merchant_return_policy) => SEO.JSONLD.MerchantReturnPolicy.t() | map(), optional(:height) => SEO.JSONLD.QuantitativeValue.t() | map(), optional(:in_product_group_with_id) => String.t(), optional(:is_accessory_or_spare_part_for) => SEO.JSONLD.Product.t() | map(), optional(:is_consumable_for) => SEO.JSONLD.Product.t() | map(), optional(:is_family_friendly) => boolean(), optional(:is_related_to) => SEO.JSONLD.Service.t() | map() | SEO.JSONLD.Product.t(), optional(:is_similar_to) => SEO.JSONLD.Service.t() | map() | SEO.JSONLD.Product.t(), optional(:item_condition) => :damaged_condition | :new_condition | :refurbished_condition | :used_condition, optional(:keywords) => SEO.JSONLD.DefinedTerm.t() | map() | String.t() | URI.t(), optional(:logo) => URI.t() | String.t() | SEO.JSONLD.ImageObject.t() | map(), optional(:manufacturer) => SEO.JSONLD.Organization.t() | map(), optional(:material) => String.t() | SEO.JSONLD.Product.t() | map() | URI.t(), optional(:mobile_url) => String.t(), optional(:model) => String.t() | t() | map(), optional(:mpn) => String.t(), optional(:negative_notes) => SEO.JSONLD.ItemList.t() | map() | SEO.JSONLD.ListItem.t() | String.t() | SEO.JSONLD.WebContent.t(), optional(:nsn) => String.t(), optional(:offers) => SEO.JSONLD.Offer.t() | map() | SEO.JSONLD.Demand.t(), optional(:pattern) => SEO.JSONLD.DefinedTerm.t() | map() | String.t(), optional(:positive_notes) => SEO.JSONLD.WebContent.t() | map() | SEO.JSONLD.ItemList.t() | SEO.JSONLD.ListItem.t() | String.t(), optional(:product_id) => String.t(), optional(:production_date) => Date.t() | String.t(), optional(:purchase_date) => Date.t() | String.t(), optional(:release_date) => Date.t() | String.t(), optional(:review) => SEO.JSONLD.Review.t() | map(), optional(:reviews) => SEO.JSONLD.Review.t() | map(), optional(:size) => SEO.JSONLD.DefinedTerm.t() | map() | SEO.JSONLD.QuantitativeValue.t() | String.t(), optional(:sku) => String.t(), optional(:slogan) => String.t(), optional(:weight) => SEO.JSONLD.QuantitativeValue.t() | map(), optional(:width) => SEO.JSONLD.QuantitativeValue.t() | map(), optional(:additional_type) => String.t() | URI.t(), optional(:alternate_name) => String.t(), optional(:description) => SEO.JSONLD.TextObject.t() | map() | String.t(), optional(:disambiguating_description) => String.t(), optional(:identifier) => String.t() | URI.t() | SEO.JSONLD.PropertyValue.t() | map(), optional(:image) => URI.t() | String.t() | SEO.JSONLD.ImageObject.t() | map(), optional(:main_entity_of_page) => SEO.JSONLD.CreativeWork.t() | map() | URI.t() | String.t(), optional(:name) => String.t(), optional(:owner) => SEO.JSONLD.Organization.t() | map() | SEO.JSONLD.Person.t(), optional(:potential_action) => SEO.JSONLD.Action.t() | map(), optional(:same_as) => URI.t() | String.t(), optional(:subject_of) => SEO.JSONLD.Event.t() | map() | SEO.JSONLD.CreativeWork.t(), optional(:url) => URI.t() | String.t() } | [ is_variant_of: t() | map() | SEO.JSONLD.ProductGroup.t(), predecessor_of: t() | map(), successor_of: t() | map(), additional_property: SEO.JSONLD.PropertyValue.t() | map(), aggregate_rating: SEO.JSONLD.AggregateRating.t() | map(), asin: String.t() | URI.t(), audience: SEO.JSONLD.Audience.t() | map(), award: String.t(), awards: String.t(), brand: SEO.JSONLD.Organization.t() | map() | SEO.JSONLD.Brand.t(), category: String.t() | URI.t() | SEO.JSONLD.Thing.t() | map() | :aerobic_activity | :anaerobic_activity | :balance | :flexibility | :leisure_time_activity | :occupational_activity | :strength_training | SEO.JSONLD.CategoryCode.t(), color: String.t(), color_swatch: URI.t() | String.t() | SEO.JSONLD.ImageObject.t() | map(), country_of_assembly: String.t(), country_of_last_processing: String.t(), country_of_origin: SEO.JSONLD.Country.t() | map(), depth: SEO.JSONLD.QuantitativeValue.t() | map(), display_location: SEO.JSONLD.Place.t() | map(), funding: SEO.JSONLD.Grant.t() | map(), gtin: String.t() | URI.t(), gtin12: String.t(), gtin13: String.t(), gtin14: String.t(), gtin8: String.t(), has_adult_consideration: :alcohol_consideration | :dangerous_good_consideration | :healthcare_consideration | :narcotic_consideration | :reduced_relevance_for_children_consideration | :sexual_content_consideration | :tobacco_nicotine_consideration | :unclassified_adult_consideration | :violence_consideration | :weapon_consideration, has_certification: SEO.JSONLD.Certification.t() | map(), has_energy_consumption_details: SEO.JSONLD.EnergyConsumptionDetails.t() | map(), has_gs1_digital_link: URI.t() | String.t(), has_measurement: SEO.JSONLD.QuantitativeValue.t() | map(), has_merchant_return_policy: SEO.JSONLD.MerchantReturnPolicy.t() | map(), height: SEO.JSONLD.QuantitativeValue.t() | map(), in_product_group_with_id: String.t(), is_accessory_or_spare_part_for: SEO.JSONLD.Product.t() | map(), is_consumable_for: SEO.JSONLD.Product.t() | map(), is_family_friendly: boolean(), is_related_to: SEO.JSONLD.Service.t() | map() | SEO.JSONLD.Product.t(), is_similar_to: SEO.JSONLD.Service.t() | map() | SEO.JSONLD.Product.t(), item_condition: :damaged_condition | :new_condition | :refurbished_condition | :used_condition, keywords: SEO.JSONLD.DefinedTerm.t() | map() | String.t() | URI.t(), logo: URI.t() | String.t() | SEO.JSONLD.ImageObject.t() | map(), manufacturer: SEO.JSONLD.Organization.t() | map(), material: String.t() | SEO.JSONLD.Product.t() | map() | URI.t(), mobile_url: String.t(), model: String.t() | t() | map(), mpn: String.t(), negative_notes: SEO.JSONLD.ItemList.t() | map() | SEO.JSONLD.ListItem.t() | String.t() | SEO.JSONLD.WebContent.t(), nsn: String.t(), offers: SEO.JSONLD.Offer.t() | map() | SEO.JSONLD.Demand.t(), pattern: SEO.JSONLD.DefinedTerm.t() | map() | String.t(), positive_notes: SEO.JSONLD.WebContent.t() | map() | SEO.JSONLD.ItemList.t() | SEO.JSONLD.ListItem.t() | String.t(), product_id: String.t(), production_date: Date.t() | String.t(), purchase_date: Date.t() | String.t(), release_date: Date.t() | String.t(), review: SEO.JSONLD.Review.t() | map(), reviews: SEO.JSONLD.Review.t() | map(), size: SEO.JSONLD.DefinedTerm.t() | map() | SEO.JSONLD.QuantitativeValue.t() | String.t(), sku: String.t(), slogan: String.t(), weight: SEO.JSONLD.QuantitativeValue.t() | map(), width: SEO.JSONLD.QuantitativeValue.t() | map(), additional_type: String.t() | URI.t(), alternate_name: String.t(), description: SEO.JSONLD.TextObject.t() | map() | String.t(), disambiguating_description: String.t(), identifier: String.t() | URI.t() | SEO.JSONLD.PropertyValue.t() | map(), image: URI.t() | String.t() | SEO.JSONLD.ImageObject.t() | map(), main_entity_of_page: SEO.JSONLD.CreativeWork.t() | map() | URI.t() | String.t(), name: String.t(), owner: SEO.JSONLD.Organization.t() | map() | SEO.JSONLD.Person.t(), potential_action: SEO.JSONLD.Action.t() | map(), same_as: URI.t() | String.t(), subject_of: SEO.JSONLD.Event.t() | map() | SEO.JSONLD.CreativeWork.t(), url: URI.t() | String.t() ]
A JSON-LD map ready to be nested or rendered. String-keyed, always
includes "@type" set to "ProductModel", plus any camelCased
field keys the caller provided (see build/1). "@context" is added
at render time by SEO.JSONLD.meta/1 on the top-level node only.
Functions
Build a ProductModel JSON-LD map.
Fields
:is_variant_of- Indicates the kind of product that this is a variant of. In the case ofSEO.JSONLD.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 aSEO.JSONLD.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 withSEO.JSONLD.ProductGroup, this property can apply to anySEO.JSONLD.Productincluded in the group.:predecessor_of- A pointer from a previous, often discontinued variant of the product to its newer variant.:successor_of- A pointer from a newer variant of a product to its previous, often discontinued predecessor.
Inherited properties
Additional properties are available through the inheritance chain. See each ancestor's docs for its properties: