RDFAoût, votre feuilleton de l'été : pendant un mois, 2 billets par semaine sur le RDFa, à l'attention des lecteurs connaissant déjà le HTML.

Notions abordées dans ce billet : catégorisation, SKOS, RDF/XML, négociation de contenu...

Trop souvent négligée, la catégorisation est l'un des aspects les plus difficiles et importants d'un projet Web. Elle repose sur deux efforts :

  • l'effort de catégorisation lui-même, avec la pertinence et l'exhaustivité comme horizons
  • l'effort d'ergonomie pour présenter ces catégories conformément aux interactions attendues par les visiteurs

Ces deux efforts sont difficiles. Nous allons voir comment le RDFa peut nous faciliter la tâche.

S'affranchir des représentations

Prenons le site cocktaildb.com qui propose une collection de recettes de cocktails et qui a établi une catégorisation des ingrédients qui les constituent. Par exemple, l'ingrédient Cognac a Brandy comme catégorie.

La représentation HTML de cette catégorie se contente de lister les ingrédients qu'elle contient dans un tableau. C'est tout. Comment faisons-nous pour explorer les catégories avec un navigateur à facette (comme Exhibit) ou en parcourant une arborescence ? Et pour faire des recherches fines malgré l'indisponibilité de longue date du moteur de recherche avancé ?

Nous ne pouvons pas car nous sommes limités par les représentations HTML des catégories, car les vraies données sont verrouillées dans la base de données. Cette limitation peut cependant être contournée si le responsable du site décide d'exposer explicitement sa catégorisation en RDFa, avec le vocabulaire SKOS.

SKOS

  • URI : http://www.w3.org/2004/02/skos/core#
  • Préfixe usuel : skos
  • 28 propriétés / 4 classes

SKOS (Simple Knowledge Organisation System) est un vocabulaire permettant la modélisation de vocabulaires contrôlés plus ou moins structurés, comme un simple jeu d'étiquette ("folksnomie"), une taxonomie, un thésaurus... Bref, comme son nom l'indique, il permet d'organiser la connaissance.

Mais ne vous encombrez pas avec ces notions complexes et retenez seulement qu'il permet de formaliser les catégorisations des sites Web en qualifiant chaque catégorie par le type skos:Concept et en définissant des propriétés liant les catégories entre-elles (mères avec skos:broader, filles avec skos:narrower, liées avec skos:related...) :

Comme cocktaildb.com n'utilise pas RDFa, nous allons imaginer les codes suivants, pour un ingrédient :


 

Cognac

Type : Brandy, aged.

... et pour sa catégorie :


 

Brandy, aged

Des catégories liées et fusionnées

La propriété dc:subject et SKOS nous ont permis de décrire la relation entre un ingrédient et sa catégorie, mais on est en droit de demander plus. En effet, dans notre exemple, la catégorisation des ingrédients est réduite à son strict minimum avec une structure plane, pas de termes liées, ni de synonymes ou de multilinguisme.

On devine donc que le webmaster de cocktaildb.com n'a pas souhaité consacrer trop d'énergie dans la création et l'entretien des catégories d'ingrédients, qui ne constituent pas le sujet principal du site.

Si nous étions à sa place, nous aurions pu utiliser SKOS pour déléguer l'entretien de cette catégorisation à une autorité tierce.

Reprenons le RDFa de la catégorie Brandy et ajoutons lui un triplet :


 

Brandy, aged

L'information portée par la propriété skos:closeMatch est invisible aux lecteurs humains mais informe les automatismes que cette catégorie a comme équivalent une autre catégorie du thésaurus de la FAO. On devine donc que les informations de ce thésaurus tiers peuvent être utilisées pour appréhender les données de notre site.

Cependant, il n'y a pas de RDFa dans la représentation HTML de la catégorie de la FAO que nous avons désignée. Et sans RDF, pas de description de cette ressource. Notre graphe s'arrête-t-il ici ? Notre liaison se révèle-t-elle inutile ?

Le RDF au delà du RDFa

Non car cette description existe bel et bien, mais hors du HTML. Elle est accessible grâce à un mécanisme appelé "négociation de contenu" (ici associé à une redirection 303).

Comme nous l'avons vu dans le premier épisode et expérimenté depuis, il est possible de consulter des représentations des ressources en renseignant leur URI dans un outil. Par exemple, si on saisit l'URI de cette catégorie dans un navigateur, nous obtiendrons une représentation en HTML, sans RDFa.

Mais si on saisit ce même URI dans un un client REST, par exemple, on peut obtenir une autre représentation, nommée RDF/XML et parfaitement compatible :

brandiesborpárlatAcquaviti

Ce qui nous permet de continuer le parcours du graphe :

Et d'acquérir automatiquement des informations de catégorisation supplémentaires :

  • "brandy" s'écrit borpárlat en Hongrois, ブランデー en japonais...
  • un brandy est un spiritueux, donc une boisson alcoolisée, donc un produit fermenté, etc.
  • les brandys sont associés aux vins

Avec cette liaison, toutes ces informations sont utilisables sur le site des cocktails, et qualifient par ricochets la catégorisation du cognac, afin d'enrichir les possibilités de recherche interne, par exemple.

SKOS est un vocabulaire très générique et très souple, dont l'usage va se généraliser. Hors des gros projets de thésaurus (comme celui de la FAO ou celui du New-York Times), il est principalement utilisé avec deux vocabulaires : Good Relations pour les sites marchands et SIOC pour les sites communautaires.