Taxonomie, classes HTML, attributs personnalisés, microdata et RDFa

Ayant une heure à perdre, je me suis demandé de quelle manière nous pourrions structurer le nom d'un taxon biologique en HTML, voir sa hiérarchie, et surtout à l'aide de quels éléments et/ou attributs.

J'ai d'abord commencé par définir les propriétés minimales permettant de présenter un objet « taxon »(1) :

{
    "name": "taxon",
    "type": "object",
    "description": "Objet décrivant la nomenclature d'un taxon",
    "properties": {
        "rank": {
            "type": "string",
            "description": "Niveaux hiérarchiques d'un taxon",
            "enum": ["kingdom","phylum","class","order","family","genus","specie"]
        },
        "format": {
            "type": "string",
            "description": "Format du nom d'un taxon",
            "enum": ["binominal", "vernacular"]
        }
    }
}
Description des propriétés d'un objet taxon.

J'ai ensuite regardé ce que les technologies web metent à notre disposition. Les spécifications HTML 5 ont par exemple redéfini le rôle de l'élément « i » de manière à ce qu'il puisse être utilisé pour noter le nom d'une espéce vivante :

The i element represents a span of text in an alternate voice or mood, or otherwise offset from the normal prose in a manner indicating a different quality of text, such as a taxonomic designation, a technical term, an idiomatic phrase from another language, a thought, or a ship name in Western texts.

The i element

C'est donc cet élément que nous utiliserons pour structurer un nom d'espèce. Reste à savoir avec quoi nous allons préciser quel rang est renseigné ou quel format de nom nous utilisons. Plusieurs candidats se disputent cet honneur :

  • La méthode « historique » du web : l'attribut class.
  • Les attributs personnalisés, data-*.
  • les microdata.
  • le RDFa.

Quelques remarques techniques / sémantiques d'abord :

  • Les microdata ne semblent pas encore très bien implémentés dans les navigateurs web (gecko, webkit). Cela ne veut pas dire que l'on ne peut pas les utiliser, simplement que les API permettant de les manipuler ne sont pas disponibles.
  • Les attributs personnalisés sont déjà plus largement adoptés ; malheureusement, ces attributs ne sont pas pensés pour être accessibles par autre chose que le document dans lequel ils sont utilisés. Autrement dis, on peut très bien manipuler des éléments portant des attributs personnalisés avec du javascript et/ou des CSS par exemple, mais pas construire une source d'information qui serait « interrogeable de l'extérieur ».

Voici donc quelques tentatives de structurations des noms de taxons. Certaines (voire toutes) sont sans doute mauvaises...

<i class="taxon">
    <span class="rank-(domain|kingdom|phylum|class|order|family|genus|specie)">
        [...]
    </span>
</i>
<i class="taxon format-(binominal|vernacular)">[...]</i>
Utilisation de l'attribut class.
<i class="taxon">
    <span data-rank="(kingdom|phylum|class|order|family|genus|specie)">
        [...]
    </span>
</i>
<i class="taxon" data-format="(binominal|vernacular)">[...]</i>
Utilisation des attributs personnalisés data-*.
<i class="taxon" itemscope>
    <span itemprop="(kingdom|phylum|class|order|family|genus|specie)">
        [...]
    </span>
</i>
<i class="taxon format-(binominal|vernacular)" itemscope>[...]</i>
Utilisation des microdata
<i class="taxon" vocab="http://example.org/taxonomy/" typeof="taxon">
    <span property="(kingdom|phylum|class|order|family|genus|specie)">
        [...]
    </span>
</i>
<i class="taxon format-binominal" vocab="http://example.org/taxonomy/" typeof="taxon" property="name">[...]</i>
<i class="taxon format-vernacular" vocab="http://example.org/taxonomy/" typeof="taxon" property="name">[...]</i>
Utilisation de RDFa Lite.

Exemples avec l'espèce humaine :

<i class="taxon">
    <span class="rank-genus">Homo</span> 
    <span class="rank-specie">sapiens</span>
</i>
<i class="taxon format-binominal">Homo sapiens</i>
<i class="taxon format-vernacular">Etre humain</i>
Utilisation des classes pour décrire l'espèce humaine.
<i class="taxon">
    <span data-rank="genus">Homo</span> 
    <span data-rank="specie">sapiens</span>
</i>
<i class="taxon" data-format="binominal">Homo sapiens</i>
<i class="taxon" data-format="vernacular">Etre humain</i>
Utilisation des attributs personnalisés pour décrire l'espèce humaine.
<i class="taxon" itemscope>
    <span itemprop="genus">Homo</span> 
    <span itemprop="specie">sapiens</span>
</i>
<i class="taxon" itemscope itemprop="name">Homo sapiens</i>
<i class="taxon" itemscope itemprop="name">Etre humain</i>
Utilisation des microdata pour décrire l'espèce humaine.
<i class="taxon" vocab="http://example.org/taxonomy/" typeof="taxon">
    <span property="genus">Homo</span>
    <span property="specie">sapiens</span>
</i>
<i class="taxon format-binominal" vocab="http://example.org/taxonomy/" typeof="taxon" property="name">Homo sapiens</i>
<i class="taxon format-vernacular" vocab="http://example.org/taxonomy/" typeof="taxon" property="name">Etre humain</i>
Utilisation de RDFa Lite pour désigner l'espèce humaine.
<dl class="taxon">
    <dt>Règne</dt>
    <dd class="rank-kingdom">Animal</dd>
    <dt>Phylum</dt>
    <dd class="rank-phylum">vertébrés</dd>
    <dt>Classe</dt>
    <dd class="rank-class">mammifères</dd>
    <dt>Ordre</dt>
    <dd class="rank-order">primates</dd>
    <dt>Famille</dt>
    <dd class="rank-family">hominidés</dd>
    <dt>Genre</dt>
    <dd class="rank-genus">Homo</dd>
    <dt>Espèce</dt>
    <dd class="rank-specie">sapiens</dd>
</dl>
Description de l'espèce humaine avec une liste de description.
<ul class="taxon">
    <li class="rank-kingdom">Animal
        <ul>
            <li class="rank-phylum">vertébrés
                <ul>
                    <li class="rank-class">mammifères
                        <ul>
                            <li class="rank-order">primates
                                <ul>
                                    <li class="rank-family">hominidés
                                        <ul>
                                            <li class="rank-genus">Homo
                                                <ul>
                                                    <li class="rank-specie">sapiens</li>
                                                </ul>
                                            </li>
                                        </ul>
                                    </li>
                                </ul>
                            </li>
                        </ul>
                    </li>
                </ul>
            </li>
        </ul>
    </li>
</ul>
Description de l'espèce humaine en précisant la hiérarchie des rangs.

Sur la nomenclature des noms :

Titre
What's in a name ? Scientific names for animals in popular writing
Editeur
International Commission on Zoological Nomenclature

Sur les techniques web disponibles :

Titre
HTML Microdata
Auteurs
  • Ian HICKSON
Editeur
W3C
Date
Remarque
Encore au stade de brouillon (WD).
Titre
RDFa Lite 1.1
Auteurs
  • Manu SPORNY
Editeur
W3C
Date
Remarque
Encore au stade de recommandation candidate (CR). Voir aussi http://rdfa.info/.
Titre
HTML 5
Auteurs
Ian HICKSON
Auteurs
Robin BERJON
Auteurs
Steve FAULKNER
Auteurs
Travis LEITHEAD
Auteurs
Erika DOYLE NAVARA
Auteurs
Edward O'CONNOR
Auteurs
Silvia PFEIFFER
Editeur
W3C
Date
Chapitre
3.2.5.9 Embedding custom non-visible data with the data-* attributes
Titre
HTML 5
Auteurs
Ian HICKSON
Auteurs
Robin BERJON
Auteurs
Steve FAULKNER
Auteurs
Travis LEITHEAD
Auteurs
Erika DOYLE NAVARA
Auteurs
Edward O'CONNOR
Auteurs
Silvia PFEIFFER
Editeur
W3C
Date
Chapitre
4.6.16 The i element

Sur l'utilisation de ces techniques :

Titre
Microdata & the microdata DOM API
Auteurs
  • Chris MILLS
Editeur
dev.opera.com
Date
Titre
Extending HTML5 — Microdata
Auteurs
  • Oli STUDHOLME
Editeur
HTML5 Doctor
Date

Sur le débat microdata contre RDFa :

Titre
An Uber-comparison of RDFa, Microdata and Microformats
Auteurs
  • Manu SPORNY
Editeur
The Beautiful, Tormented Machine
Date
Titre
Microformats vs RDFa vs Microdata
Auteurs
  • Philip JÄGENSTEDT
Editeur
blog.foolip.org
Date
Titre
Schema.org and Pre-Existing Communities
Auteurs
  • Henri SIVONEN
Editeur
hsivonen.iki.fi
Date

Et je découvre au moment de finir d'écrire ce billet qu'un microformat est en cours de développement : species.