1

Il semble que Google ait implémenté la version 2 de Schema.org et que les propres exemples de Google échouent au test de validation de Google. Par exemple, voici est Google's example JSON-LD code for breadcrumbs:Google supporte maintenant la nouvelle version de Schema.org BreadcrumbList?

<script type="application/ld+json"> 
{ 
    "@context": "http://schema.org", 
    "@type": "BreadcrumbList", 
    "itemListElement": [ 
        { 
            "@type": "ListItem", 
            "position": 1, 
            "item": { 
                "@id": "https://example.com/arts", 
                "name": "Arts" 
            } 
        }, 
        { 
            "@type": "ListItem", 
            "position": 2, 
            "item": { 
                "@id": "https://example.com/arts/books", 
                "name": "Books" 
            } 
        }, 
        { 
            "@type": "ListItem", 
            "position": 3, 
            "item": { 
                "@id": "https://example.com/arts/books/poetry", 
                "name": "Poetry" 
            } 
        } 
    ] 
} 
</script> 

Hier, quand je collais le code ci-dessus dans un fichier test.html, Google's validation tool comme un validé « Pass ».

Aujourd'hui, il échoue. Il semble que vous deviez maintenant définir explicitement un mainEntity. Mais ils n'ont pas pris la peine de mettre à jour leurs documents.

Est-ce que quelqu'un sait où trouver la documentation officielle sur l'utilisation de JSON-LD? Schema.org n'offre pas beaucoup et semble également être dépassé. J'ai réussi à obtenir le code suivant pour passer le test:

<script type="application/ld+json"> 
{ 
    "@context": "http://schema.org", 
    "@type": "WebPage", 
    "mainEntity": { 
        "@context": "http://schema.org", 
        "@type": "BreadcrumbList", 
        "itemListElement": [ 
            { 
                "@type": "ListItem", 
                "position": 1, 
                "item": { 
                    "@id": "http://www.example.com", 
                    "name": "Home" 
                } 
            }, 
            { 
                "@type": "ListItem", 
                "position": 2, 
                "item": { 
                    "@id": "http://www.example.com/shop.com", 
                    "name": "Shop" 
                } 
            } 
        ] 
    } 
} 
</script> 

Ce que je suis inquiet à ce sujet est:

Disons que vous définissez également un produit sur la même page, en utilisant des microdonnées, sera la recherche les moteurs traitent la liste de fil d'Ariane comme mainEntity? Cela signifie-t-il qu'il sera plus élevé dans les résultats de recherche que le produit ne le fera?

+0

Voulez-vous vraiment dire "Microdonnées" dans votre dernière question? Donc vous voulez utiliser JSON-LD pour 'BreadcrumbList' et Microdata pour' Product'? – unor

+0

[Même problème lors de l'utilisation de Microdata] (http://stackoverflow.com/q/32249948/1591669) – unor

+0

L'inverse selon google. Voici un extrait des recommandations de Google: Google est en train d'ajouter la prise en charge de JSON-LD à davantage de fonctionnalités basées sur les balisages. Jusqu'à présent, JSON-LD est pris en charge pour toutes les fonctionnalités du Knowledge Knowledge, les zones de recherche de liens annexes, les extraits enrichis d'événements et les extraits enrichis de recettes. Google recommande l'utilisation de JSON-LD pour ces fonctionnalités. Pour les types Rich Snippets restants et la chapelure, Google recommande l'utilisation de microdonnées ou RDFa. https://developers.google.com/structured-data/schema-org – user1749141

Répondre

2

Vous devez séparer les préoccupations:

  • Schema.org est un vocabulaire.
  • JSON-LD est une syntaxe.
  • Google est un consommateur qui supports données structurées

    • est fourni dans la syntaxe JSON-LD et
    • utilise le vocabulaire Schema.org.

Schema.org ne peut pas être « Périmé »: ils sont bien sûr la source canonique de leurs propres types/propriétés. Si certains de leurs types/propriétés sont dépréciés, ils continuent généralement à faire partie du vocabulaire.

La «documentation officielle sur l'utilisation de JSON-LD» est la recommandation du W3C (ci-dessus).

Si je comprends bien votre problème, votre problème est avec Google: leur documentation par rapport à leur outil de test. They document qu'ils soutiennent Schema.org’s BreadcrumbList type, mais their testing tool ne reconnaît pas ce type:

L'attribut itemtype a une valeur non valide.

(Bien que ce message d'erreur se réfère à « itemtype », qui est un attribut microdonnées, il arrive, peu importe que vous pris en charge la syntaxe test.)

Il n'y a rien que vous pouvez faire à ce sujet. Le premier extrait est valide JSON-LD et c'est une utilisation appropriée du vocabulaire Schema.org. Le fait que Google le documente de cette façon rend probable que leur outil de test est actuellement buggé (ce qui est arrivé plusieurs fois auparavant).À propos de votre deuxième extrait: l'utilisation de mainEntity de cette façon n'est probablement pas ce que vous voulez transmettre. Vous dites que le fil d'Ariane serait l'entité principale de la page Web, mais ce serait très rare. Typiquement, l'entité principale est un Article etc.

+1

Oui, exactement. Je pense que Google vient de mettre à jour leur support de la technologie, parce que leur échantillon a fonctionné il y a seulement 2 jours. Maintenant, leur échantillon, tel quel, ne fonctionne pas. Je peux le faire fonctionner si j'ajoute le "mainEntity" qui est apparemment une exigence dans la version 2.0 (dans la version 1.0 c'était facultatif). Je pense donc que Google a mis à jour le support de la version 1 à la version 2, aujourd'hui. Vous cherchez une confirmation. – user1749141

+0

@ user1749141: Schema.org ne nécessite aucune propriété. Google, en tant que l'un des nombreux consommateurs, peut bien sûr exiger tout ce qu'il veut (ils disent simplement: si vous ne fournissez pas cette propriété, nous ne montrons pas un extrait enrichi), mais il semble très, très peu probable qu'ils le fassent jamais besoin d'utiliser 'mainEntity' * that * way (parce que ce serait faux et n'a aucun sens). Ils pourraient nécessiter d'utiliser 'mainEntity' si' BreadcrumbList' est utilisé (mais ce n'est pas documenté actuellement), mais cela ne signifie pas que 'BreadcrumbList' devrait être l'entité principale: le' mainEntity' serait typiquement sa dernière entrée. – unor