Depuis juillet 2011, l’ensemble des données Sudoc est accessible en RDF. Si on connaît son identifiant, chacune des dix millions de notices du Sudoc peut être affichée en RDF/XML. Mais encore faut-il connaître cet identifiant… Ce dispositif est utile pour permettre à un programme de naviguer de notice en notice, y compris en rebondissant sur les données RDF d’IdRef par exemple, mais cela ne permet pas d’explorer systématiquement le Sudoc ni d’effectuer une recherche.

SPARQLer le Sudoc ?

Pour ce faire, il faudrait que toutes ces pages RDF soient agrégées en une seule base qui supporte la possibilité d’interroger des données RDF en tant que RDF. Cette possibilité s’appelle SPARQL : il s’agit d’un langage de requête standardisé conçu pour interroger les données RDF. Pour l’ABES, offrir un accès au Sudoc en SPARQL reste un objectif, mais ce n’est pas une priorité de premier niveau. Par contre, faire en sorte que d’autres acteurs puissent récupérer l’ensemble du Sudoc en RDF et ce, s’ils le souhaitent, dans une base RDF compatible avec SPARQL, c’est incontournable.

Moissonner le Sudoc

C’est pourquoi, dès juillet 2011, nous avons indiqué à des agrégateurs potentiels comment moissonner le Sudoc en RDF. De la même manière que les robots des moteurs de recherche peuvent crawler un site web dynamique à partir d’un fichier XML qui liste toutes les URLs du site, les robots des agrégateurs de données RDF ont été invités à crawler le Sudoc de la même manière, mais en demandant explicitement le format RDF/XML. Au passage, ce fichier XML qui liste les URLs est un fichier sitemap et le fait de pouvoir servir une page en HTML ou en RDF (ou autre chose encore) en fonction de la demande du client s’appelle la négociation de contenu.

S’il est en théorie séduisant et rassurant d’imaginer qu’on puisse crawler la version RDF d’une base de données selon la méthode de crawl standard qui fait le web d’aujourd’hui, en pratique, aujourd’hui, ce n’est pas la solution la plus efficace. En un an, Sindice, un des principaux agrégateurs de contenu RDF, n’a moissonné que 10% de la base.

Vous avez prévu quoi pour juillet … 2021 ?

Dumper le Sudoc

Il nous faut donc recourir aux bonnes vieilles méthodes. Nous allons donc générer des exports réguliers du Sudoc en RDF et nous les publierons, en libre accès. Contrairement à la solution du crawl, cette solution du dump implique nécessairement un décalage temporel entre les données du Sudoc et celles de son dump. Nous espérons limiter à un mois ce décalage inévitable.

Afin de roder ce nouveau dispositif, nous avons mis le dump à la disposition de Sindice. Dès que le conseil d’administration aura décidé de la licence juridique associée aux données des réseaux ABES, donc du Sudoc, ce dump sera ouvert à tous.

SPARQLer le Sudoc  avec Sindice !

En attendant, c’est avec enthousiasme que nous avons constaté l’intégration réussie des 300 000 000 de triplets RDF du Sudoc dans le moteur de recherche Sindice et dans son serveur SPARQL. Certes, Sindice est une initiative universitaire, qui ne peut prétendre garantir la continuité de service d’un serveur commercial (ceci dit, Sindice a désormais sa structure commerciale). Certes, les bases de données RDF de cette taille n’ont pas les performances des bases de données relationnelles et encore moins des moteurs de recherche comme Solr. Mais la souplesse et la puissance de SPARQL sont addictifs.

Disposer d’un accès au Sudoc en SPARQL, c’est très précieux pour développer des prototypes, se former au web sémantique sur des données familières, faire des requêtes impossibles avec les interfaces actuelles du Sudoc (Web, Z39.50), identifier avec précision les aspects sur lesquels la conversion actuelle  du MARC en RDF peut être améliorée…. Mais nous ne conseillons pas de faire dépendre un service en production du serveur SPARQL de Sindice. Ce n’est pas le but.

Afin de vous encourager à confesser votre propre addiction dans les commentaires, voici une première requête, très simple, qui liste tous les auteurs que Jacques Roubaud a pu traduire :

SELECT distinct  ?auteur ?auteurnom

FROM <http://www.sudoc.fr/>

WHERE {
  ?doc <http://www.loc.gov/loc.terms/relators/trl> <http://www.idref.fr/027110583/id>.
  ?doc dc:title ?titre.
  ?doc >http://www.loc.gov/loc.terms/relators/aut> ?auteur.
  ?auteur foaf:name ?auteurnom.
      }

Y. Nicolas