Конвертировать JSON-LD в расширенную форму — Numio
Разворачивает (expansion) документ JSON-LD с помощью jsonld.js: @context применяется и удаляется, термины становятся полными IRI, а каждое значение оборачивается в массив объектов @value или @id. Ключи, не сопоставленные с IRI, отбрасываются.
Проверить, в какие IRI на самом деле разрешаются термины schema.org или вашего собственного @context.
Когда пригодится
- Проверить, в какие IRI на самом деле разрешаются термины schema.org или вашего собственного @context.
- Отладить структурированные данные, в которых свойство молча пропадает, потому что не определено в контексте.
Как пользоваться
- Вставьте документ JSON-LD с его @context в редактор JSON-LD.
- Изучите развёрнутый массив: у каждого узла перечислены полные IRI свойств со значениями в массивах.
- Сравните с вводом; любое свойство, отсутствующее в выводе, не было сопоставлено контекстом.
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, чтобы процессоры одинаково обрабатывали одиночные и множественные значения.