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

Ce protocole est développé et maintenu par la Bibliothèque du Congrès et les différentes versions des spécifications sont consultables : http://www.loc.gov/standards/sru/ (en anglais).

Conçu par le groupe « ZING » pour « Z39.50 International Next Generation », il est publié en 2002 en version 1.1 sous la forme de deux protocoles jumeaux SRU (Search and Retrieve via URL) et SRW (Search and Retrieve via Web Services), désignés ensemble par le sigle « SRU/W ».

La version actuelle (version 1.2) date de 2007. Une version 2.0 est en cours de préparation.

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).

La requête peut aussi être formulée selon le protocole SOAP. Ce protocole est théoriquement indépendant du protocole HTTP.

La réponse est un flux XML (eXtensible Markup Language).

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).
  • « 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

Protocoles de transport

 « Contextes » et « Index »

Le protocole SRU permet à chaque serveur de définir des « contextes » et des « index » et d’établir des tables de correspondance.

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 ‘245$a’ ou ‘title’.

L’administrateur du serveur SRU peut établir des correspondances entre les index ou restreindre des index à certains contextes.

SRU un outil performant mais...

Le protocole SRU est un outil performant, permettant d’interroger de façon synchrone le contenu des métadonnées d’une base.

Il présente cependant plusieurs défauts :

  • Instabilité : la version 1.2 a été validée en 2007 et un projet de version 2.0 a été publié en juillet 2009. Même la Bibliothèque du Congrès chargée de la maintenance du protocole n’a pas développé de serveur supportant la version 1.2.
  • Faible documentation : la version 1.2 en ligne annonce depuis plus de deux ans des introductions à SRU, CQL et ZeeRex, ainsi qu’une foire aux questions, une liste des bonnes pratiques et des exemples de flux XML correspondant au protocole.
  • Faible communauté d’utilisateurs : même si des SIGB intègrent des connecteurs d’interrogation SRU, le nombre de serveurs interrogeables et stables ne dépasse pas la dizaine.
  • Peu d’outils open source.
  • Complexité et encore trop faible normalisation des index et contextes.

Il existe néanmoins des solutions relativement simples pour transformer un serveur Z.3950 en serveur SRU (YAZ Proxy développé par Index Data).

mercredi 18 décembre 2013

É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