Zum Inhalt springen

JSON-LD mit einem Frame strukturieren — Numio

Formt JSON-LD mit einem Frame über jsonld.frame um: Knoten, die zum Frame passen (zum Beispiel per @type), werden zu den Ergebnissen auf oberster Ebene, und die Knoten, auf die sie verweisen, werden darin eingebettet.

Einen flachen @graph in einen Baum umwandeln, dessen Wurzel der Typ ist, den deine Anwendung braucht, etwa jedes Book mit eingebetteter Bibliothek.

JSON-LD

Frame

Framed

Wann sie hilft

  • Einen flachen @graph in einen Baum umwandeln, dessen Wurzel der Typ ist, den deine Anwendung braucht, etwa jedes Book mit eingebetteter Bibliothek.
  • Aus einem größeren JSON-LD-Datensatz nur die Knoten eines @type auswählen.

Anwendung

  1. Füge das Quelldokument in den Editor JSON-LD ein.
  2. Schreibe den Frame im Editor Frame: einen @context plus Matching-Regeln wie "@type": "Book".
  3. Lies das Ergebnis; bei mehr als einem Treffer werden die Knoten in @graph aufgelistet.

JSON-LD + Frame

// JSON-LD editor
{
  "@context": {"@vocab": "http://schema.org/"},
  "@graph": [
    {"@id": "http://example.org/lib", "name": "City Library"},
    {"@id": "http://example.org/b1", "@type": "Book", "name": "Dune",
     "holdingArchive": {"@id": "http://example.org/lib"}},
    {"@id": "http://example.org/b2", "@type": "Book", "name": "Emma",
     "holdingArchive": {"@id": "http://example.org/lib"}}
  ]
}

// Frame editor
{"@context": {"@vocab": "http://schema.org/"}, "@type": "Book"}

Geframtes JSON-LD

{
  "@context": {
    "@vocab": "http://schema.org/"
  },
  "@graph": [
    {
      "@id": "http://example.org/b1",
      "@type": "Book",
      "holdingArchive": {
        "@id": "http://example.org/lib",
        "name": "City Library"
      },
      "name": "Dune"
    },
    {
      "@id": "http://example.org/b2",
      "@type": "Book",
      "holdingArchive": {
        "@id": "http://example.org/lib",
        "name": "City Library"
      },
      "name": "Emma"
    }
  ]
}

Details und Einschränkungen

Knotenreferenzen werden hier durch den referenzierten Knoten ersetzt: Die Bibliothek ist in jedes Buch eingebettet.

Ein Knoten, der nicht zum Frame passt (die Bibliothek), erscheint nur als eingebettetes Objekt, nicht als eigenes Ergebnis.

Läuft im Browser mit jsonld.js und dessen Standard-Framing-Optionen; @embed, @explicit und ähnliche Flags lassen sich im Frame selbst setzen.

FAQ

Wie gebe ich nur bestimmte Eigenschaften zurück?

Füge "@explicit": true zum Frame hinzu und liste die gewünschten Eigenschaften auf, jeweils mit {} als Wert.

Warum gibt es im Ergebnis einen @graph-Schlüssel?

Wenn mehr als ein Knoten zum Frame passt, werden die Ergebnisse in @graph zurückgegeben. Ein einzelner Treffer wird als Objekt auf oberster Ebene zurückgegeben.

Warum ist der Editor Frame mit einem schema.org-Context vorbelegt?

Das ist das Standardbeispiel der Seite. Dieser Context ist eine entfernte URL, die dein Browser herunterladen muss; ersetze ihn für die Offline-Nutzung durch einen Inline-Context. Schlägt der Download fehl, zeigt die Seite einen Fehler mit der URL.

Spezifikationen und Referenzen