API SRU Catalogue général
Présentation
Le service SRU (Search/Retrieve via URL) du Catalogue général permet d’interroger le Catalogue général de la BnF via de simples requêtes HTTP et de récupérer l’ensemble des notices du catalogue général (bibliographiques ou d'autorité) dans différents formats encapsulés dans du XML.
Il est accessible à tous sans authentification. Il est interrogeable manuellement depuis n’importe quel navigateur Internet ou intégrable dans du code informatique (web service RESTful; protocole HTTP en mode GET ou POST).
Console
Description
Ce service permet de récupérer toutes les notices bibliographiques et d’autorité du Catalogue général de la BnF en interrogeant celui-ci via un grand nombre de critères de recherche, comme par exemple :
- mots, auteur, titre, sujet, type de document, numéro de notice, ARK, ISBN, …, pour les notices bibliographiques,
ou
- mots, forme retenue ou rejetée, type de notice, numéro de notice, ARK, ISNI, …, pour les notices d’autorité.
Il répond à la norme 1.2 du protocole SRU disponible sur le site de la Bibliothèque du Congrès.
Toutes les requêtes doivent débuter par : "http://catalogue.bnf.fr/api/SRU?version=1.2&operation=searchRetrieve&query=...". C’est dans le paramètre "query" (&query=...) que vous exprimez votre recherche.
Pour chaque critère, on peut chercher 'tous les mots' (relation "all"), 'un des mots' (relation "any"), ou une 'expression exacte' (relation "adj").
Ainsi, si vous cherchez les notices bibliographiques contenant tous les mots "Julien" et "Gracq" (critère "bib.anywhere" avec relation "all"), il vous suffit de saisir ou de copier la requête suivante dans votre navigateur Internet (Internet Explorer, Firefox ou autre) :
De plus, on peut combiner plusieurs clauses de recherche grâce à des "and", "or" ou "not".
Ainsi, la requête : http://catalogue.bnf.fr/api/SRU?version=1.2&operation=searchRetrieve&query=(bib.author all "romain gary") and (bib.title all "la promesse de l'aube") not (bib.doctype any "g h v")
permet de retrouver tous les documents "La promesse de l'aube" de Romain Gary qui ne sont ni des enregistrements sonores, ni des images animées, ni des spectacles.
La liste complète des critères avec leurs relations associées est fournie dans le Tableau des critères de recherche. A noter que les critères comme par exemple les dates comportent d’autres relations que "all", "any" ou "adj".
De nombreux exemples sont fournis dans la documentation et ci-dessous.
Formats de sortie
Les notices sont renvoyées au format Unimarc ou Dulbin Core (uniquement pour les notices bibliographiques) encapsulé dans du XML. L'encodage est l'UTF8.
Le format par défaut est le format Unimarc.
Pour être plus précis, il existe 5 formats de sortie et il suffit de préciser le paramètre recordSchema dans la requête pour choisir le format de sortie :
- l’Unimarc (avec ou sans analytiques) et l’Intermarc (avec ou sans analytiques) pour les notices bibliographiques et d’autorité :
- unimarcXchange
- unimarcXchange-anl (voir cette notice dans le Catalogue général)
- intermarcXchange
- intermarcXchange-anl (voir cette notice dans le Catalogue général)
- et le Dublin Core uniquement pour les notices bibliographiques :
La réponse à une requête est renvoyée par le serveur sous forme XML conformément à la norme SRU 1.2. Elle comporte:
- la version du SRU implémenté (1.2) (<srw:version>)
- le rappel de la requête demandée (<srw:echoedSearchRetrieveRequest>)
- le nombre de résultats (<srw:numberOfRecords>)
- puis l’ensemble des notices encapsulées dans l’élément <srw:records>, chaque notice étant encapsulée dans un élément <srw:record>.
C'est dans ces éléments <srw:record> que l'on retrouve les notices qui répondent à la requête. Elles sont, suivant le choix de format demandé, soit au format Dublin Core qui est nativement XML, soit au format Intermarc ou Unimarc encapsulées dans du marcXchange 2.0 (ISO25577). Le MarcXchange fournit, pour chaque notice, l'identifiant pérenne de la notice (ark), le format MARC utilisé (Intermarc ou Unimarc) et le type de notice (Bibliographic or Authority), puis chacune des zones MARC de la notice avec en attribut l'étiquette de la zone MARC.
Pour plus d'information, consultez l'annexe de la documentation complète du service SRU. Les développeurs y trouveront notamment comment récupérer ces éléments d'information au moyen de XPath (pp. 13-17).
Exemples de requêtes
Pour bien comprendre le fonctionnement du service SRU, munissez-vous de la liste des critères et comparez vos requêtes SRU aux recherches avancées que vous pouvez effectuer dans les notices bibliographiques et dans les notices d'autorité du catalogue général de la BnF : https://catalogue.bnf.fr.
- les notices bibliographiques d'identifiant pérenne ark : ark:/12148/cb38499612v et ark:/12148/cb402237466, la requête est query=bib.persistentid any "ark:/12148/cb38499612v ark:/12148/cb402237466" ou via leurs numéros de notice query=bib.recordid any "38499612 40223746". Pour la notice d'autorité de Victor Hugo, la requête SRU est query=aut.persistentid any "ark:/12148/cb11907966z" ou query=aut.recordid any "11907966" (voir la même notice dans le catalogue général au format public, unimarc ou intermarc). Les critères bib.persistentid et aut.persistentid permettent également de mettre à jour l'ark de vos notices BnF si besoin.
- l'ensemble des notices bibliographiques de type "Monographie" ou "Périodique" du catalogue général de la BnF : query=bib.recordtype any "mon per" ou l'ensemble des notices d'autorité de type "Personne" ou "Collectivité" de la BnF: query=aut.type any "pep org".
- Pour l'univers "Jeunesse" de la BnF, pour récupérer l'ensemble des notices bibliographiques de l'Univers "Jeunesse" : query=bib.set any "youth", ou plus spécifiquement les "monographies" pour les documents de type "Texte imprimé et livre numérique" de l'univers Jeunesse et publiées avant 1900 : query=bib.set any "youth" and bib.recordtype any "mon" and bib.doctype any "a" and bib.publicationdate < "1900", ou celles de type de document "Enregistrement sonore", "Document électronique" ou "Image animée" publiées chez Hachette query = bib.set any "youth" and bib.doctype any "g s h" and bib.publisher any "hachette"
- l'ensemble des notices bibliographiques issues du CNLJ : query=bib.otherid any "UnivJeun0" &recordSchema=intermarcXchange. La zone Intermarc 833 (Intermarc (B) de diffusion, zone 833), si elle est renseignée, vous fournira les notices critiques, avis critiques, public destinataire ou genre du CNLJ. Par exemple les coups de coeur CNLJ pour le public 0-3ans : query=bib.otherid any "UnivJeun0" and bib.anywhere any "AviC6 JAg0003" (ou en zone Unimarc 329 ( Unimarc(B) de diffusion (p.35)).
- la notice d'autorité de Claude Ponti via son identifiant ISNI : query=aut.isni all "0000000121214815" et toutes les notices bibliographiques liées à Claude Ponti en tant qu'auteur : query=author2bib any "12056784" ou au sujet de Claude Ponti : query=subject2bib any "12056784".
- les spectacles de l'univers Jeunesse : query = bib.set any "youth" and bib.doctype any "v"&recordSchema=intermarcXchange (les notices de spectacles ne sont qu'au format intermarc).
- le(s) document(s) numérisé(s) dans Gallica d'une notice de l'univers Jeunesse : query=bib.persistentid any "ark:/12148/cb44516012j", les liens vers le(s) document(s) Gallica se trouvent en Unimarc en 856$u ( Unimarc(B) de diffusion (p.58) ou Unimarc(B) international IFLA ):
- les notices bibliographiques de l'univers jeunesse de genre ou sujet "Bande dessinée": query=bib.set any "youth" and bib.subject adj "bande dessinee" (adj=expression exacte) et la même requête dans le catalogue général. Les bandes dessinées du CNLJ : query=bib.otherid any "UnivJeun0" and bib.subject any "JnBDessi".
- Pour l'univers "Musique" de la BnF, pour récupérer l'ensemble des notices bibliographiques de l'Univers "Musique", de type de document "Enregistrement sonore" et publiées en 2018, la requête est : query=bib.set any "music" and bib.doctype any "g" and bib.publicationdate = "2018"
- les notices bibliographiques liées à Jean-Louis Aubert en tant qu'auteur : query=author2bib any "13935859" ou celles liées à l'oeuvre Cosi fan tutte de Mozart excepté les spectacles (bib.work2bib all "13915297") not (bib.doctype=v)
- l'ensemble des oeuvres musicales (TUM: Titre Uniforme Musical) de la BnF (notices d'autorité validées) , la requête est query=aut.type any "tum"
- Les notices bibliographiques d'identifiant : ark, numero de notice; ISBN; EAN; ISMN (International Standard Music Number); ISRC (International Standard Recording Code); Reference commerciale - Cotage Edition (musique) ou Numero de disque ancien;
- Les notices d'autorité d'identifiant : ark, numéro de notice ou ISNI (plus de 80% des notices d'autorité de la BnF comporte un identifiant ISNI).
Pour parcourir l'ensemble des résultats et les récupérer 100 par 100 :
- les 100 premières notices bibliographiques de l'Univers "Musique", de type "enregistrement sonore", la requête est : http://catalogue.bnf.fr/api/SRU?version=1.2&operation=searchRetrieve&query=(bib.set any "music") and (bib.doctype any "g")&startRecord=1&maximumRecords=100
- les 100 notices suivantes (on démarre à la 101ième et on demande les 100 suivantes) : http://catalogue.bnf.fr/api/SRU?version=1.2&operation=searchRetrieve&query=(bib.set any "music") and (bib.doctype any "g")&startRecord=101&maximumRecords=100
Difficultés
- Contextes bib et aut : Les recherches dans les contextes 'bibliographique' (préfixe "bib.") ou 'autorité' (préfixe "aut.") ne peuvent être combinées.
- Notion de notices d'autorité validées : Par défaut, seules les notices d'autorité de référence sont interrogeables (notices 'validées' par la BnF). Le critère 'aut.status' doit être utilisé pour élargir à l'ensemble des notices d'autorité.
- Pour les notices de spectacle et les notices d'autorité Dewey, il n'est pas fourni de conversion en Unimarc.
- Pour récupérer les données Gallica via le SRU: En unimarc, les zones 856 donnent les liens ark vers les documents dans Gallica lorsqu'ils ont fait l'objet d'une numérisation (exemple dans BnF Catalogue général ou en SRU). Par contre, ces liens ne sont pas présents en Intermarc. Le critère bib.digitized permet de demander s'il existe une version numérisée à la BnF.
Documentation
La version du protocole SRU implémenté à la BnF est la version 1.2 dont la norme est disponible sur le site de la Bibliothèque du Congrès : Norme SRU
L'ensemble de la documentation BnF associé à ce service est:
- Petit manuel pour construire vos requêtes SRU avec beaucoup d'exemples [fichier .pdf – 337 Ko – 24/01/19 – 8 p.]
- Tableau des critères SRU [fichier .pdf – 850 Ko – 01/2024 – 7 p.]
- Documentation complète du service SRU de la BnF [fichier .pdf – 349 Ko – 24/01/19 – 17 p.]
Voir également la page BnF expliquant les principes du protocole SRU
Aide
Dublin Core Format bibliographique
Le Dublin Core simple propose 15 attributs, facultatifs et répétables :
Contenu
- Titre dc:title
- Sujet dc:subject
- Description dc:description
- Source, origine de l'information dc:source
- Langue dc:language
- Relation avec d'autres ressources dc:relation
- Couverture chronologique et géographique dc:coverage
Propriété intellectuelle
- Auteur dc:creator
- Contributeur dc:contributor
- Editeur dc:publisher
- Droits, conditions d'utilisation dc:rights
Instanciation
- Date dc:date
- Type de document (texte, image, son, etc) dc:type
- Format dc:format
- Identifiant dc:identifier
Présentation des 15 éléments sur le site officiel du Dublin Core
Intermarc Format bibliographique
Le format INTERMARC est le format de travail de la Bibliothèque nationale de France. C'est dans ce format que sont stockées, gérées et créées les données bibliographiques et d’autorité disponibles dans son catalogue.
Documentation du format INTERMARC de diffusion des métadonnées descriptives de la BnF :
Unimarc Format bibliographique
UNIMARC (acronyme pour UNIversal MARC) est le format développé par l’IFLA pour permettre l’échange de l’information bibliographique informatisée et servir d’interface entre les formats MARC nationaux.
En France, c’est le format officiel d’échange de l’information bibliographique et le format de travail du Sudoc (Système universitaire de documentation) et de la plupart des bibliothèques publiques.
Le manuel UNIMARC permet de consulter facilement l'organisation des informations par blocs.
Le format UNIMARC de diffusion de la BnF résulte de la conversion en UNIMARC des données saisies en INTERMARC dans le catalogue général de la BnF. Il respecte la structure du Manuel UNIMARC défini au niveau international par l'IFLA, mais sans perdre pour autant la richesse des données saisies à la source en INTERMARC afin de permettre une réutilisation optimale de ces données dans les catalogues locaux. Il faut donc consulter la documentation du format Unimarc de diffusion des métadonnées descriptives de la BnF pour en avoir une vue exhaustive.
Accès
Formulaire de requêtes : http://catalogue.bnf.fr/api
Page normative SRU de présentation : http://catalogue.bnf.fr/api/SRU?version=1.2&operation=explain
Exemple de requête : http://catalogue.bnf.fr/api/SRU?version=1.2&operation=searchRetrieve&query=bib.anywhere all "julien gracq"
Fiche Technique
Version1
FormatXML
Licence TechnologiesSRU Dublin Core Unimarc Intermarc