JSON-LD und schema.org – bekommt der Sattel bald ein neues Pferd?

von Henry Zeitler

Seit 2011, dem Jahr in dem die vier größten Suchmaschinen Google, Yahoo, Bing und Yandex sich auf den semantischen Standard schema.org geeinigt haben, ist die Anzahl der Implementierungen global doch eher bescheiden ausgefallen. Das liegt zum Großteil sicher an an der schwierigen, zeitaufwändigen Einbindung im Quelltext und dem zur Zeit noch begrenzten Nutzen für die Anwender. Um dem entgegenzuwirken schickt Google nun ein neues Pferd ins Rennen – schema.org via JSON-LD.
Aber was ist JSON-LD und wie und wo kann es implementiert werden? Welche Vorteile hat es gegenüber den Quelltext-Annotationen und lohnt sich eine Implementierung überhaupt? Hier ein Überblick.

Von JSON zu JSON-LD

JSON bedeutet JavaScript Object Notation und ist ein kompaktes Format zum Austausch von Daten. Im Vergleich zum großen Bruder XML ist es wesentlich einfacher zu generieren und spart durch die nicht vorhandenen Tags eine Menge Bytes. Obwohl ein JSON-Dokument immer auch ein gültiges JavaScript sein muss, kann es unabhängig von Programmiersprachen und plattformübergreifend eingesetzt werden.

Ein JSON-Objekt besteht im Wesentlichen aus Key/Value-Paaren. Das Key ist der erste Wert in Anführungszeichen (z. B. “Name”) und das Value folgt nach einem Doppelpunkt und kann eine Zeichenkette, einen booleschen Wert oder eine Zahl darstellen (z. B. “Henry Zeitler”, s.u.).

{
  "Titel": "JSON-LD und schema.org – Microdata auf dem neusten Stand",
  "URL": "http://www.freizeitler.de/2014/07/26/json-ld-und-schema-org",
  "Autor": {
    "Name": "Henry Zeitler",
    "Email": "henry@freizeitler.de"
  }
}

JSON-LD ist ein offenes Format, nutzt die JSON Notation für Linked Data (LD, vernetzte und im Web frei verfügbare Daten) und ist daher eher als Erweiterung zu JSON zu sehen. Es arbeitet nicht nur mit schema.org, sondern in erster Linie mit dem RDF. Sein Design bringt entscheidende Vorteile. Beide Formate sind zueinander kompatibel und JSON-LD-Files können mit kleinen Anpassungen von herkömmlichen JSON-Parsern ausgelesen werden. JSON-LD-Objekte sind wiederum in separate Daten des RDF bzw. schema.org-Formats zerlegbar.
Eine ausführliche Spezifikation zu JSON-LD wurde von Manu Sporny, Gründer von Digital Bazaar verfasst und am 16. Januar 2014 vom W3C als Recommendation verabschiedet.

JSON-LD-logo-64

Wie bereits erwähnt bedient sich JSON-LD der JSON-Notation und erweitert diese (je nach dem in welchem Schema es sich bewegt, also RDF oder schema.org) um die Zuordnungen der Types und ihrer Properties. Dabei greift wieder das Key/Value-Prinzip (Property/Content) und die Daten werden in den nötigen Context (Type) gesetzt. Um das etwas deutlicher zu machen hier die herkömmlichen Annotationen im Quelltext und das entsprechende JSON-LD.

<div itemscope itemtype="http://schema.org/Article">
    <h2 itemprop="name">JSON-LD und schema.org – Microdata auf dem neusten Stand</h2>
    <div itemprop="author" itemscope itemtype="http://schema.org/Person">
        von <span itemprop="name">Henry Zeitler</span>, 
        <span itemprop="email">henry@freizeitler.de</span>
    </div>
</div>

<script type="application/ld+json">
  {
    "@context": "http://schema.org/",
    "@type": "Article",
    "title": "Via AJAX: JSON-LD und schema.org – Microdata auf dem neusten Stand",
    "url": "http://www.freizeitler.de/2014/07/26/json-ld-und-schema-org",
    "author": {
      "@type": "Person",
      "name": "Henry Zeitler",
      "email": "henry@freizeitler.de"
    }
  }
</script>

Die Implementierung von JSON-LD in Websites, WebApps und Emails und das Testing

Das JSON-LD-Snippet bildet eine Art API-Endpunkt für alle Maschinen, die in der Lage sind die bereitgestellten Informationen auszulesen und zu verarbeiten. Das Snippet muss jetzt nur noch an die richtige Stelle gebracht werden, dem HTML-Quellcode von Webseiten, WebApps und Emails. Eingebunden und deklariert wird es dort über die Script-Tags wie im vorigen Absatz bereits dargestellt.

<script type="application/ld+json">
  [JSON-LD]
</script>

Jedoch ist ein drastischer Vorteil des JSON-LD-Snippets gegenüber den herkömmlichen HTML-Annotationen von schema.org die Möglichkeit der dynamischen Generierung unabhängig vom sichtbaren Content der Page und die Anbindung an eine API. Das bedeutet, dass die Informationen parallel zum Content einer Page in das Snippet eingefügt, in den richtigen Context gesetzt und mit den passenden Properties versehen werden. Die Daten können hierbei dann zum größten Teil über das Backend eingepflegt, aus der Datenbank ausgelesen und im Markup über ein Template generiert werden. Das kann aufgrund der Kompabilität zu JSON via RESTful API geschehen. Wer diesen Ansatz und die Generierung von API-Endpunkten (z. B. mit Hydra) vertiefen will, sollte sich die Dokumentationen auf json-ld.org einmal ansehen.

Über PHP ist die Inkludierung generell kein Problem, aber erkennen Maschinen auch asynchron geladene JSON-LD-Snippets und können sie diese verwerten? Um das auszuprobieren habe ich eine einfache Testseite programmiert.

Zur Testseite (öffnet sich in einem neuen Fenster): http://www.freizeitler.de/examples/json-ld/index.php

Vor dem schließenden body-Tag befinden sich zwei script-Tags. In den ersten wird über einen einfachen AJAX-Call mit jQuery ($.getJSON()) ein externes JSON-LD-Snippet injiziert, im zweiten hat ein PHP-Include stattgefunden. Um zu sehen welches Snippet erkannt wird, habe ich der Property name die Herkunft vorangestellt. Also Via AJAX oder Via PHP. Nun ist die Auswahl an Testmöglichkeiten bzw. Validierungs-Tools für JSON-LD bis dato noch extrem beschränkt und leider hinkt Google selbst mit seinem Test-Tool für strukturierte Daten hinterher. Erkannt hat das JSON-LD-Snippet aber der Structured Data Linter von Gregg Kellog und immerhin der spezielle Veranstaltungs-Markup-Tester von Google.

Aufruf der Test-Seite im Linter.

Wie im Ergebnisfenster zu sehen wird nur das Snippet, das über den PHP-Include generiert wurde vom Linter ausgelesen. Allerdings sind diese Tests zu diesem frühen Zeitpunkt absolut nicht valide zumal der verwendete Type Article noch gar nicht unterstützt wird. Allerdings sollte die Testseite in regelmäßigen Abständen erneut, besonders mit dem Test-Tool für strukturierte Daten von Google, aufgerufen werden damit auf relevante technische Updates geprüft werden kann.

Eine Übersicht über (Testing-)Tools für Structured Data habe ich in den weiterführenden Links am Ende des Artikels aufgeführt.

Einsatzmöglichkeiten und Benefits von schema.org mit JSON-LD

„Google now openly moves to accepting data markup in JSON-LD syntax not tied to visual elements.” Prof. Martin Hepp

Google hat offiziell verkündet, dass für Webseiten und WebApps aktuell nur ein paar wenige Types über die Einbindung mit JSON-LD unterstützt werden. Dazu zählen Unternehmenskontakte und Veranstaltungen.
Allerdings wird die Einbindung des semantischen Markups mittels JSON-LD auch in Emails unterstützt und da sehen die Möglichkeiten bis dato schon etwas umfangreicher aus, zumindest für Nutzer der Gmail-Plattform. Hauptsächlich werden durch die Verwendung neue Features für die Inbox ermöglicht und gesteuert. Dazu zählen z.B. One-Click-Confirmations für Newsletter, Kaufbestätigungen oder bald auch RSVP-Actions. Sollten sich in naher Zukunft mehr Plattformen dazu entscheiden das Markup zu nutzen, kann es durchaus zu einem allgemeinen Standard werden.

Die neue Strategie, die Google mit JSON-LD fährt zeigt ganz deutlich, dass der Suchmaschinenriese daran interessiert ist die semantische Auslieferung von Inhalten auch auf die Bereiche auszuweiten, die technisch gesehen für Annotationen im Quelltext nicht besonders gut geeignet sind. Das betrifft im Grunde genommen allerdings den Großteil der Websites da draußen, denn sie basieren auf Templates, die unabhängig von ihrem thematischen Inhalt die Seiten generieren. Dazu kommt der wachsende Anteil der WebApps, die mit Engines wie z. B. angular.js angetrieben werden.

Für diese Seiten will Google mit JSON-LD eine Lanze brechen und lässt die Auszeichnung von nicht-visuellen Inhalten, also Inhalten, die im Frontend eigentlich gar nicht auftauchen, im großen Stil zu. Das ist insofern erstaunlich, weil Google damit einem hohen Potential an Spam möglicherweise eine Tür öffnet und es Mechanismen geben muss um diesen letztlich zu kontrollieren und auszuschließen. Das erklärt wiederum Googles verhaltene Akzeptanz von schema.org in Verbindung mit JSON-LD. Solche Mechanismen müssen natürlich erst einmal im Kleinen getestet, um später dann großräumig ausgerollt zu werden.

Sicherlich ist eine Implemetierung von schema.org durch JSON-LD momentan besser als nichts, zumal der Aufwand recht überschaubar ist. Allerdings ist es aktuell unmöglich abzuschätzen, ob sich JSON-LD für schema.org durchsetzen wird. Das wird von der Zahl der User und Konsumenten aber auch von der Wirtschaftlichkeit abhängen. Aber schema.org ist auch nicht das einzige Format für Structured Data, auf das die Architekten des Semantic Webs, die JSON-LD ins Leben gerufen haben, setzen. Google mit im Boot zu haben wäre vielmehr eine sehr willkommene Beschleunigung auf dem Weg zur Zielgeraden.

Weiterführende Links

comments powered by Disqus