Métadonnées : Saisie, récolte et organisation

Open Archives Initiative Protocol for Metadata Harvesting (OAI-PMH)

Le protocole OAI-PMH est défini par openarchives.org.

C’est la solution choisie pour permettre à eCorpus de réculter des métadonnées associées aux objets, lieux ou thèmes représentés dans ses scènes.

Une liste non exhaustive des fournisseurs institutionnels est disponible sur le site d’openarchives: www.openarchives.org/service/listproviders.html)

Ces métadonnées doivent donc être saisies dans un entrepôt adapté.

A partir de là, on souhaite essayer de les « récolter » (Harvesting).

Récolter un entrepôt OAI-PMH

A la main… Exemple sur https://api.pop.culture.gouv.fr/oai:

Lister les formats supportés

curl -XGET  https://api.pop.culture.gouv.fr/oai?verb=ListMetadataFormats

Puis ont utilise le metadataprefix dans les requêtes suivantes quand elles le nécessitent.

la base pop supporte le format oai_dc uniquement.

Lister les sets

Un « set » correspond à un ensemble de données. Généralement un fournisseur unique dans une base aggrégée par exemple.

curl -XGET -o sets.xml "https://api.pop.culture.gouv.fr/oai?verb=ListSets"
xmllint --format sets.xml > sets_pretty.xml

Lister les identifiants

On peut fournir un paramètre « set » à cette requête pour affiner les résultats.

curl -XGET -o identifiers.xml "https://api.pop.culture.gouv.fr/oai?verb=ListIdentifiers&metadataPrefix=oai_dc"
xmllint --format identifiers.xml

On obtiens une liste d’<identifier> (correspondant ici aux différentes bases aggrégées par POP).

Ces identifiants peuvent être utilisés par la requête GetRecord

Lister des records

La requête ListRecords utilise les sets:

curl -o records.xml -XGET "https://api.pop.culture.gouv.fr/oai?verb=ListRecords&metadataPrefix=oai_dc&set=joconde"
xmllint --format  records.xml

GetRecord

Fournir un identifier et un metadataPrefix pour obtenir un Record.

Exemple de process

  • L’utilisateur fournit une URL (pas une URI, parce que c’est pas humainement trouvable >_<')
    • www.pop.culture.gouv.fr/notice/joconde/50010010944
  • Un parser ad-hoc reconnait la base pop/joconde et construit une requête
    • identifier=oai:joconde:50010010944, metadataPrefix=oai_dc
  • Les résultats sont réintégrés aux métadonnées de scène sur eCorpus

Analyse de POP/OAI :

Inconvénients:

  • Perte d’information normalement disponibles:
    • liens Joconde ↔ Palissy ↔ Mérimée
    • champs exotiques de description (historique,…)
  • Nécessite de fournir l’URL définie par ailleurs

Avantages:

  • à priori même vocabulaire que le plugin Omeka

RDF / Turtle / Triplestore

La base POP par exemple, fournit des exports de ses jeux de données sous forme d’un gros fichier rdf.

Evidemment, ce gros fichier XML de ces morts est malformé et contiens des caractères restreint (section [2a]). Il faut le filtrer pour les en retirer.

Puis on peut explorer l’extrait avec un outil comme Blazegraph.

Syntaxe SPARQL

Chaque enregistrement est un triple Sujet-Prédicat-Objet (s - p - o). On parle aussi parfois de Quad (sujet-prédicat-objet-graph).

Une requête basique peut ressembler à:

SELECT *
WHERE {
    ?s ?p ?o.
}
LIMIT 20

On match n’importe quoi.

Pour faire une recherche par N° de référence sur la base joconde, on fera (avec M0650014491 le N° d’inventaire du pied de croix de saint bertin):

select * 
where { ?s <https://data.culture.gouv.fr/ld/ontologies/base-joconde-extrait/reference> "M0650014491" }

Renvoie le « sujet » concerné. Une URI du type <https://data.culture.gouv.fr/ld/resources/base-joconde-extrait/base-joconde-extrait-record/3e60b7959560e4f742118b1177a37c2c412f44f4/>.

Avec cette URI, on peut récupérer l’ensemble de l’enregistrement. La requête complète sera:

select ?p ?o where { 
  ?s <https://data.culture.gouv.fr/ld/ontologies/base-joconde-extrait/reference> "M0650014491" .
  ?s ?p ?o .
}

Utilisation de l’API POP

L’API POP, dont les routes sont documentées en Swagger/OpenAPI repose sur la solution proprietaire OpenDataSoft.