Przejdź do treści

JSON-LD w postaci z ramką — Numio

Zmienia kształt JSON-LD za pomocą ramki przy użyciu jsonld.frame: węzły pasujące do ramki (na przykład według @type) stają się wynikami najwyższego poziomu, a węzły, do których się odnoszą, są w nich osadzone.

Przekształć płaski @graph w drzewo, którego korzeń ma typ potrzebny aplikacji, np. każdy Book z osadzoną biblioteką.

JSON-LD

Frame

Kiedy go używać

  • Przekształć płaski @graph w drzewo, którego korzeń ma typ potrzebny aplikacji, np. każdy Book z osadzoną biblioteką.
  • Wybierz tylko węzły jednego @type z większego zbioru JSON-LD.

Jak używać

  1. Wklej dokument źródłowy do edytora JSON-LD.
  2. Wpisz ramkę w edytorze ramek: @context oraz reguły dopasowania, np. "@type": "Book".
  3. Przeczytaj wynik; w przypadku więcej niż jednego dopasowania węzły są wymienione w @graph.

JSON-LD + rama

// 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"}

Oprawione 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"
    }
  ]
}

Szczegóły i ograniczenia

Odniesienia do węzłów są tutaj zastępowane przez węzeł, do którego się odwołuje: biblioteka jest osadzona w każdej książce.

Węzeł, który nie pasuje do ramki (biblioteki), pojawia się tylko jako osadzony obiekt, a nie jako własny wynik.

Działa w przeglądarce z plikiem jsonld.js i korzysta z domyślnych opcji kadrowania; Flagi @embed, @explicit i podobne można ustawić wewnątrz samej ramki.

FAQ

Jak zwrócić tylko niektóre właściwości?

Dodaj „@explicit”: true do ramki i wypisz żądane właściwości, każda z wartością {}.

Dlaczego w wyniku znajduje się klucz @graph?

Jeśli do ramki pasuje więcej niż jeden węzeł, wyniki są zwracane w postaci @graph. Pojedyncze dopasowanie jest zwracane jako obiekt najwyższego poziomu.

Dlaczego edytor ramek jest wstępnie wypełniony kontekstem schema.org?

Jest to domyślny przykład strony. Tym kontekstem jest zdalny plik URL, który musi pobrać Twoja przeglądarka; zastąp go kontekstem wbudowanym do użytku offline. Jeśli pobieranie nie powiedzie się, na stronie pojawi się błąd w nazwie URL.

Specyfikacje i referencje