Definition

Die Abkürzung JSON-LD steht für JavaScript Object Notation for Linked Data und bezeichnet ein Konzept zur Nutzung von verlinkten Daten, das auf dem JSON Format basiert und dieses erweitert.

Mit JSON-LD können Daten annotiert werden, um sie zwischen Webanwendungen und Webservices auszutauschen und automatisiert verarbeiten zu können. Verschiedene Daten und Informationen wie Personen, Adressen, Termine oder andere Arten von Ressourcen werden mit semantischen Auszeichnungen versehen, damit sie in maschinenlesbarer Form vorliegen und auf diese Weise weiterverarbeitet werden können. Die grundlegende Idee hinter JSON-LD ist die des Kontextes (@context), der eine Übertragung von Daten und Datentypen in eine andere Syntax erlaubt – insbesondere von JSON in das RDF-Modell. Letzteres bildet die Basis für das semantische Web.

Erklärung

Der Datenaustausch zwischen Websites und Browser erfolgt im Web 2.0 vor allem über eine Mensch-Maschine-Kommunikation und damit verbundene Protokolle wie HTTP. Die dabei verwendeten Daten werden zwar durch Auszeichnungssprachen (zum Beispiel HTML) für die Darstellung strukturiert, liegen aber nicht in einem Format vor, das von jeglichen Computern gelesen werden kann. Es können also nicht beliebige Daten miteinander verlinkt oder von unterschiedlichen Computern verarbeitet werden – was auch als Informationsintegration bezeichnet wird. JSON-LD bezieht sich hingegen auf die Kommunikation zwischen Maschinen.

Die Syntax ist so konzipiert, dass verschiedene Daten eine Struktur erhalten, die den Austausch von Informationen zwischen Maschinen ermöglicht. Dies wird einerseits erreicht durch JSON als grundlegendes Format für den Datenaustausch zwischen Anwendungen, andererseits durch Kontexte (@context) und eindeutige Bezeichner (@id), um Daten miteinander zu verlinken und transportierbar zu machen. Das semantische Web oder Web 3.0 ist auf verlinkte Daten angewiesen, da zwei oder mehr Webanwendungen andernfalls nicht miteinander kommunizieren könnten – zum Beispiel, weil sie unterschiedliche Datenformate oder Attribute verwenden.

JSON-LD bildet deshalb eine Erweiterung für das im Web 3.0 zugrunde gelegte RDF-Modell, das häufig als zu komplex und abstrakt kritisiert wird. Somit soll JSON-LD die Veröffentlichung und Nutzung von Informationen im Web vereinfachen, indem ein maschinenlesbarer Standard zur Anwendung kommt, der Interoperabilität gewährleistet und einfach implementiert werden kann.

Funktionsweise

Die Designideen hinter JSON-LD:

  • Einfachheit: JSON-LD erfordert keine gsonderten Programmbibliotheken oder Prozessoren. Die Basisfunktionen können von Programmiern schon mit Kenntnisen von JSON und den beiden Keywords @context und @id genutzt werden.
  • Kompatibilität: Jedes JSON-LD Dokument ist ein gültiges JSON Dokument. Die häufig eingesetzten Standards und Bibliotheken von JSON arbeiten mit JSON-LD reibungslos zusammen. Hinzu kommen zahlreiche Implementierungen für andere Datenformate wie Turtle, RDFa, HTML Microdata und Mikroformate sowie für die Programmiersprachen Python, PHP, Ruby, Java und C. Auch für JavaScript existiert mit jsonld.js eine konforme Umgebung.
  • Ausdrucksfähigkeit: Mit JSON-LD können gerichtete Graphen abgebildet werden. Somit ist es möglich, jegliche Datenmodelle auszudrücken.
  • Knappheit: Die Syntax von JSON-LD ist leicht für Menschen lesbar und relativ kurz. Dies spart Entwicklern Zeit und Aufwand. Zudem ist bei JSON-LD kein sogenannter Overhead vorhanden, wie es bei XML der Fall ist. Als Overhead werden Daten bezeichnet, die allein der Verwaltung dieser Daten dienen.
  • Keine Nachbearbeitung: Systeme, die auf JSON basieren, können fast ohne Mehraufwand in JSON-LD übertragen werden. Dadurch sollen bereits existente Infrastrukturen nicht beeinflusst werden.
  • Mit RDF nutzbar: JSON-LD ist ohne ein tieferes Verständnis von RDF nutzbar. RDF-Tools können in den meisten Fällen gemeinsam mit JSON-LD verwendet werden.

Diese Leitideen sind in der Syntax von JSON-LD so umgesetzt, dass sie eine semantische Annotation ermöglichen, um Daten mit Bedeutungen zu versehen und durch eindeutige Referenzierungen auszutauschen.

Beispiele

Das folgende JSON-Dokument ist durch das Problem der Ambiguität gekennzeichnet. Bei JSON können Konflikte auftreten, wenn Daten aus anderen Quellen importiert werden sollen. Zudem unterstützt JSON nicht unbedingt Hyperlinks, obwohl diese eines der wichtigsten Fundamente des Internets sind. Für menschliche Leser ist auf den ersten Blick klar, worauf die Begriffe name, homepage und image verweisen. Eine Maschine benötigt zusätzliche Daten, die zudem eindeutig sein müssen – zur Vermeidung von Konflikten.

{
 "name": "Hansi Peter",
 "homepage": "http://hansi.peter.org/",
 "image": "http://hansi.peter.org/images/hansi.png"
 }

Unter Zuhilfenahme des schema.org Vokabulars werden die oben genannte Probleme vermieden:

{
 "http://schema.org/name": "Hansi Peter",
 "http://schema.org/url": { "@id": "http://hansi.peter.org/" }, ← Das '@id' keyword bedeutet, dass dieser Wert ein Bezeichner ist, der ein IRI ist.
 "http://schema.org/image": { "@id": "http://hansi.peter.org/images/hansi.png" }
 }

Zwar ist die Person Hansi Peter nun eindeutig durch die ID bestimmt und verwendet die Schema-Syntax. Jedoch kann ein Computerprogramm oder eine Anwendung nicht wissen, dass es sich um eine Person handelt. Deshalb wurde der Kontext bei JSON-LD eingeführt:

{
 "@context":
 {
 "name": "http://schema.org/name", ← Name ist die Abkürzung für ' http://schema.org/name'
 "image": {
 "@id": "http://schema.org/image", ← Image ist die Abkürzung für 'http://schema.org/image'
 "@type": "@id" ← Dies bedeutet, dass der Wert der Zeichenkette von image ein Bezeichner in Form eines IRI ist
 },
 "homepage": {
 "@id": "http://schema.org/url", ← 'homepage' ist eine Abkürzung für 'http://schema.org/url'
 "@type": "@id" ← Dies bedeutet, dass der Wert der Zeichenkette von homepage ein Bezeichner in Form eines IRI ist
 }
 }
 }

Kontexte können entweder referenziert oder direkt im Dokument notiert werden. Mit der JSON-LD-API sind auch selbst definierte Kontexte erlaubt. Um JSON-LD und seine Anwendungsfälle zu verstehen, sind die beiden Begriffe Kontext (@context) und eindeutige Bezeichner (@id) unbedingt notwendig. Denn durch diese semantischen Auszeichnungen und die eindeutige Bezeichnung ist die Verwendung von Daten in anderen Anwendungen und Webservices erst möglich.

Bedeutung für die Suchmaschinenoptimierung

Da JSON-LD die Kommunikation zwischen Programmen und Anwendungen ermöglicht, wird die Syntax als fundamentaler Baustein für das Web 3.0 betrachtet. Ursprünglich war das Ziel der Syntax jedoch nicht, das semantische Web voranzutreiben, sondern bessere Webapplikationen entwickeln zu können – das sagte Hansi Peter, einer der Entwickler von JSON-LD. Gleichwohl bilden die Ideen, die in JSON-LD realisiert wurden, ein Gerüst für das Web 3.0, das im Vergleich zu anderen Datenformaten wesentlich einfacher ist.

Durch die Darstellung von Daten als gerichtete Graphen ist zum Beispiel eine direkte Verbindung zum semantischen Web vorhanden: Denn diese verlinkten Daten werden als Linked Data Cloud, Giant Global Graph oder vom W3C auch als Web of Data bezeichnet und sind ihrer Form nach gerichtete Graphen – das heißt: eine Menge von Knoten (Websites, Webservices, Server) und eine Menge an Kanten (Links, Anfragen), die stets zwei Knoten miteinander verbinden. JSON-LD liefert ein Gerüst von semantischen Auszeichnungen, um Daten über die Kanten des Graphen an Knoten zu verschicken oder von diesen bestimmte Daten anzufordern. Suchmaschinen können schon jetzt mit diesen Datenformaten umgehen, wenn zum Beispiel Snippets in JSON-LD Format eingebunden werden.