Где разместить несколько объектов JSON-LD на веб-странице?
Мой веб-сайт
Я создаю веб-страницу для конференции. Страница содержит несколько объектов, таких как speaker
( Человек) или session
( Событие).
Моя проблема
Я хотел бы добавить семантические данные на страницу, чтобы поисковые системы и социальные сети могли легко понять ее содержание. Я хотел бы описать как страницу в целом, так и ее части - как один сеанс
Мой вопрос
Как разметить как всю страницу, так и внутренние объекты стандартным способом? Могу ли я использовать несколько JSON-LD на одной странице или мне следует использовать JSON-LD для страницы в целом и других разметок для внутренних объектов?
Разъяснение, после комментариев
Спасибо за указание на ответ на JSON-LD Schema.org: страница с несколькими видео / изображениями. Однако я не уверен, куда мне поместить различные объекты JSON-LD, чтобы каждый из них ссылался на определенную часть документа. Должны ли они быть связаны с использованием идентификаторов деления? Если <script>
быть размещен внутри соответствующего div?
2 ответа
Я не уверен, куда мне поместить различные объекты JSON-LD, чтобы каждый из них ссылался на определенную часть документа.
В JSON-LD структурированные данные не "связаны" с HTML. (Это было бы возможно с синтаксисами Microdata и RDFa, но даже там, после извлечения структурированных данных, больше не имеет значения, для каких элементов HTML это было указано.)
Если у вас есть страница о двух человек, вы бы просто предоставить один WebPage
и два Person
объекты. Чтобы иметь возможность делать заявления об этих объектах из других мест, рекомендуется указывать им URI, которые можно указать с помощью@id
, Для WebPage
URI обычно является каноническим URL страницы.
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "WebPage",
"@id": "",
"about": [
{
"@type": "Person",
"@id": "#person-1"
},
{
"@type": "Person",
"@id": "#person-2"
}
]
}
</script>
Теоретически, может существовать свойство, которое позволяет ссылаться на элементы HTML, которые описывают сущность. Schema.org в настоящее время имеет такие свойства в Pending, которые используются для SpeakableSpecification
(В ожидании): cssSelector
(Ожидание) (с помощью селекторов CSS для ссылки на элементы), xpath
(Ожидание) (использование XPath для ссылки на элементы). Но они не могут быть использованы для других случаев (как определено в настоящее время). Таким образом, для этой цели вам придется определить собственное имущество.
Должны ли они быть связаны с использованием идентификаторов деления?
Вы могли бы предоставить id
значение в объекте url
имущество. Тем не менее, он не "связывает" HTML со структурированными данными. Он просто передает: вы можете найти информацию о сущности, описанной этим объектом узла, следуя этому URL.
Часто у каждой сущности есть своя страница, но, конечно, прекрасно описать несколько сущностей на одной странице.
Расширяя пример сверху:
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "WebPage",
"@id": "",
"about": [
{
"@type": "Person",
"@id": "#person-1",
"url": "#about-person-1"
},
{
"@type": "Person",
"@id": "#person-2",
"url": "#about-person-2"
}
]
}
</script>
Если
<script>
быть размещен внутри соответствующего div?
Для структурированных данных не имеет значения, где в HTML-документе script
элементы размещены.
Вы можете разместить все объекты в одном script
элемент (как в примерах выше), или вы можете использовать несколько script
элементы, но тогда вы должны ссылаться на их @id
значения, так что вы все еще можете использовать такие свойства, как about
(пример в моем ответе связан выше). Это не имеет значения семантически.
Вы можете включить несколько элементов структурированных данных на странице, если хотите в соответствии с рекомендациями Google:
Лучший способ определить, может ли он анализировать ожидаемые объекты и атрибуты JSON-LD, - это использовать их Structured Data Testing Tool