Jean-Baptiste PRESSAC, plateforme CRBC Open Science
Billet mis à jour le 17 juillet 2025
Summary:
The digitization of archival documents requires specific metadata to describe the files produced, the archival documents’s content and their origin. This article showcases how the querying language SPARQL can be used by researchers on those same metadata to highlight specific information on a large scale (author’s name, date of the document, audience of the document…). This second article in a series focuses on how a correspondence is described using Dublin Core and what the digitized correspondence from Yves Berthou’s archival fonds can tell us once its metadata have been queried with SPARQL.
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.
Dans un précédent billet, nous avons vu comment contrôler la qualité et explorer les métadonnées des documents avec le langage SPARQL. Nous avons notamment vu comment écrire des requêtes pour afficher les noms des auteurs et les titres des documents.
Dans ce billet, nous allons aborder l’étude des échanges épistolaires : Comment sont traitées les correspondances dans notre collection de documents Nakala ? Comment sont saisis les destinataires avec le Dublin Core ? Qui sont-ils ? Quelles sont les lettres adressées à une personne donnée ? Quels sont les épistoliers dont nous avons numérisé le plus de lettres ?
Les échanges épistolaires de la collection Yves Berthou
Le fonds Yves Berthou comprend des lettres et des cartes postales dont les épistoliers ont fait l’objet d’une première identification par l’équipe de PRELIB (Projet de recherche en littérature de langue bretonne) entre 2019 et 2020 puis en 2023 dans le cadre du projet DReAM-Collex par Marie-Alice Le Corvec, archiviste au CRBC, Heather Williams, chercheuse au CAWCS et Ceridwen Lloyd-Morgan, ancienne conservatrice en chef des manuscrits à la Bibliothèque nationale du pays de Galles, pour une identification plus précise des acteurs du mouvement culturel gallois.
Le Dublin Core ne propose pas de terme spécifique à la saisie des destinataires d’un courrier mais le terme Audience (dont la définition est A class of agents for whom the resource is intended or useful) a été utilisé à cet effet.
Nous avons également saisi pour certains documents un dctems:type = “Carte postale” ou “Lettre” ou “Enveloppe”, voire aussi “Carte de vœux”. Les documents qui relèvent donc d’échanges épistolaires entrent donc dans une nomenclature « maison » assez large, avec des termes uniquement en français. Il serait d’ailleurs intéressant de vérifier avec une requête SPARQL les types attribués aux documents de notre collections pour lesquels au mois un dcterms:audience a été saisi.
Les documents de la collection avec au moins un destinataire
La requête SPARQL suivante permet d’afficher tous les couples document / audience de la collection Fonds Yves Berthou sur Nakala. Pour un rappel sur la manière d’exécuter ces requêtes, consultez le billet précédent.
PREFIX dcterms: <http://purl.org/dc/terms/>
PREFIX npc: <https://nakala.fr/pub/Collection/10.34847/>
PREFIX edm: <http://www.europeana.eu/schemas/edm/>
SELECT * WHERE {
?data edm:isGatheredInto npc:nkl.42e2m0yl; dcterms:audience ?audience .
} ORDER BY ?data
Une correspondance pouvant avoir plusieurs destinataires, on affine la requête pour afficher ligne par ligne : un document, les noms de ses destinataires séparés par des barres obliques puis le nombre de ses destinataires. Par la même occasion, on utilise un filtre pour supprimer toutes les saisies sous formes d’URI (soit de ressources RDF) et se limiter aux noms des destinataires saisis en toutes lettres.
PREFIX dcterms: <http://purl.org/dc/terms/>
PREFIX npc: <https://nakala.fr/pub/Collection/10.34847/>
PREFIX edm: <http://www.europeana.eu/schemas/edm/>
SELECT ?data (GROUP_CONCAT(?audience; separator=" / ") AS ?audiences) (COUNT(?audience) AS ?audience_nbr) WHERE {
?data edm:isGatheredInto npc:nkl.42e2m0yl; dcterms:audience ?audience .
FILTER(!isIRI(?audience))
} GROUP BY ?data
ORDER BY DESC(?audience_nbr)
Au 19 février 2024, aucun document n’a plus d’un destinataire.
Liste des destinataires des correspondances
La requête suivante affiche la liste des correspondants.
PREFIX dcterms: <http://purl.org/dc/terms/>
PREFIX npc: <https://nakala.fr/pub/Collection/10.34847/>
PREFIX edm: <http://www.europeana.eu/schemas/edm/>
SELECT DISTINCT ?audience WHERE {
?data edm:isGatheredInto npc:nkl.42e2m0yl; dcterms:audience ?audience .
FILTER(!isIRI(?audience))
} GROUP BY ?audience
Et la requête suivante affiche le nombre de lettres qui leurs sont adressées.
PREFIX dcterms: <http://purl.org/dc/terms/>
PREFIX npc: <https://nakala.fr/pub/Collection/10.34847/>
PREFIX edm: <http://www.europeana.eu/schemas/edm/>
SELECT ?audience (COUNT(?data) AS ?data_nbr) WHERE {
?data edm:isGatheredInto npc:nkl.42e2m0yl; dcterms:audience ?audience .
FILTER(!isIRI(?audience))
} GROUP BY ?audience
ORDER BY DESC(?data_nbr)
Le résultat au 19 février 2024 donne Jean Le Fustec – Ar Fusteg, Yann (1855-1910) – comme principal destinataire des correspondances, soit 43 documents, devant Yves Berthou (destinataire de 11 documents).
Les lettres adressées à Yann Ar Fustec
On peut également indiquer le nom d’un destinataire en toutes lettres avec FILTER et un test d’égalité. Comme évoqué dans le précédent billet, les noms des personnes sont les formes retenues du catalogue de la BnF. La forme retenue pour désigner le grand-druide Jean Le Fustec (1855-1910) est Ar Fusteg, Yann (1855-1910).
PREFIX dcterms: <http://purl.org/dc/terms/>
PREFIX npc: <https://nakala.fr/pub/Collection/10.34847/>
PREFIX edm: <http://www.europeana.eu/schemas/edm/>
SELECT ?data WHERE {
?data edm:isGatheredInto npc:nkl.42e2m0yl; dcterms:audience ?audience .
FILTER((?audience) = "Ar Fusteg, Yann (1855-1910)")
}
Et comme il est tout à fait possible possible de saisir dans Nakala plusieurs métadonnées ayant exactement la même valeur, on vérifie par la même occasion que le précédent résultat (43 documents) est identique quand on supprime les éventuels doublons avec DISTINCT.
PREFIX dcterms: <http://purl.org/dc/terms/>
PREFIX npc: <https://nakala.fr/pub/Collection/10.34847/>
PREFIX edm: <http://www.europeana.eu/schemas/edm/>
SELECT DISTINCT ?data WHERE {
?data edm:isGatheredInto npc:nkl.42e2m0yl; dcterms:audience ?audience .
FILTER((?audience) = "Ar Fusteg, Yann (1855-1910)")
}
Tout va bien, on obtient le même résultat que la requête précédente.
Lien direct vers les lettres
Les requêtes précédentes renvoient l’URI – Uniform Resource Identifier – des documents. Par exemple l’URI <https://nakala.fr/pub/ProvidedCHO/10.34847/nkl.806dx097>, correspondant à la [Lettre d’Edward Thomas à Jean Le Fustec] du 12 février 1903 (cote d’archive : YBE2C503.40).
Les URI sont déréférençables, c’est à dire qu’elles renvoient vers une représentation de la ressource, soit une page Web générée par le logiciel LodView où sont affichés les triplets décrivant la ressource. Mais il serait plus pratique d’afficher des liens directs vers la notice Nakala des documents dans les résultats des requêtes.
Les URL – Uniform Resource Locator – des notices peuvent être construites à partir des URI. Par exemple, la notice Nakala de la ressource identifiée par l’URI <https://nakala.fr/pub/ProvidedCHO/10.34847/nkl.806dx097> est accessible à l’adresse https://www.nakala.fr/10.34847/nkl.806dx097, soit en supprimant la chaîne de caractères pub/ProvidedCHO/ dans l’URI. D’où une nouvelle version de la requête des documents destinés à Jean Le Fustec, qui converti l’URI en chaîne de caractères avec la fonction STR et applique au résultat la fonction REPLACE :
PREFIX dcterms: <http://purl.org/dc/terms/>
PREFIX npc: <https://nakala.fr/pub/Collection/10.34847/>
PREFIX edm: <http://www.europeana.eu/schemas/edm/>
SELECT (REPLACE(STR(?data), "pub/ProvidedCHO/", "") AS ?Notice_URL) WHERE {
?data edm:isGatheredInto npc:nkl.42e2m0yl; dcterms:audience ?audience .
FILTER((?audience) = "Ar Fusteg, Yann (1855-1910)")
}
Afin que les URL ne soient pas affichées comme de simples chaînes de caractères mais comme des liens cliquables, on encapsule le résultat du REPLACE avec la fonction IRI.
PREFIX dcterms: <http://purl.org/dc/terms/>
PREFIX npc: <https://nakala.fr/pub/Collection/10.34847/>
PREFIX edm: <http://www.europeana.eu/schemas/edm/>
SELECT (IRI(REPLACE(STR(?data), "pub/ProvidedCHO/", "")) AS ?Notice_URL) WHERE {
?data edm:isGatheredInto npc:nkl.42e2m0yl; dcterms:audience ?audience .
FILTER((?audience) = "Ar Fusteg, Yann (1855-1910)")
}
Le résultat des fonctions est obligatoirement lié à une variable (ici, ?Notice_URL). Afin d’alléger les variables affichées par le SELECT, on peut aussi assigner le résultat des fonctions à l’intérieur du WHERE avec la fonction BIND.
PREFIX dcterms: <http://purl.org/dc/terms/>
PREFIX npc: <https://nakala.fr/pub/Collection/10.34847/>
PREFIX edm: <http://www.europeana.eu/schemas/edm/>
SELECT ?Notice_URL WHERE {
?data edm:isGatheredInto npc:nkl.42e2m0yl; dcterms:audience ?audience .
FILTER((?audience) = "Ar Fusteg, Yann (1855-1910)")
BIND(IRI(REPLACE(STR(?data), "pub/ProvidedCHO/", "")) AS ?Notice_URL)
}
Les types attribués aux échanges épistolaires
Avant une requête finale affichant le nombre de lettres échangées par couples d’épistoliers (expéditeur/destinataire), revenons sur les dcterms:type que nous avons attribué aux documents avec au moins un dcterms:audience.
On écrit une première requête pour afficher les documents de la collection Yves Berthou qui ont au moins un dc:audience, avec pour chaque document la liste et le nombre de types qui lui ont été attribués. Le mot-clé OPTIONAL permet d’inclure les éventuels documents pour lesquels aucun type n’aurait pas été attribué.
PREFIX dcterms: <http://purl.org/dc/terms/>
PREFIX npc: <https://nakala.fr/pub/Collection/10.34847/>
PREFIX edm: <http://www.europeana.eu/schemas/edm/>
SELECT ?data (GROUP_CONCAT(?type; separator=" / ") AS ?types) (COUNT(?type) AS ?type_nbr) WHERE {
?data edm:isGatheredInto npc:nkl.42e2m0yl; dcterms:audience ?audience .
OPTIONAL{?data dcterms:type ?type .}
} GROUP BY ?data
ORDER BY DESC(?type_nbr)
Mais on se rend compte que les types sont parfois affichés en doublons, comme c’est le cas des types de la [Lettre de J.E. Jones à Francis Even] qui apparait en premier dans les résultats sous l’URI . Les huit types affichés pour ce document sont : <https://nakala.fr/pub/ProvidedCHO/10.34847/nkl.6bca437i>http://purl.org/library/ArchiveMaterial / Imprimé / Text / Lettre / http://purl.org/library/ArchiveMaterial / Imprimé / Text / Lettre.

Ce dédoublement vient de la saisie de deux dc:audience pour ce document : la chaîne de caractères “Even, Francis (1877-1959)” et <https://database.factgrid.de/entity/Q454125> – la ressource équivalente sur la base de connaissance FactGrid.
Pour mieux se rendre compte des solutions à la requêtes qui font l’objet du GROUP BY pour la [Lettre de J.E. Jones à Francis Even], on écrit la requête suivante, sans GROUP BY et avec un SELECT * :
PREFIX dcterms: <http://purl.org/dc/terms/>
PREFIX npc: <https://nakala.fr/pub/Collection/10.34847/>
PREFIX npp: <https://nakala.fr/pub/ProvidedCHO/10.34847/>
PREFIX edm: <http://www.europeana.eu/schemas/edm/>
SELECT * WHERE {
?data edm:isGatheredInto npc:nkl.42e2m0yl; dcterms:audience ?audience .
OPTIONAL{?data dcterms:type ?type .}
FILTER(?data = <https://nakala.fr/pub/ProvidedCHO/10.34847/nkl.6bca437i>)
}
On obtient pour résultat toutes les combinaisons possibles entre les trois variables ?data, ?audience et ?type.

Et si on limite l’affichage à ?data et ?type dans le SELECT, le nombre de résultats reste le même.
PREFIX dcterms: <http://purl.org/dc/terms/>
PREFIX npc: <https://nakala.fr/pub/Collection/10.34847/>
PREFIX npp: <https://nakala.fr/pub/ProvidedCHO/10.34847/>
PREFIX edm: <http://www.europeana.eu/schemas/edm/>
SELECT ?data ?type WHERE {
?data edm:isGatheredInto npc:nkl.42e2m0yl; dcterms:audience ?audience .
OPTIONAL{?data dcterms:type ?type .}
FILTER(?data = <https://nakala.fr/pub/ProvidedCHO/10.34847/nkl.6bca437i>)
}

L’ajout d’un GROUP BY ?data combiné à un SELECT identique à celui de la requête initiale va se contenter de regrouper sur une seule ligne ces 8 résultats, sans supprimer les doublons.
PREFIX dcterms: <http://purl.org/dc/terms/>
PREFIX npc: <https://nakala.fr/pub/Collection/10.34847/>
PREFIX npp: <https://nakala.fr/pub/ProvidedCHO/10.34847/>
PREFIX edm: <http://www.europeana.eu/schemas/edm/>
SELECT ?data (GROUP_CONCAT(?type; separator=" / ") AS ?types) (COUNT(?type) AS ?type_nbr) WHERE {
?data edm:isGatheredInto npc:nkl.42e2m0yl; dcterms:audience ?audience .
OPTIONAL{?data dcterms:type ?type .}
FILTER(?data = <https://nakala.fr/pub/ProvidedCHO/10.34847/nkl.6bca437i>)
} GROUP BY ?data

Pour éviter cet effet de bord du GROUP BY, on peut utiliser DISTINCT.
PREFIX dcterms: <http://purl.org/dc/terms/>
PREFIX npc: <https://nakala.fr/pub/Collection/10.34847/>
PREFIX edm: <http://www.europeana.eu/schemas/edm/>
SELECT ?data (GROUP_CONCAT(DISTINCT(?type); separator=" / ") AS ?types) (COUNT(DISTINCT(?type)) AS ?type_nbr) WHERE {
?data edm:isGatheredInto npc:nkl.42e2m0yl; dcterms:audience ?audience .
OPTIONAL{?data dcterms:type ?type .}
} GROUP BY ?data
ORDER BY DESC(?type_nbr)
Afin d’éviter les doublons, on peut également utiliser des sous-requêtes. On en profite par la même occasion pour afficher le nombre et la liste des destinataires de chaque document.
PREFIX dcterms: <http://purl.org/dc/terms/>
PREFIX npc: <https://nakala.fr/pub/Collection/10.34847/>
PREFIX npp: <https://nakala.fr/pub/ProvidedCHO/10.34847/>
PREFIX edm: <http://www.europeana.eu/schemas/edm/>
SELECT ?data ?audiences ?audience_nbr ?types ?type_nbr WHERE {
?data edm:isGatheredInto npc:nkl.42e2m0yl.
{SELECT ?data (GROUP_CONCAT(?audience; separator=" / ") AS ?audiences) (COUNT(?audience) AS ?audience_nbr)
WHERE {
?data dcterms:audience ?audience .
} GROUP BY ?data
}
{SELECT ?data (GROUP_CONCAT(?type; separator=" / ") AS ?types) (COUNT(?type) AS ?type_nbr)
WHERE {
OPTIONAL{?data dcterms:type ?type .}
} GROUP BY ?data
}
}
ORDER BY DESC(?type_nbr)
Avec des sous-requêtes qui séparent les types des documents de leurs destinataires, on évite la créations de doublons et on distingue le comptage du nombre de types de documents du comptage du nombre de destinataires attribués à chaque document.

Nombre de lettres échangées par épistoliers
La dernière requête de ce billet affiche le nombre de lettres échangées par couples d’épistoliers (un expéditeur et un destinataire). Les résultats sont filtrés pour supprimer les auteurs “inconnus” ainsi que les auteurs ou les créateurs saisis sous forme d’un URI.
Huma-Num a fait le choix, pour chaque donnée Nakala, d’exprimer en RDF l’absence de saisie de métadonnées dcterms:creator et le fait que nakala:creator = Anonyme, par un triplet de prédicat dcterms:creator et pour objet la chaine de caractères “inconnu”.
PREFIX npc: <https://nakala.fr/pub/Collection/10.34847/>
PREFIX npp: <https://nakala.fr/pub/ProvidedCHO/10.34847/>
PREFIX edm: <http://www.europeana.eu/schemas/edm/>
PREFIX dcterms: <http://purl.org/dc/terms/>
SELECT ?creator ?audience (COUNT(*) AS ?nbr_documents) WHERE {
?data edm:isGatheredInto npc:nkl.42e2m0yl;
dcterms:creator ?creator; dcterms:audience ?audience.
FILTER(?creator != "inconnu" && !isIRI(?creator) && !isIRI(?audience))
}
GROUP BY ?creator ?audience
ORDER BY DESC (?nbr_documents)

D’après cette requête, c’est Edouard Cadic, professeur au University College Dublin et Jean Le Fustec (Yann Ar Fusteg) qui sont les epistoliers dont nous avons numérisé et mis en ligne le plus de correspondances.
Dans le prochain billet
Dans le prochain billet, nous verrons comment écrire une requête pour afficher les vignettes des échanges épistolaires sur une frise chronologique.
OpenEdition vous propose de citer ce billet de la manière suivante :
Jean-Baptiste Pressac (26 février 2024). Exploiter les métadonnées Nakala avec SPARQL : La correspondance du fonds Yves Berthou à l’épreuve des étincelles (2ème partie). DreAM-CollEx. Consulté le 7 février 2026 à l’adresse https://doi.org/10.58079/11oei