Cycle T. – 19-23 avril 2010. – ENSSIB, Villeurbanne Gestion informatisée des bibliothèques...
-
Upload
rosette-benoit -
Category
Documents
-
view
106 -
download
1
Transcript of Cycle T. – 19-23 avril 2010. – ENSSIB, Villeurbanne Gestion informatisée des bibliothèques...
Cycle T. – 19-23 avril 2010. – ENSSIB, VilleurbanneGestion informatisée des bibliothèques
Philippe.Bourdenet @univ-lemans.fr
La recherche fédérée et les protocoles en usage dans les bibliothèques
pour un dialogue entre applications
Une nouvelle donne technologique
Problèmes d’intégration des outils de référencement dans les systèmes d’information
CatalogueCatalogue collectif
Périodiques en ligne
Thèses en ligne
e-books
Ressources pédagogiquesRessources multimédiasBases de signets
Enregistrements sonores
Catalogues de bibliothèquesassociées ou partenaires
Archives ouvertes
Sources hétérogènes
Imprimés : appareil de description bibliographique évolué (+)
Documents électroniques : contrainte éditoriale forteAppareil de description bibliographique faible (-)
Cédéroms : type hybride (« semi-dématérialisé ») car il reste un objet de prêt ou de circulation
E-books
Thèses en ligne (pdf, html, xml, …)
Ressources pédagogiques ou informationnelles produites par une institution
Périodiques en ligne
Images fixes/images animées
Documents sonores (musicaux/non musicaux)
Ces ressources électroniques sont prisonnières de plates-formes ce qui les range aussi, d’une certaine façon dans le web invisible, mais qui ne communique pas pour autant avec les OPAC…
Passage dans la dénomination des bibliothécaires, du terme de « LECTEUR » au terme d’ « USAGER »
Marginalisation de l’imprimé avec les collections numériques ; ce qui peut-être vécu comme un paradoxe par la profession car l’imprimé mobilise la plus grande partie du temps/homme disponible alors que le volume des collections numériques est bien supérieur :
Exemple d’un bibliothèques de recherche :700 titres de périodiques papier conservés sur une période de 5 ans. Service de 4 personnes14500 titres de périodiques électroniques dont des archives supérieures à 20 ans. Service de 0.5 personne
Soit : 5% du nombre de titres pour l’imprimé
- L’OPAC reste un réservoir d’informations sur l’imprimé - Le « système d’information » ne permet pas toujours de naviguer d’une source à l’autre…
Problématiques émergentes
Ces ressources restent invisibles quand elles sont fournies sous forme de flux, prisonnières de bouquets qui ne se manifestent pas dans un OPAC
Sur le parcours de l’usager…
rq1 rq2 rq3 rq4 rq5 rq6 rq7 rq8 rq9
OP
AC
Cat
alog
ue lo
cal
Cat
alog
ue c
olle
ctif
Res
sour
ce é
lect
roni
ques
Céd
érom
s
Thè
ses
en li
gne
Z39-50
Pér
iodi
ques
en
ligne
Res
sour
ce p
édag
ogiq
ues
Ori-OAI
Imag
es
Doc
umen
ts s
onor
es
Bou
quet
1
Bou
quet
2
Bou
quet
3
E-b
ooks
Alors que l’on aimerait avoir :O
PA
CC
atal
ogue
loca
l
Cat
alog
ue c
olle
ctif
Res
sour
ce é
lect
roni
ques
Céd
érom
s
Thè
ses
en li
gne
Z39-50 E-b
ooks
Pér
iodi
ques
en
ligne
Res
sour
ce p
édag
ogiq
ues
Imag
es
Doc
umen
ts s
onor
es
Bou
quet
1
Bou
quet
2
Bou
quet
3
Point d’entrée unique
Alors que l’on aimerait avoir :O
PA
CC
atal
ogue
loca
l
Cat
alog
ue c
olle
ctif
Res
sour
ce é
lect
roni
ques
Céd
érom
s
Thè
ses
en li
gne
Z39-50
Pér
iodi
ques
en
ligne
Res
sour
ce p
édag
ogiq
ues
Imag
es
Doc
umen
ts s
onor
es
Bou
quet
1
Bou
quet
2
Bou
quet
3
Point d’entrée unique
E-b
ooks
Résolveurs de liens
Base de données bibliographiques
Résolveur de liens
SIDDéclaration des bouquets
par un tiers
Affichage d’icones
SFX, EBSCO,…
Schémas de mise en œuvre de l’interopérabilité (1)
Avec une bibliothèque JAVA ou php, il est
possible de générer un fichier iso 2709 à partir
d’un fichier .csv
Import de notices UNMVia iso 2709
(SUDOC, Moccam,BnF, Zebris…)
OPAC
Import de notices d’autorité iso2709
Imports de notices de documents électroniques
Iso 2709
Problème : les états de collections : leur mise à jour est difficile
grande mouvance dans les titres.
peu de visibilité sur les titres, pour une institution : il est difficile d’obtenir une liste précise et à jour.
BDD
Un exemple à ne pas suivre !
IGP
Catalogue d’imprimés
(oracle/Mysql)
Exemple : l’utilisateur peut choisir ses sources à l’aide de cases à cocher : c’est une recherche fédérée
OPAC
Catalogue de périodiques en ligne (Mysql)
Catalogue d’e-books (Mysql)
connecteurs
Ori-OAI Ressources pédagogiques
Thèses électroniques
Interopérabilité de niveau 1
Interopérabilité de niveau 2Recherche frédérée
Schémas de mise en œuvre de l’interopérabilité (2)
Pour conclure…
L’effort de construction de l’interopérabilité est indispensable, sinon nous « perdons » l’usager…
= nous l’égarons un peu plus
= nous le voyons préférer des moteurs commerciaux
Il est possible de se positionner sur le marché en tant qu’institution (=source fiable ) grâce à des WebServices qui « déportent » nos bases de données dans d’autres environnements (une occasion à saisir ?)
Systèmes documentaires classiques Internet
Taille de la base limitée – croissance linéaire avec le temps
Milliers de Go - croissance exponentielle
Informations secondaires Bases externes sur lesquelles aucune action n’est possible, en particulier pour l’indexation
Bases internes : responsabilité de constitution, de mise à jour et d’indexation de la base
Bases externes sur lesquelles aucune action n’est possible, en particulier pour l’indexation
Homogénéité des sources et des informations : la base recouvre un ou plusieurs domaines bien circonscrits avec une approche précise (commerciale, scientifique ou autre)
Hétérogénéité des sources et des informations : on trouve tout sur les réseaux – plus de domaines restreints, toutes les approches (scientifique, commerciale, vulgarisation, etc.)
Tableau comparatif des caractéristiques des systèmes documentaires « classiques » et des plates-formes disponibles sur Internet
Pour les professionnels de l’info-doc, en particuliers pour les administrateurs de systèmes, ces oppositions peuvent être résumées ainsi :
Systèmes documentaires classiques Internet
Format unique de présentation des données Formats multiples en évolution incessante
Bases structurées (champ de catalogage renseigné)
Sites web non structurés – utilisation minimale des balises méta
Existence d’un langage d’indexation (thésaurus) adapté au domaine et à la base
Pas de langage d’indexation : pas de thésaurus couvrant l’ensemble des domaines de connaissance – trop d’acteurs différents interviennent
Indexation avec un thésaurus adapté Indexation des moteurs de recherche sur le web de très bas niveau (0 ou 0+ selon les sites)
Indexation de la totalité des corpus Indexation d’une partie. Il existe 2 formes de sites : web accessible (visible) et web invisible (pages générées par une requête, pages dont on a refusé qu’elles soient référencées, pages intranet protégées par un firewall)
Informations vérifiées (sources connues) Informations non validées
Monolinguisme, au moins des index ou descriptions
Multilinguismes
Outils d’interrogation unique, adapté à la base et au langage utilisé
Mélange des modes de recherche : répertoires, mots, navigation
Souci de la cohérence des informations (travail de documentaliste/bibliothécaire)
Alimentation réalisée par un webmaster , pas forcément les mêmes problématiques (souci de présentation, de diffusion, d’impact des informations
(1)Abderrazak Mkadmi, Imad Saleh, Bibliothèque numérique et recherche d’informations
Problème majeur : chacune des sources qui gravitent autour du catalogue disposent de leurs propres outils de recherche, de leurs propres index, de leur propre appareil de description
Exemples de recherche dans des sources hétérogènes :Je cherche des articles sur les langages de programmation informatique à l’usage des linguistes, en
français ou en anglais (les deux langues que je parle), publiés ces 10 dernières années
FRANCIS : linguistique.df. or linguistique.pb. or linguistique.cf. or linguistique.hw. or linguistique.in. or linguistique.ti. or linguistique.ca. or linguistique.tt. or linguistique.if. or linguistique.ar. or linguistique.da. or linguistique.ab. or linguistique.ts. or linguistique.jx. or linguistique.de.} & {programmation.df. or programmation.ti. or programmation.cf. or programmation.hw. or programmation.jx. or programmation.tt. or programmation.ca. or programmation.in. or programmation.ar. or programmation.da. or programmation.ab. or programmation.pb. or programmation.de.}&{ article.pt.}&{ (french or english).lg.}&{ ("1999" or "2004" or "2006" or "2003" or "2000" or "2001" or "2008" or "2007" or "2002" or "2009" or "2005").yr.}
Je cherche l’ensemble des thèses soutenues devant l’Université du Maine en 2008 et disponibles sous format électronique
SUDOC : http://www.sudoc.abes.fr/LNG=FR/DB=2.1/IMPLAND=Y/CHARSET=ISO-8859-1/CMD?FRM=&ACT=SRCHM&Recherche=Recherche&MATCFILTER=Y&MATCSET=Y&NOSCAN=Y&PARSE_MNEMONICS=N&PARSE_OPWORDS=N&PARSE_OLDSETS=N&ACT0=SRCH&IKT0=63&TRM0=mans+2008&ACT1=*&IKT1=4&TRM1=&ACT2=*&IKT2=1016&TRM2=&ACT3=*&IKT3=1016&TRM3=&SRT=RLV&ADI_JVU=&ADI_TAA=&ADI_LND=&ADI_MAT=O&ILN_DEP_BIB=DEP&ADI_BIB=&NOT_USED_ADI_BIB=&NOT_USED_ADI_ILN=
Le « web invisible »
Le Web invisible ou Web caché est la partie du Web correspondant à l'ensemble des documents qui ne sont pas indexés par les outils de recherche traditionnels. « Les ressources du Web invisible comprennent, entre autres, les sites Web construits autour d'une base de données (interrogeable uniquement par un moteur de recherche interne), les pages accessibles par un formulaire de recherche, les pages protégées par un mot de passe, les pages interdites aux robots d'indexation, les pages écrites dans des formats propriétaires, les intranets et les extranets. »
Inconvénient majeur des systèmes interopérables : on reste tout de même dans le « web invisible »
Site institutionnel
Bases de donnéesOPACs
Ressources électroniques
Éditeurs
Les bases de données
Un ensemble structuré d'informations, regroupées sous la forme d'enregistrements stockés sur un système de fichiers logique
ou physique, conçu pour permettre une consultation et une modification aisée de son contenu.On la gère avec un SGBD (Système de gestion de bases de données).Les informations sont stockées dans des tables. Chaque table a un nom unique. Il n'y a pas de vide : toutes les cases ont
une valeur, qui par défaut est "null" (!).
Les champs (attributs) sont disposés en colonne. Une ligne, l'ensemble des valeurs contenues dans un enregistrement, est
appelée "tuple" ou "n_uplet".
Chaque tuple a un identifiant, ou "clé primaire".
Chaque clé primaire répond à 3 grands principes :- minimalité (inutile d'avoir plusieurs clés)- unicité- valeur obligatoire (= non "null")
Il peut y avoir des relations entre les tables (!). Une table peut gérer des clés étrangères : c'est l'expression du lien.
La clé étrangère est la clé primaire d'une autre table, par convention identifiée par un #. Tout clé étrangère est
caractérisée par une règle ; elle a le même domaine que les clés primaires des attributs référencés.
L'atomicité (Première fonction)Chaque attribut d'une relation (paradigmatique) appartient à un seul domaine de valeur, qui est défini par :- un type (intervalle de valeurs) - une longueur (pour les valeurs caractères)- un formatLa donnée de l'attribut (ou champ) doit être élémentaire : elle ne prend qu'une valeur dans l'intervalle de donnée
autorisé.Ex. domaine={bleu;rouge;vert;jaune}L'attribut COULEUR est défini sur ce domaine
Un MCD (modèle conceptuel de données) est un schéma de structure des tables et des relations :
Dans les bibliothèques, comme dans la plupart des systèmes qui gèrent un volume important, on parle de SGBDr pour des "bases de données relationnelles". Ne pas confondre "relation entre les tables" et "relationnel" qui fait référence à la théorie relationnelle !
Les Langages SQL (structured query language)Il a 4 formes :LDD, langage de définition des données : create, alter, dropLMD, langage de manipulation des données : insert, update, deleteLID, langage d'interrogation des données : select [< algèbre relationnelle - théorie ensembliste / langage des prédicats : "tout", "il existe", "appartient", "and", "or", "not", "P(x)", "P(x,y)"]
LCD, langage de contrôle des données : grant revoke
CREATE TABLE COMMANDE (no_commande char (3)date_commande datemontant numeric (9,2)
);
montant numeric (9,2) <=> 9 caractères en tout dont 2 décimales
Le produit cartésien sert à gérer des jointures.Une jointure est un produit cartésien + un select où clé étrangère = clé primaireLe résultat d'un select d'une jointure est le nombre de tuples qui correspond au nombre de clés étrangères non nulles
Ex. Les titres de notices bibliographiques d'exemplaires prêtés à un moment donnéavec une table UNIMARC qui gère les notices bibliographiques et une table EXEMPLAIRE qui gère les exemplaires :select distinct TITRE from from UNIMARC U,EXEMPLAIRE Ewhere U.UNIQUE_KEY=E.UNIMARC_KEYand ETAT='2';
Des opérations comme l'UNION (union all- union - distinct) et la DIFFERENCE (MINUS) sont possibles
Les données sont prisonnières de bases de données qui imposent leur propre schéma de fonctionnement ; elles sont insérées dans des tables.Les relations vont être gérées par un outil spécifique.Pour manifester ces données, on a besoin d’un moteur et d’un modèle de sortie (output).
L’interopérabilité des systèmes
La coopération entre les bibliothèques : une vieille histoire.
L’interopérabilité des catalogues vise d’abord l’échange de données.
- facilite la production des informations- facilite l’échange d’informations- facilite la circulation des documents eux-mêmes
On discerne déjà la nécessité de pratiques harmonisées entre les bibliothèques avec l’utilisation de
- normes- formats- protocoles
Tous très richement documentés !
Motivée par des nécessités économiques (baisse des coûts de production). Les nombreux efforts de normalisation en sont la conséquence.
Normes en vigueur dans les bibliothèques pour la description bibliographique :
Z 44-050 Catalogage des monographies - texte imprimé
Z 44-063Catalogage des ressources continues
Z 44-074 Catalogage des monographies anciennes
Z 44-065 Catalogage des vidéogrammes
Z 44-066 Catalogage des enregistrements sonores
Z 44-067 Catalogage des documents cartographique
Z 44-069 Catalogage de la musique imprimée
Z 44-077Catalogage des images fixes
Z 44-078 Catalogage des parties composantes
Z 44-082 Catalogage des ressources électroniques
Z 44-073 Catalogage des monographies - texte imprimé (description allégée )
Z 44-059 Catalogage - Choix des accès à la description bibliographique
Z 44-060 Catalogage d’auteurs et d’anonymes : forme et structure des
vedettes de collectivités auteurs
Z 44-061 Catalogage d’auteurs et d’anonymes : Forme et structure des
vedettes noms de personne, des vedettes titres, des rubriques de classement et des titres forgés
Z 44-079Catalogage - Forme et structure des vedettes titres musicaux Z 44-081
Z 44-081Catalogage - Forme et structure des vedettes : Noms géographiques
Z 44-070Documentation - Indexation analytique par matières
Z 44-005 Documentation - Références bibliographiques : contenu, forme et structure
Formats utilisés en bibliothèque
MARC (MARC 21, UNIMARC)
DublinCore (format normalisé!), XML
Protocoles utilisés en bibliothèque :
Par exemple pour l’échange de données : Z39-50, SRU/SRW ; WAIS(Wide area information service), FTP (File transfert protocol);HTTP
L’interopérabilité, qu’est-ce que c’est ?
« L’ interopérabilité est la capacité que possède un produit ou un système, dont les interfaces sont intégralement connues, à fonctionner avec d'autres produits ou systèmes existants ou futurs et ce sans restriction d'accès ou de mise en œuvre . » (AFUL)
vs
compatibilité interopérabilité
Cela nécessite une grande transparence sur les mécanismes ou les formats employés…
L’intéropérabilité en trois mouvements
Elle met en jeu trois niveaux techniques complémentaires(1) :
1. Une description des ressources avec des sémantiques communes
2. Un contexte générique d’implémentation des descriptions dans des langages structurés standardisés, interprétables par des machines
3. Un ou plusieurs protocoles informatiques d’échange de ces données normalisées
(1)Abderrazak Mkadmi, Imad Saleh, Bibliothèque numérique et recherche d’informations
<Jeu de métadonnées>
<Cadre générique d’implémentation>
<Protocoles>
MARC (< Z44-050)
ISO 2709
WAIS, FTP, Z39.50
DublinCore,MODSEADLOM (Learning Object Metadata)
SCORM
XML, MarcXchangeURLRDF (Resource Description and Framework)
httpOAI-PMHSRU/SRW
Standards traditionnels
Standards plus récents
Dispositifs « synchrones » et dispositifs « asynchrones »
Pour construire l’interopérabilité entre les systèmes on peut mettre en œuvre des dispositifs :
Synchrones : Z3950, SRU/SRW, OpenURL, API, Webservices,…Ces dispositifs permettent une interrogation « à chaud » des données. Des moteurs de recherche pointent vers des bases toujours à jour : le service distant peut remonter une information juste après sa création ou sa modification. Cette immédiateté est un avantage, mais la gestion des protocoles qui permettent cette interrogation est plus lourde.
Asynchrones : les données sont recopiées (par exemple dans un entrepôt) et pour être interrogées doivent attendre un reversement, en général planifié : une fois par jour, une fois par semaine, une fois par mois. C’est le cas d’un entrepôt OAI.
On peut mesurer cette différence en se rappelant le schéma de signalisation des notices dans le SUDOC : les modifications ou créations sur les notices du réseau sont prises en compte après le transfert régulier dans le système local des membres du réseau : ce dispositif est asychnchrone. Mais si l’établissement cible a monté un serveur Z39.50, les données, une fois insérées dans le système local sont interrogeables « à chaud », en temps réel par un système distant.
Dispositifs « synchrones » et dispositifs « asynchrones »
On sera amené à choisir l’un ou l’autre mode pour construire l’interopérabilité, en fonction de la nature des informations qui doivent être fournies, et de la variabilité de ces données.
Document électronique
Peu de clés étrangères
Pas de transactions de prêt
Données à faible variabilité
Données pour une utilisation immédiate
Périodicité de mise à jour >= 1 semaine
Réindexation peu fréquente
Protocole de grande fiabilité
Imprimé
Objets de prêt
Données à grande variabilité
Données normalisées de grande fiabilité
Réindexations courantes
Schéma global d’un SID (théorique)
SIGBOPAC
Fournisseurs de notices MARCBnF, ABES, Electre, Zebris, …
Autres catalogues de bibliothèques
import
Z 39.50
SRU
Entrepôt OAI-PMHmoissonnage
« ingest »
Sources« hétérogènes »
connecteurs
API
Les Bibliothèques nationales et l’accès à l’information : le rôle de TEL et de MACS / Genevieve Clavel-Merrin
Schéma global d’un SID (existant)
Dispositifs SYNCHRONES
Z39.50
Protocole d’échange pour une utilisation bibliographiquequi régit le « dialogue » entre clients et serveurs, décrit et utilisé aux États-unis à partir de 1984.
La norme date de 1988, provient du « New York Item » ;Elle est maintenue par la Bibliothèque du Congrès avec la « Z39.50 Maintenance Agency ».
Le protocole Z39-50
Ce protocole permet l’interrogation en temps réel de bases bibliographiques pour un usage de consultation et de récupération de notices, sans que l’usager ne soit obligé de changer d’environnement.
Utilisateur / bibliothécaire
Catalogue local
(C/S ou émulation telnet)
Base de données locale (MARC)
Bibliothèque 1
SIGB 1
Rq 1
Utilisateur / bibliothécaire
Catalogue local
(C/S ou émulation telnet)
Base de données locale (MARC)
Bibliothèque 1
SIGB 1
Catalogue Z39.50
(port 210-21210)
Base de données locale (MARC)
Bibliothèque 2
SIGB 2
Rq 1
Rq 1
Règles de filtrage
Utilisateur / bibliothécaire
Catalogue local
(C/S ou émulation telnet)
Base de données locale (MARC)
Bibliothèque 1
SIGB 1
Catalogue Z39.50
(port 210-21210)
Base de données locale (MARC)
Bibliothèque 2
SIGB 2
Rq 1
Rq 1
Rs 2
Rs 2
Utilisateur / bibliothécaire
Catalogue local
(C/S ou émulation telnet)
Base de données locale (MARC)
Bibliothèque 1
SIGB 1
Catalogue Z39.50
(port 210-21210)
Base de données locale (MARC)
Bibliothèque 2
SIGB 2
Rq 1
Rq 1
Rs 2
Rs 2Rs 1
Utilisateur / bibliothécaire
Catalogue local
(C/S ou émulation telnet)
Base de données locale (xMARC)
Bibliothèque 1
SIGB 1
Catalogue Z39.50
(port 210-21210)
Base de données locale (xMARC)
Bibliothèque 2
SIGB 2
Rq 1
Rq 1
Rs 2
Rs 2Rs 1
?
Z39.50 utilise à l’origine le modèle OSI (Open Systems Interconnection)qui regroupe 7 couches :
-7 Application-6 Présentation-5 Session
-4 Transport-3 Réseau-2 Liaison de données-1 Physique
TCP/IP (Unix)
Port 210 : le client ouvre directement une connexion TCP avec le serveur Z39.50
Croît avec Internet !
Ici, la « sémantique commune » est déjà presque acquise :Avec Z39-50, on a deux systèmes qui dialoguent facilement car ils manipulent des valeurs communes…
Système A
TITRE TUnimarc.200a
Index: ’TitreM’
Système B
TITRE TUnimarc.200a
Index: ’MTitre’
Interpréteur :TitreM.A=Mtitre.B
La liaison fonctionne avec un simple interprète. Le protocole d’échange est solide comme il repose sur des données normalisées (qui sont la garantie de l’interopérabilité).
Utilisateur / bibliothécaire
Catalogue local
(C/S ou émulation telnet)
Base de données locale (MARC)
Bibliothèque 1
SIGB 1
Catalogue Z39.50
(port 210-21210)
Base de données locale (MARC)
Bibliothèque 2
SIGB 2
Rq 1
Rq 1
Rs 2
Rs 2Rs 1
Un protocole de liaison : Search/Retrieve Protocol
Utilisateur / bibliothécaire
Catalogue local
(C/S ou émulation telnet)
Base de données locale (xMARC)
Bibliothèque 1
SIGB 1
Rq 1
Rq 1
Rs 2
Rs 2Rs 1
BASE D’INFORMATION
Le protocole Z39.50 ne s’occupepas du fonctionnement internede la plate-forme distante…
L’utilisateur n’a pas à se soucier des différences entre les systèmes : sa requête sera traduite avec précision grâce à la définition booléenne « embarquée » par leprotocole.
La norme fait état de :
ANS1 : Abstract Notation Syntax 1 (ISO 8824) Un langage de description de données indépendant des matérielset logiciels permettant de décoder des messages entre clients et serveurs
BER : Basic Encoding Rules (ISO 8825) Des règles de conversion de syntaxes abstraites en une syntaxespécifique de transfert de données
Systèmes de requêtes HTTP
RFCMIME-SMTPHTTP 1.0
(Memo)./ correspond au dossier actuel ; ../ correspond au dossier parent ;
/ correspond au dossier racine
RFC 1945 : Hyper text Transfer Protocol – HTTP/1.0 (Specifications)
RFC 1808 : pour les URL relatives
RFC 1738 : Adresses universelles (URL, Uniform Resource Locators)
La RFC qui a longtemps servi de base à la définition des URL et des URI. Elle définissait le format des URL pour différents protocoles, comme Gopher, Mailto, etc. Le format des URL pour les requêtes de ces différents protocoles, sont maintenant traités à part des dans documents propres à chacun. Obsolète, remplacée par la
RFC 3986 : Identifiant de Ressource Uniforme (URI) : Syntaxe générique
Les requests for comments (RFC), littéralement « demande de commentaires », sont une série numérotée de documents officiels décrivant les aspects techniques d'Internet. Peu de RFC sont des standards, mais tous les standards d'Internet sont des RFC.
RFC 1945 : Hyper text Transfer Protocol – HTTP/1.0 (Specifications)
TerminologieConnexion Un circuit virtuel s'appuyant sur une couche de transport pour la communication d'information entre deux applications.
Message L'unité de base d'une communication HTTP, consistant en une séquence structurée d'octets transmis via la connexion.
Requête Un message de requête HTTP
Réponse Un message de réponse HTTP
Ressource Un service ou objet du réseau pouvant être identifié par une URI
Entité Une représentation particulière de données, ou la réponse d'une ressource de type service, incluse dans une requête ou une réponse. Une entité représente une métainformation sous la forme d'un en-tête et d'un contenu (corps, ou « body » ).
Client Un programme applicatif dont la fonction principale est d'émettre des requêtes.
Utilisateur Le client qui a émis la requête. Celui-ci peut être un navigateur, un éditeur, un "spider" (robot d'exploration), ou autre utilitaire.
Utilisateur final L'utilisateur humain pilotant le programme utilisateur.
Serveur Un programme applicatif acceptant des connexions dans le but de traiter des requêtes des délivrer des réponses
Serveur d’origine Le serveur dans lequel se situe physiquement une ressource.
Proxy Un programme intermédiaire qui cumule les fonctions de serveur et de client. Les requêtes sont soit traitées en interne ou répercutées, éventuellement converties, sur d'autres serveurs. Un proxy doit interpréter, puis reconstituer un message avant de le réemettre. Les proxies sont souvent utilisés comme portes d'accès côté utilisateur à des réseaux protégés par un "firewall" ou comme intermédiaire pour convertir des protocoles non supportés du côté utilisateur.
Gateway ou routeur Un serveur jouant le rôle d'intermédiaire pour d'autres serveurs. Contrairement à un Proxy, un routeur reçoit les requêtes comme s'il était le serveur d’origine pour la ressource ; le client n’est pas nécessairement conscient de "communiquer" avec un routeur. Les routeurs sont souvent utilisés comme porte d'accès, côté serveur ,d'un réseau protégé par "firewall" et comme convertisseur de protocole pour accéder à des ressources hébergées sur des systèmes non-HTTP.
Tunnel Programme applicatif servant de relais "transparent" entre deux connexions. Une fois actif, cet élément n'est plus considéré comme faisant partie de la connexion HTTP, bien qu'il soit issu d'une requête HTTP. Le tunnel cesse d'exister lorsque les deux sens de la connexion ont été fermés. Les tunnels sont utilisés lorsqu'une "porte" est nécessaire et que l'intermédiaire ne peut, ou ne doit pouvoir interpréter la communication.
Cache Espace de stockage local destiné à enregistrer les réponses ; sous-système contrôlant ces enregistrements, leur relecture et leur effacement. Un cache enregistre des réponses dans le but de diminuer le temps d'accès et la charge si d’éventuelles requêtes identiques se présentent ultérieurement.
HTTP et MIME (Multipurpose Internet Mail Extensions)
standard internet qui étend le format de données des courriels pour supporter des textes en différents codage de caractères autres que l'ASCII, des contenus non textuels, des contenus multiples, et des informations d'en-tête en d'autres codages que l'ASCII. Les courriels étant généralement envoyés via le protocole SMTP au format MIME, ces courriels sont souvent appelés courriels SMTP/MIME.
Les types de contenus définis par le standard MIME peuvent être utilisés à d'autres fins que l'envoi de courriels, dans les protocoles de communication comme le HTTP pour le World Wide Web.
MIME a inspiré WWW pour standardiser le flux d’information émises via HTTP, et rend interopérables les différents encodages.
charset = "US-ASCII" | "ISO-8859-1" | "ISO-8859-2" | "ISO-8859-3" | "ISO-8859-4" | "ISO-8859-5" | "ISO-8859-6" | "ISO-8859-7" | "ISO-8859-8" | "ISO-8859-9" | "ISO-2022-JP" | "ISO-2022-JP-2" | "ISO-2022-KR" | "UNICODE-1-1" | "UNICODE-1-1-UTF-7" | "UNICODE-1-1-UTF-8" | autre_nom
Utilisation de BNF étendue
BNF est une description normalisée des expressions rationnelles. Il provient du langage formel (met en œuvre une notation qui crée du sens)Ex.a* = répétion [éventuellement nulle] de a jusqu’à +∞a+= au moins 1a
Instructions de bas niveauCR LF = marqueur de fin de ligne (Carriage Returne Line Feed)LWS = en-têteTEXT = utilisée pour décrire des informations descriptives. ISO-8859-1 impliciteHEX = "A" | "B" | "C" | "D" | "E" | "F" | "a" | "b" | "c" | "d" | "e" | "f" | DIGIT
url = httpurl | ftpurl | newsurl | nntpurl | telneturl | gopherurl | waisurl | mailtourl | fileurl | prosperourl | otherurl = 1*[ lowalpha | digit | "+" | "-" | "." ] schemepart = *xchar | ip-schemepart ; schemeparts d’URL pour protocoles fondés sur ip: ip-schemepart = "//" login [ "/" urlpath ] login = [ user [ ":" password ] "@" ] hostport hostport = host [ ":" port ] host = hostname | hostnumber hostname = *[ domainlabel "." ] toplabel domainlabel = alphadigit | alphadigit *[ alphadigit | "-" ] alphadigit toplabe = alpha | alpha *[ alphadigit | "-" ] alphadigit alphadigit = alpha | digit hostnumber = digits "." digits "." digits "." digits port = digits user = *[ uchar | ";" | "?" | "&" | "=" ] password = *[ uchar | ";" | "?" | "&" | "=" ] urlpath = *xchar ; dépend du protocole, voir le paragraphe 3.1 ; Les schémas prédéfinis : ; FTP (voir aussi la RFC 959) ftpurl = "ftp://" login [ "/" fpath [ ";type=" ftptype ]] fpath = fsegment *[ "/" fsegment ] fsegmen = *[ uchar | "?" | ":" | "@" | "&" | "=" ] ftptype = "A" | "I" | "D" | "a" | "i" | "d" ; FILE fileurl = "file://" [ host | "localhost" ] "/" fpath ; HTTP httpurl = "http://" hostport [ "/" hpath [ "?" search ]] hpath = hsegment *[ "/" hsegment ] hsegment = *[ uchar | ";" | ":" | "@" | "&" | "=" ] search = *[ uchar | ";" | ":" | "@" | "&" | "=" ]
HTTP
; GOPHER (voir aussi la RFC 1436) gopherurl = "gopher://" hostport [ / [ gtype [ selector [ "%09" search [ "%09" gopher+_string ] ] ] ] ] gtype = xchar selector = *xchar gopher+_string = *xchar ; MAILTO (voir aussi la RFC 822) mailtourl = "mailto:" encoded822addr encoded822addr = 1*xchar ; mieux défini dans la RFC 822 ; NEWS (voir aussi la RFC 1036) newsurl = "news:" grouppart grouppart = "*" | group | article group = alpha *[ alpha | digit | "-" | "." | "+" | "_" ] article = 1*[ uchar | ";" | "/" | "?" | ":" | "&" | "=" ] "@" host ; NNTP (voir aussi la RFC 977) nntpurl = "nntp://" hostport "/" group [ "/" digits ] ; TELNET telneturl = "telnet://" login [ "/" ]
; WAIS waisurl = waisdatabase | waisindex | waisdoc waisdatabase = "wais://" hostport "/" database waisindex = "wais://" hostport "/" database "?" search waisdoc = "wais://" hostport "/" database "/" wtype "/" wpath database = *uchar wtype = *uchar wpath = *uchar
WAIS :Wide Area Information Servers, ou Service, ou System ou Searching, aussi connu sous l'acronyme WAIS, est un système informatique client-serveur permettant à un logiciel client WAIS de se connecter à un serveur répertoriant des bases de données documentaires distribuées sur un réseau informatique et de lancer une recherche dans le texte des documents. Les recherches peuvent s'effectuer par mots clés ou en langage courant. La réponse est donnée sous la forme d'une liste de documents consultables triés par ordre de pertinence. WAIS utilise une extension du protocole de communication ANSI Z39.50.
[…]
; Définitions diverses lowalpha = "a" | "b" | "c" | "d" | "e" | "f" | "g" | "h" | "i" | "j" | "k" | "l" | "m" | "n" | "o" | "p" | "q" | "r" | "s" | "t" | "u" | "v" | "w" | "x" | "y" | "z" hialpha "A" | "B" | "C" | "D" | "E" | "F" | "G" | "H" | "I" | "J" | "K" | "L" | "M" | "N" | "O" | "P" | "Q" | "R" | "S" | "T" | "U" | "V" | "W" | "X" | "Y" | "Z" alpha = lowalpha | hialpha digit = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" safe = "$" | "-" | "_" | "." | "+" extra = "!" | "*" | "'" | "(" | ")" | "," national = "{" | "}" | "|" | "\" | "^" | "~" | "[" | "]" | "`" punctuation = "<" | ">" | "#" | "%" | <"> reserved = ";" | "/" | "?" | ":" | "@" | "&" | "=" hex = digit | "A" | "B" | "C" | "D" | "E" | "F" | "a" | "b" | "c" | "d" | "e" | "f" escape = "%" hex hex unreserved = alpha | digit | safe | extra ucha = unreserved | escape xchar = unreserved | reserved | escape digits = 1*digit
Mémo
? Introduit un paramètre
= attribue une valeur à un paramètre
& enchaîne deux paramètres
@ termine les données d’identification
/ déplace dans l’arborescence
// introduit un protocole
: introduit un mot de passe
+ opérateur booléen
‘’ ‘’ introduit une chaîne
# introduit une ancre
% HEX HEX introduit un caractère codé
http://hal.archives-ouvertes.fr/index.php?halsid=0s9v93i6o5altejbh58n9j2845&view_this_doc=tel-00084658&version=1
http://hal.archives-ouvertes.fr/index.php?halsid=0s9v93i6o5altejbh58n9j2845&view_this_doc=tel-00084658&version=1
?halsid=0s9v93i6o5altejbh58n9j2845
&view_this_doc=tel-00084658
&version=1
http://opac.univ-lemans.fr/scd/jsp/search/search_direct.jsp?query=EXPERT&INDEX_LIV1=DLIV_MOTSUJ&CRIT1=VICTOR%20HUGO&OPER1=and
http://opac.univ-lemans.fr/scd/jsp/search/search_direct.jsp?query=EXPERT&INDEX_LIV1=DLIV_MOTSUJ&CRIT1=VICTOR%20HUGO&OPER1=and
?query=EXPERT
&INDEX_LIV1=DLIV_MOTSUJ
&CRIT1=VICTOR%20HUGO
&OPER1=and
Ouvrages disponibles sur Victor Hugo
GETC'est la méthode la plus courante pour demander une ressource. Une requête GET est sans effet sur la ressource, il doit être possible de répéter la requête sans effet.HEADCette méthode ne demande que des informations sur la ressource, sans demander la ressource elle-même.POSTCette méthode doit être utilisée lorsqu'une requête modifie la ressource.OPTIONSCette méthode permet d'obtenir les options de communication d'une ressource ou du serveur en général.CONNECTCette méthode permet d'utiliser un proxy comme un tunnel de communication.TRACECette méthode demande au serveur de retourner ce qu'il a reçu, dans le but de tester et d'effectuer un diagnostic sur la connexion.PUTCette méthode permet d'ajouter une ressource sur le serveur.DELETECette méthode permet de supprimer une ressource du serveur.
Requêtes HTTP
SRU
Contexte
SRU peut être présenté comme une extension de Z39.50, mais qui ne sort pas de la couche web. Z39.50 est lourd à maintenir et à implémenter. Il nécessite une entente stricte entre le client et le serveur. SRU répond à un besoin d’interroger des sources distantes et hétérogènes sans se plier à un environnement technique défini, et offre plus de souplesse en exploitant des données étrangères.
S’appuie sur un ensemble de formats pivots universels : DC, MODS, MarcXML, …
S’inscrit dans un cadre universel : XML
Appelle un protocole de transfert largement répandu : HTTP
Utilise un langage de requête simple et intuitif : CQL
Son application permet d’envisager une recherche fédérée
SRU (Search/Retrieve via URL) et SRW (Search/Retrieve Web service)
Encode une requête au sein d’une URL
ReST = Representational State Transfer
Encode une requête au sein d’une URL
SOAP = Simple Object Access Protocol
Base au format hétérogène
Base de nature hétérogène :Tout objet (msg, archive,…)
Renvoie un fichier XML (entre autres formats)
au navigateur
SRU et SRW utilisent le protocole HTTP pour l’échange de requêtes. Plus spécifiquement, SRU permet de faire circuler des requêtes à l’intérieur des URLs en utilisant l’architecture REST (Representational State Transfer) là où SRW, variante de SRU, fait transiter les requêtes sous SOAP (Simple Object Access Protocol). Pour ce qui concerne REST et SOAP, le premier permet de spécifier l’encodage d’une requête au sein même d’une URL, alors que le second encapsule la requête sous XML. REST ne fonctionne qu’avec le protocole HTTP, là où SOAP autorise en plus l’usage de nombre d’autres protocoles (email, SSH, telnet).
SRU/SRW utilisent tous les deux les mêmes instructions, qui permettent l’expression de la requête et de la réponse à cette requête. Les trois opérations principales sont « explain », « scan », et « searchRetrieve »
REST
SOAP
Rest est un style d’architecture, pas un standard, mais décrit des principes fondamentaux qui permettent de bien former une application.Il repose sur des standards :
• URI, syntaxe universelle pour « adresser » les ressources,• HTTP un protocole sans état (stateless) avec un nombre très limité d'opérations,• Des liens hypermedia dans des documents (X)HTML et XML pour représenter à la fois le contenu des informations et la transition entre états de l'application,• Les types MIME comme text/xml, text/html, image/jpeg, application/pdf, video/mpeg pour la représentation des ressources
Il permet la transmission de messages entre objets distants, et autorise un objet àinvoquer des méthodes d'objets physiquement situés sur un autre serveur. Le transfert se fait le plussouvent à l'aide du protocole HTTP, mais peut également se faire par un autre protocole, comme SMTP.Le protocole SOAP est composé de deux parties :• une enveloppe, contenant des informations sur le message lui-même afin de permettre sonacheminement et son traitement,• un modèle de données, définissant le format du message, c'est-à-dire les informations àtransmettre.
Avantages de SOAP :•assez ouvert pour s'adapter à différents protocoles de transport.• indépendant de la plate-forme.• indépendant du langage.• simple et extensible.
SRU (et SRW)
Utilisent tous deux le protocole HTTP pour l’échange de requêtes
http://www.loc.gov/standards/sru/
SRU propose une interface pour l’interaction avec des bases de données distantes, sans qu’il y ait besoin de connaître la logique interne de la base de donnée consultée pour trouver des résultats
S’appuie sur un langage de requêtes CQL (Contextual Query Language, anciennement Common Query Language).
Les requêtes sont acheminées via le protocole HTTP
Les résultats sont transmis en XML
SRU gère des paramètres, au nombre de 12
Nom Obligatoire/facultatif
Description
operation Obligatoire La chaîne : ‘SearchRetrieve’
version Obligatoire La version de la requête. Si le serveur ne peut pas fournir une réponse dans la version spécifiée ou une version inférieure, il doit retourner un diagnostique
Nom Obligatoire/facultatif
Description
request Obligatoire Contient une requête exprimée en CQL, qui demande à être traitée par le serveur. Une requête CQL peut contenir une ou plusieurs clauses reliée par des opérateurs booléens
startRecord Facultatif* Spécifie la position du premier enregistrement visé. Doit être > 0. La valeur par défaut 1 est attribuée par le serveur si elle n ’est pas spécifiée dans la requête.
maximumRecord Facultatif* Le nombre maximum de notices à être retourné. La valeur doit être 0 ou plus. Une valeur par défaut est attribuée par le serveur si elle n’est pas définie dans la requête. La valeur retournée peut être inférieure à celle qui est tolérée, mais ne doit pas être supérieure.
recordPackinq Facultatif Spécifie la façon dont les notices doivent être empaquetées : chaîne de caractère simple(‘string’) ou XML (‘xml’).
recordSchema Facultatif Schéma dans lequel la notice doit être fournie. La valeur est l’URI du schéma ou son affichage abrégé défini par le serveur (*) [voir tableau]
recordXPath (V1.1)
Facultatif Une expression Xpath (chemin XML) peut être appliquée aux notices avant qu’elles soient retournées, relativement au schéma spécifié dans le paramètre recordSchema. Sert à préparer la conversion XSL.
Nom Obligatoire/facultatif Description
resultSetTTL Facultatif Nombre de secondes pendant lesquelles la requête du client doit être maintenue. Le serveur peut être programmé pour ignorer ce paramètre et offrir un temps de réponse qui ne correspond pas à celui spécifié.
sortKeys (V1.1) Facultatif Contient une séquence de clés de classement appliquée au résultat.
Stylesheet Facultatif Spécifie une URL pour appliquer une feuille de styles.
extraRequestData Facultatif Emplacement prévu pour des informations supplémentaires …
Exemple de requête
Paramètres :
obligatoires facultatifs
version=1.1
operation=searchRetrieve
query=balzac
maximumRecords=3000
recordSchema=dc
http://z3950.loc.gov:7090/voyager?version=1.1&operation=searchRetrieve&query=balzac+and+literature&maximumRecords=3000&recordSchema=dc
Réponse pour
http://z3950.loc.gov:7090/voyager?version=1.1&operation=searchRetrieve&query=balzac&maximumRecords=2000&recordSchema=dc
Réponse pour
http://z3950.loc.gov:7090/voyager?version=1.1&operation=searchRetrieve&query=title=balzac&maximumRecords=2000&recordSchema=dc
[…]
Réponse pour
http://z3950.loc.gov:7090/voyager?version=1.1&operation=searchRetrieve&query=balzac+and+literature&maximumRecords=2000&recordSchema=dc
[…]
Schema (and link/reference) Short Name Identifier
Dublin Core Record Schema (.xsd .html ) dc info:srw/schema/1/dc-v1.1
SRU Diagnostic Schema diag info:srw/schema/1/diagnostic-v1.1
Explain Schema zeerex http://explain.z3950.org/dtd/2.0/
MODS Schema Version 3.0 - > Version 3.3 mods info:srw/schema/1/mods-v3.x
ONIX DTD Version 2.0 onix info:srw/schema/1/onix-v2.0
MARCXML: The MARC 21 XML Schema marcxml info:srw/schema/1/marcxml-v1.1
EAD DTD Version 2002 ead info:srw/schema/1/ead-2002
Zthes DTD, version 0.5 Zthes http://zthes.z3950.org/xml/0.5/
UNIMARC XML Schema unimarcxml info:srw/schema/8/unimarcxml-v0.1
The Bibliographic Class DTD dlxs-bib info:/srw/schema/10/dlxs-bib-v1.0
Dublin Core Extended (DCX) dcx info:/srw/schema/1/dcx-v1.0
PICA XML Version 1.0 pica-xml-v1-0.xsd) pica-XML info:srw/schema/5/picaXML-v1.0
MADS Schema Version 1.0reference | schema
mads info:srw/schema/1/mads-v1.0
Zthes Schema Version 1.0reference | schema zthes http://zthes.z3950.org/xml/1.0/
ISO 20775 Schema for holdings reference | schema isohold info:srw/schema/5/iso20775-v1.0
PRISM Aggregator Message Record Schema Version 2.0 pam info:srw/schema/11/pam-v2.0
Document Availability Information API (DAIA/XML)reference | schema
PRISM Aggregator Message Record Schema Version 2.1pam info:srw/schema/11/pam-v2.1
Paramètre de contrôle du schéma
• <?xml version="1.0" ?> • <zs:searchRetrieveResponse xmlns:zs="http://www.loc.gov/zing/srw/">• <zs:version>1.1</zs:version> • <zs:numberOfRecords>415</zs:numberOfRecords> • <zs:records>• <zs:record>• <zs:recordSchema>info:srw/schema/1/marcxml-v1.1</zs:recordSchema> • <zs:recordPacking>xml</zs:recordPacking> • #Début de la notice• <zs:recordData>• <record xmlns="http://www.loc.gov/MARC21/slim">• <leader>01100nam a2200325 a 4500</leader> • <controlfield tag="001">1601305</controlfield> • <controlfield tag="005">19950124084445.9</controlfield> • <controlfield tag="008">940127s1993 quca b 000 0 fre</controlfield> • <datafield tag="035" ind1="" ind2="">• <subfield code="9">(DLC) 94110254</subfield> • […] • <datafield tag="245" ind1="0" ind2="4">• <subfield code="a">Les Accros du langage /</subfield> • <subfield code="c">sous la direction de Michèle Nevert.</subfield> •
La 1ère notice du même lot avec le paramètre &recordSchema=marcxml :
Il existe aussi une « classe » unimarcxml…
Le paramètres pour la réponse
Le réponses SRU sont fournies au format XML
Nom Type Obligatoire / Facultatif
Description
version xsd:string Obligatoire La version de la réponse. Doit être égale à la version demandée par le client.
numberOfRecords xsd:integer Obligatoire Le nombre de notices correspondant à la requête. Valeur= 0 en cas d’échec de la requête
resultSetId xsd:string Facultatif L’identificateur de l’ensemble des résultats créé par l’exécution de la requête.
resultSetIdleTime xsd:integer Facultatif Le nombre de secondes entre la création et la suppression d’un résultat. Après ce délai, le résultat ne sera plus disponible.
records Séquence de <notices>
Facultatif Série de notices qui correspondent à la requête.
nextRecordPosition Xsd:integer Facultatif La position qui suit le résultat final. S’il n’y a pas de « reste », ce paramètre doit être fixé à 0.
XSD = XML Schema Document = fichier de description de structure
Nom Type Obligatoire / Facultatif
Description
diagnostics Séquence de <diagnostique>
Facultatif Si les choses tournent mal, le serveur doit signaler ce qui n’a pas fonctionné, expliquer ce qui s’est passé. Les diagnostiques sont retournés dans un schéma très simple, qui ne dispose que de 3 éléments: « URI », « details » et « message ».
extraReponseData <xmlFragment> Facultatif Information supplémentaire retournée par le serveur.
echoedSearchRetrieveRequest
<echoedSearchRetrieveRequest>
Facultatif Les paramètres de la requête sont renvoyés au client dans un simple formulaire.
Exemple :requête SRU qui renvoie des métadonnées d’un document dont la mention de responsabilité somprend la chaîne de cactères « spurr »
http://localhost:8080/harvester-2.3.0/index.php/sru?version=1.1&operation=searchRetrieve&query=creator=spurr
<searchRetrieveResponse><version>1.1</version><numberOfRecords>1</numberOfRecords><records>
<record><recordSchema>info:srw/schema/1/dcv1.1</recordSchema><recordPacking>xml</recordPacking><recordData>
<srw_dc:dc xmlns:dc="http://purl.org/dc/elements/1.1/"xmlns:srw_dc="http://www.loc.gov/zing/srw/">
<dc:title>Introduction to the study of literature</dc:title><dc:creator>Spurr David</dc:creator><dc:publisher>Faculté des lettres</dc:publisher><dc:date>2006-03-14</dc:date><dc:type>cours</dc:type><dc:format>audio</dc:format><dc:identifier>AN3-SPUR-2005-2006-14.3</dc:identifier><dc:source>http://129.194.9.169/audio/AN3-SPUR-2005-2006-14.3.mp3</dc:source><dc:relation>AN3-SPUR-2005-2006</dc:relation><dc:coverage>2007-10-31</dc:coverage><dc:rights>Spurr David</dc:rights>
</srw_dc:dc></recordData>
<recordPosition>1</recordPosition></record>
</records></searchRetrieveResponse>
Réponse :
<?xml version="1.0" ?> - <zs:searchRetrieveResponse xmlns:zs="http://www.loc.gov/zing/srw/"> <zs:version>1.1</zs:version> <zs:numberOfRecords>0</zs:numberOfRecords> - <zs:diagnostics xmlns="http://www.loc.gov/zing/srw/diagnostic/">- <diagnostic> <uri>info:srw/diagnostic/1/10</uri> <message>Query syntax error</message> <details /> </diagnostic> </zs:diagnostics> </zs:searchRetrieveResponse>
Exemples d’erreurs :
<?xml version="1.0" ?> - <zs:searchRetrieveResponse xmlns:zs="http://www.loc.gov/zing/srw/"> <zs:version>1.1</zs:version> <zs:numberOfRecords>0</zs:numberOfRecords> </zs:searchRetrieveResponse>
1
2
<?xml version="1.0" ?> - <zs:searchRetrieveResponse xmlns:zs="http://www.loc.gov/zing/srw/"> <zs:version>1.1</zs:version> - <zs:diagnostics xmlns="http://www.loc.gov/zing/srw/diagnostic/">- <diagnostic> <uri>info:srw/diagnostic/1/8</uri> <message>Unsupported parameter</message> <details>maximumRecords2000&recordSchema</details> </diagnostic> </zs:diagnostics> </zs:searchRetrieveResponse>
<?xml version="1.0" ?> - <zs:searchRetrieveResponse xmlns:zs="http://www.loc.gov/zing/srw/"> <zs:version>1.1</zs:version> <zs:numberOfRecords>0</zs:numberOfRecords> - <zs:diagnostics xmlns="http://www.loc.gov/zing/srw/diagnostic/">- <diagnostic> <uri>info:srw/diagnostic/1/28</uri> <message>Masking character not supported</message> <details>2</details> </diagnostic> </zs:diagnostics> </zs:searchRetrieveResponse>
<?xml version="1.0" ?> - <zs:searchRetrieveResponse xmlns:zs="http://www.loc.gov/zing/srw/"> <zs:version>1.1</zs:version> <zs:numberOfRecords>10000</zs:numberOfRecords> </zs:searchRetrieveResponse>
3
4
5
SRU
Termes de recherche : Ok
Bibliothèque du Congrès
JSTOR
SRU
balzac literature |Termes de recherche : Ok
v Bibliothèque du Congrès
JSTOR
SRU
balzac literature |Termes de recherche : Ok
Construction d’une requête type SRU à partir des termes saisis :
v Bibliothèque du Congrès
http://z3950.loc.gov:7090/voyager?version=1.1&operation=searchRetrieve&query=balzac+and+literature&maximumRecords=2000&recordSchema=marcxml
= URL de base= version de la requête= opération demandée= paramètres de la requête= nb. max. de rép. souhaitées= format de réponse souhaité
NB : ici, le format souhaité est le paramètre « marcxml ». Schéma dans lequel la notice doit être fournie. La valeur est l’URI du schéma ou son affichage abrégé défini par le serveur.
JSTOR
CQL
Langage formel qui permet de présenter des requêtes à des systèmes de recherche comme des catalogues bibliographiques, des collections de musées ou des index web.
Langage intuitif, aisé à composer et lisible par les humains (HR)
Définition formelle : CQL BNF (Backus-Naur Form)
Recherches simples:dinosaur"complete dinosaur"title = "complete dinosaur"title exact "the complete dinosaur"
Requêtes utilisant des opérateurs booléens:dinosaur or birddinosaur and "ice age"dinosaur not reptiledinosaur and bird or dinobird(bird or dinosaur) and (feathers or scales)"feathered dinosaur" and (yixian or jehol)
Recherches visant des critères de publication:publicationYear < 1980lengthOfFemur > 2.4bioMass >= 100
Recherches de proximité de termes:ribs prox/distance<=5 chevronsribs prox/unit=sentence chevronsribs prox/distance>0/unit=paragraph chevrons
Recherches à plusieurs dimensions:date within "2002 2005"dateRange encloses 2003
Recherches basées sur la pertinence:subject any/relevant "fish frog"subject any/rel.lr "fish frog"
En France ABES
Ailleurs en Europe Finlande : NELLI Dutch union Catalog Espagne : Biblioteca Virtual del Patrimonio Bibliográfico
Au niveau européen projet TEL, la Bibliothèque européenne
Aux Etats-Unis J-STOR ARTstor Worldcat Beta Library of Congress
Quelques plates-formes SRU disponibles…
Les « grammaires » de l’interopérabilité (synthèse)
API : Application Programming InterfaceUne API est un outil utile au programmeur qui va y trouver une description du comportement d’un programme informatique. Elle définit des méthodes et des fonctions (onparle aussi de « signature ».Elle décrit les paramètres attendus pour lancer une méthode et le résultat produit, le plus souvent :• sa forme• son type• son « sens »On peut aussi y trouver les conditions que l’utilisation du programme impose et des indications sur l’environnement requis.
Exemple : http://java.sun.com/j2se/1.5.0/docs/api/
On trouve des indications sur le connecteur SQLhttp://java.sun.com/j2se/1.5.0/docs/api/java/sql/SQLData.html
Les « grammaires » de l’interopérabilité (synthèse)
Jeu de métadonnées Cadre générique d’implémentation
protocoles Langage(s) de requêtes
Divers J2EE – PHP – Html… API SQL – SQL + - MySQL
MARC
< Z44-050 …
ISO 2709 Z39.50 Internes aux applications
LOM – DC – TEF – MarcXml…
XML OAI-PMH HTTP - index
RDF XML SPARQL for RDF SPARQL Query for RDF
DC – MarcXml … XML SRU/SRW
SOAP/REST
CQL
DC – XML - URL WebServices
SOAP/REST
Divers langages possibles
RDF et SPARQL
RDF est un modèle, plus qu’un format : il permet une description « étoilée » d’un objet ou d’une ressource et ménage une relation privilégiée entre des sous-éléments.
Un document structuré en RDF est un « triplet », une association de 3 éléments :- sujet = représente la ressource décrite (URI)- prédicat = une propriété applicable à la ressource (URI)- objet = la valeur du prédicat (URI)
-On parle aussi de représentation par graphe (ou graphe RDF)
Pour décrire un site web, par exemple « European Society for Oceanists », il faut isoler :- le sujet (la ressource) : http://joensuu/fi/esfo/- le prédicat (propriété) : http://purl.org/dc/elements/1.1/title- l’objet : « European Society for Oceanists »
Ce triplet permet d’identifier le sème suivant : (voici) un site web dont la localisation est http://joensuu/fi/esfo/ et dont le titre est ; « European Society for Oceanists »
RDF peut être exprimé avec la théorie des ensemble ou la théorie des modèles (formation d’arcs) et ne gère pas forcément du XML, mais W3C l’a orienté comme tel dans son exploitation pour le web.
<?xml version="1.0"?><rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
<rdf:Description rdf:about=" http://joensuu/fi/esfo/ "> <dc:title> European Society for Oceanists </dc:title>
<dc:author>ESfO Directory Membership</dc:author> <dc:subject>Oceanography</dc:subject> <dc:subject>Oceans</dc:subject> <dc:subject>Digital humanities</dc:subject>
</rdf:Description></rdf:RDF>
Liste des assertions utilisées dans ce cas :
http://purl.org/dc/elements/1.1/title TITRE European Society for Oceanistshttp://purl.org/dc/elements/1.1/author AUTEUR = ESfO D.M.http://purl.org/dc/elements/1.1/subject MOT SUJET = Oceanographyhttp://purl.org/dc/elements/1.1/subject MOT SUJET = Oceans
« Notice » RDF :
Son langage dédié : SPARQL
Recommandation W3C (qui tente de déboucher rapidement sur une normalisation)
Principales spécifications:
SPARQL protocol for RDFDécrit le protocole d’accès distant pour créer des requêtes et recevoir des réponses
SPARQL Query Results XML FormatDéfinit le format de document XML pour représenter les résultats des requêtes
SELECT et ASK.
Introduction de requêtes simples
Soit la donnée :http://exemple.org/ouvrages/ouvrage 1 http://base1.org/dc/elements/1.1/titre ‘’ Titre de mon ouvrage’’ .
Requête :SELECT ?titleWHERE{http://exemple.org/ouvrages/ouvrage 1 http://base1.org/dc/elements/1.1/titre ?title}
Réponse :
title
‘Titre de mon ouvrage’
Requêtes sur des personnesPour définir des personnes, on peut utiliser plusieurs balises : title, nickname, gender, etc.
Une personne est identifiée par un fichier FOAF, qui peut êtreplacé n’importe où sur le Web, et qui contient, dans des champs normés et en XML, desinformations la décrivant.
Chacun peut choisir le nombre et la profondeur des informations le concernant, parmi : le nom, l’adresse email, l’adresse du site Web et/ou du blog, les adresses des photos, les études suivies, les centres d’intérêt, les , etc. (plusieurs dizaines de champs possibles, répartis en cinq grandes catégories : - les données de base (nom, prénom, etc.),- les informations personnelles (centres d’intérêt, connaissances...),- les comptes en lignes (email, messageries instantanées...),- les documents et images (textes produits par la personne, photos personnelles...),- les groupes et projets.
Pour la dernière il est possible d’exprimer le rattachement d’une personne à une organisation (association, entreprise) mais surtout, plus généralement, à un groupe quelconque. Il peut s’agir d’un groupe structuré (parti politique), informel, ou simplement d’une communauté en ligne.
Les champs FOAF sont conçus pour exprimer de façon détaillée les caractéristiquesd’un individu et « ses liens » avec d’autres éléments ou entités du réseau (documents, images, ou d’autres individus.
Présente un intérêt pour le web sémantique et permet de répondre à des questions complexes du type : y-a-t-il quelqu’un qui travaille dans un BU, qui catalogue des ouvrages anciens, qui a des connaissances expertes en paléographie et qui fasse partie d’un groupe de normalisation ?
FOAF permet la fusion et le rebond sur une base de connaissance qui peut s’enrichir très aisément et rapidement. (« cit. F. Lapique) :
« Supposons que Pierre crée son fichier FOAF, et qu’il ne dispose pasde photos de lui-même. L’un de ses amis, Paul, a lui aussi un fichier FOAF, dans lequel ilindique l’adresse d’une photo le montrant en compagnie de Pierre. Il est alors très facile, defaçon automatisée, de fusionner les deux fichiers FOAF pour que la question « Où peut-onconsulter une photo de Pierre ? » fournisse une réponse, en renvoyant sur la photo présentantPierre et Paul ».
Même si l’on ne dispose pas d’un annuaire centralisé ou d’un fichier complet d’autorités, il est possible de lier des personnes , de lier leurs attributs, comme si toutes ces entrées figuraient dans un même base de données.
<foaf:Agent rdf:nodeID="id2244837"><foaf:name>Dave Beckett</foaf:name><rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Person"/><foaf:weblog><foaf:Document rdf:about="http://journal.dajobe.org/journal/"><dc:title>Journalblog by Dave Beckett</dc:title><rdfs:seeAlso><rss:channel rdf:about="http://journal.dajobe.org/journal/comments.rdf"><foaf:maker rdf:nodeID="id2244837"/><foaf:topic rdf:resource="http://www.w3.org/2001/sw/"/><foaf:topic rdf:resource="http://www.w3.org/RDF/"/></rss:channel></rdfs:seeAlso></foaf:Document></foaf:weblog><foaf:interest rdf:resource="http://www.w3.org/2001/sw/"/><foaf:interest rdf:resource="http://www.w3.org/RDF/"/></foaf:Agent>
Soit une notice RDF pour le graphe foaf:blogger
Je cherche l’URL du Blog de Dave Beckett
PREFIX foaf: <http://xmlns.com/foaf/0.1/>SELECT ?urlFROM <http://planetrdf.com/bloggers.rdf>WHERE {?contributor foaf:name "Dave Beckett" .?contributor foaf:weblog ?url .
}
----------------------------------------| url |=============================| <http://journal.dajobe.org/journal/> |----------------------------------------
Le requêtage SPARQL s’inspire de SQL (modèle simple). On peut ajouter une clause DISTINCT après SELECT ou LIMIT, OFFSET,et ORDER après WHERE
Clauses :OPTIONAL
UNION
FILTER
Ex: rapatrier le nom d’une personne et éventuellement son pict
Ex. Trouver les personnes qui ont un e-mail et celles qui ont un pict
Impose des contraintes sur les variables (Ex. on veut trouver toutes les auteurs des publications du mois de septembre 2009)
Dans la documentation SPARQL, il est fait mention d’une autre syntaxe un peu différente : Turtle (pour « Terse RDF Triple Language)
Soit l’ensemble de données :@prefix dc: <http://purl.org/dc/elements/1.1/> .@prefix : <http://example.org/book/> .@prefix ns: <http://example.org/ns#> .:book1 dc:title "SPARQL Tutorial" .:book1 ns:price 42 .:book2 dc:title "The Semantic Web" .:book2 ns:price 23 .
Soit la requête :PREFIX dc: <http://purl.org/dc/elements/1.1/>PREFIX ns: <http://example.org/ns#>SELECT ?title ?priceFROM <ex1.ttl>WHERE { ?x dc:title ?title .OPTIONAL { ?x ns:price ?price . FILTER (?price < 30) }}
Résultat : | title | price |==============================| "The Semantic Web" | 23 || "SPARQL Tutorial" | |
------------------------------
Je veux un service qui m’indique les 10 derniers articles des personnes que Pierre Gille connaît :
PREFIX foaf: <http://xmlns.com/foaf/0.1/>PREFIX rss: <http://purl.org/rss/1.0/>PREFIX dc: <http://purl.org/dc/elements/1.1/>SELECT ?title ?known_name ?linkFROM <http://www.domaine.net/morten/index.rdf>FROM NAMED <profil.rdf>WHERE {GRAPH <profil.rdf> {?me foaf:name "Pierre Gille" .?me foaf:knows ?known_person .?known_person foaf:name ?known_name .} .?item dc:creator ?known_name .?item rss:title ?title .?item rss:link ?link .?item dc:date ?date.}
ORDER BY DESC(?date) LIMIT 10
2. on cherche dans le dataset les contributions de ses connaissances (on précise que l’on veut un résultat au format XML
1. On cherche dans le graphe profil.rdf, :
3. On classe les résultats par date pour avoir les derniers, que l’on limite à 10
Si les personnes trouvées ont indiqué leur localisation (eg: <geo:Point geo:lat="51.473" geo:long="-2.5432"/>), on peut imaginer des possibilités encore plus étendues avec l’intégration de l’API Google Maps ! Et répondre à des questions encore plus complexes sous forme de service :Je cherche la localisation sur une carte des bibliothèques dépositaires des 3 derniers articles produits par les auteurs de tel séminaire…
SPARQL : les formes de recherche
SELECTRetourne toutes ou une partie des informations qui correspondent à une requête formulée
CONSTRUCTRetourne un graphe RDFconstruit par substitution de variables dans un modèles à trois dimensions (triplet) :_:a foaf:name ‘Alice’_:a foaf:mbox <mailto:[email protected]> CONSTRUCT { < http://exemple .org/person#Alice > vcard:FN ?name }
WHERE { ?x foaf:name ?name }Crée des propriétés vcard à partir des informations FOAF:=> < http://exemple .org/person#Alice > vcard FN ‘Alice’
ASKRetourne un indicateur booléen qu’une requête ait des réponses ou pasASK { ?x foaf:name ‘Alice’}S’il en existe une, la réponse sera‘yes’La réponse est enveloppée dans le code :
DESCRIBERetourne un graphe RDF qui décrit la ressource trouvée : fonction informative
<?xml version=1.0<sparql xmlns= «http://www.w3.org/2005/sparql – results# » >
<head></head><results>
<boolean>true</boolean></results>
</sparql>
OpenURL
Propose une syntaxe pour exprimer une référence au sein d’une URL
Le but d’openURL est de créer un lien entre une référence et une ressource plein-texte présente dans un bouquet auquel une bibliothèque est abonnée ou dans une archive ouverte.
Une base bibliographique doit être capable de produire une URL qui ne point pas vers une ressource donnée, mais qui la décrive d’un point de vue purement bibliographique.
Construction d’une URL avec un vocabulaire de requête normalisé:http://editeur.com/ ?genre=article&aulast=lecomte&aufirst=Sébastien&title=XML et l’expression de la temporalité&isbn= xxxx-xxxx
auteur nom=Lecomteprénom=Sébastien
isbn= xxxx-xxxxtitre= XML et l’expression de la temporalité
Réunit une ensemble de métadonnées qui décrivent une ressource. Ces métadonnées véhiculées par une requête HTTP peuvent être interprétées par le fournisseur de contenu.
openURL
Service lié aux extensions des « OPAC de nouvelle génération », OpenURL permet à un catalogue de manifester l’existence d’un ressource accessible pour un utilisateur donné
Requête d’utilisateur (web)
Base de références
Résolveur openURL
Signale l’existence de la ressource si elle est accessible
Base de contenus:- Bouquet de périodiques électroniques- Archive ouverte
Crée un lien vers la
ressource
WebServices
Un serveur propose des fonctions qui peuvent être invoquées à distance via le web.
Méthode héritée de RPC (Remote Procedure Call), famille UNIX.
S’appuient sur HTTP et ne nécessitent pas d’ouverture de ports particuliers sur les firewalls.
Protocoles utilisés : SOAP, XML-RPC
Offrent la possibilité de manifester des fonctions agrégées dans une page web, et d’embarquer un contexte (par exemple un ticket d’authentification).
Les bibliothèques pourraient par exemple proposer une consultation de leur catalogue à travers un environnement particulier ou un ENT, via WebService.
Pratiques des usagers : émergence de nouveaux besoins
Exemple avec iGoogle
Exemple avec NetVibes
Dispositifs ASYNCHRONES
La récupération de données
L’échange de données en iso2709
Une notice enregistrée au format ISO 2709 présente le schéma suivant :
Voir aussi :
XML par la pratique [Texte imprimé] : bases indispensables, concepts et cas pratiques / [Sébastien Lecomte]. - Nantes : Éd. ENI, cop. 2005. - 1 vol. (353 p.) : ill., couv. ill. ; 21 cm. - (Ressources informatiques, ISSN 1627-8224).
Index ISBN 2-7460-2906-5 (br.) : 27,14 EUR. - EAN 9782746029064
Exemple de notice : de l’isbd à iso2709
01510nam1 22003612i 450 00100110000000500170001101000380002810000410006610100080010710200070011510501800122200009300140205001200233210002200245211001300267215005500280225004000335330029800375333001700673345001800690410005200708606003000760610008400790676001400874676001300888700004100901801003300942901008300975902001701058903002801075903003501103947001001138-2008401207-20081010000000.0- a978-2-7460-4644-3 bBr. d27.14 EUR- a20081010d2008 m |0fre|01 ||||ba-0 afre- aFR- aa 0||y|-1 aXML par la pratique ebases indispensables, concepts et cas pratiques fSÂebastien Lecomte- a2e Âed.- aNantes cENI d2008- a20081208- a353 p. cillustrations en noir et blanc d22 x 18 cm-2 aRessources informatiques x1627-8224- aPrÂesentation des concepts fondamentaux de XML au travers de cas pratiques Áa implÂementer. Aborde notamment la syntaxe du langage XML, montre comment concevoir des documents et des grammaires XML simples, comment lier des documents XML entre eux, et comment mettre en forme des documents XML.- aTous niveaux- b9782746046443- 0 34237610000 tRessources informatiques x1627-8224- aXML (langage de balisage)-0 aInternet alangage de programmation astructure de donnÂees adocument multimÂedia- a005.3 v99- a004 v99a- 1 32003090210 aLecomte bSÂebastien 4070- 3 aFR bElectre c20081010 gAFNOR- 39800003724 aExtendible markup language 39800003724 aExtensible markup language- aTous niveaux- aTechniques Informatique- aLivres pratiques Autoformation- c27.14-
Label
Répertoire
Zones
Séparateur de notices (invisible)
le LABEL (taille fixe : 24 octets)
Si on décompose le label de la notice de la façon indiquée, on a 8 "groupes" d'information.01510nam1·22003612i·450·
Ce qui nous donne :
1 2 3 4 5 6 7 8
01510 nam am1- 2 2 00361
2i· 450·
nombre d’octets!
le répertoire (taille variable)
Le répertoire comprend les éléments suivants :a/ une étiquette (=3 octets)
b/ une longueur de zone qui correspond à la position 20 du label (=4 octets)
c/ la position du premier caractère qui correspond à la position 21 du label (=5 octets)
d/ longueur de la partie relative à l'application qui correspond à la position 22 du label (=0 octet)
b+c+d= « 450 » du label UNIMARC
Si on lit le répertoire de notre notice en suivant la fréquence de 3/4/5/0 octets :
00100110000000500170001101000380002810000410006610100080010710200070011510501800122200009300140205001200233210002200245211001300267215005500280225004000335330029800375333001700673345001800690410005200708606003000760610008400790676001400874676001300888700004100901801003300942901008300975902001701058903002801075903003501103947001001138
001 0011 00000005 0017 00011 010 0038 00028 100 0041 00066101 0008 00107102 0007 00115105 0018 00122200 0093 00140210 0022 00245211 0013 00267215 0055 00280225 0040 00335330 0298 00375333 0017 00673345 0018 00690410 0052 00708606 0030 00760610 0084 00790676 0014 00874676 0013 00888700 0041 00901801 0033 00942901 0083 00975902 0017 01058903 0028 01075903 0035 01103947 0010 01138
… on obtient :
XML par la pratique [Texte imprimé] : bases indispensables, concepts et cas pratiques / [Sébastien Lecomte]. - Nantes : Éd. ENI, cop. 2005. - 1 vol. (353 p.) : ill., couv. ill. ; 21 cm. - (Ressources informatiques, ISSN 1627-8224).
Index ISBN 2-7460-2906-5 (br.) : 27,14 EUR. - EAN
9782746029064
01510nam1 22003612i 450 00100110000000500170001101000380002810000410006610100080010710200070011510501800122200009300140205001200233210002200245211001300267215005500280225004000335330029800375333001700673345001800690410005200708606003000760610008400790676001400874676001300888700004100901801003300942901008300975902001701058903002801075903003501103947001001138-2008401207-20081010000000.0- a978-2-7460-4644-3 bBr. d27.14 EUR- a20081010d2008 m |0fre|01 ||||ba-0 afre- aFR- aa 0||y|-1 aXML par la pratique ebases indispensables, concepts et cas pratiques fSÂebastien Lecomte- a2e Âed.- aNantes cENI d2008- a20081208- a353 p. cillustrations en noir et blanc d22 x 18 cm-2 aRessources informatiques x1627-8224- aPrÂesentation des concepts fondamentaux de XML au travers de cas pratiques Áa implÂementer. Aborde notamment la syntaxe du langage XML, montre comment concevoir des documents et des grammaires XML simples, comment lier des documents XML entre eux, et comment mettre en forme des documents XML.- aTous niveaux- b9782746046443- 0 34237610000 tRessources informatiques x1627-8224- aXML (langage de balisage)-0 aInternet alangage de programmation astructure de donnÂees adocument multimÂedia- a005.3 v99- a004 v99a- 1 32003090210 aLecomte bSÂebastien 4070- 3 aFR bElectre c20081010 gAFNOR- 39800003724 aExtendible markup language 39800003724 aExtensible markup language- aTous niveaux- aTechniques Informatique- aLivres pratiques Autoformation- c27.14-
01510nam1 22003612i 450 00100110000000500170001101000380002810000410006610100080010710200070011510501800122200009300140205001200233210002200245211001300267215005500280225004000335330029800375333001700673345001800690410005200708606003000760610008400790676001400874676001300888700004100901801003300942901008300975902001701058903002801075903003501103947001001138-2008401207-20081010000000.0- a978-2-7460-4644-3 bBr. d27.14 EUR- a20081010d2008 m |0fre|01 ||||ba-0 afre- aFR- aa 0||y|-1 aXML par la pratique ebases indispensables, concepts et cas pratiques fSÂebastien Lecomte- a2e Âed.- aNantes cENI d2008- a20081208- a353 p. cillustrations en noir et blanc d22 x 18 cm-2 aRessources informatiques x1627-8224- aPrÂesentation des concepts fondamentaux de XML au travers de cas pratiques Áa implÂementer. Aborde notamment la syntaxe du langage XML, montre comment concevoir des documents et des grammaires XML simples, comment lier des documents XML entre eux, et comment mettre en forme des documents XML.- aTous niveaux- b9782746046443- 0 34237610000 tRessources informatiques x1627-8224- aXML (langage de balisage)-0 aInternet alangage de programmation astructure de donnÂees adocument multimÂedia- a005.3 v99- a004 v99a- 1 32003090210 aLecomte bSÂebastien 4070- 3 aFR bElectre c20081010 gAFNOR- 39800003724 aExtendible markup language 39800003724 aExtensible markup language- aTous niveaux- aTechniques Informatique- aLivres pratiques Autoformation- c27.14-
|-1 aXML par la pratique ebases indispensables, concepts et cas pratiques fSÂebastien Lecomte-
Etiquette 200
La zone comporte (00)93 octets
Elle commence à la position (00)140
200 0093 00140
Le précédent contrôle appliqué par le répertoire ISO 2709 n’existe pas avec MarcXchange (absent du format), il faut le créer via l’applicatif, et le recalculer à chaque conversion vers ISO 2709…
MarcXchange : exemple
<?xml version "1.0" encoding="UTF-8" ?><collection xmlns="info:lc/xmlns/marcxchange-v-1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"[…]> <record format="UNIMARC" type="Bibliographic">
<leader>01510nam1 22003612i 450</leader>[…]
<datafield tag="200" ind1="1" ind2=" "><subfield code="a">XML par la pratique</subfield><subfield code="e">bases indispensables, concepts et cas pratiques</subfield><subfield code="f">SÂebastien Lecomte</subfield>
</datafield>[…] </record></collection>
Le label des notices est traité comme un simple chaîne
MarcXchange : structure du schéma
collection
record
subfield
datafieldcontrolfieldleader
id
id, format, type
idid
tag
id, ind1,… ind8
tag
id
code
Élément de plus haut niveau
Élément racine : début de la notice
Label de la notice de l’ISO 2709 (24 octets)
Elément de contrôleZone de l’identifiantDe l’ISO 2709
Déclaration des zones
Structure hiérarchique
attribut obligatoire
attribut facultatif
Déclaration desSous-zones
MarcXchange
Cadre d’élaboration général pour des schémas « locaux »
MARC 21 et UNIMARC sont reconnus comme des schémas locaux, mais nécessitent tout de même des adaptations locales pour la mise en œuvre de MarcXchange.
Assure la compatibilité de schémas locaux simples, sans perte d’informations (ou un minimum de pertes qui peuvent être répertoriées).
Schéma conçu de façon à contenir des données MARC
Peut servir à l’échange de notices MARC ou de « moyen de transport » pour faire migrer des notices au format natif MARC vers DublinCore.
MarcXchange
Usages majeurs
• Représenter une notice MARC en XML
• Décrire une ressource en XML
• Échanger des notices MARC en XML
• Transférer des notices MARC via des services en ligne (par exemple SRU)
• Transmettre des données à un éditeur
• Utiliser un format temporaire qui permet toute forme de transformation : conversion, publication, édition, validation
Par exemple, une notice peut entrer dans un « Workflow » (cycle de vie du document) au format XML, dans une application de gestion, puis être « verrouillée » et stockée à nouveau dans un format MARC.
OAI
Contexte
OAI-PMH répond au besoin d’interroger plusieurs bases en exprimant la description des ressources dans un langage uniforme et commun. Les données sont reproduites et stockées dans un entrepôt qui permet de les embrasser toutes à la fois. Cette fourniture est construites en deux temps : une reproduction, puis une agrégation.
Les données sont d’abord modelées sur un format commun : XML DC (mais d’autres formats sont possibles)
Elles sont ensuite stockées dans une nouvelle base.
Le protocole d’échange utilisé est HTTP
Il faut ensuite construire un moteur de recherche pour ménager des points d’entrée, des outils de référencement, de classement, etc. (Le moteur de recherche n’est pas fourni par le modèle OAI).
De nombreux produits open source sont actuellement disponibles pour mettre en œuvre un modèle OAI
OAI-PMH
Définition : OAI - PMH
Open Archive Initiative Protocol for Metadata Harvesting
Mvt 1 de l’interopérabiblité : aspect « normatif » : empilement structuré des données
Mvt 3 de l’interopérabilité : le protocole d’échange
Mvt 2 de l’interopérabiblité : XMLDublinCore
Origine du schéma : François Nawrocki : Le protocole OAI et ses usages en bibliothèque. (http://www.culture.gouv.fr/culture/dll/OAI-PMH.htm)
Un peu de vocabulaire…
Ressource (‘resource’) : c’est le document qui est décrit par un appareil bibliographique (la réalité à laquelle la description renvoie, une monographie imprimée, un document électronique…)
Item : c’est la notice informatique qui contient la description. Cette notice se voit attribuer un identifiant unique supplémentaire, totalement indépendant de celui du système local.
Enregistrement (‘record’): ce sont une partie des métadonnées de l’item qui sont choisies et « poussées » dans un fichier XML qui deviennent un enregistrement. OAI-PMH ne travaille pas avec la totalité des données, mais un jeu allégé.
Lot (‘set’) : c’est un possibilité d’OAI-PMH pour constituer des ensembles thématiques ou autres (par exemple ; les thèses d’un établissent dans un format donné et pour une période donnée).
001 092151655010 ##$a2-7460-2906-5$bBr.$d27,14 €073 #1$a9782746029064200 1#$a@XML par la pratique$bTexte imprimé$ebases indispensables, concepts et cas pratiques$f[Sébastien Lecomte]210 ##$aNantes$cÉd. ENI$dcop. 2005215 ##$a1 vol. (353 p.)$cill., couv. ill. en coul.$d22 cm225 0#$a@Ressources informatiques$fJoe z lle Musset$x1627-8224320 ##$aIndex410 ##$aRessources informatiques (Nantes), ISSN 1627-8224606 ##$aXML (langage de balisage)$2 rameau606 ##$aEchange électronique d'information$2rameau676 ##$a006.74$v22$zeng700 #1$aLecomte, Sébastien (19..-.... ; informaticien)$4070
item
<record>
<dc:title> Xml par la pratique : bases indispensables, concepts et cas pratiques</dc:title><dc:creator>Sébastien Lecomte</dc:creator><dc:type>Monographie imprimée</dc:type>…</record>
<identifier>oai:1380</identifier>
record
Métadonnées sur la ressource : le travail du fournisseur d’entrepôt
Principe général
Base 1 (spécificités
internes)
Base 2 (spécificités
internes)
Base 3 (spécificités
internes)
Base 4 (spécificités
internes)
Entrepôt à sémantique commune
Création d’enregistreme
nts en DC
Création d’enregistreme
nts en DC
Création d’enregistreme
nts en DC
Création d’enregistreme
nts en DC
Pour l’usager :
?query=…
Spécificité commune
: formulation d’une requête unique !
Mise en œuvre
Institution A
Entrepôt A : dc
SET 1
SET 2
SET 3
Institution B
Système local
Éditeur (=fournisseur)
Harvester Base de donnéelocale
« moissonnage » périodique et
planifié
Base de donnée« OAI »
Base de donnéelocale
Transformation XSL
Client
« Ingest »
L’interrogation d’un entrepôt OAI : Méthodes et arguments
Verbe Rôle Arguments Exemples
Identity Donne des informations sur l’entrepôt de données
-
ListSets Demande la liste des lots disponibles sur un entrepôt.
resumptionToken gallica:afrique
ListMetadataFormats Demande la liste des formats de métadonnées disponibles. Sans paramètre introduit, tous les formats disponibles pour au moins un item sont retournés. Avec le paramètre identifier, seul les formats disponibles pour un item donné sont retournés.
identifier oai-dc
lom
marcXml
ListRecords Retourne une liste d’enregistrements correspondant aux différents paramètres (dates, lots demandés).
from
until
metadataPrefix
set
resumptionToken
ListIdentifiers Récupère la liste des identifiants disponibles.
from
until
metadataPrefix
set
resumptionToken
GetRecord Permet la récupération d’un enregistrment donné, à partir d’un argument
identifier
metadataPrefix
1. Identify >> http://oai.bnf.fr/oai2/OAIHandler?verb=Identify
Exemple avec http://oai.bnf.fr/oai2/OAIHandler/?verb=...
2. ListSets >> http://oai.bnf.fr/oai2/OAIHandler?verb=ListSetsC’est la balise <setSpec> qu’il faut rechercher pour trouver un set
3. ListMetadataFormats >> http://oai.bnf.fr/oai2/OAIHandler?verb=ListMetadataFormats
NB 1. 2. et 3. répondent à la méthode ‘’verb=‘’. 4. 5. 6. demandent plus de précisions
>> http://oai.bnf.fr/oai2/OAIHandler?verb=ListRecords&metadataPrefix=oai_dc
4. ListRecords demande obligatoirement au moins un argument :
&metadataPrefix (et non pas *MetadaPrefix) : Attend un format de données, par exemple ‘oai_dc’
Autres arguments attendus : &set= …voir &ListSets&from : date d’enregistrement (type : AAAA-MM-JJ%)&until : date d’enregistrement (type : AAAA-MM-JJ%)
(obligatoire)
Utilisation d’un handler
>> http://oai.bnf.fr/oai2/OAIHandler?verb=ListRecords&metadataPrefix=oai_dc&set=gallica&from=2009-01-01&until=2009-06-01
5. ListIdentifiers demande obligatoirement au moins un argument :
>> http://oai.bnf.fr/oai2/OAIHandler?verb=ListIdentifiers&metadataPrefix=oai_dc
&metadataPrefix (et non pas *MetadaPrefix) : Attend un format de données, ici, ‘didl’ ou ‘oai_dc’
Autres arguments attendus : &set= …voir &ListSets&from : date d’enregistrement (type : AAAA-MM-JJ%)&until : date d’enregistrement (type : AAAA-MM-JJ%)
(obligatoire)
<header> <identifier>oai:bnf.fr:gallica/ark:/12148/bpt6k54265055</identifier> <datestamp>2009-01-08</datestamp> <setSpec>gallica:6:61</setSpec> <setSpec>gallica:monographies</setSpec> </header>
6. GetRecords demande obligatoirement au moins un argument :
&GetRecord
&identifier
(obligatoire)
>> http://oai.bnf.fr/oai2/OAIHandler?verb=GetRecord&metadataPrefix=oai_dc&identifier=oai:bnf.fr:gallica/ark:/12148/bpt6k852111
&metadataPrefix (comme précédemment)
(obligatoire)
NB Il s’agit de l’identifier du nœud header/identifier et non pas de celui de dc:identifierExplication : l’identifier du header est un enregistrement (une clé ’’primaire’’ ou ‘’unique’’, tandis que le dc:identifier est une information de l’enregistrement, c’est une donnée.
On aurait pu avoir à traduire la requête GET avec une URL encodée pour l’identifier, pour tout ce qui suit &identifier= car ce n’est pas l’identifier que l’on demande, mais sa « représentation » dans le langage http (cf tableau URL encoding), ce qui aurait donné : &identifier=oai%3abnf%2efr%3agallica%2fark%3a%2f12148%2fbpt6k852111
Liste :badArgumentbadResumptionTokenbadVerbcannotDisseminateFormatidDoesNotExistidDoesNotMatchnoMetadataFormatsnoSearchHierarch
Messages d’erreur possibles
<?xml version="1.0" encoding="UTF-8" ?> - <OAI-PMH xmlns="http://www.openarchives.org/OAI/2.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd"> <responseDate>2009-09-21T15:48:40Z</responseDate> <request>http://prusse.sudoc.abes.fr:8080/OAISTAR_Real_Web/OAIHandler</request> <error code="badVerb">Value of the "verb" argument is not a legal OAI-PMH verb, the verb argument is missing, or the verb argument is repeated. Query string : verb=Record&metadataPrefix=oai_dc. Detailed description : incorrect verb = Record.</error> </OAI-PMH>
http://prusse.sudoc.abes.fr:8080/OAISTAR_Real_Web/OAIHandler?verb=Record&metadataPrefix=oai_dc
Le harvesting
Etape 1 : interroger un entrepôt et cibler un SET
Etape 2 : ingest initialLa réponse (POST) est un ensemble de notices XML, décliné dans plusieurs formats, normalisés le plus souvent : DC, LOM, MarcXML, TEF, … Les données recueillies doivent être insérées dans une base localeOn peut utiliser un programme pour le faire, mais dans la plupart des SIGB de nouvelle génération, on a besoin d’une étape intermédiaire de transformation XSL
Etape 3 : planification d’un update
Si l’on veut récupérer des notices de thèses du SUDOC, on peut utiliser une plateforme OAI (du site officiel) qui va nous aider à nous y retrouver :http://re.cs.uct.ac.za/ Le handler du SUDOC est http://prusse.sudoc.abes.fr:8080/OAISTAR_Real_Web/OAIHandler
Comparaison de http://prusse.sudoc.abes.fr:8080/OAISTAR_Real_Web/OAIHandler?verb=ListSetset de : http://re.cs.uct.ac.za/ avec le lien ListSets
Interrogation d’une thèse qui porte l’identifiant ‘2007NAN21013’
http://prusse.sudoc.abes.fr:8080/OAISTAR_Real_Web/OAIHandler?verb=GetRecord&metadataPrefix=oai_dc&identifier=2007NAN21013
Il va falloir utiliser une feuille de transformation TEF (exemple :http://cyberdoc.univ-lemans.fr/PUB/enssib/2009/Tef_to_BIU_THESE-STAR.xsl )
xsl:for-eachxsl:if (test=)
xsl:whenxsl:choosexsl:otherwise
xsl value-ofXsl:template
select=‘’*’’
Application pkpHarvester (public knowledge project) : manipulations
http://hephaistos.univ-lemans.fr/harvester-2.3.0/
Cas particulier d’ORI-OAI
Conclusion
L’OPAC … vs IGP
L’OPAC de SIGB ne remplit plus son rôle de signalement auprès des usagers
On préfère parler de SID (ou d’IGP dans certains cas) pour baliser l’accès à des sources hétérogènes. De même, on parlera plutôt d’utilisateur, voire d’usager que de lecteur, et de données plutôt que de notices.
L’effort de normalisation est capital pour :
- l’homogénéité des données
- la qualité des données
Avec l’émergence de nouveaux protocoles , les données sont transportées par la couche web et s’ouvrent à d’autres niveaux d’exploitation.
Avec l’interopérabilité, les professionnels de l’info-doc pensent leur repositionnement dans le monde de l’information…