Przejdź do treści

JSON-LD do formy rozszerzonej — Numio

Rozwija dokument JSON-LD za pomocą jsonld.js: stosuje i usuwa @context, zamienia terminy na pełne IRI, a każdą wartość otacza tablicą obiektów @value lub @id. Klucze nieodwzorowane na IRI są usuwane.

Sprawdzanie, do jakich IRI faktycznie odnoszą się Twoje terminy schema.org lub niestandardowe terminy @context.

JSON-LD

Expanded

Kiedy go używać

  • Sprawdzanie, do jakich IRI faktycznie odnoszą się Twoje terminy schema.org lub niestandardowe terminy @context.
  • Debugowanie danych strukturalnych, w przypadku których właściwość dyskretnie znika, ponieważ nie jest zdefiniowana w kontekście.

Jak używać

  1. Wklej dokument JSON-LD z jego @context do edytora JSON-LD.
  2. Przeczytaj rozszerzoną tablicę: każdy węzeł zawiera pełną listę IRI właściwości z wartościami w tablicach.
  3. Porównaj z danymi wejściowymi; żadna właściwość brakująca w wynikach nie została odwzorowana przez kontekst.

JSON-LD

{
  "@context": {
    "name": "http://schema.org/name",
    "knows": {"@id": "http://schema.org/knows", "@type": "@id"},
    "homepage": {"@id": "http://schema.org/url", "@type": "@id"}
  },
  "@id": "http://example.org/jane",
  "@type": "http://schema.org/Person",
  "name": "Jane Doe",
  "homepage": "http://janedoe.example",
  "knows": "http://example.org/john"
}

Rozszerzony JSON-LD

[
  {
    "@id": "http://example.org/jane",
    "@type": [
      "http://schema.org/Person"
    ],
    "http://schema.org/url": [
      {
        "@id": "http://janedoe.example"
      }
    ],
    "http://schema.org/knows": [
      {
        "@id": "http://example.org/john"
      }
    ],
    "http://schema.org/name": [
      {
        "@value": "Jane Doe"
      }
    ]
  }
]

Szczegóły i ograniczenia

Rozwijanie odbywa się w przeglądarce za pomocą pakietu jsonld. Zdalny @context, np. https://schema.org/ używany w przykładzie domyślnym, jest pobierany przez przeglądarkę. W razie niepowodzenia (tryb offline, CORS) strona pokazuje błąd ze wskazaniem URL.

"@type": "@id" w definicji terminu zamienia wartość ciągu znaków na odwołanie {"@id": ...} zamiast literału.

Dane wyjściowe są zawsze tablicą najwyższego poziomu, nawet dla pojedynczego węzła.

FAQ

Dlaczego niektóre z moich obiektów zniknęły?

Rozszerzenie usuwa klucze, które nie są zdefiniowane w kontekście @context i nie są absolutnymi IRI. Na przykład, gdy zamapowana jest tylko nazwa, klucz pseudonimu jest usuwany z danych wyjściowych.

Czy mogę używać kontekstu schema.org?

Tak. "@context": "https://schema.org/" działa, jeśli Twoja przeglądarka może go pobrać. W przypadku korzystania w trybie offline wpisz definicje terminów w tekście, jak w przykładzie.

Dlaczego każda wartość znajduje się w tablicy?

Postać rozwinięta zawsze używa tablic dla wartości właściwości i @type, dzięki czemu procesory obsługują pojedyncze i wielokrotne wartości tak samo.

Specyfikacje i referencje