Где разместить несколько объектов 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, Для WebPageURI обычно является каноническим 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

Другие вопросы по тегам