Referencia de Schema.org JSON-LD
(2)
Tengo una pregunta sobre hacer referencia a un marcado JSON-LD schema.org en otro marcado JSON-LD schema.org.
Tengo una página con un evento principal que se encuentra en
http://event.com/
y aquí está el marcado JSON-LD para ello.
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "Event",
"name": "MainEvent",
"startDate": "2016-04-21T12:00",
"location": {
...
}
}
</script>
El evento principal tiene varios eventos secundarios ubicados en, por ejemplo,
http://event.com/sub-event-1/
y aquí está el marcado JSON-LD para eso:
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "Event",
"name": "SubEvent",
"startDate": "2016-04-21T12:00",
"location": {
...
}
}
</script>
Lo que intento hacer es marcar el subevent como parte del evento principal. ¿Es posible crear una referencia del evento principal al evento secundario? Algo como esto:
<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>
Si es posible, ¿cuál es el marcado correcto para referencia? No puedo encontrar ninguna información al respecto.
¿O es necesario incrustar el MainEvent en cada SubEvent como este:
<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>
Lo que está buscando para un identificador de nodo (consulte http://www.w3.org/TR/json-ld/#node-identifiers ). Usted asigna a cada entidad un identificador único en forma de URL y lo usa en referencias:
<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>
Arriba ves que le di al evento un
@id
.
#mainEvent
un fragmento (
#mainEvent
) porque
http://event.com/
normalmente identificaría la página en sí.
Luego puede hacer referencia al evento de la siguiente manera:
<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>
La incrustación como se muestra en su ejemplo también funciona. En ese caso, no necesitará los identificadores, ya que está claro qué hace referencia a qué.
Puede identificar un nodo dándole un URI, especificado en la palabra clave
@id
.
Este URI se puede usar para hacer referencia a ese nodo.
Consulte la sección " Identificadores de nodo " en la especificación JSON-LD.
Entonces, su evento principal podría obtener el 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>
y podría dar este URI como el valor de la propiedad
superEvent
del sub evento:
<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>
(Por supuesto, también podría darle a su sub evento un
@id
. Esto les permitiría a usted y a otros identificar / hacer referencia a este sub evento).