Archives de catégorie : web sémantique

Billets en rapport avec le web sémantique et la recherche en SHS.

Document structuré et écriture numérique : le bilan

Le 21 janvier dernier, j’ai terminé mon « cours » le cadre du master Documents électroniques et flux d’informations (dit « DEFI ») à l’université de Paris Nanterre. En juillet dernier, j’avais fait un petit billet pour annoncer le plan du cours et donner quelques pistes de lecture et d’outils que je voulais proposer aux étudiants. J’avais décidé alors de revoir entièrement la structure du cours et d’aborder plus directement et par la pratique l’utilisation des données et métadonnées structurées, collecter des informations via des API, des interfaces SPARQL, etc. Après cette dernière séance du 21 janvier, il est temps de faire un petit bilan.

Utilisation de Jupyter Hub le 17 décembre 2018 avec les masters DEFI 2018-2019. Photo : Stéphane Pouyllau

Vous l’avez sans doute noté, j’ai mis cours entre guillemets dans la première phrase. En effet, premier retour, je ne pense pas avoir fait un cours, ni dans sa forme, ni sur le fond. Première limite donc, la durée. En 24h d’enseignement, c’est très (trop) court pour faire vrai un cours je pense. L’expérience de cette année montre qu’il aurait fallu un peu plus (disons 35h) pour avoir le temps d’aborder correctement l’ensemble des questions, faire d’autres développements en Python ou utiliser des outils tel que OpenRefine (que j’avais envisagé en juillet), le tout en inscrivant ça dans l’histoire du numérique, du Web, etc. Nous l’avons abordé, mais trop sommairement. D’un coté je tiens a ce que mon enseignement reste pratique avec «les mains dedans».

Deuxième limite de mon « cours » fut sa densité : l’agrégation ou plutôt l’intégration des notions de données/documents structurés (XML, stérilisation RDF), les API, Python (dans Jupyter) et l’outil Jupyter lui même en 24h… C’était un peu ambitieux sans doute. Là, j’ai vraiment pu mesurer la difficulté d’aborder tout cela, même progressivement. J’ai voulu sans doute allé trop vite au début, du coup ça j’ai été court à la fin. Je précise que je ne suis pas un enseignant universitaire, même si je délivre des enseignements depuis 1995 (en IUT, puis en maitrise, master, à Bordeaux, puis à Paris), je ne suis pas un enseignant professionnel. C’est aussi en cela que mon enseignement n’est pas vraiment un « cours », ni complètement un TD. Alors comment le définir ? À la lumière de l’expérience de cette année, ça ressemble plus à une expérience, un cheminement où l’espace d’expérimentation est la base du travail : on explore les API, on découvre les données, leurs modèles et on bricole avec. ça permet par le faire, par le test de se poser des questions plus large, jusqu’à l’évolution des métiers de la données et du document numérique.

J’ai tenté de maintenir une structure de séance avec au début : un apports de notions générales (Qu’est-ce que le Web sémantique ? Qu’est-ce que SPARQL ? Quelles différences entre verbes d’API et requêtes SPARQL ? etc.) ; puis un temps de travaux pratiques (que j’appelle bricolage, dans le sens noble du terme) avec des focus ou des retours sur certaines notions vues en début de séance (ou aux séances précédentes). En terme de méthode, j’ai plus répété cette année afin de stabiliser les notions principales en insistant sur des notions clés (à lire d’ailleurs, ce très bon retour d’expériences sur les méthodes d’enseignements à l’université par Caroline Muller, mise en ligne par Christelle Rabier). Ainsi, je suis allé moins loin, mais nous avons — je l’espère, abordé au mieux les méthodes d’utilisation des données structurées.

Troisième limite, arriver à partager mon expérience avec les étudiants et là aussi, je vois de mieux en mieux la différence entre un cours par un·e enseignant·e universitaire (qui va mettre le recul, apporter des lectures, une position critique, épistémologique) et un retour d’expérience d’un professionnel de la données qui viens du Perl (le langage verbeux qui fait sourire les étudiants, si si), des données tabulées, etc. Cela dit, l’outil Jupyter a été je pense un bon levier pour partager ensemble les expérimentations que nous avons faites sur le SPARQL endpoint et API d’ISIDORE ou de NAKALA.

Malgré tout, nous avons réussi a développé de jolis «tableaux de bord» en Python sous Jupyter. Ici, quantifier la proportion des disciplines des 300000 billets des carnets de recherche de la plateforme Hypotheses.org :

Utilisation de Jupiter Hub pour les DEFI 2018-2019.

L’expérience de cette année me permettra, je l’espère l’an prochain, d’améliorer le rythme des 8 séances et le temps interne de chacune.

Je termine en remerciant l’ensemble des étudiants de cette promo 2018-2019 pour leur participation, leurs questions et leur patience. Mon «cours» est un peu à l’image de l’immense chantier en face de l’Université Paris Nanterre ;-)

Photo : Stéphane Pouyllau

Document structuré et écriture numérique

Ajout du 26 juillet, exemple de contenus du cours (version 0) :

J’enseigne depuis quelques années à l’université de Paris Nanterre, en tant que « professionnel extérieur », dans le cadre du master « Documents électroniques et flux d’informations » (dit « DEFI »). Mon cours s’intitule « Document structuré et écriture numérique » et pour l’an prochain (2018-2019) j’en ai entièrement revue la structure.

Description du cours :

Le cours portera sur l’écriture numérique dans le contexte de l’open data et de la science ouverte (open science) car en effet de nos jours les publications (articles scientifiques, thèses, mémoires, rapports, littérature grise) embarquent des données issues de bases de connaissances, de bases de données, d’API, du Web sémantique. Dans ce contexte, les publications embarquent de nos jours non seulement du texte et des références bibliographiques, mais aussi des données (sérielles, documents, etc) et des programmes informatiques qui traitent ces dernières. Quel sont les enjeux de ces nouvelles forme de publication ? Comment « écrire » des programmes dans un document ? Quels rôles jouent les vocabulaires documentaires mais aussi les API et les SPARQL endpoint ? Quels sont les standards qui s’en dégagent ? Est-ce une nouvelle forme de publication ? Comment pérenniser ces documents ? A l’aide de données issues des projets ISIDORE, NAKALA, WikiData, le cours permettra d’acquérir :

  1. Les enjeux des données dans la publication scientifique et technique (2 séances)
  2. La conception de publications de données (2 séances)
  3. Le traitement de données (2 séances)
  4. La compréhension des vocabulaires documentaires structurés (1 séance)
  5. Les enjeux de l’interopérabilité des métadonnées et données (1 séances)

Outils utilisés :

Pré-requis :

  • notions de Python

Bibliographie et lectures :

Enseignant : Stéphane Pouyllau, ingénieur de recherche au CNRS, directeur technique d’Huma-Num (très grande infrastructure de recherche pour les sciences humaines et sociales numériques)

Bibliographie (non exhaustive) :

Bermès, E., A. Isaac et G. Poupeau (2013) : Le Web sémantique en bibliothèque, Collection Bibliothèques, Paris.

Gandon, F., C. Faron-Zucker et O. Corby (2012) : Le Web sémantique: comment lier les données et les schémas sur le web ?, InfoPro. Management des systèmes d’information, ISSN 1773-5483, Paris, France.

Passant, A. (2009) : Technologies du Web Sémantique pour l’Entreprise 2.0, Mémoires, Thèses et HDR, ABES.

Poupeau, G. : Réaliser un mashup de données avec Dataiku DSS et Palladio | Les petites cases (http://www.lespetitescases.net/realiser-mashup-donnees-Dataiku-DSS-Palladio, consulté le 1 juillet 2018).

Pouyllau, S. (2012) : “Les moteurs de recherche profitent aussi de la sémantique”, Documentaliste – Sciences de l’Information, 48, 4, 36‑37.

Pouyllau, S. (2013) : “Web de données, big data, open data, quels rôles pour les documentalistes? (French)”, Documentaliste: Sciences de l’Information, 50, 3, 32‑33.

Pouyllau, S. (2014) : sp.Blog — Utiliser Isidore pour ses propres données (quand on est, par exemple, dans un labo) (http://blog.stephanepouyllau.org/646).

Utiliser Isidore pour ses propres données (quand on est, par exemple, dans un labo)

Isidore peut être un moyen, pour un laboratoire ou une équipe de recherche, d’enrichir et de relier des métadonnées et donc, par cette voie, des données. Comment faire ? En premier lieu, il faut faire entrer ses données dans Isidore, je renvois le lecteur à la page « à propos » du site Isidore. Ensuite, via le triple-store (une grosse base d’information construite selon les principes du RDF et qui est au cœur d’Isidore), il est donc possible de récupérer des métadonnées dites « enrichies » : c’est à dire les métadonnées fournies par le producteur et les enrichissements sémantiques créés par Isidore.

Le triple-store est accessible en ligne, soit dans une interface pédagogique (qui donne les clés pour comprendre le triple-store) : http://www.rechercheisidore.fr/sqe soit dans l’interface de notre outil de triple-store Virtuoso (et plus familier pour les webmasters) : http://www.rechercheisidore.fr/sparql. L’interface d’interrogation d’un triple-store (ou encore 3store) est appelée aussi SPARQL endpoint (point d’accès en langage SPARQL d’un triple-store).

Une requête très simple pour débuter en reprenant un cas concret : je suis un webmaster d’un projet ANR et je souhaite récupérer les métadonnées enrichies des documents de mon projet, indexés par Isidore. La requête ci-dessous me permet de lister toutes les ressources de mon projet (identifiées par un identifiant pérenne handle, apposé gratuitement – et réutilisable librement – par Isidore) :

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 DISTINCT ?isidore_handle ?titre ?date WHERE {
<http://www.rechercheisidore.fr/resource/10670/2.3gmog5> ?p ?o.
?o dcterms:title ?titre.
?o dces:date ?date.
?o dcterms:identifier ?isidore_handle
FILTER (regex(?isidore_handle, "10670"))
}

Voir le résultat de la requête

En PREFIX, j’indique par leurs URI, les vocabulaires documentaires utilisés dans le triple-store d’Isidore pour décrire les informations (notez qu’il y en a plusieurs, nous y reviendrons). dcterms et dces (pour Dublin Core Element Set) pour les métadonnées documentaires, FOAF pour décrire les informations relatives aux personnes (ici, des auteurs).
Le SELECT, WHERE et FILTER vont me permettre d’exécuter ma requête et d’en filtrer les réponses : avec l’utilisation ici d’une expression régulière me permettant d’isoler les triplets et donc de dédoublonner ces derniers pour une meilleure lecture. En effet, SPARQL permet de rechercher des informations sous la forme de triplets RDF (sujet, prédicat, objet).

Isidore, vous le savez, enrichit les ressources qu’il moissonne (voir ici). Ainsi, il est aisé d’utiliser le triple-store d’Isidore pour récupérer des signalements de données enrichie sur un territoire (puisque Isidore relie le contenu des ressources moissonnées avec des concepts issus du référentiel géographique mondial GeoNames). Ici, une requête permettant de récupérer tous les articles (uri : http://www.rechercheisidore.fr/ontology/art) ressources ayant été relié au département de la Seine-Saint-Denis (les Séquano-Dionysiens seront content) par un filtrage sur ‘2975246’ de l’uri http://sws.geonames.org/2975246/ de GeoNames :

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

SELECT ?resource ?title ?url ?source ?country WHERE {
?resource dcterms:type <http://www.rechercheisidore.fr/ontology/art>.
?resource dcterms:title ?title.
?resource ore:aggregates ?url.
?resource ore:isAggregatedBy ?source.
?resource dcterms:coverage ?country.
FILTER (regex(?resource, "10670", "i") && regex(?country, "2975246", "i"))
} GROUP BY ?resource

Voir le résultat de la requête

Le triple-store d’Isidore permet de « sortir » les données dans plusieurs format, CSV, RDF/XML, JSON suivant ce que l’on veut faire des informations (applications en ligne de visualisation de données par exemple) : très pratique justement pour les webmasters qui connaissaient bien ces formats.

La force d’Isidore est d’enrichir les ressources à l’aide de référentiels scientifiques, ainsi il est possible d’avoir la liste des ressources correspondant à l’une des catégories de Calenda venant des 2000 producteurs de données présents dans Isidore. En effet, l’ontologie d’ISIDORE aligne ensemble plusieurs URIs venant de plusieurs référentiels disciplinaires de SHS (HAL-SHS, Calenda, Thésaurus W du ministère de la Culture et de la Communication, dbpedia, etc.), exemple avec cette requête :

SELECT ?predicat ?objet {
<http://www.rechercheisidore.fr/subject/SHS:HIST> ?predicat ?objet
}

Voir le résultat de la requête

qui donne :

predicat objet
http://www.w3.org/1999/02/22-rdf-syntax-ns#type http://www.w3.org/2004/02/skos/core#Concept
http://www.w3.org/2004/02/skos/core#inScheme http://www.rechercheisidore.fr/categorie
http://www.w3.org/2004/02/skos/core#prefLabel « Histoire »
http://www.w3.org/2004/02/skos/core#prefLabel « History »@en
http://www.w3.org/2004/02/skos/core#prefLabel « Història »
http://www.w3.org/2004/02/skos/core#broader http://www.rechercheisidore.fr/subject/SHS
http://www.w3.org/2004/02/skos/core#exactMatch http://calenda.revues.org/categories.rdf#categorie20
http://www.w3.org/2004/02/skos/core#exactMatch http://dbpedia.org/resource/History

On voit bien qu’il est facile d’utiliser l’alignement proposé par l’ontologie d’Isidore entre Dbpedia, Calenda, HAL-SHS pour la discipline ‘Histoire’. Ainsi, il est possible de demander à Isidore toutes les ressources qui sont tagguées avec l’URI <http://www.rechercheisidore.fr/subject/SHS:HIST> (ici limité à 100 ressources) :

PREFIX sioc: <http://rdfs.org/sioc/ns#>
PREFIX dcterms: <http://purl.org/dc/terms/>
PREFIX dces: <http://purl.org/dc/elements/1.1/>

SELECT ?resource ?title WHERE {
?resource sioc:topic <http://www.rechercheisidore.fr/subject/SHS:HIST>.
?resource dcterms:title ?title
FILTER (regex(?resource, "10670", "i"))
} LIMIT 100

Voir le résultat de la requête

Aller, maintenant à vous ! Proposez-moi vos requêtes dans les commentaires ! L’auteur de la plus originale gagnera une carte postale d’Isidore dédicacée par l’équipe !

Bon SPARQL sur Isidore !

Stéphane.

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.

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.

Lectures pour un été pluvieux ?

Je signale le très bon billet sur l’interopérabilité de Marie-Anne Chabin dans son blog (merci d’ailleurs à Silvère Mercier pour le signalement). Je me suis permis un petit et court commentaire à ce billet car il fait écho en partie aux limites de l’interopérabilité quand elle devient plus une mode qu’un besoin réel. C’est particulièrement vrai dans le monde de l’interopérabilité des métadonnées documentaires ou le protocole OAI-PMH est largement utilisé (ce qui est bien) mais parfois mal maitrisé : Il est courant de tomber sur des entrepôts OAI-PMH qui tentent d’échanger des métadonnées qui, non-normalisées par exemple, ne trouveront pas d’utilisateurs « en face » pour les exploiter réellement.

En écho complémentaire, je signale la journée d’étude « De l’OAI au web de données : Bibliothèques et publications sur Internet » le 12 octobre 2012 qui se propose d’explorer le lien entre interopérabilité et utilisation du web comme lieu de publication même des informations structurées. Pour finir, je me permet de vous encourager de regarder et d’écouter de temps en temps l’intervention d’Emmanuelle Bermes sur le web de données qui éclaire toutes ces notions de façon magistrale.

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.

Thésaurus et web de données : l’exemple du Thésaurus W

Les archives de France proposent depuis quelques semaines selon les principes du web de données et du linked data le Thésaurus pour l’indexation des archives locales qui remplace l’édition 1997 du Thésaurus W et la version 2000 des listes d’autorité « actions », « typologie documentaire » et « contexte historique ». Un site web très clair a été réalisé pour l’occasion : il offre la possibilité de consulter le thésaurus bien sur, d’en télécharger une version RDF/XML mais surtout de l’interroger via le langage SPARQL qui est le langage de requête des données structurées en RDF. Ce point d’accès, on le nomme SPARQL end point (point d’accès SPARQL), est illustré de requêtes de démonstration permettant aux débutants en SPARQL d’être un peu autonome dans ce monde encore nouveau. Cette initiative est importante : elle ouvre des données publiques, elle permet de s’appuyer sur les référentiels des Archives de France pour qualifier des données tiers et donc construire des applications web riches. Dans le projet ISIDORE, nous avons d’ailleurs utilisé la liste d’autorités « contexte historique » afin d’accrocher les notices ISIDORE à des périodes historiques. Ce site est un très bel exemple de l’utilisation des méthodes du web de données pour les données publiques.

La correspondance d’André-Marie Ampère structurée avec RDFa

J’ai RDFaisé la correspondance d’André-Marie Ampère (1775-1836) éditée en ligne sur le site @.Ampère et l’histoire de l’électricité créé par Christine Blondel (Chercheuse au CNRS) et auquel j’ai participé en 2008/2009. Cette édition électronique, réalisée avec l’aide de Delphine Usal (CNRS) et Marie-Hélène Wronecki (contractuelle au CNRS) permet de mieux connaitre la vie de ce savant du XIXe siècle. Les éditeurs la présente ainsi :

La Correspondance d’Ampère regroupe les lettres qu’il a reçues et qu’il a envoyées. Elle offre un éclairage exceptionnel sur la vie personnelle, professionnelle et intellectuelle d’un des savants français majeurs du début du XIXe siècle. Plus de 1100 lettres sont actuellement accessibles en ligne.

Ce corpus de données, limité mais assez complexe, m’a semblé être intéressant pour réaliser un travail de structuration utilisant RDFa (voir le billet sur MédiHAL et le RDFa). J’espère que d’autres sites web diffusant des corpus historiques s’engageront dans l’implémentation/structuration de l’information selon les principes du RDF.

C’est un exemple, permettant via ISIDORE de montrer l’intérêt de l’utilisation du RDF dans les corpus en ligne (j’en profite pour signaler un tutoriel en anglais sur la question des structures RDFa dans wordpress et drupal qui me semble très bien fait et tout à fait intéressant). Mais d’autres projets sont en cours, par exemple : le Système d’information en philosophie des sciences (ou SIPS) qui sera donc, j’espère très bientôt, dans ISIDORE.

Bonne navigation structurée à tous !

Stéphane.

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.