Exprimer simplement les métadonnées d’une page web avec RDFa

Comment exprimer des métadonnées d’une page web très simplement en utilisant la syntaxe RDFa ? Prenons exemple un billet de blog « propulsé » par WordPress. S’il existe des plugins pour cela, l’obsolescence de ces derniers peut rendre difficile leur maintien dans le temps. Autre solution, implémenter RDFa dans le code HTML du thème WordPress que l’on aura choisi. Pour ce que cela soit facile et « gérable » dans le temps, le plus simple et d’utiliser l’entête HTML <head> afin d’y placer des balises <meta> qui contiendront les métadonnées. Exprimer des métadonnées selon le modèle RDF via la syntaxe RDFa permet à des machines (principalement des moteurs de recherche) de mieux traiter l’information car elle devient plus explicite : pour une machine, une chaine de caractère peut être un titre ou un résumé, si vous ne lui dites pas que c’est un titre ou que c’est un résumé elle ne le devinera pas. A minima, il est donc possible d’utiliser les balises <meta> pour définir une structure RDF offrant la possibilité de structurer les métadonnées minimales par exemple avec le vocabulaire documentaire Dublin Core Element Set (plus connu en France sous appellation « Dublin Core simple »).

Comment faire ?

En premier, il faut indiquer dans le DOCTYPE de la page web, qu’elle va contenir des informations qui vont utiliser le modèle RDF, ainsi, le DOCTYPE sera :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">

Dans la balise <html>, nous allons indiquer les adresses des vocabulaires documentaires – par l’intermédiaire de namespace XML – qui vont nous servir à typer les informations, dans notre exemple, nous allons utiliser le Dublin Core simple et le Dublin Core Terms (DC Terms) :

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema#" 
xmlns:dc="http://purl.org/dc/elements/1.1/" 
xmlns:dcterms="http://purl.org/dc/terms/">

Il serait possible, pour encoder plus d’information, d’utiliser plus de vocabulaires documentaires :

<html xmlns="http://www.w3.org/1999/xhtml" 
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
xmlns:dc="http://purl.org/dc/elements/1.1/" 
xmlns:dcterms="http://purl.org/dc/terms/" 
xmlns:skos="http://www.w3.org/2004/02/skos/core#" 
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema#" 
xmlns:foaf="http://xmlns.com/foaf/0.1/" 
xmlns:cc="http://creativecommons.org/ns#">

Ici, foaf nous servirait à encoder des informations relatives à une personne ou un objet décrit par les métadonnées, cc nous permettrait de signaler quelle licence creative commons s’appliquerait à ce contenu. Après avoir déclaré des les vocabulaires documentaires que nous allons utiliser, nous allons ajouter la structure RDFa au travers de balises <meta> dans l’entête <head> de la page HTML.

Dans un premier temps, à l’aide d’une balise <link>, nous allons définir l’objet numérique auquel les informations encodées en RDF seront rattachées :

<link rel="dc:identifier" href="http://monblog.com/monbillet.html" />

Cette balise définie donc un « conteneur » pour les informations que nous allons indiquer à l’aide des balises <meta>. Ce conteneur est identifié par une URI qui se trouve être là une URL, c’est à dire l’adresse de la page dans le web.

Maintenant, nous enchainons les balises <meta> qui définissent donc un ensemble de métadonnées, c’est à dire dans notre cas, des informations descriptives de la page web :

<meta property="dc:title" content="Le titre de mon billet" />
<meta property="dc:creator" content="Stéphane Pouyllau" />
<meta property="dcterms:created" content="2011-01-27" /> 
<meta property="dcterms:abstract" content="Un résumé descriptif du contenu de ma page" xml:lang="fr" /> 
<meta property="dc:subject" content="mot-clé 3" /> 
<meta property="dc:subject" content="mot-clé 2" /> 
<meta property="dc:type" content="billet" />
<meta property="dc:format" content="text/html" />
<meta property="dc:relation" content="Un lien vers une page web complémentaire" />

Il s’agit là d’un exemple minimal : un billet de blog utilisant le Dublin Core simple et peu descriptif sur le plan documentaire. Suivant la nature du contenu de la page web, il sera bien sur possible d’être plus précis, plus fin et plus complet dans les informations encodées. Le DC Terms permettra avec :

<meta property="dcterms:bibliographicCitation" content="Mettre ici une référence bibliographique" />

de proposer une forme pour une référence bibliographique dans le cas d’une page web décrivant un ouvrage par exemple. Il serait possible de passer l’ensemble du texte d’une page web à l’aide du vocabulaire SIOC en utilisant la propriété sioc:content. Il est possible également de relier des pages web entre elles (pour définir un corpus d’auteurs par exemple) en utilisant dans le vocabulaire DC Terms la propriété dcterms:isPartOf.

Il s’agit là d’un court billet présentant une façon très simple d’implémenter des métadonnées descriptives utilisant le formalisme RDF via une implémentation directe dans le code HTML, ce que l’on appelle le RDFa (« a » pour « in attributes« ). Cette implémentation, même minimale, permet d’être indexé par Isidore par exemple et d’indiquer des informations qui seront utilisées pour une meilleure indexation des données et qui pourront être ré-exposées dans la base de données RDF de ce dernier. La plateforme hypotheses.org (éditée par Open Edition) utilise cette implémentation d’RDFa. Pour cela, il faut simplement construire un sitemap (carte des liens du site web) au format xml pointant toutes les adresses URL des pages contenant du RDFa et que l’on souhaite voir indexer par Isidore.

Stéphane.

Explorons les données d’ISIDORE avec SPARQL #1

Depuis quelques semaines, j’ai pris la direction d’une unité mixte de service qui anime la très grande infrastructure de recherche Corpus-IR. Après Adonis et tout en poursuivant un peu l’animation d’Isidore, je reviens avec plaisir dans les corpus de données en SHS. Cela dit, l’avenir d’un projet tel qu’Isidore est très directement lié aux corpus et bases de données qui pourraient être indexés et annotés par Isidore. Les consortiums de Corpus-IR sont déjà au travail et proposeront des corpus de données prochainement. J’espère qu’ils seront structurés avec du RDF et voir même, pour les corpus diffusés sur le web, avec du RDFa.

Ayant donc un peu moins de temps pour écrire dans ce blog, je profite tout de même de quelques minutes pour vous inviter à explorer les possibilités du SPARQL endpoint d’Isidore en lançant ici une petite série de billets. Pour ouvrir la série, une requête permettant de lister les métadonnées des photos et images de MédiHAL géolocalisées sur territoire (je prends ici quelques photos de Djibouti) appartenant au référentiel géographique utilisé dans Isidore, Geonames.org :

PREFIX dcterms: <http://purl.org/dc/terms/> 
PREFIX dces: <http://purl.org/dc/elements/1.1/> 
PREFIX foaf: <http://xmlns.com/foaf/0.1/>

select ?id ?titre ?uri_pays 
?nom_auteur ?prenom_auteur ?coord_geo where { 
<http://www.rechercheisidore.fr/resource/10670/2.hlil75> ?p ?o. 
?o dcterms:identifier ?id. 
?o dcterms:title ?titre. 
?o dcterms:creator ?creator. 
?creator foaf:familyName ?nom_auteur. 
?creator foaf:givenName ?prenom_auteur. 
?o dcterms:coverage ?uri_pays. 
?o dces:coverage ?coord_geo 
FILTER (regex(?id, "10670") 
&& regex(?uri_pays, "223816") 
&& regex(?coord_geo, "[0-9]")) 
} LIMIT 500

En posant cette requête SPARQL dans l’interface d’interrogation SPARQL d’Isidore, il est possible de récupérer les métadonnées, en fait les informations contenues dans les métadonnées, sous la forme de triplets RDF. Ces triplets RDF, base du web de données, peuvent donc être redondant si l’information fait appel aux même étiquettes d’un même vocabulaire (cf ex. ci-dessous). Le résultat de la requête est présenté dans différents formats (RDF/XML ; HTML ; json…).

A partir de là, de nombreuses petites applications web sont possibles, elle sont souvent nommées « mashup » car elles marient, grâce au liant que permet l’utilisation d’URIs à base d’http, plusieurs informations présentes dans le web de données.

Variantes… avec les enrichissements proposés par Isidore et issus des différents traitements effectués :

PREFIX dcterms: <http://purl.org/dc/terms/> 
PREFIX dces: <http://purl.org/dc/elements/1.1/> 
PREFIX foaf: <http://xmlns.com/foaf/0.1/>

select ?id ?titre ?uri_pays ?uri_enrichissements_ISIDORE 
?nom_auteur ?prenom_auteur ?coord_geo where { 
<http://www.rechercheisidore.fr/resource/10670/2.hlil75> ?p ?o. 
?o dcterms:identifier ?id. 
?o dcterms:title ?titre.
?o dcterms:subject ?uri_enrichissements_ISIDORE.
?o dcterms:creator ?creator. 
?creator foaf:familyName ?nom_auteur. 
?creator foaf:givenName ?prenom_auteur. 
?o dcterms:coverage ?uri_pays. 
?o dces:coverage ?coord_geo 
FILTER (regex(?id, "10670") 
&& regex(?uri_pays, "223816") 
&& regex(?coord_geo, "[0-9]")) 
} LIMIT 500

Ou encore avec les mots-clés d’origine et les enrichissements :

PREFIX dcterms: <http://purl.org/dc/terms/> 
PREFIX dces: <http://purl.org/dc/elements/1.1/> 
PREFIX foaf: <http://xmlns.com/foaf/0.1/>

select ?id ?titre ?uri_pays ?mots_cles ?uri_enrichissements_ISIDORE 
?nom_auteur ?prenom_auteur ?coord_geo where { 
<http://www.rechercheisidore.fr/resource/10670/2.hlil75> ?p ?o. 
?o dcterms:identifier ?id. 
?o dcterms:title ?titre.
?o dces:subject ?mots_cles.
?o dcterms:subject ?uri_enrichissements_ISIDORE.
?o dcterms:creator ?creator. 
?creator foaf:familyName ?nom_auteur. 
?creator foaf:givenName ?prenom_auteur. 
?o dcterms:coverage ?uri_pays. 
?o dces:coverage ?coord_geo 
FILTER (regex(?id, "10670") 
&& regex(?uri_pays, "223816") 
&& regex(?coord_geo, "[0-9]")) 
} LIMIT 500

La « vue » des triplets RDF d’une ressource est bien sur directement possible :

SELECT ?graph ?predicat ?object WHERE { 
GRAPH ?graph { <http://www.rechercheisidore.fr/resource/10670/1.f2v6vz> ?predicat ?object. } 
}

Bon, je m’arrête là pour ce premier petit billet qui n’a pas d’autre vocation que de présenter des exemples de requêtes SPARQL sur des données SHS afin de mettre un peu l’eau à la bouche aux développeurs web du domaine qui pourraient ainsi avoir des idées de mashup pour leurs productions. La prochaine fois, je présenterai comment est formé de la requête.

Stéphane.

Les corpus au pays des modules

Dans un billet récent, Alexandre Moatti, faisait quelques remarques sur la bibliothèque numérique de l’Institut. Dans son texte, il fait référence à ICEberg, un logiciel que j’ai créé en 2002-2003 afin de proposer un outil de mise en ligne de corpus numériques. ICEberg a évolué avec le temps et il a été ré-écrit 3 fois depuis 2002.
C’est normal, les outils en ligne (les applications web) sont très vite obsolètes : les briques permettant de les construire (PHP, Python, Jquery, etc.) évoluent en permanence et contraignent donc les développeurs et webmasters à faire régulièrement des nouvelles moutures de leurs programmes. Depuis la généralisation des systèmes de gestion de contenu (CMS) de 2eme et 3eme génération se sont ajoutées aux couches basses (PHP, MySQL, version d’Apache ou d’IIS) une kyrielle de modules qui ont la fâcheuse tendance à ne plus être compatibles avec le noyau du CMS après parfois quelques semaines seulement.
Dans certains cas, des modules importants ont été incorporés dans le noyau ; mais pour beaucoup de fonctionnalités, le recours à de nouveaux modules répondant à des besoins toujours nouveaux (OAI-PMH, « zotero inside », galeries d’images, etc.) est devenu un automatisme pour les webmasters : « oh, il doit y avoir un module qui fait cela ». Dans certains cas, le nombre de modules est déjà très important alors que l’outil lui-même vient tout juste de passer en version 1.0. Si la qualité des modules et leur nombre peuvent être des signes de la vitalité d’un projet, il faut cependant faire attention à bien anticiper la maintenance sur le moyen terme (je dis bien moyen terme, tant le long terme n’est pas compatible avec l’obsolescence des outils web je pense).
Confier de façon exclusive à un module en version béta par exemple, l’interopérabilité OAI-PMH des métadonnées de son corpus, veut dire que l’on prend un risque à moyen terme, si le module n’est plus maintenu pour x. raison(s). Je ne dis pas qu’il ne faut pas l’utiliser, mais il faut avoir conscience du risque et donc avoir des solutions de remplacement. Il faut faire de la veille. Pour illustrer cela, l’animation et la veille faite par l’équipe d’Open Edition sur les modules de la plate-forme hypotheses.org est exemplaire : les modules demandés par les blogueurs sont testés, évalués puis le cas échéants proposés dans les blogs. Cependant, à moyen terme, cela n’enlève pas l’obsolescence technique des modules, mais permet d’anticiper l’évolution. La veille est donc l’indispensable compagnon des administrateurs de sites et bibliothèques.

Mais au delà, je me pose la question de la limite des CMS dans le contexte de la recherche par projets (c’est à dire avec des ruptures de charges). Les bibliothèques scientifiques, universitaires et de recherche devraient développer des structures de conservation des corpus numériques incluant, outre l’archivage pérenne des données, la conservation de la structuration intellectuelle du corpus (structuration des bases de données, manuels de saisie, publications associé aux données, schéma de métadonnées, etc.). Encore une fois, c’est par l’association des métiers et le passage de responsabilité entre les acteurs du domaine que la pérennité deviendra réelle.

Les données numériques des SHS entrent dans le web de données

Avec l’ouverture d’isidore (réalisée par le très grand équipement Adonis du CNRS) les données numériques des sciences humaines et sociales entre dans le web de données et vont bientôt rejoindre le linking open data cloud diagram ou « Lod » maintenu par Richard Cyganiak (DERI, NUI Galway) and Anja Jentzsch (Freie Universität Berlin), en tous cas, je l’espère.

Isidore est une plateforme de recherche permettant la recherche d’information dans les données numériques des SHS, quelles soient sources pour faire de la recherche ou bien publications des résultats de la recherche. J’ai le plaisir de co-diriger ce projet avec Jean-Luc Minel dans le cadre de l’équipe du Adonis, le très grand équipement du Centre national de la recherche scientifique.

Je profite de ce petit billet « auto-promotionnel » pour remercier Gautier Poupeau (alias Got) sans qui ce projet n’aurait pas pu être conçu et réalisé ainsi que toute l’équipe du centre pour la communication scientifique directe (Laurent Capelli, Philippe Correia, Loic Comparet, Yannick Barborini et Daniel Charnay) qui participe à ce beau projet.

Isidore moissonne des métadonnées et des données selon les protocoles OAI-PMH, des signalements d’actualités via RSS et Atom, des données structurées selon RDFa et peut se connecter à des catalogues de bibliothèques SRU/SRW (z3950). Isidore enrichit ces données en les croisant, en les qualifiant avec des thésaurii, des référentiels, des listes d’auteurs et les ré-exposent selon les principes du linked data. Pour utiliser ces données, un site web a été créé : www.rechercheisidore.fr. Vous pouvez donc interroger les articles de Revues.org, Cairn, Persée, les ouvrages, textes, images de Gallica, HALSHS, MédiHAL avec un seul formulaire et avec des liens entre toutes ces données.

Dans isidore, les métadonnées sont transformées en RDF, ainsi les données des shs entrent dans le web de données.

Mais nous sommes en version béta, alors le travail continu.

Stéphane.

Construire le web de données pour les données de la recherche en SHS : comment utiliser RDFa ?

Le web est l’un des vecteurs principaux de la diffusion des données de recherche en sciences humaines et sociales. Il permet de diffuser et d’éditer presque tous les matériaux utilisés par le chercheur et l’enseignant : de l’archive ou la bibliothèque à la publication électronique en passant par le séminaire, le colloque, la revues et le livre. L’utilisation du web comme outil d’édition, de publication et de diffusion a permis de démultiplier les accès aux documents et à l’information. Mais depuis 20 ans, l’effort a plus porté sur la mise à disposition de documents numériques (ouvrages, articles, corpus) que sur la structuration de l’information contenue dans ces documents : il est vrai que l’essor des moteurs de recherche traditionnels depuis les années 90 (d’Altavista à Google) ont permis d’atteindre et de s’y « retrouver » dans ces milliards de documents qui sont sur le web aujourd’hui. En revanche, la publication électronique des contenus des bases de données – les données elles-même qui ont toujours leurs propres structurations, pose encore des questions et des difficultés qui font que le web, s’il est plein de documents et relativement vide de données et d’informations structurées. Ainsi, les outils d’exploitation des documents que nous utilisons aujourd’hui, tel les moteurs de recherche, fonctionnent sur des réservoirs de documents encore trop cloisonnés. Ainsi, construire une page web d’information sur l’historien Georges Duby nécessite toujours d’adresser plusieurs questions (requêtes) à plusieurs moteurs de recherche (généralistes et spécialisés) ou à plusieurs formulaires de bases de données et cela même si, depuis dix ans, les techniques de l’interopérabilité ont fait de très grand progrès. Ce web « cloisonné » ne permet pas aux machines de travailler et certaines parties du web deviennent invisibles aux moteurs de recherche et même parfois aux humains (qui s’est déjà retrouver devant un formulaire de bdd en ligne un peu froid ?). Bien sur, un homme peut le faire, à la main, mais s’il veut se faire aider de machine, pour gagner du temps ou mieux, traiter plus de données, cela devient assez complexe. Surtout pour un chercheur qui ne maitrise pas forcement le SQL et dont ce n’est pas le métier. Ainsi, les données numériques sont bien rangées dans de multiples bases de données ou silot, mais nous n’avons construit que de simples petits « judas » afin de les regarder et l’éditorialisation des données ne fait pas tout, pis, elle cache parfois, sous une couche « cosmétique » (cela dit souvent nécessaire), une faible structuration des données. La faible structuration des données freine très souvent les modes de pérennisation de ces dernières donc la possibilité de leur ré-exploitation future. Il nous faut faire mieux.

Comment dépasser cela ?

Comment rendre plus accessible encore, non pas simplement les documents (au sens des fichiers) mais les informations contenues dans ces derniers sans appauvrir les formats de structuration de l’information. Comment se donner l’opportunité de construire des outils d’aide à la recherche permettant de construire – par exemple – la notice encyclopédique de George Duby, en présentant, non pas simplement la compilation du signalement de ses articles, ouvrages, conférences, mais aussi les thèmes qu’il a abordé au cours de sa carrière et en les reliant à des notions, des définitions, des illustrations, des ouvrages d’autres auteurs ? C’est tout l’enjeu de la construction du web de données, cette extension du web dont je parlais dans mon dernier billet. Il nous faut tout d’abord libérer les données après l’avoir fait avec les bases de données elles-même.

Comment faire ?

Tout d’abord un peu d’histoire. Dans les années 1995-2000, tous les acteurs de la recherche et de la culture ont massivement édité leurs bases de données sur le web, c’était l’enjeu du moment : tout le monde voulait mettre sa base en ligne, c’était un nouveau cycle dans la diffusion des documents (après le minitel, les connexions client/serveurs). Nous sommes entrés, depuis quelques années, dans un nouveau cycle dont la première phase (la première « marche » je préfère dire) a été l’interopérabilité des bases de données. En parallèle de cette phase, qui se poursuit, nous devons « ouvrir les données ». Quel curieuse expression ! Simplement, il s’agit d’exposer les données, dans toutes leurs complexités, en utilisant le cadre de la modélisation en RDF. Pour cela, il nous faut apprendre et développer des modèles de données, faire des choix de vocabulaires documentaires afin de décrire l’information contenue dans une page web, un billet de blog, un article, un inventaire de fonds d’archive, un corpus, un thésaurus ou encore une notice de bibliothèque. Pour ouvrir ces données il faut être capable de dire : « tiens ça, c’est le titre et ça là, c’est l’auteur et je te prouve que c’est bien l’auteur car je suis capable de le relier, par un principe ouvert, normalisé et connu de tous, à un référentiel (les auteurs du sudoc par exemple) et à une forme de vocabulaire (du mods, du dublin core simple, etc.) » : les documentalistes savent très bien faire cela. Ainsi, ouvrir ses données – participer à la construction du web de données – cela revient donc à structurer de l’information avec des règles communes, valables pour tout le monde du web et où donc l’implicite n’est pas le bienvenu. Ouvrir ses données au monde c’est donc vouloir diffuser les données et par uniquement les documents et surtout dire quel choix j’ai fais pour structurer l’information. Les documentalistes font (devraient) s’y régaler.

Avec l’aide de Got, je vais présenter un exemple simple. Il est possible d’exprimer selon RDF des données structurées dans une page web écrite en HTML : il s’agit de la syntaxe RDFa (pour Resource Description Framework – in – attributes). RDFa permet donc d’utiliser la mécanique du RDF tout en utilisant comme support les balises HTML.

Je prends comme exemple, très simple, une photographie et sa notice venant de MédiHAL, l’archive ouverte de photographies scientifiques que j’ai co-créé et qui est développée par le CCSD et le CN2SV. Au travers de cet exemple, je souhaite montrer qu’il ne s’agit pas que de techniques documentaires, ou que de questions informatiques, ou encore que de questions d’édition : non, il s’agit de tous cela en même temps. Ainsi, construire le web de données c’est avant tout réunir plusieurs compétences et métiers pour envisager toutes les aspects.

La consultation avec un simple navigateur web de la notice exemple ne révèle pas la présence d’une structuration de l’information selon les principes RDF et pourtant, si l’on regarde le code source, il y a une structuration, des vocabulaires RDF et des étiquettes structurant l’information. Ainsi, dans un premier temps, il faut dire que cette page contiendra du RDFa : j’ai modifié le doctype XHTML. Il est remplaçé par un doctype XHTML+RDFa :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">

Notez ensuite la présence de plusieurs vocabulaires documentaires qui vont nous permettre de structurer l’information :

<html xml:lang="fr" version="XHTML+RDFa 1.0" xmlns="http://www.w3.org/1999/xhtml" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:xsd="http://www.w3.org/2001/XMLSchema#">

Pourquoi ? Puisque nous allons structurer les données contenues dans cette page web, il nous faut dire « ça, c’est le titre » : il s’agit de mettre une « étiquette » à une chaine de caractère du titre. Il nous faut construire des triplets RDF qui, par l’utilisation de prédicats (verbe), relient l’étiquette (l’objet) à la chaine de caractère du titre (sujet). Puisque nous devons dire à quel vocabulaire nous faisons référence pour dire « c’est le titre », nous les déclarons en entête. Vous reconnaitrez sans doute « dc » pour le dublin core simple (dublin core elements set ou dces), « dcterms » pour le dublin core terms, « cc » pour signaler la présence de données sous licence creative commons, « geo » pour la géolocalisation GPS, « foaf » pour décrire le document qui est ici une notice MédiHAL, etc. Ainsi je déclare là l’ensemble des vocabulaires documentaires que je vais utiliser ensuite et j’en donne la référence en ligne : http://purl.org/dc/elements/1.1/ pour le dublin core simple. Ces référentiels sont eux-même décrits et structurés en RDF : ils sont utilisés par tous et sont donc le point de référence, la norme.

Je trouve ensuite le début de ma notice, qui est matérialisée par une balise <div>  :

<div typeof="foaf:Image" about="http://medihal.archives-ouvertes.fr/medihal-00501617">

Dans cette balise (fermante à la fin de ma notice), j’y mentionne que ce qui sera dans la balise <div> est une notice d’une image et que l’URL présente dans l’attribut « about » sera l’objet auquel se rapporte les informations que je vais structurer (donc ici, un conteneur, une notice, d’une image). Les informations décrites par la suite se rapportent à cette notice (rôle du « about »), ce conteneur, accessible à cette URL. Ma données est complexe, elle est composés d’une image (qui a plusieurs représentations : plusieurs vignettes, l’image déposée, etc.) et des métadonnées, voir des commentaires (publics, privés). Pour décrire ce conteneur, j’utilise le vocabulaire foaf qui permet de décrire des ressources, des personnes ou des institutions et je vais utiliser l’élément foaf:Image. Pour la syntaxe, je vous invite à lire ce billet de Got qui présente très en détail et très clairement la syntaxe des CURIEs (ou Compact URIs) dans le monde RDF.

Dans ce <div>, je vais pouvoir structurer l’information contenue dans la données en utilisant, dans cet exemple, la balise <span> ainsi que quelques attributs : « property » pour caractériser l’information avec un vocabulaire, « rel » pour relier de l’information directement au conteneur. Ainsi pour le titre de l’image, je vais utiliser le dublin core simple (dces), nous aurons :

<span property="dc:title">Madagascar : Vallée de l'Onive aux environs de Tsinjoarivo</span>

Pour l’image en jpg présentée dans la notice (qui est l’une des représentations possibles de l’image) :

<span rel="foaf:thumbnail" about="http://medihal.archives-ouvertes.fr/medihal-00501617">
<img title="Madagascar..." id="thumb320" src="http://medihal.archives-ouvertes.fr/docs/00/50/16/17/archives/thumb320.jpg" border="0" /></span>

Là, nous caractérisons que le contenu de <img/>, c’est à dire une image en 320 pixels, est l’une des versions de l’image de la notice représentée par «  http://medihal.archives-ouvertes.fr/medihal-00501617 » : il s’agit d’une vignette de l’image d’ou « foaf:thumbnail ». Dans ce cas, il possible d’implémenter les attributs rel et about dans la balise <img>. Je l’ai mis dans un <span> pour plus de clarté. Notez que j’ai répéré dans ce <span> l’attribut « about », je n’y suis pas obligé, il est déjà signalé dans la balise <span> « mère ». Ce <span> structurant une version de l’image (une vignette de 320px de coté), j’ai préféré ré-indiquer ce « about » afin que vous compreniez bien que foaf:thumbnail (vignette) désigne une vignette de l’image déposée et dont l’URI est http://medihal.archives-ouvertes.fr/medihal-00501617.

Pour la légende, je vais utiliser le vocabulaire dublin core terms, le plus riche des dublin core avec l’étiquette dc:abstract (pour résumé) :

<span property="dcterms:abstract">Paysage rural de collines à proximité de Tsinjoarivo ; Au premier plan le bord de la terrasse de la vallée de l'Onive ; A l'arrière-plan, cultures en terrasse avec des rizières en escaliers, irriguées par un affluent du fleuve</span>

Je pourrais aussi, plus simplement mais en introduisant un peu d’implicite, utiliser dces avec l’étiquette dc:description :

<span property="dc:description">Paysage rural de collines à proximité de Tsinjoarivo ; Au premier plan le bord de la terrasse de la vallée de l'Onive ; A l'arrière-plan, cultures en terrasse avec des rizières en escaliers, irriguées par un affluent du fleuve</span>

Pour exprimer les mots clés, je vais utiliser une nouvelle fois le dces :

<span property="dc:subject"><a href="[lien vers mes mots-clés]">Madagascar</a></span>

Il est possibilité là aussi d’être plus riche, en reliant mon mot-clés à un référentiel (thésaurus par exemple) en utilisant les vocabulaires sioc et skos pour exprimer des concepts et les liaisons :

<span rel="sioc:topic" href="http://dbpedia.org/resource/Madagascar">
<span instanceof="skos:concept" about="http://dbpedia.org/resource/Madagascar">

   <span property="dc:subject"><a href="[lien vers mes mots-clés]">Madagascar</a></span>

 </span>
</span>

Pour la géolocalisation de mon image, je vais utiliser le dublin core terms avec l’étiquette « spacial », qui va me permettre de relier mon conteneur (foaf:Image) à des valeurs de latitude et de longitude. Ainsi, j’exprime dans dcterms:spatial une latitude et une longitude issues d’un GPS ou d’une géolocalisation en spécifiant que je fais référence au vocabulaire WGS validé par le W3C (geo:lat et geo:long).

<span rel="dcterms:spatial">
<span property="geo:lat" content="-19.644527589975"></span>
<span property="geo:long" content="47.709846500067"></span>
</span>

Je me limite ici à quelques éléments de cette image (en prenant du DC simple pour être pédagogique), il est possible d’aller plus loin dans la structuration (en utilisant du DC terms ou d’autres vocalulaires).

Conclusion

Le web de données est une méthode qui consiste à utiliser le web comme un espace ou les données sont structurées : c’est à dire que l’information d’un document (pdf, jpg, txt, etc.) est cartographiée, repérée, signalée et reliée à des vocabulaires, accessibles eux-même sur le web et dont la structuration est connue et explicitée. C’est un formidable enjeux pour les documentalistes, les bibliothèques et les ingénieurs et techniciens en digital humanities qui construisent des corpus scientifiques et les diffusent en ligne. Le RDFa est l’une des techniques, l’une des mécaniques possible et elle est relativement simple à comprendre car elle s’inscrit dans une évolution naturelle des choses : une sémantisation de la page web via le code HTML. Il s’agit d’une révolution mais qui s’appuie sur des éléments que tout les professionnels de l’IST peuvent maitriser. J’ai toujours pensé et dit que l’OAI-PMH était (est) la première marche vers le web de données, je pense qu’RDFa est la deuxième, du moins c’est un pont très simple pour mieux comprendre RDF et les techniques du web de données.

Stéphane.

Liens utiles pour aller plus loin :

Des données brutes 2.0

L’administration Américaine a lancé data.gov : une plateforme d’accès aux données brutes de la santé, l’environnement, l’énergie, recherche, éducation. C’est très (trop?) ambitieux, voir utopique (mais il s’agit des USA) et d’ailleurs cet avis est partagé. Mais l’initiative est là et la plateforme déjà en ligne : il s’agit d’un projet hybride entre archives, recherche et accès. Ce projet, une récente discussion avec Got, croisée d’une journée avec les collègues du Centre de calcul de l’IN2P3-CNRS (qui héberge beaucoup de données issues des SHS), m’a conforté sur la notion et la nécessité de réservoirs de données brutes pour la recherche en SHS.

Ces réservoirs existent aujourd’hui dans les laboratoires de SHS, mais les données qu’ils contiennent sont souvent encore perçues comme des données « privés », réservées aux chercheurs locaux. Il est vrai qu’ils les ont collectées ou générées et ce travail n’est pas réellement reconnu dans le parcours d’un chercheur alors qu’il est fondamental. Ces données « pour la recherche » ont donc souvent tendance à « mourir » au fond de nos disques durs faut d’une infrastructure double : archivage des données (pour l’histoire), diffusion des données « brutes » et pas forcement éditorialisées dans une publication électronique académique mais mise à disposition de la communauté scientifique comportant un minimum d’appareil éditorial basé sur le Dublin Core Terms par exemple.  D’autant que souvent, ces données ont été collectées ou générées sur fonds publics (ne serait ce que le salaire du chercheur).

Bien sur, il faut pondérer ici le fait que certaines données sont sensibles de part leur nature et que la mise à disposition ou la diffusion est complexe et nécessite des barrières mobiles parfois très longues.

En france, il existe des initiatives intéressantes, encore trop peu soutenues financièrement, mais cela avance, cela se structure et des formations, pour les chercheurs et enseignants-chercheurs, voient le jour tel que l’université d’été de l’édition scientifique ouverte, qui aura lieu en septembre 2009, ou bien l’école thématique des centres nationaux de ressources numériques du CNRS dont le wiki est en ligne avec toutes les communications, les bibliographies numériques, en ligne, etc.

Alors, en ce mois de juillet, j’ai envie de dire : « ouvrez vos données à vos collègues et au monde » et j’espère aussi, soyons fou, un donnees.gouv.fr ?

Il est temps, dirons certains, que je parte en vacances.

Stéphane.

La norme OpenURL et la technologie Context Objects in Span (COinS)

Bonjour,

La technologie Context Objects in Span (COinS) permet d’ajouter dans une page web (billets de blog, résultats d’une recherche documentaire, liste de références bibliographiques) des méta-informations encodées selon la norme OpenURL. Cette technologie est déjà là depuis un petit moment, le figoblog en parlait déjà en décembre 2006, mais sa démocratisation prendra du temps comme toujours : j’y consacre à mon tour un billet.

Cela fonctionne par l’ajout d’une balise <span> contenant une classe et un titre contenant des informations descriptives du contenu publié en ligne : des méta-données. Il est possible de préparer cette balise span un peu spéciale à l’aide d’outils en ligne à base de formulaires, mais il est plus judicieux, pour les blogs, d’utiliser des modules qui font cela automatiquement : c’est le cas pour le moteur WordPress. Mon blog en est d’ailleurs maintenant équipé. Cela permet, par exemple, pour ceux qui utilisent le gestionnaire de références bibliographiques Zotero de capturer les méta-données (titre, dates, auteurs, etc.) d’un billet de blog ou d’une page web. De nombreux catalogues de références bibliographique utilisent cela : le Sudoc, Amazon, ou encore les blogs du portail Hypotheses.org.

La définition du système COinS est claire :

« The goal is to embed citation metadata into html in such a way that processing agents can discover, process and make use of the metadata. Since an important use of this metadata will be to allow processing agents to make OpenURL hyperlinks for users in libraries (latent OpenURL), the method must allow the metadata to be placed any where in HTML that a link might appear. In the absence of some metadata-aware agent, the embedded metadata must be invisible to the user and innocuous with respect to HTML markup. To meet these requirements, the span element was selected. The NISO OpenURL ContextObject is selected as the specific metadata package. The resulting specification is named « ContextObject in SPAN » or COinS for short. » (source : http://ocoins.info).

Une fois encore, un peu comme avec l’IPTC Core pour les images, il s’agit d’embarquer (embed) des méta-données au sein même de la page web qui contient l’information dans un format ouvert et surtout contextuel : OpenURL.

Le span ressemble à cela : [span class= »Z3988″ title= »ctx_ver=Z39.88-2004&
amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&r
fr_id=info%3Asid%2Focoins.info%3Agenerator&r
ft.title=La+d%C3%A9mocratisation+du+XML+documentaire&r
ft.aulast=POUYLLAU&rft.aufirst=St%C3%A9phane&r
ft.subject=IT&rft.source=sp.Blog&rft.date=2008-05-18&r
ft.type=blogPost&rft.format=text&r
ft.identifier=http://blog.stephanepouyllau.org/la-democratisation-du-xml-documentaire&rf
t.language=French »]

A voir comme cela c’est un peu complexe, mais il s’agit bien de méta-données, proche du DublinCore d’ailleurs, encapsulées dans une balise <span>.

COinS est une technologie qui permet une utilisation simple, pour l’internaute, des e-références : les méta-données. COinS, couplé avec un outil tel que Zotero, peut rendre plus simple la collecte de références bibliographiques disponibles sur le web. Mieux, utilisée dans les blogs, elle les transforme en réservoirs d’informations…

Bon dimanche,

Stéphane.

Photo sous licence CC par jen-the-librarian. Continuer la lecture de « La norme OpenURL et la technologie Context Objects in Span (COinS) »

Utilisation massive de la librairie GD pour PHP : les lettres de Stephen Gray dans le site @.ampere

Bonjour,
Dans le site @.ampere (direction ; C. Blondel, CNRS) dont je suis le webmaster, j’ai placé des lettres de Stephen Gray (voir dans Wikipedia), pour le zoom j’utilise la GD de PHP, cette librairie est connue mais elle rend bien des services quoiqu’un peu lente. Je l’utilise pour le zoom 100% 75% 50% 25% mais aussi dans le site du CN2SV pour le génération d’images « vignettes » à la volée. La GD a été intégré à PHP depuis la version 4.3 et commence à faire du JPEG2000. En complément, il y a surtout la fonction « iptcparse » qui permet de lire les méta-données IPTC et même de les mettre à jour avec « iptcembed ».
Stéphane.

XMP {suite}

La mise en ligne de documents numérique entraîne, outre la question des droits, toutes une série de questions techniques qui sont la plupart du temps le parent pauvre des projets de numérisation et de mise à disposition. Le format IPTC et aujourd’hui le framework XMP permettent, par exemple, d’ajouter des méta-données dans l’image (XMP – eXtensible Metadata Platform – repose sur une version simple de RDF). C’est à dire que les méta-données sont « encapsulées ». Encapsuler…Encapsuler : voici un terme technique qui paraît simple mais qui peut avoir des conséquences sur la pérennité des méta-informations. Le Grand ROBERT de la langue française nous dit :

Encapsuler [ãkapsyle] v.tr. – 1889, Renan, au fig. ; de en-, et capsule. Techn. Enfermer dans un capsule […].

Le fait « d’enfermer » doit attirer l’attention du fournisseur de ressources visuelles (photographiques dans notre exemple) sur la possibilité de « libérer » les méta-données ainsi encapsulés. C’est à dire de pouvoir dans le futur les lire, les exploiter en même temps que l’image, sans avoir de contraintes.
Il est important de ne s’appuyer que sur normes libres (si possible, attention XMP est fortement lié à Adobe Inc. alors que l’IPTC Core est développé par International Press and Telecommunications Council (1965) et succède à l’IPTC « classique »), internationnales et reconnues par les professionels de l’information (iconographes, documentalistes, etc).
Avec un outil simple, tel que PixVue (voir ci-dessus), il est facile à l’aide de la souris et du clavier d’ajouter des « méta » dans une image suivant la norme IPTC.

Bonne fin de semaine,

Stéphane.

Schéma XMP / IPTC parseur

Bonsoir,

Dans le développement du CN2SV, j’ai programmé un parser XMP, IPTC à partir de la librairie « PHP JPEG Metadata Toolkit » de E. Hunter. Le schéma XMP est prometteur même s’il est lié à Adobe. Mais la programmation d’un programme en php lisant les méta-données IPTC est facile et la technologie est mure aujourd’hui. L’IPTC a adopté XMP comme schéma de la toute dernière version de son standard de description des photographies : IPTC Core (http://www.iptc.org/IPTC4XMP/). Avec l’utilisation massive des appareils photos numériques, qui truffent leurs images de méta-données, il est temps d’offrir aux utilisateurs d’intergiciel (middlewares) en php, jsp, java, asp, la possibilité de lire ces données et de les enrichir.

Un simple parseur IPTC en PHP (PHP 3 >= 3.0.6, PHP 4, PHP 5) :

 function output_iptc_data( $image_path ) { 
   $size = getimagesize ( $image_path, $info);      
    if(is_array($info)) {        
     $iptc = iptcparse($info["APP13"]);        
     foreach (array_keys($iptc) as $s) {            
     $c = count ($iptc[$s]);            
      for ($i=0; $i <$c; $i++) {            
       echo $s.' = '.$iptc[$s][$i].' - ';           
      }        
     }    
    } 
  }

(source : site www.php.net)

Nous allons intégrer un lecteur/editeur IPTC/XMP à Iceberg. Je tiens d’ailleurs à remercier Romain et Frédéric, les deux développeurs contractuels du CN2SV qui font un travail formidable.

A bientôt,
Stéphane.

« IPTC Core » est la propriété intellectuelle de IPTC. XMP, Photoshop and Creative Suite (CS) sont des marques commerciales de la société Adobe Systems Inc.