Jean-Baptiste PRESSAC, plateforme CRBC Open Science
Le Centre de recherche bretonne et celtique (CRBC) conserve dans ses archives le fonds Yves Berthou (1861-1933), poète et acteur de la culture bretonne. Dans le cadre du projet DreAM et du cours de valorisation documentaire du master 2 Civilisations, cultures et sociétés de l’UBO, une centaine de documents de ce fonds ont été documentés, numérisés et mis en ligne sur la bibliothèque numérique du CRBC et sur Nakala, un entrepôt national de données pour les sciences humaines et sociales édité par l’infrastructure de recherche Huma-Num. Les métadonnées saisies dans Nakala peuvent être extraites au format JSON depuis l’API de Nakala. Elles sont également traduites en RDF, le modèle du Web sémantique et interrogeables depuis le point de terminaison SPARQL1 de Nakala, https://nakala.fr/sparql.
Dans les deux précédents billets2, nous avons vu comment contrôler la qualité et explorer les métadonnées des documents depuis https://nakala.fr/sparql. Dans ce nouveau billet, nous allons voir comment afficher les documents sur une frise chronologique. 
Le logiciel Yasgui
Les requêtes sur les métadonnées peuvent être écrites et exécutées depuis l’interface du service https://nakala.fr/sparql. Mais elle ne propose ni correction automatique de syntaxe ni visualisation des résultats sous forme de graphiques, de cartes ou de frises chronologiques. Nous préférons donc utiliser le démonstrateur en ligne du logiciel Yasgui pour écrire nos requêtes SPARQL : https://yasgui.triply.cc/.
Pour interroger avec Yasgui les données de Nakala, il faut préciser l’adresse https://nakala.fr/sparql à droite de la roue crantée, comme illustré ci-dessous. 
Les frises chronologiques de YASGUI
Outre l’affichage des résultats des requêtes SPARQL sous forme de tableaux, YASGUI propose divers affichages dont une frise chronologique.

La documentation en ligne du logiciel précise que pour être affichés sur une frise chronologique, le résultat de la requête doit contenir au moins les variables ?eventStart ou ?eventDate avec une des trois variables suivantes, ?eventDescription , ?eventLabel ou ?eventMedia.
Première frise, les titres des lettres
Nous faisons le choix d’afficher uniquement les lettres parmi les documents de la collection, soit les documents avec un dcterms:audience et au moins un dcterms:creator. Le GROUP BY supprime les doublons de lettres ayant plusieurs auteurs ou destinataires. Les titres et les dates des lettres sont associés aux variables ?eventLabel et ?eventStart.
PREFIX edm: <http://www.europeana.eu/schemas/edm/>PREFIX dcterms: <http://purl.org/dc/terms/>SELECT ?eventLabel ?eventStart WHERE {?data edm:isGatheredInto <https://nakala.fr/pub/Collection/10.34847/nkl.42e2m0yl>;dcterms:creator ?creator; dcterms:title ?eventLabel; dcterms:date ?eventStart; dcterms:audience ?audience .FILTER(?creator != "inconnu")} GROUP BY ?eventLabel ?eventStart
Par défaut, les résultats sont affichés sous forme de tableau. En cliquant sur Timeline dans la barre d’outils juste au dessus des résultats, on passe en mode frise chronologique.

Afficher les vignettes
Outre les titres des documents, comment afficher un aperçu de chaque lettre ? Les fichiers associés à une donnée Nakala sont liés par la propriété http://www.europeana.eu/schemas/edm/aggregatedCHO, soit en abrégé, edm:aggregatedCHO.
Prenons l’exemple d’une lettre de John Kelt Edwards à Jean Le Fustec (cote d’archive, YBE2C503.3) et affichons tous les triplets RDF dont la lettre est sujet ou objet. La donnée Nakala est consultable à l’adresse https://nakala.fr/10.34847/nkl.89101862 mais la ressource sémantique qui la représente dans le graphe des triplets RDF de Nakala a pour URI3 https://nakala.fr/pub/ProvidedCHO/10.34847/nkl.89101862.
DESCRIBE <https://nakala.fr/pub/ProvidedCHO/10.34847/nkl.89101862>
Parmi les résultats de la requête, on repère le triplet qui a pour prédicat edm:aggregatedCHO. Elle a pour objet la lettre et pour sujet <https://nakala.fr/pub/Aggregation/10.34847/nkl.89101862>.
<https://nakala.fr/pub/Aggregation/10.34847/nkl.89101862> <http://www.europeana.eu/schemas/edm/aggregatedCHO> <https://nakala.fr/pub/ProvidedCHO/10.34847/nkl.89101862>
Continuons à dérouler la pelote par l’affichage des triplets de la ressource <https://nakala.fr/pub/Aggregation/10.34847/nkl.89101862>.
DESCRIBE <https://nakala.fr/pub/Aggregation/10.34847/nkl.89101862>
Parmi les résultats de DESCRIBE, trois triplets, non reproduits ici, dont le prédicat est http://www.europeana.eu/schemas/edm/hasView, attirent notre attention. Elles ont pour objet trois ressources de type image/jpeg : https://nakala.fr/pub/WebResource/10.34847/nkl.89101862/9daba80e470a50de25f7a572415aebf01b34dad1, https://nakala.fr/pub/WebResource/10.34847/nkl.89101862/eca6ac48c1d0b65839d3730fe2832c9db7c20367 et https://nakala.fr/pub/WebResource/10.34847/nkl.89101862/3a49c2e2bd2baf07a22ef838ce02b21b51f017bb.
Nous avons mis la main sur les trois scans en JPEG de la lettre de John Kelt Edwards à Jean Le Fustec (cote d’archive, YBE2C503.3).
Cependant les trois ressources représentent les fichiers mais ce ne sont pas encore les fichiers eux-mêmes. Exécutons un dernier DESCRIBE sur une des ressources représentant une des images JPEG.
DESCRIBE <https://nakala.fr/pub/WebResource/10.34847/nkl.89101862/3a49c2e2bd2baf07a22ef838ce02b21b51f017bb>
On constate que l’adresse Web de l’image est indiquée par la propriété foaf:primaryTopic soit ici, https://api.nakala.fr/data/10.34847/nkl.89101862/3a49c2e2bd2baf07a22ef838ce02b21b51f017bb.
Dans la requête de la première frise, ajoutons une variable ?eventMedia à laquelle on associe l’adresse Web indiquée par foaf:primaryTopic.
PREFIX edm: <http://www.europeana.eu/schemas/edm/>PREFIX dcterms: <http://purl.org/dc/terms/>PREFIX foaf: <http://xmlns.com/foaf/0.1/>PREFIX skos: <http://www.w3.org/2004/02/skos/core#>SELECT ?eventLabel ?eventStart (SAMPLE(?eventMedia) as ?eventMedia) (SAMPLE(?view_label) as ?view_label) WHERE {?data edm:isGatheredInto <https://nakala.fr/pub/Collection/10.34847/nkl.42e2m0yl>; dcterms:creator ?creator; dcterms:title ?eventLabel; dcterms:date ?eventStart; dcterms:audience ?audience .?aggregation edm:aggregatedCHO ?data ; edm:hasView ?view .?view dcterms:type "image/jpeg"; skos:altLabel ?view_label; foaf:primaryTopic ?eventMedia.FILTER(?creator != "inconnu")# Astuce pour ne récupérer que la première image du documentFILTER(CONTAINS(?view_label, "01."))} GROUP BY ?eventLabel ?eventStart
Afin d’être certains de récupérer uniquement des images JPEG, on précise le type des ressources renvoyées par edm:hasView. Pour ne récupérer que la première image, on applique un filtre sur le label de la ressource représentant l’image. Le label du fichier (?viewlabel) est ajouté au SELECT uniquement pour un contrôle du bon fonctionnement de la requête, il n’intervient pas dans l’affichage de la frise chronologique.
Pour faciliter la consultation de l’intégralité des lettres, on associe leur adresse Web sur Nakala avec la variable ?eventMediaLink4. L’adresse Web des données Nakala est forgée en supprimant pub/ProvidedCHO aux URI des ressources RDF qui les représentent.
PREFIX edm: <http://www.europeana.eu/schemas/edm/>PREFIX dcterms: <http://purl.org/dc/terms/>PREFIX foaf: <http://xmlns.com/foaf/0.1/>PREFIX skos: <http://www.w3.org/2004/02/skos/core#>SELECT ?eventLabel ?eventStart (SAMPLE(?eventMedia) as ?eventMedia) (SAMPLE(?view_label) as ?view_label) ?eventMediaLink WHERE {?data edm:isGatheredInto <https://nakala.fr/pub/Collection/10.34847/nkl.42e2m0yl>; dcterms:creator ?creator; dcterms:title ?eventLabel; dcterms:date ?eventStart; dcterms:audience ?audience .?aggregation edm:aggregatedCHO ?data ; edm:hasView ?view .?view dcterms:type "image/jpeg"; skos:altLabel ?view_label; foaf:primaryTopic ?eventMedia.BIND (IRI(CONCAT("https://nakala.fr/", STRAFTER(STR(?data), "https://nakala.fr/pub/ProvidedCHO/"))) AS ?eventMediaLink)FILTER(?creator != "inconnu")# Astuce pour ne récupérer que la première image du documentFILTER(CONTAINS(?view_label, "01."))} GROUP BY ?eventLabel ?eventStart ?eventMediaLink
Conclusion et perspectives
La numérisation et la mise en ligne d’un fonds documentaire n’a pas pour seul intérêt la consultation des documents 24h/24, 7j/7 en dehors de leur lieu de conservation. Les métadonnées qui accompagnent la mise en ligne des scans constituent aussi une source pour la visualisation et l’analyse des documents. Ces opérations sont facilitées sur Nakala, l’entrepôt national des données en sciences humaines et sociales, qui propose depuis https://nakala.fr/sparql, un service en ligne pour interroger les métadonnées converties selon les principes du Web sémantique (utilisation d’ontologies, données disponibles selon le modèle RDF, langage de requêtes SPARQL).
Dans cette série de billets, nous avons abordé https://nakala.fr/sparql de manière frontale en écrivant nous-même des requêtes avec le langage SPARQL. Les néophytes trouverons peut-être plus leur compte en utilisant l’outil Sparnatural, qui permet de forger des requêtes SPARQL dans les métadonnées de Nakala sans en avoir l’air.
Dans les prochains billets, nous explorerons le principe de requêtes fédérées entre Nakala et Wikidata et nous tenterons de reproduire les requêtes précédemment écrites avec Sparnatural.
- En anglais, SPARQL endpoint. [↩]
- https://dreamcollex.hypotheses.org/501 et https://dreamcollex.hypotheses.org/1903 [↩]
- URI : uniform resource identifier [↩]
- Les variables nécessaires au fonctionnement de la visionneuse sont disponibles dans la documentation de YASGUI. [↩]


