E-Label Standard Format

  • Version: 1.1.0
  • Status: Proposal
  • Published: 2026-09-18
  • Machine-readable vocabulary: https://elabel.glasswise.eu/api/vocab/
  • This document: https://elabel.glasswise.eu/standard

The E-Label Standard Format is versioned with semantic versioning. A change that only adds terms raises the minor version; a change that removes or reinterprets an existing term is breaking and raises the major version. Section 7 defines what counts as additive.

Changelog

  • 1.0.0 (2026-09-18): first published version, issued as a proposal.
  • Corrections to legal references, 2026-09-18.
  • 1.1.0 (2026-09-19): adds two terms and changes nothing else. Organizations may carry url, their website. gw:ingredientsDisplayText carries the ingredient list exactly as the label renders it, grouped by category, with allergen names in a ... pair, the one markup the Standard allows in that string. gw:ingredientsText and gs1:ingredientStatement keep their plain form and are unchanged. One existing value does change shape: organization url values are now normalized before publication, so a bare host is published as https://... and a value that is not an absolute http(s) URL is dropped rather than published verbatim.

1. Purpose

This document specifies the JSON-LD document that a Glasswise e-label publishes about the product the label describes. The document exists so that a machine consumer can read everything the e-label shows on screen without scraping HTML: legal particulars, nutrition, ingredients and allergens, packaging and recycling information, certifications, operators, and the label's own translated texts.

The document is designed for three audiences at once:

  • generic structured-data consumers, which read the schema.org terms,
  • GS1-aware supply-chain consumers, which read the GS1 Web Vocabulary terms,
  • e-label-specific consumers such as e-label Atlas, which read the whole document including the gw: extension terms.

Every e-label publishes the document embedded in its HTML page as a script element of type application/ld+json.

2. The document

2.1 Shape

The document is a single JSON-LD object of @type Product. One e-label page publishes exactly one such document per language. There are no nested product documents and no language maps: all human-readable values in the document are strings in the page's language (see section 4).

2.2 Context

"@context": {
    "@vocab": "https://schema.org/",
    "gw": "https://elabel.glasswise.eu/api/vocab/",
    "gs1": "https://ref.gs1.org/voc/",
    "gtin14": "gtin14",
    "image": {
        "@id": "image",
        "@type": "@id"
    }
}
  • @vocab binds unprefixed terms to schema.org.
  • gw binds the gw: prefix to the Glasswise vocabulary, served as JSON-LD from https://elabel.glasswise.eu/api/vocab/. The vocabulary defines every gw: term this document may carry, and records the source vocabulary of each term.
  • gs1 binds the gs1: prefix to the GS1 Web Vocabulary.
  • gtin14 is a plain string identifier used as propertyID inside identifier entries, matching the schema.org convention of exposing GTINs as PropertyValue entries.
  • image is declared as @type: @id so the value is a URL reference rather than an embedded image object.

2.3 Identity

The product is identified by:

  • @id: the product's GS1 Digital Link URL when one exists (for example https://glws.eu/01/09120013397797/22/2025), otherwise the e-label page URL (https://elabel.glasswise.eu/l/{ref}). The Digital Link form encodes the GTIN and any qualifier application identifiers in the path.
  • identifier: an array of PropertyValue entries:
    • propertyID: "glasswise-ref": the short reference that appears in the e-label URL. Always present.
    • propertyID: "gtin14": the product's GTIN-14. Present when the label carries a GTIN.

2.4 GTIN qualifiers

When present, the GTIN qualifier application identifiers from the label's Digital Link are published as top-level properties:

TermTypeRequiredExampleMeaning
gs1:consumerProductVariantTextno"2025"Consumer product variant, GS1 application identifier 22.
gs1:hasBatchLotNumberTextno"L2412"Batch or lot number, GS1 application identifier 10.

3. Vocabularies and term sources

Terms are drawn from three vocabularies, in a fixed order of preference:

  1. schema.org first. If a schema.org term genuinely fits, it is used.
  2. GS1 Web Vocabulary (gs1:) second. Where GS1 defines a term that schema.org lacks, it is reused, especially for allergens, nutrients, ingredients, packaging and trade-item identifiers.
  3. gw: terms only when neither vocabulary has a term that genuinely fits. A gw: term is minted rather than forcing a value into a term whose semantics or code list does not match.

The published vocabulary at https://elabel.glasswise.eu/api/vocab/ defines every gw: term with label, comment, domain and range, records the source of each term, and lists the GS1 terms the document reuses. A consistency test in the repository fails if the emitter ever produces a gw: or gs1: term the vocabulary does not record, so the vocabulary and the emitted documents cannot drift apart.

The vocabulary URL and every gw: term URL are dereferenceable. A client asking for application/ld+json receives the vocabulary, or the single term's definition; a browser is redirected to the term index at https://elabel.glasswise.eu/standard.

GS1 code list values are emitted as node references whose @id is the code's URI in the GS1 vocabulary, for example {"@id": "gs1:SweetnessLevelOfAlcoholicBeverageCode-DRY"}.

4. Languages

One document exists per language, never a multilingual merged document.

  • Every human-readable text value is exactly the string the e-label displays in that language. Nothing is invented, summarised or machine-translated for the document.
  • inLanguage names the language of the document's text values. It is the locale of the resolved translation when one exists, otherwise the label's own default locale.
  • When a translated field has no value in the requested language, the document applies the same fallback the page renders: the label's default-locale translation where the page uses one (designation of origin), otherwise the field is absent.
  • Fields the winemaker has switched off for display are not published. The document follows the same visibility switches as the rendered label (show_product_type, show_inspection_number, show_allergen_text, show_sweetness, show_quantity), so the document never claims a particular the label does not show.

5. Term reference

"Required" in these tables means the term is present on every document. Everything else appears only when the underlying data exists and its display switch is on. Text values are in the document language (section 4); code values are stable across languages.

5.1 Product identity

TermSourceTypeRequiredExampleNotes and regulation
@typeschema.org"Product"yes"Product"The document describes the traded product itself.
@idJSON-LDURLyeshttps://glws.eu/01/09120013397797/22/2025GS1 Digital Link when present, else the e-label URL.
identifierschema.orgPropertyValue[]yessee 2.3glasswise-ref always; gtin14 when a GTIN exists.
nameschema.orgTextyes"Grüner Veltliner Smaragd"Combined name lines as displayed.
inLanguageschema.orgTextyes"de"Language of all text values in the document.
imageschema.orgURLnohttps://.../files/abcThe product image shown on the label.
countryOfOriginschema.orgCountryno{"@type":"Country","name":"Austria","gs1:countryCode":"AT"}Translated country name plus ISO 3166-1 alpha-2 code via gs1:countryCode. Serves the origin particulars of Regulation (EU) 2019/33 Article 45 and Regulation (EU) 1169/2011 Article 26.
gw:productTypegwText (code)no"quality_wine"Regulated product category code, shown when show_product_type is on.

5.2 Organizations

Each organization is a schema.org Organization with name, optional logo, optional address (PostalAddress with streetAddress, postalCode, addressLocality, addressCountry), and optional gw:producerIdentificationNumber. An organization may also carry url, its website: on the producer brand, the bottler and the distributor that is the organization's own site. On the two PPWR roles url serves as the electronic means of communication instead, and exactly one of email and url is set.

TermSourceTypeRequiredNotes and regulation
brandschema.orgOrganizationnoThe producer. Also carries gw:imprint.
gw:bottlergwOrganizationnoRegulation (EU) 2019/33 Article 46 name and address.
gw:distributorgwOrganizationnoRegulation (EU) 2019/33 Article 46 name and address.
gw:ppwrManufacturergwOrganizationnoRegulation (EU) 2025/40 Article 15(6): name, postal address and electronic means of communication.
gw:ppwrImportergwOrganizationnoRegulation (EU) 2025/40 Article 18(3): name, postal address and electronic means of communication.
gw:producerIdentificationNumbergwTextnoOfficial producer identification number on the organization.
gw:imprintgwTextnoThe legal imprint text, on brand only.
urlschema.orgURLnoThe organization's website. On the PPWR roles it is instead the electronic means of communication, and exactly one of email and url is set.

5.3 Nutrition

The nutrition object is a schema.org NutritionInformation on a 100 ml basis, matching the mandatory nutrition declaration of Article 119(1)(h) of Regulation (EU) No 1308/2013, as amended by Regulation (EU) 2021/2117, for wine and Regulation (EU) 1169/2011 for other beverages.

TermSourceTypeRequiredExample
servingSizeschema.orgTextyes"100 ml"
caloriesschema.orgTextno"84 kcal"
fatContentschema.orgTextno"0 g"
saturatedFatContentschema.orgTextno"0 g"
carbohydrateContentschema.orgTextno"2.1 g"
sugarContentschema.orgTextno"2.1 g"
proteinContentschema.orgTextno"0.1 g"
sodiumContentschema.orgTextno"0.2 g"
gw:saltContentgwTextno"0.5 g"

5.4 Wine properties

The gw:wineProperties object is a gw:WineSpecification. These terms predate the GS1 review and are retained unchanged; new consumers should read gs1:netContent and gs1:sweetnessLevelOfAlcoholicBeverage alongside them.

TermSourceTypeRequiredExampleNotes
gw:vintagegwTextno"2022"Harvest year.
gw:isNonVintagegwBooleannofalseNon-vintage blend flag.
gw:colorgwTextno"white"Wine colour category.
gw:quantitygwNumberno750Net content in millilitres.
gw:alcoholContentgwNumberno13.5Measured alcohol, % vol.
gw:alcoholLabelgwNumberno13.5Declared alcohol, % vol. Regulation (EU) 2019/33 Article 44.
gw:residualSugargwNumberno2.1g/l.
gw:aciditygwNumberno6.8Total acidity, g/l.
gw:packagingGasgwText (code)no"protective_atmosphere"Protective atmosphere declaration, Regulation (EU) 1169/2011 Annex III, point 1.1.
gw:energyKJgwNumberno350Energy per 100 ml in kJ.
gw:sweetnessgwText (code)no"dry"brut, dry, semi_dry, semi_sweet, sweet.

Product-level equivalents added under the GS1-first rule:

TermSourceTypeRequiredExampleNotes
gs1:netContentgs1gs1:QuantitativeValueno{"gs1:value":750,"gs1:unitCode":"MLT"}The net content shown in the facts bar, honouring show_quantity and the resolved format quantity.
gs1:sweetnessLevelOfAlcoholicBeveragegs1code @idno"gs1:SweetnessLevelOfAlcoholicBeverageCode-DRY"Emitted only when the label shows sweetness (show_sweetness). Mapping: brut→BRUT, dry→DRY, semi_dry→MEDIUM_DRY, semi_sweet→MEDIUM, sweet→SWEET.
gs1:alcoholicBeverageSubregiongs1Textno"Wachau DAC"The designation of origin: the legally defined region the label shows, the protected designation name particular of Article 119(1)(b) of Regulation (EU) No 1308/2013.
gw:singleVineyardgwTextno"Ried Kellerberg"Single vineyard (Einzellage/Ried) name. No schema.org or GS1 term exists.
gs1:bestBeforeDategs1Dateno"2032-05-01"Minimum durability date, Article 119(1)(j) of Regulation (EU) No 1308/2013, as amended by Regulation (EU) 2021/2117.
gw:inspectionNumbergwTextno"L1234 22"Official inspection or control number, shown when show_inspection_number is on.
gw:grapeVarietiesgwgw:GrapeVariety[]nosee exampleEach entry has name (translated variety) and optional gw:percentage (blend share).

5.5 Ingredients and allergens

Structured ingredients are published twice, once per vocabulary, carrying the same facts:

  • recipeIngredient (schema.org): the original list of gw:WineIngredient entries with name, gw:isOrganic, gw:isAllergen and gw:category. Unchanged for existing consumers.
  • gs1:ingredient: gs1:FoodBeverageTobaccoIngredientDetails entries with gs1:ingredientName (translated name, including the organic name when the label shows one) and gs1:ingredientSequence (position in the list).

gw:ingredientsText and gs1:ingredientStatement carry the ingredient names as one plain comma-joined string and keep that form unchanged. gw:ingredientsDisplayText, added in 1.1.0, carries the list exactly as the label renders it: ingredients of a grouped category appear behind the category name, a comma separates ingredients inside a group, and a semicolon separates the entries. One markup is allowed in this string: a name wrapped in a strict ... pair marks an allergen, carrying into plain text the emphasis that Regulation (EU) 1169/2011 Annex II requires for allergens. A single * is the organic marker and stays a literal asterisk. No other markup is interpreted; consumers that render the text should show a name pair as emphasis and escape everything else.

TermSourceTypeRequiredExampleNotes and regulation
gw:ingredientsTextgwTextno"Grüner Veltliner grapes, sulfites"The rendered ingredient list. Retained; identical value to gs1:ingredientStatement.
gw:ingredientsDisplayTextgwTextno"Grape: Grüner Veltliner grapes*; Preservative: Sulfites"The rendered ingredient list with the markup described above. A category with one entry uses its singular name. Added in 1.1.0.
gs1:ingredientStatementgs1TextnosameThe ingredient list as one string, Article 119(1)(i) of Regulation (EU) No 1308/2013, as amended by Regulation (EU) 2021/2117.
gs1:ingredientOfConcerngs1Text[]no["Sulfites"]Names of the ingredients flagged as allergens, Regulation (EU) 1169/2011 Annex II.
gs1:allergenStatementgs1Textno"Contains sulfites"The free-text allergen statement the label shows, only when the account feature and label switch are on.

5.6 Packaging

gs1:packaging carries one gs1:PackagingDetails entry per packaging component the label lists (bottle, capsule, closure, carton and so on). This serves the packaging information duties of Regulation (EU) 2025/40 and the material identification marking of Commission Decision 97/129/EC.

TermSourceTypeRequiredExampleNotes
gs1:packaginggs1gs1:PackagingDetails[]nosee exampleOne entry per component.
gs1:packagingTypegs1Textno"bottle"The component type code.
gw:collectiongwText (code)no"glass"The separate waste-collection stream: aluminium, glass, metal, organic, paper, plastic, separate_organic, specific. No GS1 term covers the collection stream.
gs1:packagingMaterialgs1gs1:PackagingMaterialDetailsnosee exampleThe component's material.
nameschema.orgTextno"Glass"Translated material name inside the material details.
gs1:packagingMaterialTypegs1code @idno"gs1:PackagingMaterialTypeCode-GLASS"Emitted when the material type maps onto GS1's code list: glass→GLASS, glass_composites→COMPOSITE, metals→METAL_OTHER, paper→PAPER_OTHER, paper_composites→COMPOSITE, plastic→PLASTIC_OTHER, plastic_composites→COMPOSITE, wood→WOOD_OTHER, other→OTHER.
gw:materialTypegwText (code)no"glass"The source material type code, kept for the types GS1's list does not cover (batteries, biodegradable).
gw:recyclingCodegwTextno"GL 71"The Commission Decision 97/129/EC identification code printed on the component.

5.7 Certifications and referenced documents

TermSourceTypeRequiredExampleNotes
gs1:certificationgs1gs1:CertificationDetails[]nosee exampleOne entry per certification the label shows.
gs1:certificationStandardgs1Textno"Bio Austria"Translated certification name.
gs1:certificationIdentificationgs1Textno"AT-BIO-301"The code number of the control authority or control body under Article 32(1)(a) of Regulation (EU) 2018/848, attached to the organic entry or emitted as an identification-only entry.
gw:certificateTypegwText (code)no"organic"The certification category: organic, sustainability, geographical, responsible_consumption, certifications, recycling.
imageschema.orgURLnohttps://.../files/xyzThe certification logo image.
gs1:referencedFilegs1gs1:ReferencedFileDetails[]nosee exampleEvery uploaded EU declaration of conformity language, Regulation (EU) 2025/40 Article 39. Each entry carries gs1:referencedFileURL, gs1:fileLanguageCode and gs1:referencedFileType set to gs1:ReferencedFileTypeCode-DECLARATION_OF_CONFORMITY.

5.8 Label messages and geo content

The e-label lets a producer show free-text messages on defined topics. The gw:messages object, a gw:LabelMessages, carries them; each is present only when the translated text exists in the document language.

TermSourceTypeRequiredExample
gw:messagesgwgw:LabelMessagesnosee example
gw:sustainabilityMessagegwTextno"Sustainably farmed since 1998"
gw:organicMessagegwTextno"Certified organic by Bio Austria"
gw:certificationsMessagegwTextno"See our certificates below"
gw:geographicalMessagegwTextno"From the Wachau valley"
gw:responsibleConsumptionMessagegwTextno"Please enjoy responsibly"
gw:recyclingMessagegwTextno"Recycle glass, cork and capsule separately"
gw:foodPairingMessagegwTextno"Pairs with river fish"
gw:productionMethodMessagegwTextno"Spontaneous fermentation in large oak"

gw:geoContent carries the country-conditional information blocks the page showed to this visitor (for example a deposit notice that applies only in one market). Each gw:GeoContent entry has an optional name (the block title) and a description (the block text). The country a block applies to is a property of the request that served the page, not of the label, so the document records the blocks it showed without repeating the targeting rule.

5.9 Dealcoholisation

The particulars for dealcoholised grapevine products live in Article 119(1) of Regulation (EU) No 1308/2013: Regulation (EU) 2021/2117 added the de-alcoholisation category terms and the minimum durability date, and Regulation (EU) 2026/471 adds the "produced by de-alcoholisation" particular and the "alcohol-free" and "reduced alcohol" terms, applicable from 19 September 2027. Neither schema.org nor GS1 covers them.

TermSourceTypeRequiredExampleNotes
gw:dealcoholisationAppliedgwBooleannotrueA de-alcoholisation treatment was applied. Drives the "produced by de-alcoholisation" particular, Article 119(1)(k) of Regulation (EU) No 1308/2013, as amended by Regulation (EU) 2026/471.
gw:dealcoholisationStatusgwText (code)no"de_alcoholised"Category term, Article 119(1)(a) of Regulation (EU) No 1308/2013, as amended by Regulations (EU) 2021/2117 and 2026/471: de_alcoholised, partially_de_alcoholised, alcohol_free, reduced_alcohol.

6. Complete example

{
    "@context": {
        "@vocab": "https://schema.org/",
        "gw": "https://elabel.glasswise.eu/api/vocab/",
        "gs1": "https://ref.gs1.org/voc/",
        "gtin14": "gtin14",
        "image": {
            "@id": "image",
            "@type": "@id"
        }
    },
    "@type": "Product",
    "@id": "https://glws.eu/01/09120013397797/22/2025",
    "identifier": [
        {
            "@type": "PropertyValue",
            "propertyID": "glasswise-ref",
            "value": "ItW5C2WenG"
        },
        {
            "@type": "PropertyValue",
            "propertyID": "gtin14",
            "value": "09120013397797"
        }
    ],
    "name": "Grüner Veltliner Smaragd",
    "inLanguage": "en",
    "image": "https://storage.example.com/files/image123",
    "countryOfOrigin": {
        "@type": "Country",
        "name": "Austria",
        "gs1:countryCode": "AT"
    },
    "brand": {
        "@type": "Organization",
        "name": "Weingut",
        "logo": "https://storage.example.com/files/logo456",
        "address": {
            "@type": "PostalAddress",
            "streetAddress": "Wachau 1",
            "postalCode": "3601",
            "addressLocality": "Dürnstein",
            "addressCountry": "Austria"
        },
        "url": "https://weingut.example.com",
        "gw:producerIdentificationNumber": "AT123456789",
        "gw:imprint": "Weingut GmbH, Wachau 1, 3601 Dürnstein, Austria"
    },
    "gw:bottler": {
        "@type": "Organization",
        "name": "Weingut",
        "address": {
            "@type": "PostalAddress",
            "streetAddress": "Wachau 1",
            "postalCode": "3601",
            "addressLocality": "Dürnstein",
            "addressCountry": "Austria"
        },
        "gw:producerIdentificationNumber": "AT123456789"
    },
    "gw:ppwrManufacturer": {
        "@type": "Organization",
        "name": "Glaswerke AG",
        "address": {
            "@type": "PostalAddress",
            "streetAddress": "Werkstrasse 4",
            "postalCode": "4020",
            "addressLocality": "Linz",
            "addressCountry": "Austria"
        },
        "url": "https://glaswerke.example.com"
    },
    "nutrition": {
        "@type": "NutritionInformation",
        "servingSize": "100 ml",
        "calories": "84 kcal",
        "fatContent": "0 g",
        "saturatedFatContent": "0 g",
        "carbohydrateContent": "2.1 g",
        "sugarContent": "2.1 g",
        "proteinContent": "0.1 g",
        "sodiumContent": "0.2 g",
        "gw:saltContent": "0.5 g"
    },
    "gw:wineProperties": {
        "@type": "gw:WineSpecification",
        "gw:vintage": "2022",
        "gw:color": "white",
        "gw:isNonVintage": false,
        "gw:quantity": 750,
        "gw:alcoholContent": 13.5,
        "gw:alcoholLabel": 13.5,
        "gw:residualSugar": 2.1,
        "gw:acidity": 6.8,
        "gw:packagingGas": "protective_atmosphere",
        "gw:energyKJ": 350,
        "gw:sweetness": "dry"
    },
    "recipeIngredient": [
        {
            "@type": "gw:WineIngredient",
            "name": "Grüner Veltliner grapes",
            "gw:isOrganic": true,
            "gw:isAllergen": false,
            "gw:category": "Grapes"
        },
        {
            "@type": "gw:WineIngredient",
            "name": "Sulfites",
            "gw:isOrganic": false,
            "gw:isAllergen": true,
            "gw:category": "Preservatives"
        }
    ],
    "gw:ingredientsText": "Grüner Veltliner grapes, sulfites",
    "gw:ingredientsDisplayText": "Grape: Grüner Veltliner grapes*; Preservative: **Sulfites**",
    "gs1:ingredient": [
        {
            "@type": "gs1:FoodBeverageTobaccoIngredientDetails",
            "gs1:ingredientName": "Grüner Veltliner grapes",
            "gs1:ingredientSequence": 1
        },
        {
            "@type": "gs1:FoodBeverageTobaccoIngredientDetails",
            "gs1:ingredientName": "Sulfites",
            "gs1:ingredientSequence": 2
        }
    ],
    "gs1:ingredientStatement": "Grüner Veltliner grapes, sulfites",
    "gs1:ingredientOfConcern": ["Sulfites"],
    "gs1:allergenStatement": "Contains sulfites",
    "gs1:consumerProductVariant": "2025",
    "gs1:hasBatchLotNumber": "L2412",
    "gs1:bestBeforeDate": "2032-05-01",
    "gs1:netContent": {
        "@type": "gs1:QuantitativeValue",
        "gs1:value": 750,
        "gs1:unitCode": "MLT"
    },
    "gs1:sweetnessLevelOfAlcoholicBeverage": {
        "@id": "gs1:SweetnessLevelOfAlcoholicBeverageCode-DRY"
    },
    "gs1:alcoholicBeverageSubregion": "Wachau DAC",
    "gw:singleVineyard": "Ried Kellerberg",
    "gw:grapeVarieties": [
        {
            "@type": "gw:GrapeVariety",
            "name": "Grüner Veltliner",
            "gw:percentage": 100
        }
    ],
    "gw:productType": "quality_wine",
    "gw:inspectionNumber": "L1234 22",
    "gw:dealcoholisationApplied": false,
    "gs1:packaging": [
        {
            "@type": "gs1:PackagingDetails",
            "gs1:packagingType": "bottle",
            "gw:collection": "glass",
            "gs1:packagingMaterial": {
                "@type": "gs1:PackagingMaterialDetails",
                "name": "Glass",
                "gs1:packagingMaterialType": {
                    "@id": "gs1:PackagingMaterialTypeCode-GLASS"
                },
                "gw:materialType": "glass",
                "gw:recyclingCode": "GL 71"
            }
        }
    ],
    "gs1:certification": [
        {
            "@type": "gs1:CertificationDetails",
            "gs1:certificationStandard": "Bio Austria",
            "gs1:certificationIdentification": "AT-BIO-301",
            "gw:certificateType": "organic",
            "image": "https://storage.example.com/files/cert789"
        }
    ],
    "gs1:referencedFile": [
        {
            "@type": "gs1:ReferencedFileDetails",
            "gs1:referencedFileURL": "https://storage.example.com/files/doc-de",
            "gs1:fileLanguageCode": "de",
            "gs1:referencedFileType": {
                "@id": "gs1:ReferencedFileTypeCode-DECLARATION_OF_CONFORMITY"
            }
        },
        {
            "@type": "gs1:ReferencedFileDetails",
            "gs1:referencedFileURL": "https://storage.example.com/files/doc-en",
            "gs1:fileLanguageCode": "en",
            "gs1:referencedFileType": {
                "@id": "gs1:ReferencedFileTypeCode-DECLARATION_OF_CONFORMITY"
            }
        }
    ],
    "gw:messages": {
        "@type": "gw:LabelMessages",
        "gw:sustainabilityMessage": "Sustainably farmed since 1998",
        "gw:productionMethodMessage": "Spontaneous fermentation in large oak"
    },
    "gw:geoContent": [
        {
            "@type": "gw:GeoContent",
            "name": "Pfand",
            "description": "Return the crate to your dealer"
        }
    ]
}

7. Versioning and compatibility

The compatibility rule is additive-only:

  • existing terms, meanings and value shapes never change or move,
  • new terms may be added in any release,
  • a term may only be removed or repurposed by a major version change, which would also change the vocabulary URL or the document's context.

The standard is versioned with semantic versioning, currently at version 1.1.0. An additive change raises the minor version; a breaking change raises the major version. The version is recorded on the published vocabulary as owl:versionInfo. Published e-label documents carry no version field, so consumers should treat any term not listed here as a forward-compatible addition.

8. Relationship to GS1

GS1 and this standard cover different sides of the same scan.

GS1 identifies the product. The GTIN, the qualifier application identifiers and the GS1 Digital Link URL say which trade item a code resolves to. This standard describes what is on the label the link leads to: the particulars, texts and statements a consumer or an authority reads there. The two compose naturally: the document's @id is the GS1 Digital Link, and the GTIN and its qualifiers appear as identifiers and properties of the product.

The document reuses individual GS1 Web Vocabulary terms where they genuinely fit, per the order schema.org, then GS1, then gw::

  • trade item identifiers: gs1:consumerProductVariant, gs1:hasBatchLotNumber, gs1:bestBeforeDate, gs1:countryCode,
  • ingredients and allergens: gs1:ingredient, gs1:ingredientStatement, gs1:ingredientOfConcern, gs1:allergenStatement,
  • beverage particulars: gs1:alcoholicBeverageSubregion, gs1:sweetnessLevelOfAlcoholicBeverage, gs1:netContent,
  • packaging: gs1:packaging, gs1:packagingType, gs1:packagingMaterial, gs1:packagingMaterialType,
  • certifications and files: gs1:certification, gs1:certificationStandard, gs1:certificationIdentification, gs1:referencedFile, gs1:referencedFileURL, gs1:fileLanguageCode, gs1:referencedFileType.

GS1 also publishes an e-label schema. This standard does not adopt its document structure or data model. The differences are deliberate design choices, listed here factually:

  • Structure. This document is one flat Product object per e-label page, so a consumer can read it with any JSON-LD parser and no knowledge of a profile. GS1's e-label schema models a more deeply structured document.
  • Languages. This standard publishes one document per language, with every text value already resolved to exactly the string the label shows in that language. A consumer never resolves translations or language maps itself.
  • Openness. The document and its vocabulary are published openly on the e-label domain, with no membership or registry lookup required to read or extend it.

Reusing well-defined GS1 terms inside a different document shape keeps vocabulary-level interoperability without importing a document model built for a different purpose.

Vocabulary index

Every gw: term is an address under https://elabel.glasswise.eu/api/vocab/. Browsers are redirected to the matching entry below; clients asking for application/ld+json receive the vocabulary itself.

Classes

gw:WineSpecificationWine Specificationclass

Detailed specifications for wine products

schema:Product

gw:WineIngredientWine Ingredientclass

An ingredient used in wine production with allergen and organic certification flags

schema:Thing

gw:LabelMessagesLabel Messagesclass

The translated free-text message blocks an e-label shows alongside its legal particulars. Neither schema.org nor the GS1 Web Vocabulary has a container for a set of distinct per-topic label texts.

schema:Thing

gw:GrapeVarietyGrape Varietyclass

A grape variety and its share of the blend. Neither schema.org nor the GS1 Web Vocabulary defines a grape variety term.

schema:Thing

gw:GeoContentGeo Contentclass

A country-conditional information block shown on the e-label, such as a market-specific disposal or deposit notice. The country the block applies to is decided by the page request, so the block itself carries only its title and text.

schema:Thing

Properties

gw:termSourceterm sourceproperty

The vocabulary a term in this ontology comes from: glasswise for terms minted here, or the name of the external vocabulary the term is reused from.

gw:usesExternalTermuses external termproperty

A term from another vocabulary that e-label JSON-LD documents reuse without redefinition.

gw:vintagevintageproperty

The year the grapes were harvested

gw:WineSpecification · schema:Text

gw:colorwine colorproperty

Color category of the wine (white, red, rosé, orange)

gw:WineSpecification · schema:Text

gw:isNonVintageis non-vintageproperty

Whether the wine is a non-vintage blend

gw:WineSpecification · schema:Boolean

gw:quantityquantityproperty

Volume of the bottle in milliliters

gw:WineSpecification · schema:Number

gw:alcoholContentalcohol contentproperty

Actual alcohol content by volume as a percentage

gw:WineSpecification · schema:Number

gw:alcoholLabelalcohol labelproperty

Alcohol content as it appears on the label

gw:WineSpecification · schema:Number

gw:residualSugarresidual sugarproperty

Residual sugar content in grams per liter

gw:WineSpecification · schema:Number

gw:acidityacidityproperty

Total acidity in grams per liter

gw:WineSpecification · schema:Number

gw:packagingGasprotective atmosphere declarationproperty

Protective-atmosphere declaration stored by Glasswise (protective_atmosphere or may_protective_atmosphere), not the name of a packaging gas

gw:WineSpecification · schema:Text

gw:energyKJenergy in kilojoulesproperty

Energy content in kilojoules per 100ml

gw:WineSpecification · schema:Number

gw:bottlerbottlerproperty

Organization responsible for bottling the wine. Serves the name-and-address identification duty of Regulation (EU) 2019/33 Article 46.

schema:Product · schema:Organization

gw:distributordistributorproperty

Organization responsible for distributing the wine. Serves the name-and-address identification duty of Regulation (EU) 2019/33 Article 46.

schema:Product · schema:Organization

gw:ppwrManufacturerPPWR manufacturerproperty

Packaging manufacturer responsible under Regulation (EU) 2025/40 Article 15(6), including its electronic means of communication

schema:Product · schema:Organization

gw:ppwrImporterPPWR importerproperty

Packaging importer responsible under Regulation (EU) 2025/40 Article 18(3), including its electronic means of communication

schema:Product · schema:Organization

gw:producerIdentificationNumberproducer identification numberproperty

Official producer identification number (e.g., AT123456789)

schema:Organization · schema:Text

gw:imprintimprintproperty

The legal imprint text shown on the e-label for the producing organization. Neither schema.org nor GS1 defines a term for a free-text legal imprint; schema.org legalName covers only the entity name, not the multi-line statement the label displays.

schema:Organization · schema:Text

gw:isOrganicis organicproperty

Whether the ingredient is certified organic

gw:WineIngredient · schema:Boolean

gw:isAllergenis allergenproperty

Whether the ingredient is a known allergen (e.g., sulfites) under Regulation (EU) 1169/2011 Annex II

gw:WineIngredient · schema:Boolean

gw:categoryingredient categoryproperty

Category classification of the ingredient (e.g., Grapes, Preservatives)

gw:WineIngredient · schema:Text

gw:ingredientsTextingredients textproperty

Complete ingredients list as it appears on the label. Retained for backwards compatibility; gs1:ingredientStatement carries the same statement in GS1 terms.

schema:Product · schema:Text

gw:ingredientsDisplayTextingredients display textproperty

The ingredient list as one string exactly as the label renders it: grouped behind category names, allergens marked with a strict **name** pair carrying the emphasis Regulation (EU) 1169/2011 Annex II requires, organic names with a literal trailing *. The pair is the only markup this string interprets. Added in Standard 1.1.0.

schema:Product · schema:Text

gw:winePropertieswine propertiesproperty

Detailed wine-specific properties for the product

schema:Product · gw:WineSpecification

gw:sweetnesssweetnessproperty

Sweetness classification of the wine (brut, dry, semi_dry, semi_sweet, sweet). Retained for backwards compatibility; gs1:sweetnessLevelOfAlcoholicBeverage carries the equivalent GS1 code when the label shows the sweetness.

gw:WineSpecification · schema:Text

gw:saltContentsalt contentproperty

Salt content per 100 ml as declared on the nutrition label, expressed as a unit-bearing text value

schema:NutritionInformation · schema:Text

gw:productTypeproduct typeproperty

The regulated product category of the beverage as a machine-readable code (for example quality_wine, pearl_wine, fortified_wine). gs1:regulatedProductName fits semantically but its range is the free-text denomination in a given language, not a stable code, so the code is minted here; consumers wanting the display name read the e-label's localized category label.

schema:Product · schema:Text

gw:singleVineyardsingle vineyardproperty

Name of the single vineyard (Einzellage, Ried) the grapes were grown in, as shown on the e-label. Neither schema.org nor the GS1 Web Vocabulary has a vineyard term; gs1:alcoholicBeverageSubregion covers the legally defined appellation, which is a different particular.

schema:Product · schema:Text

gw:inspectionNumberinspection numberproperty

The official inspection or control number shown on the label, such as the Austrian state inspection number (amtliche Prüfnummer) assigned under national wine-law quality control. GS1's provisional regulatory information structure models a registry reference with an identifying system; the e-label value is a bare national inspection number, so it is minted here.

schema:Product · schema:Text

gw:grapeVarietiesgrape varietiesproperty

The grape varieties the wine is made from, with optional blend shares. Neither schema.org nor the GS1 Web Vocabulary defines a grape variety term, although variety and blend share are standard wine-label particulars.

schema:Product · gw:GrapeVariety

gw:percentagepercentageproperty

Share of a grape variety in the blend, as a percentage. gs1:ingredientContentPercentage is scoped to ingredient details on a food product and does not apply to a grape variety entry.

gw:GrapeVariety · schema:Number

gw:messageslabel messagesproperty

The set of translated free-text message blocks the e-label shows (sustainability, organic, certifications, geographical indication, responsible consumption, recycling, food pairing, production method). gs1:productMarketingMessage carries a single marketing text and cannot represent distinct per-topic messages.

schema:Product · gw:LabelMessages

gw:sustainabilityMessagesustainability messageproperty

Free text about the producer's sustainability practices, as shown on the e-label

gw:LabelMessages · schema:Text

gw:organicMessageorganic messageproperty

Free text about organic production or certification, as shown on the e-label

gw:LabelMessages · schema:Text

gw:certificationsMessagecertifications messageproperty

Free text about the product's certifications, as shown on the e-label

gw:LabelMessages · schema:Text

gw:geographicalMessagegeographical messageproperty

Free text about the product's geographical origin or protected indication, as shown on the e-label

gw:LabelMessages · schema:Text

gw:responsibleConsumptionMessageresponsible consumption messageproperty

Free text about responsible consumption of alcohol, as shown on the e-label

gw:LabelMessages · schema:Text

gw:recyclingMessagerecycling messageproperty

Free text about packaging recycling or disposal, as shown on the e-label

gw:LabelMessages · schema:Text

gw:foodPairingMessagefood pairing messageproperty

Free text with food pairing suggestions, as shown on the e-label

gw:LabelMessages · schema:Text

gw:productionMethodMessageproduction method messageproperty

Free text describing the production method, as shown on the e-label

gw:LabelMessages · schema:Text

gw:geoContentgeo contentproperty

Country-conditional information blocks shown on the e-label for the country the page is served to. Neither schema.org nor GS1 has a term for a targeted label content block.

schema:Product · gw:GeoContent

gw:dealcoholisationApplieddealcoholisation appliedproperty

Whether a de-alcoholisation treatment was applied to all or part of the product. Drives the 'produced by de-alcoholisation' particular of Article 119(1)(k) of Regulation (EU) No 1308/2013, as amended by Regulation (EU) 2026/471, required whenever a treatment happened even when no category term is earned. Neither schema.org nor GS1 covers de-alcoholisation.

schema:Product · schema:Boolean

gw:dealcoholisationStatusdealcoholisation statusproperty

The de-alcoholisation category term under Article 119(1)(a) of Regulation (EU) No 1308/2013, as amended by Regulations (EU) 2021/2117 and 2026/471, as a code: de_alcoholised, partially_de_alcoholised, alcohol_free or reduced_alcohol. The localized Official Journal wording shown on the label is a presentation detail of the code.

schema:Product · schema:Text

gw:materialTypematerial typeproperty

The packaging material classification used on the e-label (for example glass, plastic, metals, paper, wood, biodegradable, batteries), as a code. Emitted alongside gs1:packagingMaterialType, which is also emitted whenever the value maps onto GS1's PackagingMaterialTypeCode list; this property keeps the source value for types GS1's list does not cover.

gs1:PackagingMaterialDetails · schema:Text

gw:collectioncollectionproperty

The separate waste-collection stream the packaging component belongs to (for example glass, plastic, paper, metal, organic), as a code. Neither schema.org nor GS1 has a term for the disposal stream a packaging row is assigned to; gs1:packagingRecyclingProcessType describes the recycling process, not the collection stream.

gs1:PackagingDetails · schema:Text

gw:recyclingCoderecycling codeproperty

The material identification code shown on the packaging component under Commission Decision 97/129/EC, such as 'GL 71' for green glass. Neither schema.org nor GS1 defines a term for the 97/129 identification code.

gs1:PackagingMaterialDetails · schema:Text

gw:certificateTypecertificate typeproperty

The e-label's certification category for the entry (organic, sustainability, geographical, responsible_consumption, certifications, recycling), as a code. GS1 CertificationDetails has no category property for the kind of claim a certification supports.

gs1:CertificationDetails · schema:Text