Skip to content

Ce que data.bnf.fr m’apprend de Lully (1)

17/10/2017

Premier petit échauffement en vue du hackathon BnF 2017, dont le thème (non obligatoire) cette année est la musique.

Sans surprise, je vais commencer sur Lully (l’usurpateur de mon nom).
Je ne sais pas si vous vous souvenez, mais on est dans une phase intermédiaire d’évolution du modèle de data.bnf.fr, avec 2 URI pour désigner une même personne : son identifiant #foaf:Person et son identifiant #about. Les 2 sont déclarées équivalente (reliées par un owl:sameAs). Je ne vous refais pas toute l’explication.

Pour ne pas avoir à gérer les deux URI, il faut utiliser une ligne dans le Sparql Endpoint qui va déclencher des inférences : toute propriété concernant une des deux URI sera reportée également sur l’autre.

Les oeuvres de Lully

Une requête simple pour sortir toutes les oeuvres de Lully, avec :

  • son rôle (limité par la dernière ligne du code, au vocabulaire détaillé des rôles utilisé à la BnF, et éviter de récupérer les simples dcterms:creator ou dcterms:contributor)
  • la date de publication (qui est un critère obligatoire dans cette requête : les documents non datés ne vont donc pas sortir)
  • le titre
  • le lien à l’oeuvre (si elle a été créée)

Le noeud principal de la requête est la ligne rouge : les expressions où Lully a une mention de responsabilité (auteur, compositeur, etc.)

DEFINE input:same-as "yes"
PREFIX rdarelationships: <http://rdvocab.info/RDARelationshipsWEMI/&gt;
PREFIX dcterms: <http://purl.org/dc/terms/&gt;
PREFIX bnf-onto: <http://data.bnf.fr/ontology/bnf-onto/&gt;
PREFIX skos: <http://www.w3.org/2004/02/skos/core#&gt;
select DISTINCT * where {
?URIexpression ?URIrole <http://data.bnf.fr/ark:/12148/cb13896861p#foaf:Person&gt;.

?URIrole skos:prefLabel ?libelleRole.
?URIexpression dcterms:type ?typeExpression.
?URImanifestation rdarelationships:expressionManifested ?URIexpression.
?URImanifestation dcterms:title ?titreManif.
?URImanifestation bnf-onto:firstYear ?dateManifestation.
OPTIONAL
{?URImanifestation rdarelationships:workManifested ?URIoeuvre.
?URIoeuvre dcterms:title ?titreOeuvre.
?URIoeuvre bnf-onto:firstYear ?dateCreationOeuvre.}
?URIrole skos:inScheme <http://data.bnf.fr/vocabulary/roles&gt;..
}

On pourrait traiter ça directement soit avec des requêtes successives, soit avec un programme Python — mais je vais être à la fois paresseux et peu pragmatique : copions-collons ce tableau dans Excel.

Ca fait 912 lignes. Logiquement, il devrait y avoir une ligne par manifestation, mais en fait non :

  • il y a les manifestations qui sont des agrégats (bienvenus dans le monde de la musique)
    En fait, ça veut tout simplement dire qu’une publication (partition ou enregistrement) contient plusieurs oeuvres.
    La même manifestation apparaît donc autant de fois qu’il y a d’oeuvres distinctes dans les colonnes URIOeuvre, ?titreOeuvre et ?dateCreationOeuvre)
  • il y a les oeuvres que Lully a à la fois composées (musique) et écrites (texte). Il est alors mentionné à 2 reprises (exemple)

Bon, Lully est surtout compositeur (sans surprise)

Compositeur 532
Auteur ou responsable intellectuel 367
Ancien possesseur 6
Auteur du texte 6
Arrangeur 1

Objectivement, on pouvait s’en rendre compte directement sur la page consacrée à Lully (comme quoi l’interface est bien faite)

D’ailleurs la volumétrie est sensiblement supérieure à mon extraction. Si on ne veut pas récupérer les dates (ligne ?URImanifestation bnf-onto:firstYear ?dateManifestation}, on augmente un peu le nombre récupéré (on passe de 910 à 1200 documents), mais ça reste loin des près de 3000 ressources.

Et si on extrait juste du Sparql Endpoint la liste des triplets ?Ressource ?role <Lully> (où le ?role est limité aux codes fonction précis du référentiel détaillé), on ne monte qu’à 1500 réponses (incluant les oeuvres et les spectacles). A noter que la page data.bnf.fr aditionne les 1500 documents eux-mêmes aux 160 oeuvres. Mais on n’atteint pas les 3000. Et quand on utilise la fonction d’export en pied de page, le fichier de triplets contient moins de 1600 ressources pour lesquelles Lully a une mention de responsabilité.

Les collaborateurs

Lully n’a pas composé tout seul : cette page de data.bnf.fr identifie les autres mentions de responsabilité sur les ressources où Lully a joué un rôle.

Ce qui peut impliquer plein de situations différentes, mais essentiellement :

  • une pièce dont Lully est le compositeur et quelqu’un d’autre le metteur en scène ou l’auteur du livret
  • la mention de Lully comme auteur et de son interprète (dans le cas d’enregistrements)
  • une ressource qui contient à la fois des oeuvres de Lully, de Charpentier, de Bach ou de Mozart

Il faudrait donc débroussailler tout ça ensuite en fonction des rôles (et sans doute des dates de vie et de mort). Toutes les situations sont d’ailleurs intéressantes selon ce qu’on veut en faire.

Un petit programme permet d’extraire cette liste, et pour chacun des autres auteurs, d’identifier aussi les liens entre eux. Un paramètre en entrée : l’identifiant ARK de l’auteur.
(petit rappel : je ne suis pas développeur, le code est certainement très moche — mais bon, ça marche. Je ne ferai pas ce rappel à chaque fois)

Pour Lully, une fois le fichier résultat chargé dans Gephi, ça donne un graphe assez énorme (2164 « collaborateurs » pour Lully, et plusieurs dizaines de milliers de liens entre tous ces gens-là)

Et avec les noms (mais est-ce nécessaire, finalement ?c’est si beau sans)

Ce qui est amusant, c’est qu’au centre du graphe, on ne trouve pas Lully lui-même (pourtant à l’origine de l’extraction) mais Mehul (compositeur fin XVIIIe-XIXe siècle), Charles Malherbe (musicologue fin XIXe-début XXe) et André Gill (caricaturiste XIXe siècle). Je vous laisse méditer là-dessus…

Le succès éditorial

Un rapide petit décompte par décennie du nombre de document édités, sur ce corpus de 912 ressources :

(je constate au passage que mon script écrit il y a quelques mois permettant d’obtenir rapidement ce genre de graphiques bloque complètement, il faudra que je le refasse. Je constate aussi qu’il est écrit n’importe comment. C’est une bonne nouvelle, ça veut dire que je progresse)

————————————————————————————————————–

Je vais en rester là pour l’instant : les ressources, les rôles, les collaborations.

J’explorerai plus tard la question des documents manquants (c’est-à-dire la différence de volumétrie entre la page data.bnf.fr et ma requête Sparql), mais aussi les types de documents musicaux, ainsi que la question des spectacles. J’aimerais bien avoir le temps de voir deux ressources extérieures aussi :

  • le SRU de la BnF, dont l’ouverture publique est imminente
  • l’articulation avec d’autres bases de données et ce qu’on peut en tirer, soit via nos alignements (déclaration d’équivalences entre nos identifiants et ceux de VIAF, wikidata, ISNI, etc.), soit par reconnaissance de chaînes de caractères pour interroger des API de type Deezer (basculer d’un morceau entendu quelque part à sa partition, par exemple ?).
Publicités

Cas d’utilisation d’Open Refine – exemple 1/3 : nettoyer une liste de valeurs

10/10/2017

Ce blog est un peu en dormance, je vais essayer de le réactiver un peu. Disons que je n’ai pas encore trouvé (après déjà une année passée à Paris…) où je pouvais caler le moment « bloguer » dans mon rythme hebdomadaire.

Voici très rapidement un exemple d’utilisation d’Open Refine. Ce logiciel, dont j’ai déjà parlé à plusieurs reprises, est installé sur mon poste mais je n’en fais usage qu’assez épisodiquement — quand j’identifie qu’il peut m’être plus utile qu’Excel. Je prévois donc de présenter 3 exemples d’utilisations d’Open Refine — si ça peut vous donner d’autres idées.

Petite digression d’abord sur ce que je fais depuis un an à la BnF : je contribue, sur les notices déjà existantes, à l’évolution des données dans le contexte de la Transition bibliographique, et plus généralement à l’amélioration des données du catalogue — donc en gros, dès qu’on peut ajouter un peu de traitement de données, d’automatisations, j’aime bien mettre mon grain de sel. Un des gros projets en cours, c’est donc se rapprocher par étapes et à-coups du modèle FRBR (bon, LRM en fait maintenant, mais on verra ça une autre fois). Ce projet se décompose en un certain nombre de chantiers, selon la nature des documents, la nature des modifications, la nature des informations concernées, etc. La journée Systèmes & Données du 14 novembre devrait être l’occasion d’en évoquer certains.

Et il y a d’autres chantiers, liés à l’amélioration des données du catalogue « en général ». Parmi ceux-ci, je vais en évoquer un juste parce qu’il m’a donné l’occasion d’utiliser Open Refine (le chantier en question n’est pas terminé, d’ailleurs).

Le corpus est un lot de 34000 partitions : partie pour violon, partition pour chef d’orchestre, adaptation pour piano, etc. Le type de partition est précisé dans une zone en texte libre (la zone Intermarc 258$f, en l’occurrence).

Or il existe en parallèle une zone codée, permettant de décrire un type de partition : cette valeur permettrait ensuite de générer une facette, ou se retrouverait exploitable dans data.bnf.fr, etc.

referentiel type partition

Il faut donc l’alimenter à partir des informations textuelles.

Partir de 1500 valeurs distinctes pour arriver à 11.

Pour le logiciel Open Refine, il s’agit de clusteriser des valeurs (c’est-à-dire regrouper des chaînes de caractères distinctes dans un même groupe, auquel on affecte un même code). Ce n’est finalement pas différent de ce qu’a expliqué l’Abes sur son blog en 2014 à propos de la zone 200$bTexte imprimé. C’est également l’usage qui a été fait de ce même logiciel au SCD de Nice pour identifier les disciplines des thèses portant sur l’Afrique (la « discipline » dans une notice de thèse est une zone en texte libre).

Concernant ce chantier sur les partitions, voici les étapes suivies :

  1. extraction du catalogue d’un corpus de notices concernées, avec la zone textuelle source
  2. chargement dans Open Refine
  3. ajout d’une colonne « zone 258$f nettoyée » dupliquant la zone 258$f (ça permet de préserver la colonne contenant la valeur initiale : pour comparaison si les traitements successifs, trop violents, rendent le résultat final difficile à comprendre)
  4. Réalisation de plusieurs opérations de nettoyage et regroupement sur cette colonne, pour réduire le nombre de valeurs distinctes :
    1. rapprochements automatiques entre valeurs un peu différentes, en testant plusieurs algorithmes de clusterisation
      Le premier, le plus restrictif, peut être validé sans trop regarder : il rapproche les variantes d’accents, de majuscules et de ponctuation
      (et on passe en 2 secondes de 1500 valeurs à 1000)
      merge and recluster
    2. Utilisation des facettes, de Text Filter, pour identifier toutes les chaînes de caractère contenant par exemple « choeur », ou « voix », etc. pour attribuer une valeur commune à toutes ces lignes

On réexporte ensuite le résultat, sous forme d’un tableau à 2 colonnes :

  • Numéro de notice
  • Nouvelle valeur de la 009 pos.3

export_table

Fin du chantier
(restera évidemment à charger les données dans le catalogue, mais c’est pas moi qui m’en occupons)

Expérimenter les humanités numériques

02/10/2017
Ce livre vient de sortir, presque deux ans après l’appel à contribution
(dit comme ça, ça me semble incroyablement long, et pourtant je n’ai pas eu l’impression qu’il y ait eu des temps morts : seulement une succession de phases).
J’en profite tout de suite pour remercier très solennellement les trois autres coordinateurs pour m’avoir invité à contribuer à cette naissance, et les auteurs qui ont produit ce résultat.
Ce livre est un recueil de chapitres qui présentent une succession de retours d’expérience, que nous nous sommes efforcés d’organiser pour leur donner une cohérence dans le discours global que nous voulions tenir.
L’ensemble de l’ouvrage est disponible en libre accès sur le site des Presses Universitaires de Montréal, collection Parcours numériques. Certains chapitres ne sont même accessibles qu’en ligne pour des raisons purement éditoriales (longueur maximale d’un volume), et non liées à la qualité des textes.
La version papier est diffusée en parallèle (ainsi que les fichiers ePub et PDF).

Quelles « humanités numériques » ?

Au moment où ce projet commençait, il y avait pas mal de débats sur le sens à donner à cette expression. On voit moins souvent ces échanges à présent. C’est un débat que nous n’avons pas cherché à résoudre avec ce livre, estimant que notre rôle était ailleurs, sur les enjeux d’appropriation des outils numériques et des possibilités ouvertes, ou pour l’instant juste entrouvertes.
Les retours d’expérience permettent de rendre compte de l’utilisation d’un outil de travail qui peut intervenir à divers niveaux dans la conduite d’un projet scientifique, mais que nous n’avons pas fini de nous approprier.
Ce qui me semble ressortir particulièrement de la lecture des différents chapitres (puisque, n’en ayant rédigé aucun, en revanche je les ai beaucoup lus !) :
  • la diversité des projets : entre les chercheurs un peu seuls qui sont amenés à bricoler, et grands projets bénéficiant de financement ANR ou européens
  • le numérique intervenant selon les cas comme :
    • outil facilitateur
    • outil qui apparaît en cours de projet (avec évolution ou transformation du projet)
    • outil comme objectif du projet
  • l’intérêt de voir ainsi la science en train de se faire :
    pour moi, ce livre est pertinent aujourd’hui, pour rendre compte aux autres chercheurs (et plus largement aux citoyens) de ce à quoi peut ressembler la science aujourd’hui.
    Mais il le sera certainement, différemment, dans 10 ans (ou au-delà), pour être confronté à ce que sera l’usage du numérique à ce moment-là.
  • la complémentarité des métiers :
    les métiers de la documentation (bibliothèques incluses) sont censés être malmenés par l’irruption d’Internet, la facilité d’accès aux ressources, etc.
    Il est vrai que de nombreuses activités légitimes il y a 20 ans n’ont plus vraiment de pertinence. Mais c’est ce qui est fascinant aujourd’hui : voir se reconstruire la collaboration entre deux cultures professionnels, en revenir à ce qui fait le coeur et le sens de notre métier (chacun, bibliothécaire et chercheur) et renouveler les manières de travailler ensemble.

Making-of

La manière dont la coordination de l’ouvrage a été conduite aurait mérité un chapitre. Non pas parce que nous avons été particulièrement innovants (voire disruptifs !) ou efficace, mais parce que je ne sais pas comment font les autres : donc donner à lire la conception d’un ouvrage sur les humanités numériques, c’est aussi donner à voir la science en train de se faire, prendre le temps de décrire aussi cette activité-là.
Car nous avons tout fait à distance, avec des points plus ou moins réguliers mais surtout une grande diversité d’outils de communication et de travail collaboratif : ont été sollicités Skype, un pad, Google Drive, PBworks (qui propose une plate-forme de wiki). Pour la phase de relectures on est allé fureter du côté de SciencesConf (mais finalement non). Et les mails, bien sûr.
On peut en conclure qu’il nous a manqué un outil centralisateur, permettant de gérer un workflow de relecture et validations, d’échanges avec les auteurs et entre nous (puis avec l’éditeur), intégrer la question des financements.
Mais finalement le côté tâtonnant (non, pas « foutraque »), expérimental, est révélateur, et intéressant aussi.
Bref, c’était une expérience en soi, que j’ai adoré vivre.
Si en plus la suite nous apprend que nous avons eu raison de croire que ça en intéresserait d’autres, peut-être pourrons-nous envisager un tome 2 ?

Table des matières

    • Introduction, par Frédéric Clavert, Olivier Legendre, Dana Martin

Les outils personnels

L’outillage collectif

La gestion de projet

blockchain, intelligence artificielle et fonds spéculatifs

13/07/2017

Je ne vous ai finalement pas beaucoup parlé de la blockchain, et je n’ai pas suivi les innovations autour de cette technologie autant que je l’aurais souhaité (de manière générale, j’avoue que je blogue moins et je veille moins depuis quelques mois). Pour ceux qui débutent et en voudraient une vision claire, je vous recommande vivement cet article Minimum viable block chain, que j’ai renoncé à traduire en français, mais ce n’est pas bien car il en vaut la peine : il reprend l’explication des mécanismes traditionnels d’un échange marchand, et comment le dispositif de blockchain, avec ses clés publiques et privées, vient se substituer au rôle de l’Etat (ou plutôt vient rendre inutile le rôle d’un Etat) comme garant de la pérennité de la valeur d’une monnaie fiduciaire. Éclairant !

Parmi les sujets que cet article aborde, il y a les smart contracts : les contrats intelligents. Le principe est le suivant : vous développez un programme, et le publiez dans une blockchain, de manière à ce qu’il soit in-modifiable (et tout le monde peut le vérifier). Ce programme prévoit que si une personne, correspondant à certains critères (ce peut être une personne identifiée, une société prestataire, ou n’importe qui — ça va dépendre de qui accède aux conditions du contrat) réalise une action que le programme peut constater, celui-ci active une récompense (ou tout autre type de conséquence).

Un récent article donne l’exemple de smarts contracts inscrits dans une blockchain appliqués au monde de la prévision des cours en bourse : si quelqu’un prévoit une évolution, mise de l’argent pour la société qui a développé ce contrat, et que la société y gagne des sous, elle rémunère le « quelqu’un ». S’il s’est planté, il perd ses jetons.

C’est un peu plus subtil que ça, évidemment, mais le mieux est de lire l’article.

Ce que cet article nous apprend par ailleurs du monde de la finance et de la spéculation, je ne gloserai pas là-dessus : je n’ai aucune des compétences nécessaires pour avoir une opinion légitime, donc la mienne ne vaut pas plus que celle que vous entendriez au café du coin, et vaut certainement moins que la vôtre.

En revanche je trouve que ce genre d’exemple permet de se projeter davantage dans un univers de travail collaboratif, où on pourrait récompenser les participants : inciter à tagger des ressources, à reprendre un OCR, etc.

On en est encore très loin, mais je trouve la perspective intéressante. Deux grandes marges de progression :

  • envisager sur quels genre de services, et avec quels genres de « récompenses », cela pourrait être envisagé
  • s’approprier les outils permettant de créer un smart contract

« Vers de nouveaux catalogues » : quelles questions, quelles réponses ?

02/05/2017

J’ai fini récemment Vers de nouveaux catalogues, paru aux Editions du Cercle de la Librairie sous la coordination d’Emmanuelle Bermès (l’introduction est en ligne sur Figoblog).

J’avoue avoir eu un peu de mal à me le procurer : il y avait une file d’attente pour le lire au service de documentation professionnelle interne de la BnF !

L’ouvrage veut rendre compte, à travers l’ensemble de ses contributions (table des matières), de ce que sera l’avenir des catalogues. Le procédé est le suivant : chaque contributeur essaie de rendre compte, à travers un retour d’expérience précis illustrant le propos (la plateforme data.bnf.fr, la FRBRisation des données, le projet SGBm du réseau Sudoc, le futur data lake de l’INA, etc.), de lignes de fond qui permettent d’anticiper ce que seront les catalogues demain.

A un ou deux articles près, l’équilibre, assez complexe à tenir, entre retour pratique et propos plus théorique, est très bien tenu par leurs auteurs. Les exemples donnés sont concrets, mais le propos ne s’en tient pas à dérouler simplement l’histoire : il en tire des conclusions, dégage des grandes logiques.

Parmi celles-ci : les catalogues seront (de plus en plus) alimentés par des flux, les informations seront enrichies, les notices ne seront qu’une manière de visualiser l’information (article de Raphaëlle Lapôtre sur la datavisualisation, et de Gautier Poupeau sur l’éclatement des notices en données), leur gestion sera de plus en plus collaborative — la description stricte des documents ne sera finalement qu’un type de contenu parmi d’autres, de ce que les bibliothèques diffuseront à leurs internautes, après avoir agrégé et produit des informations sur leurs ressources. L’ouvrage est l’occasion d’avoir aussi une bonne synthèse sur l’état d’avancement de la transition bibliographique : c’est le bon moment, car de plus en plus de bibliothèques se demandent comment, concrètement, y participer1.

Participer à cette évolution, c’est précisément à quoi ce livre prépare : en rendant compte des enjeux pour les prochaines années, à partir d’observations les plus récentes.

Il serait formidable dès que possible y adjoindre un tome 2 ! En effet, en dépit de tout l’intérêt que j’ai porté à chacun des articles, j’en suis sorti frustré par l’absence de contribution qui rendrait compte des nouveaux usages chez nos publics. En effet, si nos catalogues évoluent, c’est aussi pour s’adapter à l’évolution des pratiques et des attentes des lecteurs, chercheurs, réutilisateurs de nos données : l’utilisation quotidienne de Google crée un horizon d’attente, de même que la politique de l’open data (chapitre de Romain Wenz).
Les bibliothèques s’efforcent de suivre pour faire évoluer à la fois leurs données et leurs interfaces — mais concrètement, aujourd’hui, quelles tendances observe-t-on ? Quand c’est pour consulter les documents, quelles stratégies les internautes utilisent-ils ? Quand ils en font un autre usage (lequel ?), comment s’en servent-ils ? Quelle porosité dans les pratiques de navigation entre Amazon, un catalogue de bibliothèque, une plateforme illégale de téléchargement de fichiers ePub ?
Je serais bien incapable d’en dire quoi que ce soit — mais justement, je crains que si beaucoup d’entre nous ont des intuitions là-dessus, il serait utile d’en avoir connaissance d’une manière plus objective, plus statistique, plus méthodique.
D’autant plus lors d’une phase de transition, pour s’assurer que les projections envisagées il y a quelques années sont toujours en phase avec les pratiques constatées aujourd’hui.

Une autre interrogation implicite qu’induit la lecture de l’ouvrage : comment favoriser l’acculturation et l’appropriation de ces problématiques par la profession ? Le livre y répond ainsi : « Lis-moi ! » Le conseil est bon.

———————————————————

1. J’y reviendrai sans doute plusieurs fois cette année

Le modèle de données de data.bnf.fr évolue

24/04/2017

Pour des raisons de tambouille interne, data.bnf.fr — que ce soient les données ou l’interface — a peu évolué ces derniers mois.

Mais voici que pointe une mise à jour du modèle de données qui n’est pas tout à fait anodine si vous voulez extraire des infos en partant d’éditions (par exemple un ISBN) pour remonter à leur auteur (par exemple) — ou l’inverse.

La mise à jour corrige notamment un bug ou l’expression était redoublée sans aucune raison.

Avant

 

Maintenant

(ça ressemble beaucoup. Les différences sont dans le quart inférieur gauche)

Il n’y a plus qu’une seule expression — en revanche l’auteur se retrouve avec 3 URI :

  • l’ARK « pur », préfixé http://data.bnf.fr/, désigne le concept : forme retenue, formes rejetées ; et gère les métadonnées de la notice : date de création et de modification
  • l’ARK avec suffixe #foaf:Person, qui désigne la personne elle-même, et porte encore la plupart des propriétés de cette personne (date de naissance, etc.)
  • l’ARK avec suffixe #about, qui pour l’instant ne supporte que la mention d’auteur de l’expression — mais à terme remplacera le #foaf:Person

Cette modification est en effet première étape vers un modèle cible où tous les objets (distincts des concepts dont ils partagent l’ARK, mais avec une URI propre à eux)  seront désignés avec une URI dont le suffixe sera #about (au lieu de #frbr:Work, #foaf:Person, #foaf:Organization, etc. comme c’est le cas actuellement)

Attention

J’en profite pour redire une chose importante que j’ai déjà eu l’occasion de signaler ici :

  • Il y a dans data.bnf.fr 8.911.627 manifestations
    Seules 9%
    d’entre elles sont liées à des oeuvres (772.468 aujourd’hui)
  • Si on ne regarde que les textes (en excluant la musique, les films, etc.) :
    seules 6% des manifestations sont liées à des oeuvres (418.673 sur 7.029.163 manifestations)
    En revanche 45% sur les 598957 expressions de type Sound sont liées à des entités « oeuvres » (les règles de catalogage sont un peu différentes, la conséquence en est qu’il y a une plus grande proportion de notices d’oeuvres musicales)

La plupart du temps, le modèle (actualisé) est donc plutôt celui-ci :

Par conséquent, si vous voulez obtenir la liste des ouvrages d’un auteur, ne passez pas forcément par les œuvres.

En effet n’existent comme notices d’œuvres dans data.bnf.fr que celles qui ont un jour été créées dans le catalogue pour des besoins d’indexation (la première étude paraît sur le Da Vinci Code -> on crée une notice d’oeuvre Da Vinci Code, qui se retrouve du coup dans data.bnf.fr).

Par conséquent les œuvres qui n’ont pas fait l’objet d’études de la part d’autres œuvres n’existent pas sous forme de pages dans data.bnf.fr : vous n’y retrouverez que les éditions successives.

Ça devrait changer dans les mois à venir, avec le projet de création automatique d’œuvres, mais ce sera nécessairement très progressif, et pendant longtemps très partiel.

Assurer la pérennité des requêtes SPARQL

Si vous avez peiné pour produire une requête SPARQL qui marche — enfin, qui marchait bien dans l’ancien modèle de données : pas de panique.

Il vous suffit de rajouter en première ligne de la requête :

DEFINE:input same-as "yes"

Ainsi la base de triplets commencera à reporter les propriétés d’une ressource sur toutes les autres ressources qui sont en relation owl:sameAs avec elle.

De la sorte, la ressource « Auteur » en #about récupèrera aussi les propriétés « Nom », « Date de naissance », etc. de la ressource #foaf:Person.

La requête SPARQL décrivant un graphe suivant le chemin de la manifestation à l’auteur, en passant par l’expression, sera ainsi toujours valide.

Pour plus de détails sur le modèle de données

La documentation est beaucoup plus fournie et détaillée sur la page de data.bnf.fr présentant le modèle de données

Ce qui ne va pas dans data.bnf.fr

08/12/2016

Résumé : ne sont versées dans data.bnf.fr que les notices d’autorité identifiées dans le catalogue comme « validées », et leurs notices bibliographiques associées. Cela induit-il un biais sur la constitution du corpus que constitue data.bnf.fr, comme représentatif ou non du catalogue de la BnF ?


Autant le dire tout de suite : le titre est un mauvais jeu de mots pour être le plus accrocheur possible. Son sens est très certainement autre que ce que vous pensiez en cliquant dessus1.

En fait, data.bnf.fr est constitué, pour 99% de son contenu, par des données issues du catalogue général de la BnF.

Pourtant, il n’y a que ~80% du contenu du catalogue qui arrive dans data.bnf.fr. Qu’est-ce qui fait que certaines choses n’y sont pas ?

Il me semble utile quel mécanisme génère cela (quel est le système de « sélection »), et prendre surtout ensuite le temps d’insister sur les conséquences quand on manipule les données de data.bnf.fr.

Le principe des biais

De manière plus générale, je vais essayer de publier une série de billets sur les biais dans data.bnf.fr : j’ai tendance à vouloir utiliser cette base comme un reflet suffisamment complet de la production éditoriale, au point que quand on veut avoir une approche statistique, les résultats sont représentatifs.

Je veux dire par là que même s’il manque un cinquième du catalogue, les informations qu’on pourrait tirer de data.bnf.fr (comme « les livres sur le sujet ‘laïcité’ progressent dans les années 2000 de x% ») resteraient vrais si on observait la totalité du catalogue, parce que la manière dont le « tri » technique s’effectue n’a rien à voir avec l’indexation sujet, donc la proportion d’ouvrages sur la laïcité par année devrait être la même dans le catalogue et dans data.bnf.fr.

Logiquement oui. Pourtant c’est à nuancer. Mais commençons par le commencement : qu’est-ce qui ne va pas dans data.bnf.fr ?

Le transfert des données, du catalogue à data.bnf.fr

Le catalogue est — sans étonner personne — constitué de deux grosses bases :

  • les notices bibliographiques
    ce qui inclut les notices de monographies et de périodiques, bien sûr, mais aussi les notices de spectacles, de collections, et d’ensembles éditoriaux (comme ce dernier concept n’est pas forcément familier à tous, voici un exemple : cet ensemble regroupe la série de enquêtes de Harry Bosch par Michaël Connelly, chez Calmann-Lévy à partir de 2012)
  • les notices d’autorité
    notices d’auteurs et de collectivités, notices Rameau et Dewey, notices d’œuvres (créées pour les besoins d’indexation, lorsqu’elles servent d’entrée sujet à d’autres ouvrages), etc.

Il existe évidemment de nombreux liens entre notices d’autorité et notices bibliographiques.

nnb_nna

Or la longue, complexe (et douloureuse ?) histoire du catalogue à la BnF explique qu’il y a naturellement eu des périodes de catalogage à la chaîne, pour rétroconvertir sur ordinateur des millions de fiches bibliographiques, en créant à la volée des notices d’autorité. Sans forcément s’assurer d’abord que l’auteur n’existait pas déjà. Ou sans disposer d’éléments biographiques (autre que « Nom, Prénom », mentionnés dans la notice bibliographique).

Donc face à un livre d’un certain Jean Martin :

  • dans certains cas, dans le doute, on rattachait l’ouvrage à une notice d’autorité déjà existante
  • dans d’autres cas, dans le doute, on créait une nouvelle notice d’autorité, sans beaucoup d’informations

Donc on se retrouve aujourd’hui avec des notices d’autorité qui sont déclarées comme auteurs d’ouvrages écrits en réalité par plusieurs homonymes ; et des notices d’autorité qui doublonnent inutilement avec d’autres.

Mais rassurez-vous : la BnF consacre beaucoup de temps et d’ETP à corriger le problème (on s’est même doté d’un tout nouvel outil, qui s’appuie sur les algorithmes déjà utilisés dans data.bnf.fr, pour conduire des chantiers de manière automatisée ou semi-automatisée). Mais comme il y a 5 millions de notices d’autorité…

Actuellement, il y a :

Or dans data.bnf.fr, on ne veut exposer que les informations « validées ». Donc on prend toutes les notices d’autorité validées, toutes les notices bibliographiques qui leurs sont associées, et on envoie tout ça dans data.bnf.fr.

C’est ainsi qu’on a dans data.bnf.fr 50% des notices d’autorité, et 80% des notices du catalogue.

Est-ce que c’est grave ?

La question que je me pose n’est pas tant : est-ce le bon choix de laisser le côté des notices d’autorité élémentaires avec toutes leurs notices bibliographiques (qui, elles, sont potentiellement correctes) ? Celle-là, j’y reviendrai peut-être un autre jour mais pour l’instant je la laisse de côté.

Non, la question pour aujourd’hui, c’est : est-ce que ça empêche de faire comme si data.bnf.fr était représentatif (statistiquement parlant) du contenu du catalogue, donc du dépôt légal, donc grosso modo de la production éditoriale française (je laisse de côté, faute de compétences, la question de l’écart entre dépôt légal et production réelle) ? Est-ce que ça empêche d’exploiter data.bnf.fr comme source bibliographique pour une analyse historique et statistique de la société française ?

A vue de nez, il me semble que c’est relativement neutre.

  • Sauf que, par exemple, en l’état, ça surreprésente les grands auteurs par rapport à ceux qui n’ont écrit qu’un seul livre : parce que les grands auteurs sont les premiers qu’on aura pris la peine de corriger et d’en faire des notices d’autorité « validées ».
  • De même, ça surreprésente les auteurs récents, parce que de combler les vides biographiques d’auteurs du XIXe siècle dont on ignore tout (sauf qu’ils ont écrit le livre qu’on a entre les mains), c’est plus compliqué

Pour le vérifier de manière un peu plus satisfaisante, on pourrait tenter une approche comparative sujet : par exemple en comparant l’évolution du sujet « laïcité » dans le catalogue et dans data.bnf.fr, au fil des années. Mais l’approche sujet est tributaire de la politique d’indexation, et Rameau n’apparaît que dans les années 1980.

Comparaison concrète : titre contient « science »

Voici tout de même une évolution comparée de la présence du terme « science » dans les titres dans le catalogue et dans data.bnf.fr.

Requête dans le SRU du catalogue, en Python(non accessible hors BnF pour le moment)

# -*- coding: utf-8 -*-
from lxml import etree

ns = {"srw":"http://www.loc.gov/zing/srw/", "m":"http://catalogue.bnf.fr/namespaces/InterXMarc","mn":"http://catalogue.bnf.fr/namespaces/motsnotices"}
url = "http://xxx.bnf.fr/SRU?version=1.2&operation=searchRetrieve&query=Title%20any%20%22science%20sciences%22&recordSchema=InterXMarc_Complet"
resultats = open("D:/resultatsSciencecatalogue.txt","w")
url = (url+"&").replace("&&","&")
firstPage = etree.parse(url)
nbResultats = int(firstPage.find("//srw:numberOfRecords",namespaces=ns).text)
nbPagesResultats = round(nbResultats/20)
i = 1
while (i < nbResultats):
    urlPage = url + "startRecord=" + str(i)
    page = etree.parse(urlPage)
    for record in page.xpath("//m:record",namespaces=ns):
        nnb = record.get("Numero")
        date = ""
        if (record.find("m:controlfield[@tag='008']",namespaces=ns) is not None):
            date = record.find("m:controlfield[@tag='008']",namespaces=ns).text[8:12]
        resultats.write(nnb + "\t" + date + "\n")
    i = i+20

Requête SPARQL pour « titre contient science »

PREFIX dcterms: <http://purl.org/dc/terms/>
PREFIX bnf-onto: <http://data.bnf.fr/ontology/bnf-onto/>
select ?decennie (count(?manif) as ?nbManif) where {
  ?manif a <http://rdvocab.info/uri/schema/FRBRentitiesRDA/Manifestation>.
  ?manif dcterms:title ?titre.
  ?manif bnf-onto:firstYear ?date.
  BIND (concat(substr(str(?date),1,3), "0") as ?decennie)
  FILTER (regex(?titre, "science")).
  FILTER (?date > 1599)
}
ORDER BY ?decennie

Arrondi à la décennie près, voici la proportion de notices bibliographiques du catalogue versées dans data.bnf.fr comme manifestations :

part_du_cg_dans_databnf

J’ai fourni le code des requêtes pour que ceux qui s’en sentent le courage puissent m’indiquer les éventuelles erreurs de méthode que j’aurais pu faire : car je ne trouve pas d’explication à ce graphique. Notamment le fait que pour les années 2000-2015, il n’y aurait que 30% du catalogue dans data.bnf.fr.

Il est clair que les 2 requêtes ne sont pas équivalentes :

  • dans le catalogue, on cherche les titres contenant les mots « science » ou « sciences »
  • dans data, on filtre sur les manifestations dont le titre contient la chaîne de caractère « science »

Mais même dans l’hypothèse où une requête différemment formulée permettrait de retrouver une plus grande partie du catalogue dans data.bnf.fr, l’évolution chaotique de cette courbe me laisse très perplexe.

Au passage, il me semble que l’interprétation d’un pourcentage ne sera pas la même si « 100% » correspond à 100, ou  à 100.000 notices. Du coup voici le même graphique, enrichi de 2 courbes secondaires permettant de voir de quelle volumétrie on parle, à chaque décennie :

sciences-dans-catalogue-et-data

L’info principale reste la courbe bleue, qui se cale sur l’axe vertical gauche (en pourcentages). Mais pour qu’on sache de quelle volumétrie il est question, j’ai ajouté les 2 courbes correspondant à la volumétrie stricte des notices concernées (en rouge pour le catalogue, en vert pour data.bnf.fr) ; et ces 2 courbes fines sont tracées en fonction de l’axe de droite.

Comparaison concrète : Strasbourg

Voici un tout autre angle d’approche : la mention éditoriale qui contient le mot « Strasbourg » (pour les textes imprimés uniquement, en évacuant les objets signalés dans le catalogue pour les besoins de Gallica, mais pas dans data.bnf.fr pour le moment) dans le catalogue et dans data.bnf.fr.

 

strasbourg_cg_data

Le graphique me semble plus facile à expliquer : les notices récentes, de meilleure qualité, sont plus souvent présentes dans data.bnf.fr.

Nombre de notices, par année

Et pour comparer le tout, voici le nombre de notices (ou, dans data.bnf.fr, de « manifestations ») par décennie : % des notices du catalogue dans data.bnf.fr, nombre total de notices dans le catalogue, nombre total de notices dans data.bnf.fr

pourcentagecataloguedansdata

Quelle question on se pose, déjà ?

Ma question de départ, c’est : pour avoir une approche globale, statistique, puis-je considérer que data.bnf.fr réagit (en proportions) comme le catalogue, et que je peux donc interpréter les grandes masses que je trouve dans data.bnf.fr comme s’il s’agissait du catalogue ?

J’avoue avoir du mal à interpréter les 3 courbes ci-dessus (mais sans doute n’ai-je pas posé les bonnes questions), mais selon que je cherche un lieu d’édition, ou la présence d’un mot (assez générique) dans un titre, la proportion des notices trouvées, par année, n’a pas la même allure que la proportion globale des notices.

Le dernier graphique m’indique que pour la période 1400-1950, environ 50% du catalogue est dans data.bnf.fr. Et ensuite on passe à 80%.

Mais les 2 graphiques précédents n’ont pas vraiment les mêmes caractéristiques. Donc « l’échantillon » que je peux exploiter dans data.bnf.fr, comme export du catalogue, ne peut pas être considérer comme uniformément représentatif du corpus global.

Je vous laisse réagir et me suggérer quelles questions poser, ou quelles réponses apporter à mes égarements ?

——————
↑↑ 1. je suis lucide : espérer être raccoleur en parlant de data.bnf.fr est voué à l’échec]