Un serveur SPARQL pour le Sudoc

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

11 réflexions sur “Un serveur SPARQL pour le Sudoc

  1. Faire la liste des titres publiés chez Maspéro en 1968 et présents dans le SUDOC :

    SELECT distinct ?A ?B ?C

    FROM
    WHERE {?A « 1968 ». ?A ?B. ?A ?C. FILTER regex(?C, « Masp ») }

    NB : Dans le filtre de la chaîne éditeur, « Maspéro » ne marche pas à cause de l’accent.

  2. La requête précédente a été tronquée. Voici la bonne version :

    SELECT distinct ?A ?B ?C
    FROM <http://www.sudoc.fr/>
    WHERE {
      ?A <http://purl.org/dc/elements/1.1/date> "1968".
      ?A <http://purl.org/dc/elements/1.1/title> ?B.
      ?A <http://purl.org/dc/elements/1.1/publisher> ?C.
      FILTER regex(?C, "Masp")
      }
    

    Pour entrer vos requêtes en commentaire, il faut l’entrer entre deux balises « sourcecode » et « /sourcecode » (remplacer les guillemets par des crochets carrés).

  3. Merci, Jean, pour ta contribution ! et ce voyage dans le temps…
    En passant, FILTER regex(?C, « Masp[eé]ro ») a l’air de marcher.

    Éloquente la liste des sujets :

    SELECT distinct ?Sujet count(?Sujet) as ?combiendefois
    WHERE {
    ?A dc:date "1968".
    ?A dc:title ?B.
    ?A dc:publisher ?C.
    ?A dc:subject ?Sujet.
     FILTER regex(?C, "Masp[eé]ro")
    }
    ORDER BY DESC(?combiendefois)
    
    
  4. Pingback: Un serveur SPARQL pour le Sudoc | TAL-FR | Scoop.it
  5. Pingback: Un serveur SPARQL pour le Sudoc | DHL | Scoop.it
  6. Dans la requête donnée en exemple, une petite coquille s’est glissée ligne 8 :

    au lieu de : ?doc >http…
    on devrait avoir : ?doc <http…
    ;-)

    Je viens de faire mes premiers pas en interrogation sparql (grâce à un support de cours proposé par Pauline Moirez et Romain Wenz à la fin de leur formation sur le Web sémantique), et je suis enchanté de voir que l'on peut désormais interroger le sudoc de cette manière !!!

    PS : en cherchant d'autres supports de cours pour poursuivre mon apprentissage, je suis tombé sur ce cours qui à l'air très intéressant :

    http://fr.wikiversity.org/wiki/SPARQL

  7. « 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. » Hé mais on dirait que c’est fait, non : http://fil.abes.fr/2012/11/29/dimportantes-decisions-prises-par-le-conseil-dadministration-de-labes/ :)

    Des avancées du côté de la mise à disposition des dumps ? (pas que j’ai quelque chose à en faire de particulier à court terme mais la mise à disposition des données BnF me faisait repenser à ça).

  8. Tu as raison.
    En fait, on a gelé les opérations en attendant que les fournisseurs (dont la BnF) nous autorisent à déclarer cette licence. A très peu de cas près, c’est aujourd’hui OK, mais je ne sais pas ce qui sera décidé pour ces cas négatifs.

  9. Pingback: Le SUDOC en RDF : du nouveau ! 1/2 | Punktokomo ;

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s