Protocole SRU : Vue d’ensemble

Le protocole d’échange de métadonnées SRU (Search/Retrieval via URL) a été conçu en 2002 comme une adaptation du protocole Z39.50 aux standards technologiques du web (protocole HTTP et format XML). 

Historique du protocole 

Conçu en 2002 par le groupe « ZING » ( Z39.50 International Next Generation) pour adapter le protocole Z39.50 aux technologies du web,  le protocole SRU a été développé et maintenu par la Bibliothèque du Congrès jusqu’en février 2013.  Les différentes versions des spécifications sont consultables : http://www.loc.gov/standards/sru (en anglais).
La dernière version 1.2 est consultable sur le site de la Bibliothèque du Congrès : SRU version 1.2 (en anglais).
Une version 2.0 est en cours de spécification. Ces spécifications sont gérées par le consortium OASIS (Organization for the Advancement of Structured Information Standards) et sont consultables sur le site d’OASIS : OASIS Standard SRU 2.0 version 1.0 ou sur le site de la Bibliothèque du Congrès : http://www.loc.gov/standards/sru/sru-2-0.html.

Description du protocole

Le protocole SRU prévoit la communication entre un serveur et un client via le protocole HTTP (HyperText Transfer Protocol). La requête peut utiliser l’une des deux méthodes suivantes de HTTP :
  • GET (requête demandant la représentation de la ressource spécifiée) ;
  • POST (requête soumettant des données à la ressource identifiée, les données étant incluses dans le corps de la requête).
Le protocole SRU (Search/Retrieval via URL) fait circuler les requêtes http à l’intérieur des URLs en utilisant l’architecture REST (Representational State Transfer).
Son protocole jumeau SRW (Search/Retrieve Web service), créé en même temps que le protocole SRU, est son exact pendant mais basé, non pas sur l’usage d’URLs, mais sur l’offre de web services faisant transiter les requêtes http encapsulées dans du xml suivant le protocole SOAP (Simple Object Access Protocol).
La réponse est un flux XML (eXtensible Markup Language).
L’usage des URLs fait, du protocole SRU, un protocole simple d’usage pour les utilisateurs d’Internet: 
 

 

A noter qu’il existe techniquement des solutions relativement simples pour transformer un serveur Z39.50 en serveur SRU (YAZ Proxy développé par Index Data).

Types de requêtes

Trois types de requêtes, ou « opérations », sont prévus :
  • « Explain » (Expliquer) : renseigne le client sur le serveur interrogé et les possibilités d’interrogation.
Cette réponse indique le nom du serveur, permet d’indiquer l’adresse d’autres serveurs pour faciliter la découverte de ressources, donne une liste des index interrogeables (« auteur », « titre », « date », etc.) et les schémas de métadonnées interrogeables (« marcxml », « mods », « Dublin Core », etc.).
Dans la version 1.2, les serveurs doivent être en mesure de répondre à la requête Explain, mais seuls les éléments suivants de la réponse sont obligatoires : protocole (SRU), transport (http ou https), méthode supportées (get, post ou soap), adresse de la base de données. La réponse suit le schéma ZeeRex.
Pour en savoir plus sur ZeeRex : «An Overview of ZeeRex », 28 août 2002.
  •  « SearchRetrieve » (Rechercher) : l’opération principale de SRU.
Elle permet de rechercher et d’obtenir les enregistrements correspondant à la recherche formulée. Cette opération a deux paramètres obligatoires : version du protocole et requête (« query »). La requête elle-même est formulée selon le langage de requête CQL « Contextual Query Language » (Langage de requête contextuel).
Pour en savoir plus sur CQL : CQL Spécifications
  • « Scan » (liste d’entrées d’index) : permet d’obtenir une liste d’entrées d’index en se positionnant à un endroit déterminé et de savoir le nombre de résultats liés à ces entrées d’index.
Cette opération sert à sélectionner des termes avant de lancer une recherche ou à vérifier une liste de résultats vide. La réponse à l’opération Scan est optionnelle.
Par défaut, si aucune opération n’est spécifiée dans la requête, le serveur doit répondre comme s’il s’agissait de l’opération Explain.
Outre les trois opérations et leur syntaxe, le protocole SRU prévoit également la syntaxe des messages d’erreur et la possibilité d’ajouter de l’information, aussi bien à la requête que dans la réponse.