-
Notifications
You must be signed in to change notification settings - Fork 0
API GALLICA RECHERCHE SRU
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.
*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