web-dev-qa-db-fra.com

Combinaison du schéma d'auteur RDFa Lite et du balisage HTML rel = "author"

Existe-t-il un moyen de conserver la partie HTML rel de l'extrait ci-dessous:

<body vocab="http://schema.org/" typeof="AboutPage">
   <address property="author" typeof="person">Contact <a rel="author" href="mailto:[email protected]" property="name">My Name</a></address>
</body>

sans recevoir cet avertissement:

AboutPage                0 ERRORS  1 WARNINGS
@type           AboutPage
author  
    @type       Person
    name        My Name
!   author      The property author is not recognized by Google for an object of type Person.
        @type   Unspecified Type

Juste un rel:

<body vocab="http://schema.org/" typeof="AboutPage">
   <address>Contact <a rel="author" href="mailto:[email protected]" >My Name</a></address>
</body>

donne

AboutPage                0 ERRORS  0 WARNINGS
@type           AboutPage
author  
    @type       Unspecified Type

Je n'arrive pas à donner au rel un type sans property="author" qui provoque alors des doublons bizarres author de différents types.

Je suis conscient que je pourrais simplement supprimer complètement le rel ou le déplacer vers les données meta, mais si l'outil de test des données structurées insiste pour reconnaître le rel="author" alors il doit y avoir un moyen de lui donner un type, non?

2
arghc

L'attribut rel a deux objectifs différents, qui peuvent entrer en conflit:

  • HTML simple: fournissant un type de lien
  • RDFa: fournissant une propriété (tout comme l'attribut property, mais avec quelques différences techniques)

Dans vos deux extraits, il est interprété¹ comme étant propriété Schema.org author , pas type de lien author .

La meilleure façon générale d'empêcher de telles confusions est de ne pas utiliser vocab. Utilisez à la place prefix (ou utilisez le RDFa Core Initial Context ):

<!-- using 'prefix' -->

<body prefix="s: http://schema.org/" typeof="s:AboutPage">
  <address property="s:author" typeof="s:Person">
    Contact <a rel="author" href="mailto:[email protected]" property="s:name">My Name</a>
  </address>
</body>
<!-- rely on the RDFa Core Initial Context, which defines 'schema' -->

<body typeof="schema:AboutPage">
  <address property="schema:author" typeof="schema:Person">
    Contact <a rel="author" href="mailto:[email protected]" property="schema:name">My Name</a>
  </address>
</body>

Notez que Google va maintenant signaler une erreur:

La propriété http://www.w3.org/TR/html5/links.html#link-type-author n'est pas reconnu par Google pour un objet de type Person.

Ce n'est pas un problème, vous pouvez l'ignorer, car l'URI généré montre que le SDTT de Google comprend correctement que la valeur rel est un type de lien (qui peut également être utilisé comme RDF et qu'il ne l'interprète plus comme une propriété Schema.org. Il donne également cette erreur lors de l'utilisation de propriétés d'autres vocabulaires que Schema.org, ce qui est une chose parfaitement fine et utile à faire.


¹ Note latérale: si je comprends bien lister l'élément 7 correctement, un analyseur RDFa doit ignorer l'attribut rel dans votre cas spécifique, car vous avez l'attribut property sur le même élément, et votre rel ne contient pas de valeur CURIE/URI.

1
unor