Soutenez
le Trésor national
Formulaire de recherche

Pour les professionnels

SRU (Search/Retrieval via URL)

Le protocole d’échange de métadonnées SRU (Search/Retrieval via URL) est l’équivalent fonctionnel du protocole Z39.50 en s’adaptant aux standards technologiques du web (protocole http et format XML).

SRU : formuler une recherche et lire l'information bibliographique

Paramètres de la requête

Nom Obligatoire/
Facultatif
Description
operation
(opération)
Obligatoire Comprend la chaîne de caractères « searchRetrieve ».
version
(version)
Obligatoire Désigne la version de la requête et vaut déclaration par le client qu’il désire une réponse dans cette version ou une version inférieure.
query
(recherche)
Obligatoire L’équation de recherche exprimée en CQL (Code Query Language) que doit traiter le serveur.
startRecord
(premier enregistrement)
Facultatif Désigne la position du premier enregistrement de la réponse au sein de l’ensemble des enregistrements répondant à la recherche. La première position dans l’ensemble est 1. La valeur indiquée doit obligatoirement être supérieure à 0. La valeur par défaut est 1.
maximumRecords
(nombre maximal d'enregistrements)
Facultatif Le nombre d’enregistrements que le serveur doit envoyer en réponse à la requête. La valeur indiquée doit obligatoirement être un entier positif. La valeur par défaut est déterminée par le serveur. Le serveur a le droit d’envoyer un moins grand nombre d’enregistrements, par exemple s’il y en a moins qui réponde à la recherche que spécifié par la requête, mais il ne doit pas envoyer un plus grand nombre d’enregistrements.
recordPacking
(formalisme des enregistrements)
Facultatif Comprend une chaîne de caractères qui indique comment les enregistrements doivent être encodés (document XML ou codage URL). Les valeurs définies sont « string » et « xml ». La valeur par défaut est « xml ».
recordSchema
(schéma des enregistrements)
Facultatif Définit le schéma dans lequel le serveur doit envoyer les enregistrements. La valeur est l’identifiant URI du schéma ou l’abréviation pour celui-ci déclarée par le serveur. La valeur par défaut est déterminée par le serveur.
recordXPath
(inutilisé dans la version 1.2)
   
resultSetTTL Facultatif Définit la durée (exprimée en secondes) pendant laquelle le client requiert que l’ensemble répondant à la requête soit maintenu. Le serveur a le droit de ne pas respecter ce critère. La valeur par défaut est déterminée par le serveur.
sortKeys
(inutilisé dans la version 1.2)
   
stylesheet Facultatif Déclare l’URL d’une feuille de style. Le client requiert que cette URL soit incluse dans la réponse.
extraRequestData Facultatif Donne des informations complémentaires au serveur pour procéder (cf. Extensions).

Exemple : Recherche du mot « dinosaur »
http://z3950.loc.gov:7090/voyager?version=1.1&operation=searchRetrieve&query=dinosaur&maximumRecords=1&recordSchema=dc
Cet exemple spécifie qu’il y ait au plus un enregistrement dans la réponse, et qu’il soit conforme au schéma « dc ».
[ndt : Cet exemple définit la requête adressée au serveur de la Bibliothèque du Congrès (http://z3950.loc.gov:7090/voyager) : la requête suit la version 1.1 (la réponse doit être de la même version) demande la recherche (opération searchRetrieve) du terme « dinosaur » (query=dinosaur) en précisant que la réponse doit contenir au maximum un enregistrement (maximumRecords=1) et que l’enregistrement soit mis en forme selon le schéma « dc » (ici abréviation de Dublin Core)].

Paramètres de la réponse

La réponse à une requête SRU searchRetrieve request est un document XML.
Le tableau ci-dessous donne une liste et une description brève des éléments fournis par le document XML. La colonne « Type » indique soit un type XML Schema (« xsd: ») [types définis dans les recommandations XML Schema du W3C (version originale en anglais, version française)], soit un type défini à l’intérieur du schéma.

Nom Type Obligatoire/
Facultatif
Description
version
(version)
xsd:string Obligatoire Version de la réponse. Celle‑ci doit obligatoirement être inférieure ou égale à la version demandée par le client.
numberOfRecords
(nombre d’enregistrements)
xsd:integer Obligatoire Nombre d’enregistrements répondant à la recherche. Si la recherche échoue, ce nombre doit obligatoirement être 0.
resultSetId
(identifiant de l’ensemble de résultats)
xsd:string Facultatif Identifiant de l’ensemble de résultats qui a été créé par l’exécution de la recherche.
resultSetIdleTime
(durée de maintenance de l’ensemble de résultats)
xsd:integer Facultatif Intervalle de temps (exprimé en secondes) après lequel l’ensemble de résultats créé par l’exécution de la recherche est détruit. L’ensemble de résultats peut aussi cesser d’être disponible avant le temps écoulé.
records
(enregistrements)
liste d'éléments
record
Facultatif Liste d’enregistrements correspondant à la recherche, ou diagnostics remplaçant les enregistrements.
nextRecordPosition
(position de l’enregistrement suivant)
xsd:integer Facultatif Position dans l’ensemble des résultats qui suit celle du dernier enregistrement de la réponse. S’il n’y a pas d’enregistrement suivant, ce champ doit obligatoirement être omis.
diagnostics
(diagnostics)
liste d'éléments
diagnostic
Facultatif Liste de diagnostics d’erreurs générés pendant l’exécution d’une recherche.
extraReponseData
(données hors réponse)
xmlfragment Facultatif Information supplémentaire dans la réponse du serveur.
echoedSearch
RetrieveRequest

(répétition de la requête searchRetrieve)
echoedSearch
RetrieveRequest
Facultatif Paramètres de la requête répétés par le serveur dans un formalisme XML [ce paramètre facultatif dans SRU correspond à un principe de base dans le protocole OAI‑PMH].

Constitution des enregistrements

Dans le cadre de SRU, tous les enregistrements sont communiqués dans un formalisme XML. Il n’est pas spécifié que les enregistrements sont stockés en XML. Les enregistrements qui ne sont pas nativement en XML doivent être transformés en XML avant d’être communiqués. Il est possible d’exprimer les enregistrements dans la réponse comme une chaîne de caractères simple ou comme du XML embarqué. Si un enregistrement est communiqué dans un formalisme XML, il doit obligatoirement être bien formé et il doit être valide selon le schéma d’enregistrement déclaré.

Le paramètre « records » dans une réponse est une liste d’éléments « record », dont chacun contient soit un enregistrement, soit un diagnostic de remplacement, expliquant pourquoi tel enregistrement n’a pas pu être communiqué. Si le schéma d’enregistrement est inconnu ou si l’enregistrement ne peut être mis en forme selon ce schéma, alors le serveur doit obligatoirement répondre avec un diagnostic.

Paramètres des enregistrements

Chaque enregistrement est structuré selon les éléments suivants.

Nom Type Obligatoire/
Facultatif
Description
recordSchema
(schéma de l’enregistrement)
xsd:string Obligatoire L'identifiant URI du schéma XML dans lequel l'enregistrement est encodé. Même si la requête peut utiliser l'abréviation déclarée par le serveur [ndt: par exemple « dc » à la place de « info:srw/schema/1/dc-v1.1 » pour le serveur de la Bibliothèque du Congrès], la réponse doit toujours indiquer l'URI complet. (cf. Record Schemas sur le site de la Bibliothèque du Congrès).
recordPacking
(formalisme de l'enregistrement)
xsd:string Obligatoire Le formalisme de l'enregistrement utilisé dans la section recordData (données de l'enregistrement), tel que spécifié par le client ou la valeur par défaut.
recordData
(données de l'enregistrement)
stringOrXmlFragment Obligatoire L'enregistrement lui-même, soit comme chaîne de caractère, soit comme fichier XML inclus.
recordIdentifier
(identifiant de l’enregistrement)
uniquement dans la version 1.2
xsd:string Facultatif
en version 1.2
interdit
en version 1.1
Un identifiant attribué à l'enregistrement, par lequel celui-ci pourra être désigné sans ambiguité et récupéré lors d'une opération ultérieure. Par exemple par l'index « rec.identifier » du CQL.
recordPosition
(position de l'enregistrement)
xsd:positiveInteger Facultatif La position de l'enregistrement au sein de l'ensemble des résultats (cf Result Sets sur le site de la Bibliothèque du Congrès).
extraRecordData
(données hors enregistrement)
xmlfragment Facultatif Toute information supplémentaire que le serveur doit transmettre avec l'enregistrement (cf. Extensions sur le site de la Bibliothèque du Congrès).

Exemple d'enregistrement

Dans le format correspondant au schéma Dublin Core et dans le formalisme XML

Exemple d’enregistrement, dans le format correspondant au schéma Dublin Core et dans le formalisme XML

Formalisme de l'enregistrement (recordPacking)

Pour que les enregistrements qui ne sont pas bien formés ne créent pas d’erreur sur l’ensemble du message [ndt : le message de réponse doit obligatoirement être un document XML bien formé et valide], il est possible de demander qu’ils soient transformés en une simple chaîne de caractères avec les signes « < », « > » et « & » en caractères d’échappement, sous la forme des entités HTML. De plus, il se peut que certains outils soient incapables de faire la distinction entre le XML des enregistrements et le document XML qui constitue la réponse.

Pourtant, il se peut que certains clients préfèrent que les enregistrements soient communiqués en XML de façon à les traiter directement avec une feuille de style qui mette en forme les enregistrements et, éventuellement aussi, l’interface pour l’utilisateur.

La distinction est faite par le paramètre « recordPacking » :

  • si la valeur est « string », le serveur doit utiliser les caractères d’échappement avant de communiquer les enregistrements ;
  • si la valeur est « xml », il doit insérer les données en XML directement dans la réponse.

Dans les deux cas, les données sont communiquées à l’intérieur du champ « recordData ».
Si le serveur ne peut pas répondre à la requête conformément au formalisme spécifié, alors il doit renvoyer un « diagnostic ».

mercredi 19 mars 2014

Écouter la page

En savoir plus

SRU (Search/Retrieval via URL)
sur le site de la Bibliothèque du Congrès

Voir aussi

YAZ Proxy
pour transformer un serveur Z39.50 en serveur SRU
Partagez