Zotero est une extension pour Firefox. Son but est de gérer les citations. Il sait lire différent formats, comme BibTeX, et quelques greffons (appelés "translators") lui permettent d'extraire les références de certains grands sites, comme Amazon.
Du point de vue utilisateur, Zotero ajoute à la barre d'adresse une icône permettant d'importer les références présentes sur la page, ainsi qu'un bouton à droite de la barre d'état qui affiche sa fenêtre principale1. Une référence importée est formée des champs usuels : titre, auteur, résumé, date, url, etc. Elle peut aussi comporter des mots-clés (appelés "marqueurs") importés ou non, et on peut lui ajouter des notes, des pièces jointes...
Tout ceci ne fonctionne que si le site est suffisamment important pour qu'un traducteur Zotero ait été développé spécialement. Ou si les pages web fournissent les métadonnées des citations dans l'un des standards reconnus nativement.
Commençons par signaler que la documentation est assez pauvre, souvent obsolète, et parfois presque fausse. Contrairement à ce qu'affirme la page officielle ce ne sont pas 2 mais 3 principaux formats qui sont disponibles2 :
N'étant pas du tout un expert du domaine, tout ce qui va suivre n'est pas certain, il n'est que le résultat de quelques heures de recherche sur le web, de lecture de spécifications, et de parcours du code (Javascript) de Zotero.
C'est de loin le plus simple. OpenUrl COinS est
l'acronyme de OpenURL ContextObject in SPAN. Le principe est d'écrire les
métadonnées de chaque référence dans une balise <span> avec des attributs
class et title respectant un format particulier.
Un exemple, repris de la documentation officielle :
<span class="Z3988"
title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.issn=1045-4438">
</span>
La documentation est simple et efficace, avec une page pour les références aux livres et une pour les références aux journaux. Un exemple concret d'utilisation, sur le site de Persée.
Les retours à la ligne ne servent qu'à rendre le source plus lisible.
<span class="Z3988"
title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal
&rfr_id=info%3Asid%2Fdoc-iep.univ-lyon2.fr:DossiersPresse&rft.genre=article
&rft_id=%2FRessources%2FBases%2FSilecs%2FarticleDP.html%3Fiddp%3D205779
&rft.atitle=Coup+de+balai+%C3%A0+Grozny&rft.date=2008-12-30&rft.spage=13
&rft.jtitle=Le+Monde&rft.epage=13&rft.au=J%C3%A9go,+M.&rft.language=fr">
</span>
Ce qui correspond aux champs :
Le rfr_id n'est pas une coquille : rft désigne le referent, l'objet
référencé, alors que rfr désigne le referrer, l'application qui publie la
référence.
Le champ language, bien que documenté par COinS n'a pas d'effet visible dans Zotero 1.0.10. Mais c'est peut-être une mauvaise utilisation de ma part.
Le principe d'UNAPI est différent : les métadonnées ne sont pas embarquées sur la page web, seule une URL est fournie pour chaque référence. Le navigateur va ensuite interroger toutes les URL qui l'intéressent.
En pratique, chaque référence doit être associée à une balise <abbr> qui sert
à déclarer son identifiant. La page web doit aussi contenir un <link> qui
définit l'URL à laquelle le navigateur pourra aller chercher la description de
chaque référence, en passant son identifiant en paramètre. Plusieurs formats de
réponse sont possibles, selon ce que déclare le serveur et ce que demande le
client.
La documentation d'unAPI est claire et succincte, mais elle ne suffit pas. On a en effet besoin de choisir les formats de réponse à implémenter, par exemple du Dublin Core. Des exemples sont disponibles avec le plugin unAPI pour Wordpress.
RDF est en fait plus un modèle de données qu'un format. Ici on utilise sa syntaxe XML, plus exactement RDF embedded in HTML. La sémantique est fournie par Dublin Core, un format de métadonnées très connu.
En pratique, on ajoute simplement quelques champs <meta> à la partie <head>
de notre page HTML. Un exemple concret sur le site de
Revues.org.
Pour ceux qui souhaitent en savoir plus, voici des textes sur l'incorporation de RDF dans du HTML et une introduction à Dublin Core. À noter qu'une autre syntaxe est apparemment possible pour du RDF/XML en déclarant un espace de nommage XML. Je n'ai pas testé la compatibilité de cette syntaxe avec Zotero. Mes pages étant en HTML4, je ne pouvais quoiqu'il en soit pas l'utiliser.
Il est extrait d'une page en HTML4, donc les <meta> ne peuvent pas être
fermés.
<link rel="schema.DC" href="http://purl.org/dc/elements/1.1/">
<meta name="DC.type" content="newspaperArticle">
<meta name="DC.format" content="text/html">
<meta name="DC.identifier" scheme="URI" content="http://doc-iep.univ-lyon2.fr/Ressources/Bases/DP/articleDP.html?iddp=186398">
<meta name="DC.language" content="fr">
<meta name="DC.title" content="Ahmedou Ould-Abdallah : "La Somalie est abandonnée par la communauté internationale"">
<meta name="DC.subject" content="Somalie">
<meta name="DC.subject" content="Troubles">
<meta name="DC.creator" content="Bolopion P.">
<meta name="DC.date" content="2008-03-22">
Un seul champ a posé un problème : DC.type. Les diverses documentations rencontrées recommandaient une valeur de text, ce qui se traduisait dans Zotero par un type page web.
Malheureusement, tous ont des défauts, et des qualités différentes. Voici mon évaluation, avec le bémol que je n'ai pas implémenté unAPI, et que je le connais donc moins :
Avec COinS, déclarer qu'on cite un article de journal ("newspaper article") est impossible car le type le plus proche est "journal article", ce qui correspond à un article de revue pour Zotero. C'est pourquoi Zotero implémente par exemple un traducteur pour le site sudoc qui va chercher le nom de l'image associée à l'entrée sur la page web, et définit alors le type précis : si une balise COinS est précédée de l'image "map.gif", alors le type déclaré par COinS sera remplacé par "map".
Dans notre cas, il nous fallait sur certaines pages HTML déclarer plusieurs références, et sur d'autres une seule. On souhaitait associer des mots-clés, donc COinS ne convenait pas totalement. L'approche d'abord retenue utilisait à la fois COinS et RDF, le premier pour les listes de notices, le second pour les pages présentant une notice unique avec ses mots-clés. Malheureusement, les restrictions de RDF DC étaient trop fortes, et il a fallu abandonner l'indexation (pas de mots-clés).
En bref, aucun de ces formats de métadonnées ne permet de décrire un article de journal et ses mots-clés.
Si je me trompe, merci beaucoup de m'expliquer comment faire pour que je complète ce document.
Malheureusement, la documentation fournie par COinS ne couvre pas tous les
besoins. En fait, elle est partielle puisque la sémantique est reprise de la
norme OpenURL ContextObject 1.0, elle même dérivant de l'ancienne Z39.88. La
documentation COinS donne un lien mort, ici corrigé, vers les
spécifications openURL ContextObject.
Pour une vision complète de ce qu'on peut mettre dans le title du span, il
faut donc lire ces 120 pages techniques. Bravo aux courageux lecteurs !
Malheureusement, on trouve peu de vulgarisation fiable sur le sujet. Et de
toutes façons, rien ne nous garantit que Zotero implémente toute la norme.
Un autre document permet d'en savoir plus sur le format openURL
ContextObject, c'est un
PDF décrivant la norme clé/valeur de ContextObject.
On trouve ailleurs une
description plus complète d'OpenURL
et en particulier une description des
types de métadonnées possibles
dans un ContextObject. On s'aperçoit, à la lecture d'un de ces deux
documents, que le type "journal", alias
rft_val_fmt=info:ofi/fmt:kev:mtx:journal n'est pas unique. On peut
lui préférer Simple Dublin Core, alias
rft_val_fmt=info:ofi/fmt:kev:mtx:dc.
Si le ContextObject contient rft_val_fmt=info:ofi/fmt:kev:mtx:dc, alors il
permet toujours de constuire un élément COinS, mais la documentation COinS
(pages sur les déclarations de journaux et de livres) n'est plus utile, car les
champs disponibles sont différents.
Avec ce COinS Dublin Core, on dispose en particulier d'un champ
subject pour attribuer des mots-clés. Par contre, les inconvénients
de Dublin Core surgissent s'il s'agit d'une référence à un article de
presse : difficile de déclarer les pages ou le titre du journal. Je ne
sais pas comment y arriver, et toute information sur le sujet
m'intéresse.
Celui fourni sur le site de Zotero est de très piètre qualité (avec des bons
vieux for et ses compteurs numériques quand un foreach ferait l'affaire).
Voici un code à peine meilleur, écrit vite et sans souci d'universalité. Mais il
a au moins l'avantage de produire au choix du COinS ou du RDF Dublin Core.
Il n'y a pas moyen d'importer les références de la page en cours depuis la fenêtre de Zotero. Seul le petit bouton placé dans la barre d'adresse le permet. C'est une ergonomie très médiocre et même piégeuse. ↩
Il manque au site de Zotero une liste des translators généralistes, ceux qui peuvent s'appliquer à tous les sites. Une description complète des formats reconnus par Zotero encouragerait les sites à adapter leur métadonnées, alors que le fonctionnement actuel encourage à créer un translator spécifique à chaque site, à la merci du premier changement de syntaxe des pages web. ↩