web-dev-qa-db-fra.com

Le balisage JSON-LD pour les extraits de révision montre les doublons

Je suis les exemples officiels de Google pour créer un balisage JSON-LD à des fins d'examen et de test dans l'outil de test de données structurées de Google.

Lors de l'établissement de la liste des révisions pour la même organisation (toutes les révisions concernent la même organisation), l'outil de test affiche les doublons.

Par exemple, deux critiques du même Thing (un livre) passent le test correctement:

<script type="application/ld+json">
[{
  "@context": "http://schema.org/",
  "@type": "Review",
  "itemReviewed": {
    "@type": "Thing",
    "name": "Super Book"
  },
  "author": {
    "@type": "Person",
    "name": "Joe"
  },
  "reviewRating": {
    "@type": "Rating",
    "ratingValue": "8",
    "bestRating": "10"
  },
  "publisher": {
    "@type": "Organization",
    "name": "Washington Times"
  }
},
{
  "@context": "http://schema.org/",
  "@type": "Review",
  "itemReviewed": {
    "@type": "Thing",
    "name": "Super Book"
  },
  "author": {
    "@type": "Person",
    "name": "Jane"
  },
  "reviewRating": {
    "@type": "Rating",
    "ratingValue": "7",
    "bestRating": "10"
  },
  "publisher": {
    "@type": "Organization",
    "name": "Washington Times"
  }
}]
</script>

Résultats: Google détecte correctement deux critiques d'un livre avec une seule référence au nom du livre dans chaque critique.

Maintenant, je remplace Thing par Organization, et ce que je reçois est un gâchis.

<script type="application/ld+json">
[{
  "@context": "http://schema.org/",
  "@type": "Review",
  "itemReviewed": {
    "@type": "LocalBusiness",
    "@id": "www.some-url.com",
    "name": "Company Name"
  },
  "author": {
    "@type": "Person",
    "name": "Jack"
  },
  "reviewRating": {
    "@type": "Rating",
    "ratingValue": "5",
    "bestRating": "5"
  },
  "publisher": {
    "@type": "Organization",
    "@id": "www.some-url.com",
    "name": "Company Name"
  }
},
{
  "@context": "http://schema.org/",
  "@type": "Review",
  "itemReviewed": {
    "@type": "LocalBusiness",
    "@id": "www.some-url.com",
    "name": "Company Name"
  },
  "author": {
    "@type": "Person",
    "name": "Jane"
  },
  "reviewRating": {
    "@type": "Rating",
    "ratingValue": "4",
    "bestRating": "5"
  },
  "publisher": {
    "@type": "Organization",
    "@id": "www.some-url.com",
    "name": "Company Name"
  }
}
]
</script>

La sortie dans l'outil de test montre plusieurs références au nom de l'organisation:

Quatre fois pour deux critiques. Lorsque j'ajoute une centaine d'avis, chacun contiendra des centaines de références à l'organisation.

Pourquoi est-ce un tel désordre? si cela affecte le code, comment le réparer?

1
Alex V

Maintenant, je remplace Thing par Organization, […].

Ce n'était pas le seul changement. Votre deuxième exemple contient également un @id pour chaque nœud de la société.

C’est une bonne pratique de fournir un tel identificateurs de noeud . Dans votre cas, cela signifie que toutes les critiques concernent la même société et que la société révisée est également la société d'édition.

Il ne devrait pas être pertinent de savoir comment le SDTT de Google l’affiche, tant qu’il n’affiche pas quelque chose qui ne va pas. Il semble afficher toutes les propriétés de tous les nœuds avec le même @id, même s'ils ont la même valeur (comme ils devraient normalement l'avoir). C’est juste un problème d’affichage, rien de mal avec vos données.

Alternative: référence au lieu d'incorporer

Il existe un moyen qui ne vous oblige pas à ajouter un nœud complet chaque fois que vous souhaitez parler de la société: utilisez @id pour référencer le nœud complet.

Cela ne permet pas seulement de gagner de l’espace et d’éviter les problèmes de duplication de données, il élimine également les problèmes d’affichage dans le SDTT.

Vous pouvez trouver un exemple complet dans cette réponse.

Dans ton cas:

Ajoutez un nœud de niveau supérieur avec "@type": "LocalBusiness", donnez-lui @id de votre organisation et indiquez toutes les propriétés pertinentes:

{
  "@context": "http://schema.org/",
  "@type": "LocalBusiness",
  "@id": "http://www.example.com/#organization",
  "name": "Company Name"
}

Référencez ce noeud à partir des éléments Review:

"itemReviewed": {"@id": "http://www.example.com/#organization"}
"publisher": {"@id": "http://www.example.com/#organization"}
0
unor