Ссылка на 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>
Встраивание, как показано в вашем примере, также работает. В этом случае вам не понадобятся идентификаторы, так как понятно, что на что ссылается.