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 : vue d'ensemble

Conçu en 2002 par le groupe « ZING » ( Z39.50 International Next Generation) pour s’adapter 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).

Le protocole et ses évolutions sont désormais pris en charge par le consortium OASIS (Organization for the Advancement of Structured Information Standards). Une version 2.0 est en cours de spécification. Elle est hébergée sur le site de la Bibliothèque du Congrès : http://www.loc.gov/standards/sru/sru-2-0.html ou consultable sur le site d’OASIS : OASIS Standard SRU 2.0 version 1.0.

La version actuelle 1.2 est consultable : SRU version 1.2 (en anglais).

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: Exemple de requête : Recherche « victor hugo »
http://lx2.loc.gov:210/lcdb?version=1.1&operation=searchRetrieve&query=%22victor%20hugo%22&maximumRecords=5

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.

En savoir plus

Formuler une recherche

 « Contextes » et « Index »

Le protocole SRU permet à chaque serveur de définir  des « index » de recherche. 
Exemple : Un index ‘title’ pour des recherches Titre ou ‘author’ pour des recherches Auteur.

Le protocole SRU permet également de préciser des « contextes ».

Exemple :
Les formats Marc21 et Dublin Core sont deux formats utilisés par une bibliothèque. Ils vont former deux « ensembles de contexte » (context set) et chacun de ces formats pourra être interrogé selon ses caractéristiques propres selon le protocole CQL.
La requête « rechercher tous les enregistrements dont le champ ‘245$a’ contient le mot ‘France’ » est comparable à la requête « rechercher tous les enregistrements dont l’élément ‘title’ contient le mot ‘France’ » ; ces deux requêtes doivent préciser dans quel « contexte » elles interrogent les index Marc21 ‘245$a’ ou Dublin Core ‘title’.
Un index SRU nommé ‘title’, préfixé par le contexte ‘marc21’ (‘marc21.title’) ou par le contexte ‘dc’ (‘dc.title’), permettra de préciser dans quel « contexte » doit s’exécuter la requête.

jeudi 29 juin 2017

É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