Подтвердить что ты не робот

Лучшие методы JSON-LD: использование нескольких элементов <script>?

Мне интересно узнать, как применять JSON-LD на сайте для schema.org.

Если у меня есть страница с Article, и я также хочу определить WebSite на моей странице, я бы получил следующее:

<script type="application/ld+json">
{
    "@context": "http://schema.org",
    "@type": "WebSite",
    "url": "http://www.example.com/",
    "potentialAction": {
      "@type": "SearchAction",
      "target": "http://www.example.com/search?&q={query}",
      "query-input": "required"
    }
}
</script>

<!- … -->

<script type="application/ld+json">
{
  "@context": "http://schema.org",
  "@type": "Article",
  "author": "John Doe",
  "interactionCount": [
    "UserTweets:1203",
    "UserComments:78"
  ],
  "name": "How to Tie a Reef Knot"
}
</script>

Это правильно или неправильно? Есть ли какая-либо польза или необходимость объединить их в один и тот же script или массив элементов?

4b9b3361

Ответ 1

Действует. Вы можете иметь как можно больше блоков данных (= script).

Возможное преимущество использования только одного элемента script: это позволяет упростить отношения между несколькими элементами (например, если вы решите использовать hasPart или mainEntity), поскольку вам просто нужно вложить элементы.
Но сделать эти отношения, конечно, также возможно при использовании отдельных блоков данных, ссылаясь на URI элемента с помощью @id (спасибо, @Gregg Kellogg).

(Для справки добавление двух или более элементов верхнего уровня в одном script возможно с помощью @graph.)

Ответ 2

Нет никакой пользы от наличия одного или нескольких блоков данных, кроме ограничений по тому, как вы можете хранить и управлять данными схемы на своем веб-сайте.

Например, вам могут потребоваться их раздельные, если разные компоненты вашего сайта несут ответственность за создание каждого блока данных независимо. В качестве альтернативы, если ваш сайт может управлять всеми схемами для одной страницы в одном месте, может быть проще управлять одним блоком данных и отображать это как один элемент script.

Вы можете объединить их в один script, указав каждую схему как такой массив:

<script type="application/ld+json">
[
  {
    "@context": "http://schema.org",
    "@type": "WebSite",
    "url": "http://www.example.com/",
    "potentialAction": {
      "@type": "SearchAction",
      "target": "http://www.example.com/search?&q={query}",
      "query-input": "required"
    }
  },
  {
    "@context": "http://schema.org",
    "@type": "Article",
    "author": "John Doe",
    "interactionCount": [
      "UserTweets:1203",
      "UserComments:78"
    ],
    "name": "How to Tie a Reef Knot"
  }
]
</script>