web-dev-qa-db-fra.com

Meilleures pratiques JSON-LD: utiliser plusieurs éléments <script>?

Je suis curieux de savoir quelle est la meilleure pratique pour appliquer JSON-LD sur un site pour schema.org.

Si j'ai une page avec un Article et que je veux aussi définir WebSite sur ma page, j'aurais ceci:

<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>

Est-ce correct ou faux? Y a-t-il un avantage ou un besoin à les fusionner dans le même script ou tableau d'éléments?

56
Stu Furlong

C'est valable. Vous pouvez avoir autant de blocs de données (= script éléments) que vous le souhaitez.

Un avantage possible d'utiliser un seul élément script: il permet de faciliter les relations entre plusieurs éléments (par exemple, si vous décidez d'utiliser hasPart ou mainEntity ), car il suffit d'imbriquer les éléments.
Mais l'établissement de ces relations est bien sûr également possible lors de l'utilisation de blocs de données séparés, en référençant l'URI de l'élément avec @id ( merci, @ Gregg Kellogg ).

(Pour référence, ajouter deux ou plusieurs éléments de niveau supérieur dans un seul script est possible avec @graph.)

43
unor

Il n'y a aucun avantage à avoir un ou plusieurs blocs de données, à part des limitations sur la façon dont vous pouvez stocker et gérer les données de schéma dans votre site Web.

Par exemple, vous pourriez avoir besoin de les séparer si différents composants de votre site Web sont responsables de la génération indépendante de chaque bloc de données. Alternativement, si votre site Web est capable de gérer tous les schémas pour une page en un seul endroit, il peut être plus simple de gérer un seul bloc de données et de le rendre comme un seul élément script.

Vous pouvez les combiner en un seul script en répertoriant chaque schéma sous la forme d'un tableau comme celui-ci:

<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>
50
teaforchris