SEO. JSONLD. ProductGroup
(SEO v0.3.0-rc.0)
View Source
A ProductGroup represents a group of SEO.JSONLD.Products that vary only in certain well-described ways, such as by size, color, material etc.
While a ProductGroup itself is not directly offered for sale, the various varying products that it represents can be. The ProductGroup serves as a prototype or template, standing in for all of the products who have an isVariantOf relationship to it. As such, properties (including additional types) can be applied to the ProductGroup to represent characteristics shared by each of the (possibly very many) variants. Properties that reference a ProductGroup are not included in this mechanism; neither are the following specific properties variesBy, hasVariant, url.
Helper for building a Schema.org ProductGroup JSON-LD structure.
Summary
Types
A JSON-LD map ready to be nested or rendered. String-keyed, always
includes "@type" set to "ProductGroup", 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 ProductGroup JSON-LD map.
Types
@type attrs() :: %{ optional(:has_variant) => SEO.JSONLD.Product.t() | map(), optional(:product_group_id) => String.t(), optional(:varies_by) => SEO.JSONLD.DefinedTerm.t() | map() | String.t(), 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(:is_variant_of) => SEO.JSONLD.ProductModel.t() | map() | 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() | SEO.JSONLD.ProductModel.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() } | [ has_variant: SEO.JSONLD.Product.t() | map(), product_group_id: String.t(), varies_by: SEO.JSONLD.DefinedTerm.t() | map() | String.t(), 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(), is_variant_of: SEO.JSONLD.ProductModel.t() | map() | 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() | SEO.JSONLD.ProductModel.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 "ProductGroup", 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 ProductGroup JSON-LD map.
Fields
:has_variant- Indicates aSEO.JSONLD.Productthat is a member of thisSEO.JSONLD.ProductGroup(orSEO.JSONLD.ProductModel).:product_group_id- Indicates a textual identifier for a ProductGroup.:varies_by- Indicates the property or properties by which the variants in aSEO.JSONLD.ProductGroupvary, e.g. their size, color etc. Schema.org properties can be referenced by their short name e.g. "color"; terms defined elsewhere can be referenced with their URIs.
Inherited properties
Additional properties are available through the inheritance chain. See each ancestor's docs for its properties: