Перейти к содержимому

Конвертировать JSON-LD в расширенную форму — Numio

Разворачивает (expansion) документ JSON-LD с помощью jsonld.js: @context применяется и удаляется, термины становятся полными IRI, а каждое значение оборачивается в массив объектов @value или @id. Ключи, не сопоставленные с IRI, отбрасываются.

Проверить, в какие IRI на самом деле разрешаются термины schema.org или вашего собственного @context.

JSON-LD

Expanded

Когда пригодится

  • Проверить, в какие IRI на самом деле разрешаются термины schema.org или вашего собственного @context.
  • Отладить структурированные данные, в которых свойство молча пропадает, потому что не определено в контексте.

Как пользоваться

  1. Вставьте документ JSON-LD с его @context в редактор JSON-LD.
  2. Изучите развёрнутый массив: у каждого узла перечислены полные IRI свойств со значениями в массивах.
  3. Сравните с вводом; любое свойство, отсутствующее в выводе, не было сопоставлено контекстом.

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

Развёрнутый 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"
      }
    ]
  }
]

Подробности и ограничения

Развёртывание выполняется в браузере с пакетом jsonld. Удалённый @context, например https://schema.org/ (используется в примере по умолчанию), загружает ваш браузер; если это не удаётся (офлайн, CORS), страница показывает ошибку с URL.

"@type": "@id" в определении термина превращает строковое значение в ссылку {"@id": ...} вместо литерала.

Вывод всегда является массивом верхнего уровня, даже для одного узла.

FAQ

Почему пропали некоторые мои свойства?

Развёртывание отбрасывает ключи, которые не определены в @context и не являются абсолютными IRI. Например, если сопоставлен только name, ключ nickname удаляется из вывода.

Можно ли использовать контекст schema.org?

Да. "@context": "https://schema.org/" работает, если браузер может его загрузить. Для работы офлайн запишите определения терминов inline, как в примере.

Почему каждое значение находится в массиве?

Развёрнутая форма всегда использует массивы для значений свойств и @type, чтобы процессоры одинаково обрабатывали одиночные и множественные значения.

Спецификации и справка