Mejores prácticas JSON-LD: ¿usar múltiples elementos?


Tengo curiosidad sobre las mejores prácticas para aplicar JSON-LD en un sitio para schema.org.

Si tengo una página con un Article y también quiero definir 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 fusionarlos en el mismo script o matriz de elementos?

Author: unor, 2015-06-09

2 answers

Es válido. Puede tener tantos bloques de datos (=script elementos) como desee.

Un posible beneficio de usar solo un elemento script: permite facilitar las relaciones entre varios elementos (por ejemplo, si decide usar hasPart o mainEntity), como usted simplemente tiene que anidar los elementos.
Pero hacer estas relaciones es, por supuesto, también posible cuando se utilizan bloques de datos separados, haciendo referencia a la URI del elemento con @id (gracias, @ Gregg Kellogg ).

(Para referencia, agregar dos o más elementos de nivel superior en un solo script es posible con @graph.)

 32
Author: unor,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:10:27

No hay ninguna ventaja en tener bloques de datos únicos o múltiples, aparte de las limitaciones sobre cómo puede almacenar y administrar los datos de esquema en su sitio web.

Por ejemplo, es posible que necesite separarlos 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 renderizarlo como un único script elemento.

Puede combinarlos en un solo script listando 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>
 34
Author: teaforchris,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-10-05 17:21:17