Skip to content

API GALLICA RECHERCHE SRU

lpaugois edited this page Nov 18, 2016 · 2 revisions

API GALLICA de Recherche SRU

Contexte

Cette API est une interface de recherche avec le moteur de recherche de Gallica. Il s'agit d'un web services rendant de l'XML, représentant les documents liés à une requête. Nous avons implémenté le protocole de recherche SRU dans sa version 1.2 et dont la norme est disponible ici : Norme SRU Nous avons décidé d'implémenter la partie recherche, ce qui se traduit par l'appel à un web service dont la syntaxe minimale est la suivante. http://gallica.bnf.fr/SRU?version=1.2&operation=searchRetrieve&query=

  • version : LA version de la norme SRU implémntée
  • operation : L'opération que nous désirons effectuer
  • query : la requête pour laquelle j'aimerai que l'API me renvois des résultats La valeur du paramètre query est écrit en langage CQL (Contextual Query Language) dont la norme est décrite ici : Norme CQL

En plus de ces 3 paramètres obligatoires, il existe d'autre paramètres optionnels

  • startRecord : il s'agit d'un chiffre compris entre 1 et le nombre maximal de résultat renvoyé par la requête (vous pouvez récupérer cet information dans le flux xml rendu dans l'élément srw:numberOfRecords
  • maximumRecords : il s'agit du nombre de résultat retourné par le service SRU. Ce chiffre est compris entre 0 et 50 (au delà de 50 nous surchargeons la valeur du paramètre côte back-office par 50). Par défaut si ce paramètre est absent, la valeur est de 15 Ces deux derniers paramètres permettent de paginer une liste de documents liés à une requête.

J'ai ma requête initiale :
http://gallica.bnf.fr/SRU?operation=searchRetrieve&version=1.2&query=%28gallica%20all%20%22toto%22%29&suggest=0 je peux la paginer comme suis http://gallica.bnf.fr/SRU?operation=searchRetrieve&version=1.2&query=%28gallica%20all%20%22toto%22%29&suggest=0&startRecord=15 puis http://gallica.bnf.fr/SRU?operation=searchRetrieve&version=1.2&query=%28gallica%20all%20%22toto%22%29&suggest=0&startRecord=30 etc

En ce qui le paramètre query en CQL voici la spécification liée à notre implémentation.

Les mot clé implémentés en CQL

*Liste des indexes de recherches

dc.title : il s'agit d'un champ texte libre permettant la recherche dans l'index Titre

dc.creator : il s'agit d'un champ texte libre permettant la recherche dans l'index des auteurs

dc.publisher : il s'agit d'un champ texte libre permettant la recherche dans l'index editeur

text : il s'agit d'un champ texte libre permettant la recherche dans le texte des documents OCRisés

toc : il s'agit d'un champ texte libre permettant la recherche dans le contenu d'un table des matières indexée

légendes : il s'agit d'un champ texte libre permettant la recherche dans le contenu des légendes associés au document de type image

metadata : permet la recherche dans touts les metadonnées de la notice du documents numériques (titre,auteurs,editeur etc...)

ISBN : il s'agit d'un champ texte libre permettant la recherche dans l'index ISBN

gallica : il s'agit d'un champ texte libre permettant la recherche dans tout (métadonnés, texte tdm etc ....)

dc.date : il s'agit d'un champ texte libre permettant la recherche dans l'index des dates d'éditions(correspond à l’indexation de la balise dc :date, qui peut comporter différents types de formats d’années)

dc.type : il s'agit d'un champ texte libre permettant la recherche dans l'index des type de documents de la bibliothèque numérique. Les valeurs possibles sont monographies,cartes,images,periodiquestitres,manuscrits,partitions,audio et objets. Cela correspond au type de document de la recherche avancée. exemple : http://gallica.bnf.fr/SRU?version=1.2&operation=searchRetrieve&query=dc.type any periodiquestitres

ocrquality : il s'agit d'un champ texte libre permettant la recherche dans l'index de qualité de la numérisation. La valeur est comprise entre 0 et 100. exemple ocrquality any "099.99". Les guillements sont important et le fomat xxx.xx aussi Ceci permet de récuperer une valeur de quality de numérisation 100.00 étant un ocr sans faute. Une fois traduit en nombre, cela nous permet cette chose là, si ocr >= 60 mode texte disponible, si ocr<60 pas de mode texte Cet index n'est pas interrogeable sur un range.

dewey : il s'agit d'un champ texte libre permettant la recherche dans l'index des de classification dewey. La requete se fait sur l'indice dewey
exemple: dewey any 1 =>les documents dont le "thème" Philosophie et psychologie voici la liste des indices et leur signification 0 = Généralités 1 = Philosophie et psychologie 2 = Religion 3 = Économie et société 4 = Langues 5 = Sciences 6 = Techniques 7 = Arts et loisirs 8 = Littérature 9 = Histoire et géographie cela correspond à la partie "par thème" de la recherche avancée. Exemple :
http://gallica.bnf.fr/SRU?version=1.2&operation=searchRetrieve&query=dewey%20all%201

provenance : il s'agit d'un champ texte libre permettant la recherche dans l'index des provenances. Les valeurs possibles sont repérées dans les balises id_provenance des notices des documents. ainsi que la provenance "bnf.fr" pour les document numérisé par la bnf et appartenant à la bnf.

access : il s'agit d'un champ texte libre permettant la recherche dans l'index des droits. Les valeurs possibles sont : fayes : document libre de droits fano : documents sous conditions de ré-utilisation

indexationdate :il s'agit d'un champ texte libre permettant la recherche dans l'index des dates de première indexation du documents numérique. Le format de date possible est YYYYMMJJ exemple sur une date : tout les documents indexés le 20/10/2014 http://gallica.bnf.fr/SRU?version=1.2&operation=searchRetrieve&query=indexationdate%20any%2020141020 ou un interval de date entre le 20/10/2014 et le 20/10/2015 http://gallica.bnf.fr/SRU?version=1.2&operation=searchRetrieve&query=indexationdate%20%3E%2020141020%20and%20indexationdate%20%3C%2020151020

dc.relation : il s'agit d'un champ texte libre permettant la recherche dans l'index relation et qui correspond à l'indexation de la balise dc:relation des notices ce champ d'index est tokenizé ce qui signifie que chaque mot de l'url précédente peut répondre exemple les relations des documents numériques avec une notice du catalogue général http://gallica.bnf.fr/SRU?operation=searchRetrieve&version=1.2&maximumRecods=10&startRecord=1&query=dc.relation%20any%20%22catalogue.bnf.fr%22

dc.rights : il s'agit d'un champ texte libre permettant la recherche dans l'index des droits. Il s'agit du contenu des balises dc:rights des notices dc.source : il s'agit d'un champ texte libre permettant la recherche dans l'index des sources. Il s'agit du contenu des balises dc:source des notices dc.subject : il s'agit d'un champ texte libre permettant la recherche dans l'index des sujets. Il s'agit du contenu des balises dc:subject des notices dc.format : il s'agit d'un champ texte libre permettant la recherche dans l'index des format. Il s'agit du contenu des balises dc:format des notices dc.language : il s'agit d'un champ texte libre permettant la recherche dans l'index des langues dans laquelle le documents original a été édité. Cela correspond à l'indexation de la balise dc:language des notices la normalisation bnf est la suivante code langue sur 3 caractères :

		ale = Aléoute
		alg = langues algonquiennes
		ang = anglo-saxon
		ara = Arabe
		arm = Arménien
		aze = Azéri
		ber = Berbère
		bre = breton
		bul = Bulgare
		cat = Catalan
		cau = Caucasiennes, autres langues
		che = Tchétchène
		chi = Chinois
		cop = copte
		cos = Corse
		cpf = Créoles et pidgins français, autres
		cze = Tchèque
		dan = danois
		dut = Néerlandais
		eng = Anglais
		enm = anglais moyen
		epo = Espéranto
		est = Estonien
		eth = Ethiopien
		fin = Finnois
		frd = Français, Dialectes
		fre = Français
		frm = Français moyen
		fro = Français ancien
		gaa = Ga
		ged = Gade
		gem = Langues germaniques
		geo = Géorgien
		ger = Allemand
		gez = guèze
		gle = Irlandais
		glg = Galicien
		gmh = moyen haut allemand
		goh = vieux haut allemand
		got = gothique
		grc = Grec
		gre = grec moderne (1453-)
		haw = hawaïen
		heb = Hébreu
		hun = Hongrois
		ita = Italien
		itd = italien ancien
		jpn = Japonais
		kab = Kabyle
		lan = Languedocien
		lat = Latin
		lav = Letton
		lit = Lituanien
		mlg = Malgache
		mul = Multilingue
		nor = Norvégien
		oci = occitan (après 1500)
		oss = Ossète
		ota = Turc ottoman (1500-1928)
		per = Persan
		pol = Polonais
		por = Portugais
		pro = Provençal ancien
		pus = Pachto
		roa = Langue Romane
		rom = Roumain
		rum = Roumain
		rus = Russe
		scc = Serbe
		scr = Croate
		slo = Slovaque
		spa = Espagnol
		swe = Suédois
		tat = Tatar
		ukr = Ukrainien
		und = indéterminée
		uzb = Ouszbek
		vie = vietnamien
		wel = Gallois
		yid = Yiddish
		yor = Yoruba

		exemple : 
		http://gallica.bnf.fr/SRU?operation=searchRetrieve&version=1.2&maximumRecods=10&startRecord=1&query=dc.language%20any%20yor

		Ceci est vrai pour les documents de provenance bnf.fr, mais chez nos partenaires pas de normalisation sur le code langue

dc.identifier : il s'agit d'un champ texte libre permettant la recherche dans l'index des identifiants liés à un documents numérique. Cela correspond à l'indexation de la balise dc:identifier

dc.description : il s'agit d'un champ texte libre permettant la recherche dans l'index des descriptions associées à un document numérique. Il s'agit d'un contenu de la balise dc:description

*Liste des opérateurs possibles pour intéroger un champ d'index :

all : correspond à tous les mots. Il faut mettre des guillemets autour du / des termes recherchés si plus d’un. any : L’un de mots au moins. Il faut mettre des guillemets autour du / des termes recherchés si plus d’un.

adj : Il s'agit de l'expression exacte/ égal.Il faut mettre des guillemets autour autour du / des termes recherchés

Sur les indexes dates (dc.date, indexationdate) on peut aussi utilisé les éléments classique suivant : < , <= , > , >=

Ceci nous permet de générer des éléments de requête unitaire exemple : dc.language any "yor"

On peut ensuite utiliser l'algèbre de bool avec les éléments suivant pour combiner le tout. and signifie et or signifie ou not signifie sauf

A noté que le parenthésage est également prit en compte pour isoler des sous requête dans la requête principale.

* Les critères de tri 

A la fin du paramètre query une fois que la requêtes est construite, on peut ajouter toujours en CQL, un critère de tri. Voici les posiibilités :

dc.creator/sort.ascending : tri par ordre croissant des auteur dc.title/sort.ascending : tri par ordre croissant des titres dc.date/sort.ascending : tri par ordre croissant des date d'edition dc.date/sort.descending : tri par ordre décroissant des date d'édition ocr.quality/sort.descending : tri par ordre décroissant de la qualité de l'ocr indexationdate/sort.descending : tri par ordre décroissant des date de mise en ligne

##Exemples

* des recherche combinant des indexes de recherche
	*	Recherche des 10 premières images  dans l’ensemble des images de Gallica contenant le mot « Hugo »
		http://gallica.bnf.fr/SRU?operation=searchRetrieve&version=1.2&maximumRecords=10&startRecord=1&query=dc.type adj images and gallica any "Hugo"

	*	Recherche des 10 premières images  dans l’ensemble des images de Gallica avec un titre contenant le mot « Hugo » 
		http://gallica.bnf.fr/SRU?operation=searchRetrieve&version=1.2&maximumRecords=10&startRecord=1&query=dc.type adj images and dc.title any "Hugo"

	*	Recherche des 10 premières images  dans l’ensemble des images de Gallica avec un auteur contenant le mot « Hugo » .
		http://gallica.bnf.fr/SRU?operation=searchRetrieve&version=1.2&maximumRecords=10&startRecord=1&query=dc.type adj images and dc.creator any "Hugo"

* des recherches permettant la pagination 
	*	Recherche des  images de 11 à 20 dans l’ensemble des images de Gallica contenant le mot « Hugo »
		http://gallica.bnf.fr/SRU?operation=searchRetrieve&version=1.2&maximumRecords=11&startRecord=1&query=dc.type adj images and gallica any "Hugo"

	*	Recherche des images  11 à 20  dans l’ensemble des images de Gallica avec un titre contenant le mot « Hugo » 
		http://gallica.bnf.fr/SRU?operation=searchRetrieve&version=1.2&maximumRecords=11&startRecord=1&query=dc.type adj images and dc.title any "Hugo"

	*	Recherche des images  11 à 20  dans l’ensemble des images de Gallica avec un auteur contenant le mot « Hugo » .
		http://gallica.bnf.fr/SRU?operation=searchRetrieve&version=1.2&maximumRecords=11&startRecord=1&query=dc.type adj images and dc.creator any "Hugo"

* exemple de tri 

	*	Liste des documents dont la date de mise en ligne est le 01/12/2007, triée par titre : 
		http://gallica.bnf.fr/SRU?operation=searchRetrieve&version=1.2&query= indexationdate adj "20071201" sortby dc.title/sort.ascending

	*   Liste des documents dont le titre contient le mot “balzac” ou “hugo” et la description contient “sorbonne” triée par title :
		http://gallica.bnf.fr/SRU?operation=searchRetrieve&version=1.2&query= dc.title any  "balzac hugo" and dc.description adj "sorbonne" sortby dc.title/sort.ascending

Clone this wiki locally