Revenir à l'exercice 2

Requête dans les données de la Bibliothèque nationale

La Bibliothèque nationale de France (BNF) a retranscrit une partie des informations que contiennent ses notices d'autorité sous forme de données publiées sur le web avec des technologies dites du web des données ou web sémantique. Voir la documentation de ce projet et une présentation du modèle de données adopté par la BNF.

A titre d'exemple, on peut comparer la notice 'Nicolas Copernic' du catalogue général et celle mise à disposition dans le cadre du projet web des données.

Pour les intéressés, une présentation des concepts du web sémantique, dans le contexte du mouvement Open Data, se trouve sur cette page.


Il est donc désormais possible d'interroger avec le langage SPARQL le point d'accès des données de la BNF pour créer un ensemble de données tirées des notices d'autorité.

Pour ce faire, il faudra ouvrir l'Editeur SPARQL de data.bnf.fr et coller dans l'espace 'Rêquete' la requête qui suit, tout en laissant le format de sortie par défaut: HTML.

Le résultat de la requête est ainsi présenté sous forme de table et peut être parcouru.


Requête:

PREFIX  egr:  <http://rdvocab.info/ElementsGr2/>
 
SELECT DISTINCT  ?s ?na ?fn ?annee ?pb ?gd ?bio
WHERE
  { { { SELECT DISTINCT  ?s ?bio
        WHERE
          {   { ?s egr:biographicalInformation ?bio
                FILTER ( CONTAINS(?bio, "mathém") || CONTAINS(?bio, "Mathém") )
              }
            UNION
              { ?s egr:biographicalInformation ?bio
                FILTER ( CONTAINS(?bio, "astrono") || CONTAINS(?bio, "Astrono") )
              }
          }
      }
      ?s egr:dateOfBirth ?bd
      OPTIONAL
        { ?s <http://xmlns.com/foaf/0.1/name> ?na }
      OPTIONAL
        { ?s <http://xmlns.com/foaf/0.1/familyName> ?fn }
      OPTIONAL
        { ?s egr:placeOfBirth ?pb }
      OPTIONAL
        { ?s <http://xmlns.com/foaf/0.1/gender> ?gd }
    }
    BIND(STRBEFORE(STRAFTER(STR(?bd), "http://data.bnf.fr/date/"), "/") AS ?annee)
    FILTER ( ( ?annee > "1100" ) && ( ?annee < "1761" ) )
  }
ORDER BY ?annee

Avec cette requête nous créons d'abord une population d'acteurs dont les notices biographiques de la BNF parlent de mathématiques ou d'astronomie, puis nous ajoutons quelques propriétés de manière optionnelle (c'est-à-dire qu'elles peuvent être renseignées ou pas dans les données BNF) concernant le nom, l'année et le lieu de naissance.

Grâce au filtre sur les années de naissance, la période étudiée va du début du 12e siècle jusqu'à la deuxième moitié du 18e siècle.

Pour les curieux, sous le champs 'Requête' de l'éditeur SPARQL de data.bnf.fr vous trouverez des exemples d'autres requêtes qu'on peut effectuer.

Création et nettoyage du fichier à encoder

On obtient ce résultat: liste_notices_BNF