Defini­tion

Die Abkür­zung JSON-LD steht für JavaScript Object Notation for Linked Data und bezeich­net ein Konzept zur Nutzung von verlink­ten Daten, das auf dem JSON Format basiert und dieses erwei­tert. Mit JSON-LD können Daten annotiert werden, um sie zwischen Weban­wen­dun­gen und Webser­vices auszu­tau­schen und automa­ti­siert verar­bei­ten zu können. Verschie­dene Daten und Infor­ma­tio­nen wie Perso­nen, Adres­sen, Termine oder andere Arten von Ressour­cen werden mit seman­ti­schen Auszeich­nun­gen verse­hen, damit sie in maschi­nen­les­ba­rer Form vorlie­gen und auf diese Weise weiter­ver­ar­bei­tet werden können. Die grund­le­gende Idee hinter JSON-LD ist die des Kontex­tes (@context), der eine Übertra­gung von Daten und Daten­ty­pen in eine andere Syntax erlaubt – insbe­son­dere von JSON in das RDF-Modell. Letzte­res bildet die Basis für das seman­ti­sche Web.

 

Erklä­rung

Der Daten­aus­tausch zwischen Websites und Browser erfolgt im Web 2.0 vor allem über eine Mensch-Maschine-Kommu­ni­ka­tion und damit verbun­dene Proto­kolle wie HTTP. Die dabei verwen­de­ten Daten werden zwar durch Auszeich­nungs­spra­chen (zum Beispiel HTML) für die Darstel­lung struk­tu­riert, liegen aber nicht in einem Format vor, das von jegli­chen Compu­tern gelesen werden kann. Es können also nicht belie­bige Daten mitein­an­der verlinkt oder von unter­schied­li­chen Compu­tern verar­bei­tet werden – was auch als Infor­ma­ti­ons­in­te­gra­tion bezeich­net wird. JSON-LD bezieht sich hinge­gen auf die Kommu­ni­ka­tion zwischen Maschi­nen.

Die Syntax ist so konzi­piert, dass verschie­dene Daten eine Struk­tur erhal­ten, die den Austausch von Infor­ma­tio­nen zwischen Maschi­nen ermög­licht. Dies wird einer­seits erreicht durch JSON als grund­le­gen­des Format für den Daten­aus­tausch zwischen Anwen­dun­gen, anderer­seits durch Kontexte (@context) und eindeu­tige Bezeich­ner (@id), um Daten mitein­an­der zu verlin­ken und trans­por­tier­bar zu machen. Das seman­ti­sche Web oder Web 3.0 ist auf verlinkte Daten angewie­sen, da zwei oder mehr Weban­wen­dun­gen andern­falls nicht mitein­an­der kommu­ni­zie­ren könnten – zum Beispiel, weil sie unter­schied­li­che Daten­for­mate oder Attri­bute verwen­den.

JSON-LD bildet deshalb eine Erwei­te­rung für das im Web 3.0 zugrunde gelegte RDF-Modell, das häufig als zu komplex und abstrakt kriti­siert wird. Somit soll JSON-LD die Veröf­fent­li­chung und Nutzung von Infor­ma­tio­nen im Web verein­fa­chen, indem ein maschi­nen­les­ba­rer Standard zur Anwen­dung kommt, der Inter­ope­ra­bi­li­tät gewähr­leis­tet und einfach imple­men­tiert werden kann.

 

Funkti­ons­weise

Die Design­ideen hinter JSON-LD:

  • Einfach­heit: JSON-LD erfor­dert keine gsonder­ten Programm­bi­blio­the­ken oder Prozes­so­ren. Die Basis­funk­tio­nen können von Program­mi­ern schon mit Kennt­nisen von JSON und den beiden Keywords @context und @id genutzt werden.
  • Kompa­ti­bi­li­tät: Jedes JSON-LD Dokument ist ein gülti­ges JSON Dokument. Die häufig einge­setz­ten Standards und Biblio­the­ken von JSON arbei­ten mit JSON-LD reibungs­los zusam­men. Hinzu kommen zahlrei­che Imple­men­tie­run­gen für andere Daten­for­mate wie Turtle, RDFa, HTML Micro­data und Mikro­for­mate sowie für die Program­mier­spra­chen Python, PHP, Ruby, Java und C. Auch für JavaScript existiert mit jsonld.js eine konforme Umgebung.
  • Ausdrucks­fä­hig­keit: Mit JSON-LD können gerich­tete Graphen abgebil­det werden. Somit ist es möglich, jegli­che Daten­mo­delle auszu­drü­cken.
  • Knapp­heit: Die Syntax von JSON-LD ist leicht für Menschen lesbar und relativ kurz. Dies spart Entwick­lern Zeit und Aufwand. Zudem ist bei JSON-LD kein sogenann­ter Overhead vorhan­den, wie es bei XML der Fall ist. Als Overhead werden Daten bezeich­net, die allein der Verwal­tung dieser Daten dienen.
  • Keine Nachbe­ar­bei­tung: Systeme, die auf JSON basie­ren, können fast ohne Mehrauf­wand in JSON-LD übertra­gen werden. Dadurch sollen bereits existente Infra­struk­tu­ren nicht beein­flusst werden.
  • Mit RDF nutzbar: JSON-LD ist ohne ein tiefe­res Verständ­nis von RDF nutzbar. RDF-Tools können in den meisten Fällen gemein­sam mit JSON-LD verwen­det werden.

Diese Leitideen sind in der Syntax von JSON-LD so umgesetzt, dass sie eine seman­ti­sche Annota­tion ermög­li­chen, um Daten mit Bedeu­tun­gen zu verse­hen und durch eindeu­tige Referen­zie­run­gen auszu­tau­schen.

 

Beispiele

Das folgende JSON-Dokument ist durch das Problem der Ambigui­tät gekenn­zeich­net. Bei JSON können Konflikte auftre­ten, wenn Daten aus anderen Quellen impor­tiert werden sollen. Zudem unter­stützt JSON nicht unbedingt Hyper­links, obwohl diese eines der wichtigs­ten Funda­mente des Inter­nets sind. Für mensch­li­che Leser ist auf den ersten Blick klar, worauf die Begriffe name, homepage und image verwei­sen. Eine Maschine benötigt zusätz­li­che Daten, die zudem eindeu­tig sein müssen – zur Vermei­dung von Konflik­ten.

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

Unter Zuhil­fe­nahme des schema.org Vokabu­lars werden die oben genannte Probleme vermie­den:

{
 "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 eindeu­tig durch die ID bestimmt und verwen­det die Schema-Syntax. Jedoch kann ein Compu­ter­pro­gramm oder eine Anwen­dung nicht wissen, dass es sich um eine Person handelt. Deshalb wurde der Kontext bei JSON-LD einge­fü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 entwe­der referen­ziert oder direkt im Dokument notiert werden. Mit der JSON-LD-API sind auch selbst definierte Kontexte erlaubt. Um JSON-LD und seine Anwen­dungs­fälle zu verste­hen, sind die beiden Begriffe Kontext (@context) und eindeu­tige Bezeich­ner (@id) unbedingt notwen­dig. Denn durch diese seman­ti­schen Auszeich­nun­gen und die eindeu­tige Bezeich­nung ist die Verwen­dung von Daten in anderen Anwen­dun­gen und Webser­vices erst möglich.

 

Bedeu­tung für die Suchma­schi­nen-
optimie­rung

Da JSON-LD die Kommu­ni­ka­tion zwischen Program­men und Anwen­dun­gen ermög­licht, wird die Syntax als funda­men­ta­ler Baustein für das Web 3.0 betrach­tet. Ursprüng­lich war das Ziel der Syntax jedoch nicht, das seman­ti­sche Web voran­zu­trei­ben, sondern bessere Webap­pli­ka­tio­nen entwi­ckeln zu können – das sagte Hansi Peter, einer der Entwick­ler von JSON-LD. Gleich­wohl bilden die Ideen, die in JSON-LD reali­siert wurden, ein Gerüst für das Web 3.0, das im Vergleich zu anderen Daten­for­ma­ten wesent­lich einfa­cher ist.

Durch die Darstel­lung von Daten als gerich­tete Graphen ist zum Beispiel eine direkte Verbin­dung zum seman­ti­schen Web vorhan­den: Denn diese verlink­ten Daten werden als Linked Data Cloud, Giant Global Graph oder vom W3C auch als Web of Data bezeich­net und sind ihrer Form nach gerich­tete Graphen – das heißt: eine Menge von Knoten (Websites, Webser­vices, Server) und eine Menge an Kanten (Links, Anfra­gen), die stets zwei Knoten mitein­an­der verbin­den. JSON-LD liefert ein Gerüst von seman­ti­schen Auszeich­nun­gen, um Daten über die Kanten des Graphen an Knoten zu verschi­cken oder von diesen bestimmte Daten anzufor­dern. Suchma­schi­nen können schon jetzt mit diesen Daten­for­ma­ten umgehen, wenn zum Beispiel Snippets in JSON-LD Format einge­bun­den werden.