Outils pour utilisateurs

Outils du site


td_histoire_numerique:creation_liste_notices_bnf

Ceci est une ancienne révision du document !


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.

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 si elles sont renseignées, 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.


Création et nettoyage du fichier à encoder

  • Revenir à la page de la 'Requête' et changer le 'Format du résultat' à CSV (comma-separated values)
  • Reexécuter al requête, sélectionner toute la page du résultat et la copier dans le presse-papier
  • Ouvrir une nouvelle feuille de calcul dans le logiciel de tableur (Calc pour LibreOffice/OpenOffice; Excel dans la suite Microsoft)
  • Coller avec collage spécial dans la première cellule de la feuille de calcul: A1 et choisir 'Texte non formaté'.
    • Dans la boîte de dialogue mettre 'Virgule' comme séparateur
    • Mettre le 'Type de colonne':'Texte' pour la colonne 'annee'
    • Importer et vérifier le résultat
  • Sauvegarder le nouveau fichier avec le nom 'liste_notices_BNF' au format .ods ou .xls
  • Ajouter une colonne avant la colonne 'annee' qu'on va appeler 'nom'
  • Dans la première cellule qui contient les données insérer la formule:
     =SI(ESTVIDE(B2);C2;B2)
  • Copier-coller cette formule dans toutes les cellules de la colonne sauf la première ligne
  • Ajouter une colonne annee_mediane après la colonne année
  • Insérer dans toutes les cellules de cette colonne la formule
    =SI(ESTERREUR(CHERCHE("-";E2)) ; E2; CONCATENER(GAUCHE(E2;2);"51"))
  • Ajouter une colonne 'naissance' avant la colonne 'gd' (gender) et mettre cette formule dans toutes les cellules:
    =SI(ESTVIDE(G2);F2;CONCATENER(G2;", ";F2))
  • Ajouter une colonne 'notice' après la colonne 'bio' et mettre dans toutes les cellules cette formule:
    =CONCATENER(D2;" (";H2;") ";J2;" [";A2;"]")
  • Trier les données d'après les colonnes 'annee_mediane' et 'nom'

On obtient ce résultat: liste_notices_BNF

td_histoire_numerique/creation_liste_notices_bnf.1442953170.txt.gz · Dernière modification: 2015/09/22 22:19 par Francesco Beretta