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
4 commentaires leave one →
  1. 22/10/2017 16:10

    Salut
    en retapant ta requête dans le sparql endpoint de la bnf j’ai une erreur pour la 1re ligne (DEFINE…). ça se corrige?

    Mathieu

  2. 22/10/2017 17:32

    Oh, un commentaire !
    Pour ma part, quand je saisis la commande dans la zone de requête SPARQL, cette ligne est soulignée comme s’il s’agissait d’une erreur, mais ça n’empêche pas la requête de s’exécuter.
    Est-ce aussi ce que tu constates ? Ou bien c’est bloquant (et si oui, sous quelle forme)

  3. Rodolphe permalink
    26/10/2017 13:09

    Bonjour,

    Pour ce Hackathon musical, les données issues du projet ANR DOREMUS pourront aussi être utilisées. Ces données proviennent du catalogue de la BNF, mais aussi de la Philharmonie de Paris et de Radio France : http://data.doremus.org

Trackbacks

  1. Ce que data.bnf.fr m’apprend de Lully (2) | Bibliothèques [reloaded]

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

%d blogueurs aiment cette page :