html5 - type - Mejores prácticas JSON-LD: ¿usando múltiples elementos<script>?
structured data (2)
Tengo curiosidad sobre la mejor práctica para aplicar JSON-LD en un sitio para schema.org.
Si tengo una página con un
Article
y también quiero definir un sitio
WebSite
en mi página, tendría esto:
<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>
¿Es esto correcto o incorrecto? ¿Hay algún beneficio o necesidad de combinarlos en el mismo script o conjunto de elementos?
Es valido.
Puede tener tantos bloques de datos (= elementos de
script
) como desee.
Una posible ventaja de usar solo un elemento de
script
: permite facilitar las relaciones entre varios elementos (por ejemplo, si decide usar
hasPart
o
mainEntity
), ya que simplemente tiene que anidar los elementos.
Pero, por supuesto, también es posible establecer estas relaciones cuando se usan bloques de datos separados, haciendo referencia al URI del elemento con
@id
(
gracias, @ Gregg Kellogg
).
(Como referencia, es posible
agregar dos o más elementos de nivel superior en un solo
script
con
@graph
).
No hay ningún beneficio en tener bloques de datos únicos o múltiples, aparte de las limitaciones en torno a cómo puede almacenar y administrar datos de esquema en su sitio web.
Por ejemplo, es posible que los necesite por separado si diferentes componentes dentro de su sitio web son responsables de generar cada bloque de datos de forma independiente.
Alternativamente, si su sitio web puede administrar todos los esquemas para una página en un solo lugar, puede ser más sencillo administrar un solo bloque de datos y representarlo como un único elemento de
script
.
Puede combinarlos en un solo script enumerando cada esquema como una matriz como esta:
<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>