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.