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.
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ć
- Wklej dokument JSON-LD z jego @context do edytora JSON-LD.
- Przeczytaj rozszerzoną tablicę: każdy węzeł zawiera pełną listę IRI właściwości z wartościami w tablicach.
- 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.