verificador type structured snippets script rich recommends google estructurados datos data application html5 seo schema.org json-ld

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>