Ссылка на Schema.org JSON-LD

У меня есть вопрос по поводу ссылки на разметку schema.org JSON-LD в другой разметке schema.org JSON-LD. У меня есть страница с главным событием, которое находится на http://event.com/ и вот для этого разметка JSON-LD.

<script type="application/ld+json">
{
  "@context": "http://schema.org",
  "@type": "Event",
  "name": "MainEvent",
  "startDate": "2016-04-21T12:00",
  "location": {
    ...
  }
}
</script>

Главное событие имеет несколько вложенных событий, например, в http://event.com/sub-event-1/ и вот для этого разметка JSON-LD:

<script type="application/ld+json">
{
  "@context": "http://schema.org",
  "@type": "Event",
  "name": "SubEvent",
  "startDate": "2016-04-21T12:00",
  "location": {
    ...
  }
}
</script>

То, что я пытаюсь сделать, это пометить вложенное событие как часть основного события. Можно ли создать ссылку из основного события на дополнительное событие? Что-то вроде этого:

<script type="application/ld+json">
{
  "@context": "http://schema.org",
  "@type": "Event",
  "name": "SubEvent",
  "startDate": "2016-04-21T12:00",
  "location": {
    ...
  }
  superEvent {
    "url": "http://event.com/"
  }
}
</script>

Если это возможно, какая верная разметка для справки. Я не могу найти информацию об этом.

Или требуется встроить MainEvent в каждый отдельный SubEvent следующим образом:

<script type="application/ld+json">
{
  "@context": "http://schema.org",
  "@type": "Event",
  "name": "SubEvent",
  "startDate": "2016-04-21T12:00",
  "location": {
    ...
  },
  "superEvent": {
    "@type": "Event",
    "name": "MainEvent",
    "startDate": "2016-04-21T12:00",
    "location": {
    ...
    }
  }
}
</script>

2 ответа

Вы можете идентифицировать узел, задав ему URI, указанный в @id ключевое слово. Этот URI может использоваться для ссылки на этот узел.

См. Раздел " Идентификаторы узла" в спецификации JSON-LD.

Таким образом, ваше главное событие может получить URI http://example.com/2016-04-21#main-event:

<script type="application/ld+json">
{
  "@id": "http://example.com/2016-04-21#main-event",
  "@context": "http://schema.org",
  "@type": "Event",
  "name": "MainEvent",
  "startDate": "2016-04-21T12:00"
}
</script>

и вы могли бы дать этот URI в качестве значения для вспомогательного события superEvent имущество:

<script type="application/ld+json">
{
  "@context": "http://schema.org",
  "@type": "Event",
  "name": "SubEvent",
  "startDate": "2016-04-21T12:00",
  "superEvent": { "@id": "http://example.com/2016-04-21#main-event" }
}
</script>

(Вы можете, конечно, дать вашему под-событию @id, тоже. Это позволит вам и другим идентифицировать / ссылаться на это вспомогательное событие.)

Что вы ищете для идентификаторов узлов (см. http://www.w3.org/TR/json-ld/). Вы присваиваете каждой сущности уникальный идентификатор в виде URL и используете его в ссылках:

<script type="application/ld+json">
{
  "@context": "http://schema.org",
  "@id": "http://event.com/#mainEvent",
  "@type": "Event",
  "name": "MainEvent",
  "startDate": "2016-04-21T12:00",
  "location": {
    ...
  }
}
</script>

Над вы видите, я дал событие @id, Я добавил фрагмент (#mainEvent) так как http://event.com/ обычно идентифицирует саму страницу. Затем вы можете ссылаться на событие следующим образом:

<script type="application/ld+json">
{
  "@context": "http://schema.org",
  "@type": "Event",
  "name": "SubEvent",
  "startDate": "2016-04-21T12:00",
  "location": {
    ...
  }
  superEvent {
    "@id": "http://event.com/#mainEvent"
  }
}
</script>

Встраивание, как показано в вашем примере, также работает. В этом случае вам не понадобятся идентификаторы, так как понятно, что на что ссылается.

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