Skip to content

Si c’est un lieu #hackathonBnF

20/11/2016

J’ai participé avec beaucoup de plaisir au premier hackathon organisé par la BnF ce week-end du 19-20 novembre. J’y étais pour apporter en cas de besoin une aide sur des questions de format, ce qui veut dire notamment que je n’ai eu aucune responsabilité à assurer sur les questions logistiques. J’étais donc concentré sur le fond, et ce fut une expérience vraiment sympa, sans stress (je le précise car d’autres ont dû être davantage happés par les aspects organisationnels, et ont dû en ressortir plus fatigués).

J’en profite pour saluer le travail des collègues de la BnF qui ont bossé dur pour que ça se déroule bien (il me semble que ce fut le cas), et féliciter l’équipe qui a été déclarée gagnante : @Gallicarte (site web / extension Chrome1).

Leur projet : proposer une navigation cartographique dans les résultats de Gallica, pour les documents qui possèdent une information de lieu. Question : comment, dans les données disponibles, un document est-il associé à un lieu dans Gallica.

Leur premier point d’entrée : voir si le document contient une indexation sujet de type Lieu.

(d’autres modalités ont été évoquées : lieux du déroulement de l’histoire que contient le document numérisés, si ces lieux sont listés dans Wikidata – exemple avec Le Comte de Monte Cristo, propriété Narrative location ; extraction de cette info dans les tables des matières)

Et donc c’est une occasion pour moi de parler un peu de data.bnf.fr. En effet quand vous avez une indexation Sujet, comment savoir (automatiquement) que ce sujet désigne un lieu ?

Le problème

Imaginions que vous tombiez sur ce document (parmi d’autres)

Fontaine du Pot de fer St Marcel (1671) - Rue Mouffetard : [photographie] / [Atget] -- Licence Etalab

Fontaine du Pot de fer St Marcel (1671) – Rue Mouffetard : [photographie] / [Atget] — Licence Etalab

Dans les métadonnées, accessibles à partir de l’identifiant ARK du document (et exposées via le protocole OAI, en Dublin Core) vous trouverez les infos suivantes :

Fontaines -- France -- Paris (France) -- 17e siècle
Paris (France) -- Rue Mouffetard
Paris (France) -- Rue du Pot-de-Fer
Paris (France) -- Fontaine du Pot-de-Fer

Comment distinguer ce qui est « sujet » de ce qui est « lieu » ?

La solution

Logiquement (il y a des exceptions, faut que je vois d’où ça vient) :

  1. les documents numérisés dans Gallica sont indexés en Rameau.
  2. Rameau est dans data.bnf.fr
  3. Rameau est découpé en 8 sous-ensembles
  4. Chaque concept est rattaché à l’un de ces sous-ensembles par la propriété dcterms:isPartOf
  5. La famille des Lieux a pour URI : http://data.bnf.fr/vocabulary/scheme/r167

On peut exporter la liste des familles de concepts à travers une requête comme celle-ci :
(à noter que pour certaines de ces familles, le label n’est pas fourni dans le Sparql Endpoint, mais c’est un bug destiné à disparaître)

PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
PREFIX dcterms: <http://purl.org/dc/terms/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
select distinct ?sousensembleRameau ?label where {
 ?ressource a skos:Concept.
 ?ressource dcterms:isPartOf ?sousensembleRameau.
 OPTIONAL {
    ?sousensembleRameau rdfs:label ?label.
  }
}
ORDER BY ?sousensembleRameau

Ce qui signifie que pour chaque indexation Sujet entrée dans un document de Gallica, on peut vérifier si dans data.bnf.fr elle est liée à la famille r167.

Donc si on dispose d’une indexation, il « suffit » de récupérer l’URI du concept à partir de son label, et de voir si cette URI est rattachée au groupe r167. Par exemple pour la première entrée , la requête suivante renvoie 0 résultat

PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
PREFIX dcterms: <http://purl.org/dc/terms/>
select ?concept where {
  ?concept skos:prefLabel "Fontaines -- France -- Paris (France) -- 17e siècle"@fr.
  ?concept dcterms:isPartOf <http://data.bnf.fr/vocabulary/scheme/r167/>.
}

Alors que pour la seconde indexation « Paris (France) — Rue Mouffetard », la même requête renvoie bien l’URI

La récupération ou non de l’URI est une manière de faire test « lieu : oui/non ». Et donc ensuite de choisir d’afficher le document sur une carte.

Recherche Auteur = Atget sur Gallicarte

Recherche Auteur = Atget sur Gallicarte

—————————-
1. L’extension Chrome sert à ajouter dans les listes de résultats de Gallica une option « Affichage Carte » qui exploite les possibilités développées pour le site Gallicarte.

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 :