web-dev-qa-db-fra.com

Comment écrire JSON-LD pour une liste de personnes?

J'ai une page qui contient une liste de personnes avec un lien de chacune d'elles qui ouvrira la page principale de cette personne.

Chaque lien doit avoir ses propres données structurées.

J'utilise JSON-LD, mais le l'exemple donné est au format Microdata . Donc, pour l'écrire au format JSON-LD, dois-je écrire les scripts complets pour chaque URL?

Le script pour une URL est

  <script type="application/ld+json">
  {
  "@context": "http://schema.org",
  "@type": "Person",
  "address": {
    "@type": "PostalAddress",
    "addressLocality": "Seattle",
    "addressRegion": "WA",
    "postalCode": "98052",
    "streetAddress": "20341 Whitworth Institute 405 N. Whitworth"
  },
  "colleague": [
    "http://www.xyz.edu/students/alicejones.html",
    "http://www.xyz.edu/students/bobsmith.html"
  ],
  "email": "mailto:[email protected]",
  "image": "janedoe.jpg",
  "jobTitle": "Professor",
  "name": "Jane Doe",
  "telephone": "(425) 123-4567",
  "url": "http://www.janedoe.com"
}
</script>

Disons que j'ai une liste de 15 personnes sur une page. Devrais-je écrire ces 15 scripts séparément ou y a-t-il un autre moyen d'écrire JSON-LD dans ce cas?

2
Siraj Alam

Vous avez plusieurs options:

  • comme articles de premier niveau
    (ne l'utilisez que si les deux autres options ne sont pas possibles)
  • comme valeurs pour une propriété
    (meilleure option, mais nécessite que Schema.org propose un type/bien adapté à votre cas)
  • comme ItemList
    (deuxième meilleure option; exige qu'il soit logique de les regrouper)

En tant qu'éléments de niveau supérieur

Si vous souhaitez fournir les éléments Person sous forme d'éléments de niveau supérieur (c'est-à-dire, non imbriqués en tant que valeurs d'une propriété d'un autre type), vous pouvez utiliser plusieurs éléments script ou un élément script. avec @graph :

<script type="application/ld+json">
{
  "@context": "http://schema.org",
  "@type": "Person"
}
</script>

<script type="application/ld+json">
{
  "@context": "http://schema.org",
  "@type": "Person"
}
</script>
<script type="application/ld+json">
{
  "@context": "http://schema.org",
  "@graph": 
  [
    {
       "@type": "Person"
    },
    {
       "@type": "Person"
    }
  ]
}
</script>

En tant que valeurs pour une propriété

Si vous souhaitez fournir les éléments Person en tant que valeurs d'une propriété d'un autre type, utilisez un tableau en tant que valeur .

Exemple: Vous pourriez avoir un Organization et vouloir référencer le Persons employé avec le employee propriété:

<script type="application/ld+json">
{
  "@context": "http://schema.org",
  "@type": "Organization",
  "employee":
  [
    {
      "@type": "Person"
    },
    {
      "@type": "Person"
    }
  ]
}
</script>

Comme liste

Si vous souhaitez fournir les éléments Person sous forme de liste, vous pouvez utiliser le type ItemList .

<script type="application/ld+json">
{
  "@context": "http://schema.org",
  "@type": "ItemList",
  "itemListElement": [
    {
      "@type": "Person"
    },
    {
      "@type": "Person"
    }
  ]
}
</script>
3
unor

Vous pouvez appliquer une propriété BreadcrumbList à votre liste. Quelque chose comme ça:

{
 "@context": "http://schema.org",
 "@type": "BreadcrumbList", 
 "name": "Name of the list",
 "description": "Description of the list",
 "itemListElement":
 [
  {
   "@type": "ListItem",
   "position": 1,
   "item":
   {
    "@type": "Person",
    "@id": "https://example.com/person1",
    "name": "name of person1"
    }
  },
  {
   "@type": "ListItem",
  "position": 2,
  "item":
   {
     "@type": "Person",
    "@id": "https://example.com/person2",
     "name": "name of person2"
   }
  }
 ]
}
0
nikant25