ChronoSIDORE : explorons les données d’ISIDORE avec SPARQL #2

ChronoSIDORE n’est pas le nom d’une nouvelle espèce de dinosaures, c’est le nom d’une application web qui utilise les ressources d’Isidore. ChronoSIDORE est donc un petit « mashup » que j’ai programmé pendant mes congés d’été. L’idée est double, poursuivre l’exploration concrète des possibilités d’un outil comme Isidore et donner des idées à d’autres personnes, en particulier dans le monde des bibliothèques et de la documentation, pour développer d’autres mashups s’appuyant soit sur l’API d’Isidore soit sur son SPARQL endpoint.

Que propose-t-il ?

ChronoSIDORE, accessible sur www.stephanepouyllau.org/labs/isidore/chronosidore, propose une autre façon de « voir » les ressources d’Isidore ; différente des vues traditionnelles en « pages de résultats » comme cela est le cas dans les bases de données bibliographiques ou catalogues. Ce mashup propose une vision des ressources en « tableau de bord » : il s’agit de projeter sur une frise chronologique un ensemble de ressources issues d’une ou de plusieurs requêtes SPARQL. Ainsi, une vision plus globale est proposée permettant une représentation différente de la répartition des ressources : dans notre cas, une mise en lumière de l’évolution disciplinaire des ressources fondée sur la catégorisation automatique effectuée par Isidore. ChronoSIDORE offre la possibilité de « voir » l’évolution chronologique des tendances disciplinaires pour un ensemble fini de ressources documentaires définit dans Isidore ou « source » : il peut s’agir des publications d’un laboratoire (à la condition qu’il possède une collection dans HALSHS), des articles d’une revue, des notices d’une base de données, des billets d’un carnet de recherche (voir la liste des sources dans l’annuaire d’Isidore). ChronoSIDORE propose deux types de requêtes SPARQL : l’une est orientée « sources » la seconde est orienté « auteurs » (permettant de projeter sur la frise les ressources d’un auteur). ChronoIsidore est un exemple de mashup possible, bien d’autres mashup sont possibles (autour des langues, des types de documents…).

Comment fonctionne-t-il ?

N’étant pas un développeur professionnel, j’ai fais avec mes connaissances en PHP, Xpath, SPARQL et Javascript pour développer. J’en profite pour remercier ici mes collègues Laurent Capelli, Shadia Kilouchi et Jean-Luc Minel qui m’ont aidé, en particulier sur SPARQL. Ainsi, je pense qu’une équipe de développeurs professionnels ferait beaucoup mieux, mais j’ai pensé aussi qu’il serait bien de montrer que l’ancien étudiant en histoire et archéologie du Moyen Age que je suis est capable d’exploiter avec un peu de PHP, les gisements de données enrichies proposés par Isidore, en espérant que cela donnera des idées à d’autres. J’en profite pour ré-affirmer ici le rôle et l’importance des ingénieurs en digital humanities dont les métiers sont multiples et qui interviennent à différents niveaux de technicité : Il faut des très grands spécialistes, érudits mais aussi des intermédiaires qui vont chercher la compétence à l’extérieur et l’adapte aux besoins SHS . On fait souvent le reproche aux ingénieurs du CNRS, surtout en digital humanities, de ré-inventer l’eau chaude, mais je pense qu’ils développent des outils, des méthodes qui sont adaptés à des publics présentant une multitude de rapports au numérique et différents niveaux d’appropriation et c’est très important. Il faut parfois avoir un outil imparfait, ou un démonstrateur fonctionnel pour offrir un service qui permettra à certains de profiter d’outils communs, fondés sur des standards ouverts et bien documentés et de « sauter le pas », ensuite on peut toujours améliorer les fonctionnalités. Je préfère cela à deux extrêmes : passer cinq ans à faire un outil qui ne fonctionnera jamais et qui sera dépassé avant de sortir (car nous n’avons que trop rarement les moyens de faire vite et bien) et dire qu’au prétexte que cela existe en ligne, il ne faut rien, s’en contenter, faire avec, et ne rien tenter car on n’égalera jamais les autres. Il s’agit parfois de faire juste « un pas de plus » pour ouvrir des données aux autres et savoir que ce « pas » est maitrisé, accompagné par des collègues du monde académique peut être plus sécurisant que de plonger de suite dans  jungle des outils en lignes et des « consultants » (même si, comme je l’ai dit, cela peut être nécessaire). J’aime bien l’idée que ChronoSIDORE donnera peut-être des idées à d’autres, nous en reparlerons au THATCamp Paris 2012 en septembre.

ChonoSIDORE réalise en fait plusieurs tâches :

  • Il interroge le triple store RDF d’Isidore : il s’agit d’une base de données RDF qui contient l’ensemble des informations d’Isidore formalisées en RDF et proposées selon les principes du linked data.
  • Il utilise pour cela le langage normalisé et international SPARQL (W3C) qui permet d’interroger les triplets RDF.
  • Il assemble les informations reçues du triple store sous la forme d’un flux de réponse Xml lisible avec l’application timeline créé dans le cadre du projet Simile du MIT (plutôt que refaire un système propre, j’ai préféré utiliser cet outil, même si je le trouve quelque peu rigide, il existe aussi d’autres systèmes : par exemple Timeline JS mais quelque peu différent).

Quelques limites

Il s’agit d’une version bêta, en fait un démonstrateur, donc il présente des limites. Deux sont à signaler :

  • Isidore catégorise automatiquement via un corpus de référence (HALSHS) et à l’aide de signatures sémantiques : cela peut donc générer des erreurs de catégorisation. Pour aller plus loin, voir les principes de catégorisation dans Isidore avec la vidéo de présentation des systèmes d’Isidore par Fabrice Lacroix, président d’Antidot, lors de l’université d’hiver du TGE Adonis à Valpré en décembre 2010 (ouverture d’Isidore).
  • Isidore ne catégorise pas toute les ressources qu’il moissonne : cela dépend de la richesse sémantique des métadonnées : plus les métadonnées moissonnée seront riches (description, résumé, mots-clés) plus la catégorisation proposée par Isidore sera pertinente et donc utilisable dans ChronoSIDORE. Donc toutes les ressources ne « montent » pas dans la frise chronologie.

Je vous invite donc à utiliser ChronoSIDORE, à le tester, à le faire « craquer » et si vous le souhaitez vous pouvez laisser un commentaire, des idées, des critiques…

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.