Digital Link

Die Technologie von GS1 Digital Link: die URI-Syntax, Regel für Regel, mit Beispielen

Aktualisiert

Mia

Von Mia

Autorin mit Schwerpunkt auf GS1-Standards und EU-Kennzeichnungsvorschriften.

Illustration von Smartphones und Produktkarten in Petrol, Orange und Violett, mehrere davon mit einem QR-Code-Symbol

TL;DR

  • Eine GS1-Digital-Link-URI ist eine Webadresse mit fester Grammatik: eine Domain, ein Primärschlüssel wie /01/ mit einem 14-stelligen GTIN, optionale Schlüsselqualifikatoren im Pfad und Datenattribute im Query-String.
  • Ihre Zahlen sind GS1-Datenbezeichner (Application Identifiers, AIs), dieselben wie in GS1-128-Barcodes, sodass sich eine URI ohne Verlust von GS1-Daten in einen traditionellen Element-String umwandeln lässt und zurück.
  • Die Regeln, an denen viele scheitern: GTINs auf 14 Stellen aufgefüllt, mit gültiger Prüfziffer; Qualifikatoren in fester Reihenfolge (22, 10, 21); Attribute nur nach ?; Sonderzeichen in Werten prozentkodiert.

Eine GS1-Digital-Link-URI ist eine HTTPS-Adresse, die GS1-Identifikatoren in einer standardisierten Struktur trägt, sodass ein Smartphone sie öffnen und ein Scanner die Identifikatoren daraus entnehmen kann. Der Pfad enthält die Identität; der Query-String enthält zusätzliche Daten und Anweisungen an den Resolver. Die Begriffe erklären die Grundlagen von GS1 Digital Link, was nach einem Scan passiert, der Resolver-Leitfaden.

Musterhttps://{domain}/{key AI}/{value}/{qualifier AI}/{value}?{attribute AI}={value}
IdentitätIm Pfad: genau ein Primärschlüssel, dann optionale Schlüsselqualifikatoren in fester Reihenfolge
Zusätzliche DatenIm Query-String: Datenattribute wie das Verfallsdatum 17 oder das Nettogewicht 310n
GTIN-FormatImmer 14 Stellen, mit führenden Nullen aufgefüllt, mit einer gültigen Prüfziffer am Ende
SonderzeichenProzentkodiert: Ein / in einer Chargennummer wird zu %2F
Anweisungen an den ResolverlinkType im Query-String, etwa linkType=gs1:pip oder linkType=linkset

Eine GS1-Digital-Link-URI, Teil für Teil beschriftet: Domain, Primärschlüssel 01, GTIN, Schlüsselqualifikator 22, CPV, Datenattribut 17 und Verfallsdatum

Ein vollständiges Beispiel:

https://id.example.com/01/09506000134352/22/2A/10/LOT42/21/1234?17=271231&3103=000750

TeilIm BeispielRegel
Domainid.example.comJede Domain, nach https://. Sie entscheidet, welcher Resolver einem Smartphone antwortet, ist aber nicht Teil der Identität des Produkts
Primärschlüssel/01/09506000134352Genau einer pro URI: ein AI, gefolgt von seinem Wert
Schlüsselqualifikatoren/22/2A/10/LOT42/21/1234Optional, im Pfad, in der für diesen Schlüssel festgelegten Reihenfolge
Datenattribute?17=271231&3103=000750Optional, als Paare AI=value, verbunden mit &, in beliebiger Reihenfolge

Von links nach rechts gelesen: GTIN 09506000134352, Konsumentenproduktvariante 2A, Charge LOT42, Seriennummer 1234, Verfallsdatum 31. Dezember 2027, Nettogewicht 0,750 kg.

Der GTIN ist der Schlüssel für Konsumgüter, doch die Syntax deckt auch die anderen GS1-Schlüssel ab:

GS1-SchlüsselAIIdentifiziertSchlüsselqualifikatoren
GTIN, Global Trade Item Number01Einen Handelsartikel, auf jeder Verpackungsebene22, 10, 21
SSCC, Serial Shipping Container Code00Eine logistische Einheit wie eine Palette (18 Stellen)Keine
GLN, Global Location Number414Einen physischen Ort (13 Stellen)254 GLN-Erweiterungskomponente

Schlüssel für Anlagegüter (Assets) wie der GRAI (8003) und der GIAI (8004) folgen demselben Muster.

Wie funktionieren Schlüsselqualifikatoren für einen GTIN?

Schlüsselqualifikatoren grenzen einen GTIN von einem Produkt auf eine Variante, eine Charge oder eine einzelne Einheit ein. Sie stehen im Pfad, in dieser Reihenfolge:

ReihenfolgeAIQualifikatorFormatIdentifiziert
122Konsumentenproduktvariante (CPV)Bis zu 20 ZeichenEine Variante innerhalb eines GTIN
210Charge oder LosBis zu 20 ZeichenEinen Produktionslauf
321SeriennummerBis zu 20 ZeichenEine Einheit

Jeder davon kann entfallen, doch die verwendeten behalten diese Reihenfolge:

PfadGültig?
/01/09506000134352/10/LOT42/21/1234Ja
/01/09506000134352/21/1234Ja: eine Seriennummer ohne Charge
/01/09506000134352/21/1234/10/LOT42Nein: Die Seriennummer steht vor der Charge
/01/09506000134352/17/271231Nein: Das Verfallsdatum gehört in den Query-String

Ein Resolver nutzt die Qualifikatoren, um seinen genauesten Eintrag zu finden, und fällt sonst auf die Produktebene zurück.

Welche Datenattribute gehören in den Query-String?

Datenattribute beschreiben den Artikel, ohne seine Identität zu ändern:

AIAttributFormatBeispiel
17VerfallsdatumJJMMTT17=271231: 31. Dezember 2027
15MindesthaltbarkeitsdatumJJMMTT15=270630: 30. Juni 2027
310nNettogewicht in kg, n = Anzahl der Dezimalstellen6 Ziffern3103=000750: 0,750 kg
422Ursprungsland3-stelliger numerischer Code nach ISO 3166422=380: Italien

Jedes Attribut erscheint einmal, in beliebiger Reihenfolge. Ein Resolver gibt den Query-String bei der Weiterleitung unverändert weiter, sodass die Zielseite ihn lesen kann.

Immer mit 14 Stellen. Kürzere GTINs erhalten führende Nullen, die weder die Nummer noch ihre Prüfziffer verändern:

GTIN unter dem BarcodeIn der URI
GTIN-12 (UPC-A): 614141123452/01/00614141123452
GTIN-13 (EAN-13): 9506000134352/01/09506000134352

Die letzte Ziffer ist eine Prüfziffer. Für 9506000134352 multiplizieren Sie die zwölf Ziffern davor, von rechts beginnend, abwechselnd mit 3, 1, 3, 1 und so weiter und addieren die Ergebnisse: 78. Die Prüfziffer ergänzt diese Summe auf das nächste Vielfache von zehn: 80 − 78 = 2.

Welche Zeichen müssen prozentkodiert werden?

Buchstaben, Ziffern, -, . und _ bleiben, wie sie sind. Andere Zeichen in Chargen-, Seriennummern- oder CPV-Werten werden prozentkodiert, damit sie nicht mit der Struktur der Adresse verwechselt werden:

ZeichenKodiert alsWertIn der URI
/%2FAB/12/10/AB%2F12
%%2550%OFF/10/50%25OFF
&%26A&B/21/A%26B

Bei Werten wird zwischen Groß- und Kleinschreibung unterschieden, LOT42 und lot42 sind also verschiedene Chargen, und Leerzeichen sind nicht erlaubt.

Was ist die komprimierte Form?

Der Standard definiert auch eine komprimierte Form für sehr kleine Codes: Alles nach der Domain wird in eine kurze Zeichenkette aus Buchstaben, Ziffern, - und _ gepackt, die mit bloßem Auge nicht lesbar ist und die der Resolver vor der Prüfung entpackt. Verwenden Sie die unkomprimierte Form, sofern die Symbolgröße Ihnen keine andere Wahl lässt: Sie lässt sich vor dem Druck leichter prüfen, und ein komprimierter Code funktioniert nur dort, wo jeder Scanner und jede App in Ihrer Kette ihn dekomprimieren kann.

Wie passen linkType und Linksets in die URI?

linkType ist kein Identifikator, sondern eine Anweisung an den Resolver, geschrieben im Query-String:

URIWas der Resolver liefert
https://id.example.com/01/09506000134352Eine Weiterleitung zum Standardlink, meist der Produktseite
https://id.example.com/01/09506000134352?linkType=gs1:recallStatusEine Weiterleitung zum Link für den Rückrufstatus, sofern es einen gibt
https://id.example.com/01/09506000134352?linkType=linksetDie vollständige Liste der Links für diesen GTIN, in einem maschinenlesbaren Format

Link-Typen stammen aus dem GS1 Web Vocabulary, etwa gs1:pip (Produktinformationsseite), gs1:instructions und gs1:allergenInfo. Die Sprache wird nicht in der URI festgelegt: Der Resolver liest sie aus der Anfrage des Smartphones.

Beide tragen dieselben GS1-Daten in zwei Syntaxen:

FormatBeispielVerwendet in
Element-String(01)09506000134352(10)LOT42(17)271231GS1-128-Barcodes und dem Klartext unter GS1-Symbolen
GS1-Digital-Link-URIhttps://id.example.com/01/09506000134352/10/LOT42?17=271231QR-Codes und Data-Matrix-Symbolen, die Smartphones öffnen können

In einem Element-String erscheinen die Klammern nur im gedruckten Klartext, und ein Wert variabler Länge wie eine Charge endet mit einem Trennzeichen, wenn ein weiterer AI folgt; in der URI übernehmen die Schrägstriche, ? und & diese Aufgabe. Bei der Umwandlung einer URI in einen Element-String bleiben jeder AI und jeder Wert erhalten, während Domain und Resolver-Anweisungen wegfallen. Genau das tut eine 2D-fähige Kasse, ohne Internetverbindung. Zur Wahl des Symbols siehe QR-Code vs. Data Matrix.

  1. Wählen Sie die Domain. Beginnen Sie mit https:// und einer Domain, die Sie kontrollieren, etwa id.yourbrand.com, damit die Codes Ihnen gehören, egal welcher Anbieter den Resolver betreibt.
  2. Wählen Sie den Primärschlüssel. Für ein Produkt AI 01 und seinen GTIN: /01/.
  3. Schreiben Sie den GTIN mit 14 Stellen. Füllen Sie mit führenden Nullen auf und prüfen Sie die letzte Ziffer: 9506000134352 wird zu 09506000134352.
  4. Ergänzen Sie die benötigten Schlüsselqualifikatoren in der richtigen Reihenfolge. CPV /22/, Charge /10/, Seriennummer /21/.
  5. Kodieren Sie die Werte. Behalten Sie Buchstaben, Ziffern, -, . und _, und prozentkodieren Sie den Rest: AB/12 wird zu AB%2F12.
  6. Ergänzen Sie Datenattribute nach dem ?. Schreiben Sie jedes als AI=value, verbunden mit &: ?17=271231&3103=000750.
  7. Prüfen Sie vor dem Druck. Wandeln Sie die URI in einen Element-String um und kontrollieren Sie jeden Wert, öffnen Sie sie in einem Browser, und scannen Sie dann den gedruckten Code mit mehreren Smartphones und einem 2D-Scanner. Der Leitfaden zur Fehlerbehebung listet die üblichen Fehler auf.

Das Ergebnis für eine Charge mit Verfallsdatum: https://id.yourbrand.com/01/09506000134352/10/AB%2F12?17=271231.

Digital Link, die Plattform hinter dieser Website, schreibt diese URIs für Sie. Sie prüft jeden GTIN beim Anlegen eines Links und ergänzt Charge oder Los, Seriennummer, Verfallsdatum, Nettogewicht, Ursprungsland, Verpackungsdatum oder Konsumentenproduktvariante als Varianten eines Links, jede mit eigenen Links. Codes lassen sich in großen Mengen aus einer CSV-Datei erstellen, auf Ihrer eigenen Subdomain oder auf der enthaltenen Domain dlink.is.

Erstellen Sie Ihren ersten GS1-Digital-Link-QR-Code

Häufig gestellte Fragen

Ja. Ein GTIN-8, GTIN-12 oder GTIN-13 wird mit führenden Nullen auf 14 Stellen aufgefüllt, 9506000134352 wird also /01/09506000134352 geschrieben. Die Prüfziffer bleibt dieselbe und muss gültig sein.

In welcher Reihenfolge stehen die Schlüsselqualifikatoren?

Bei einem GTIN: Konsumentenproduktvariante 22, dann Charge oder Los 10, dann Seriennummer 21. Jeder kann entfallen, doch die verwendeten behalten diese Reihenfolge.

Ändert die Domain die Identität des Produkts?

Nein. Die Domain entscheidet, welcher Resolver einem Smartphone antwortet, doch die Identität bilden der Primärschlüssel und seine Qualifikatoren. Derselbe GTIN unter zwei Domains ist dasselbe Produkt.

Dieselben Daten in zwei Formaten. Ein Element-String wie (01)09506000134352(10)LOT42 ist das Format von GS1-128-Barcodes. Eine GS1-Digital-Link-URI schreibt dieselben Daten als Webadresse, die Smartphones öffnen können.

Sollte ich die komprimierte Form verwenden?

Nur wenn das Symbol für die vollständige Adresse zu klein ist. Ein komprimierter Code funktioniert nur dort, wo jeder Scanner und jede App ihn dekomprimieren kann.

Seien Sie führend beim Übergang von Barcodes zu GS1 QR-Codes