La récupération de données bibliographiques par flux XML Evolution des catalogues : Métadonnées, Interopérabilité, web sémantique, FRBR et RDA ENS-LYON 17-19 juin 2013 La récupération de données bibliographiques par flux XML * Philippe.Bourdenet @univ-lemans.fr
Dispositifs SYNCHRONES
Z39.50
Le protocole Z39-50 Protocole d’échange pour une utilisation bibliographique qui 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 ». 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 Rq 1 Catalogue local (C/S ou émulation telnet) Base de données locale (MARC) SIGB 1 Bibliothèque 1
Règles de filtrage Utilisateur / bibliothécaire Rq 1 Rq 1 Catalogue local (C/S ou émulation telnet) Catalogue Z39.50 (port 210-21210) Base de données locale (MARC) Base de données locale (MARC) SIGB 1 SIGB 2 Bibliothèque 1 Bibliothèque 2
Utilisateur / bibliothécaire Rq 1 Rs 2 Rq 1 Catalogue local (C/S ou émulation telnet) Catalogue Z39.50 (port 210-21210) Rs 2 Base de données locale (MARC) Base de données locale (MARC) SIGB 1 SIGB 2 Bibliothèque 1 Bibliothèque 2
Utilisateur / bibliothécaire Rq 1 Rs 1 Rs 2 Rq 1 Catalogue local (C/S ou émulation telnet) Catalogue Z39.50 (port 210-21210) Rs 2 Base de données locale (MARC) Base de données locale (MARC) SIGB 1 SIGB 2 Bibliothèque 1 Bibliothèque 2
Utilisateur / bibliothécaire Rq 1 Rs 1 Rs 2 Rq 1 Catalogue local (C/S ou émulation telnet) Catalogue Z39.50 (port 210-21210) Rs 2 Base de données locale (xMARC) Base de données locale (xMARC) ? SIGB 1 SIGB 2 Bibliothèque 1 Bibliothèque 2
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 Système B TITRE T TITRE T Unimarc.200a Unimarc.200a Index: ’TitreM’ 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é).
Un protocole de liaison : Search/Retrieve Protocol Utilisateur / bibliothécaire Rq 1 Rs 1 Rs 2 Rq 1 Catalogue local (C/S ou émulation telnet) Catalogue Z39.50 (port 210-21210) Rs 2 Base de données locale (MARC) Base de données locale (MARC) SIGB 1 SIGB 2 Bibliothèque 1 Bibliothèque 2
Utilisateur / bibliothécaire Rq 1 Rs 1 Rs 2 Rq 1 Catalogue local (C/S ou émulation telnet) BASE D’INFORMATION Rs 2 Mais se focalise sur le dialogue entre les plates-formes. Il pourrait très bien s’adapter à la recherche d’information en général, mais il est totalement ignoré en dehors des sphères des bibliothèques. Autre particularité : il gère des opérateurs booléens Base de données locale (xMARC) Le protocole Z39.50 ne s’occupe pas du fonctionnement interne de la plate-forme distante… SIGB 1 Bibliothèque 1 13 13
ANS1 : Abstract Notation Syntax 1 (ISO 8824) 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 le protocole. La norme fait état de : ANS1 : Abstract Notation Syntax 1 (ISO 8824) Un langage de description de données indépendant des matériels et 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 syntaxe spécifique de transfert de données De même le professionnel de l’information s’y retrouve aussi car la complexité du modèle repose sur le paramétrage de notions spécifiquement bibliothéconomiques… 14 14
Systèmes de requêtes HTTP RFC MIME-SMTP HTTP 1.0 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) 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 RFC 1808 : pour les URL relatives (Memo) ./ correspond au dossier actuel ; ../ correspond au dossier parent ; / correspond au dossier racine
RFC 1945 : Hyper text Transfer Protocol – HTTP/1.0 (Specifications) Terminologie Connexion 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.
HTTP et MIME (Multipurpose Internet Mail Extensions) 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 niveau CR LF = marqueur de fin de ligne (Carriage Returne Line Feed) LWS = en-tête TEXT = utilisée pour décrire des informations descriptives. ISO-8859-1 implicite HEX = "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é
?halsid=0s9v93i6o5altejbh58n9j2845 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 Ouvrages disponibles sur Victor Hugo &CRIT1=VICTOR%20HUGO &OPER1=and
Requêtes HTTP GET C'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. HEAD Cette méthode ne demande que des informations sur la ressource, sans demander la ressource elle-même. POST Cette méthode doit être utilisée lorsqu'une requête modifie la ressource. OPTIONS Cette méthode permet d'obtenir les options de communication d'une ressource ou du serveur en général. CONNECT Cette méthode permet d'utiliser un proxy comme un tunnel de communication. TRACE Cette 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. PUT Cette méthode permet d'ajouter une ressource sur le serveur. DELETE Cette méthode permet de supprimer une ressource du serveur.
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’inscrit dans un cadre universel : XML S’appuie sur un ensemble de formats pivots universels : DC, MODS, MarcXML, … 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
au client SRU (Search/Retrieve via URL) et SRW (Search/Retrieve Web service) ReST = Representational State Transfer SOAP = Simple Object Access Protocol Encode une requête au sein d’une URL Encode une requête au sein d’une URL Renvoie un fichier XML (entre autres formats) Base au format hétérogène Base de nature hétérogène : Tout objet (msg, archive,…)
SRU (et SRW) http://www.loc.gov/standards/sru/ Utilisent tous deux le protocole HTTP pour l’échange de requêtes 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 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 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 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) 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.
Exemple de requête Paramètres : 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) Contient une séquence de clés de classement appliquée au résultat. Stylesheet Spécifie une URL pour appliquer une feuille de styles. extraRequestData 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://lx2.loc.gov:210/LCDB?operation=searchRetrieve&version=1.1 &query=balzac&maximumRecords=10&recordSchema={mods | dc | marcxml} Voir en DublinCore, voir en marcxml
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 bird dinosaur and "ice age" dinosaur not reptile dinosaur 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 < 1980 lengthOfFemur > 2.4 bioMass >= 100 Recherches de proximité de termes: ribs prox/distance<=5 chevrons ribs prox/unit=sentence chevrons ribs 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"
Réponse pour http://lx2.loc.gov:210/LCDB ?operation=searchRetrieve &version=1.1 &query=balzac &maximumRecords=10 &recordSchema=dc
Recherche par titre […] http://lx2.loc.gov:210/LCDB ?version=1.1 &operation=searchRetrieve &query=dc.title=eugenia+and+grandet &maximumRecords=20 &recordSchema=dc […]
Requête plus large http://lx2.loc.gov:210/LCDB?operation=searchRetrieve&version=1.1&query=balzac+and+literature&maximumRecords=10&recordSchema=dc […]
Paramètre de contrôle du schéma 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.0 reference | schema mads info:srw/schema/1/mads-v1.0 Zthes Schema Version 1.0 reference | 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.1 info:srw/schema/11/pam-v2.1
Exemple de notice retournée avec le paramètre &recordSchema=marcxml : <?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> Il existe aussi une « classe » unimarcxml… mais elle n’est pas implémentée
SRU Termes de recherche : Ok Bibliothèque du Congrès JSTOR
x SRU balzac literature | Termes de recherche : Ok Bibliothèque du Congrès JSTOR
x SRU balzac literature | Termes de recherche : balzac literature | Ok x Bibliothèque du Congrès JSTOR Construction d’une requête type SRU à partir des termes saisis : 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.
Quelques plates-formes SRU disponibles… En France ABES Ailleurs en Europe Finlande : NELLI Dutch union Catalog Espagne : Biblioteca Virtual del Patrimonio Bibliográfico Suisse : Au niveau européen projet TEL, la Bibliothèque européenne Aux Etats-Unis J-STOR (http://dfr.jstor.org/sru/) [exemple] ARTstor Worldcat Beta Library of Congress
Web Services
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.
Développements d’API Expression de requêtes http - Création d’un ticket, d’une session, contrôlée par un certificat - Embarquement de termes de recherches dans une « URL » Exemple s : - compte lecteur intégré à un ENT - mise à dispositions d’ouvrages pour un examen, un partiel - fenêtre courte d’interrogation du catalogue - bibliographies sous formes de Fils RSS - accès aux brèves du site/blog institutionnel Déporter le catalogue dans d’autres environnements…
Pratiques des usagers : émergence de nouveaux besoins Exemple avec iGoogle
…avec netvibes Collections numériques Catalogue collectif
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 SPARQL for RDF SPARQL Query for RDF DC – MarcXml … SRU/SRW SOAP/REST CQL DC – XML - URL WebServices Divers langages possibles
Dispositifs ASYNCHRONES
La récupération de données
Une notice enregistrée au format ISO 2709 présente le schéma suivant : L’échange de données en iso2709 Une notice enregistrée au format ISO 2709 présente le schéma suivant : Voir aussi :
Exemple de notice : de l’isbd à iso2709 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 Label 01510nam1 22003612i 450 00100110000000500170001101000380002810000410006610100080010710200070011510501800122200009300140205001200233210002200245211001300267215005500280225004000335330029800375333001700673345001800690410005200708606003000760610008400790676001400874676001300888700004100901801003300942901008300975902001701058903002801075903003501103947001001138-2008401207-20081010000000.0- a978-2-7460-4644-3bBr.d27.14 EUR- a20081010d2008 m |0fre|01 ||||ba-0 afre- aFR- aa 0||y|-1 aXML par la pratiqueebases indispensables, concepts et cas pratiquesfSÂebastien Lecomte- a2e Âed.- aNantescENI d2008- a20081208- a353 p.cillustrations en noir et blancd22 x 18 cm-2 aRessources informatiquesx1627-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- 034237610000tRessources informatiquesx1627-8224- aXML (langage de balisage)-0 aInternetalangage de programmationastructure de donnÂees adocument multimÂedia- a005.3v99- a004v99a- 132003090210aLecomtebSÂebastien 4070- 3aFRbElectrec20081010gAFNOR- 39800003724aExtendible markup language 39800003724aExtensible markup language- aTous niveaux- aTechniques Informatique- aLivres pratiques Autoformation- c27.14- Répertoire Zones Séparateur de notices (invisible)
le LABEL (taille fixe : 24 octets) nombre d’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- 00361 2i· 450·
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 : 0010011000000050017000110100038000281000041000661010008001071020007001151050 1800122200009300140205001200233210002200245211001300267215005500280225004000 3353300298003753330017006733450018006904100052007086060030007606100084007906 7600140087467600130088870000410090180100330094290100830097590200170105890300 2801075903003501103947001001138
001 0011 00000 005 0017 00011 010 0038 00028 100 0041 00066 101 0008 00107 102 0007 00115 105 0018 00122 200 0093 00140 210 0022 00245 211 0013 00267 215 0055 00280 225 0040 00335 330 0298 00375 333 0017 00673 345 0018 00690 410 0052 00708 606 0030 00760 610 0084 00790 676 0014 00874 676 0013 00888 700 0041 00901 801 0033 00942 901 0083 00975 902 0017 01058 903 0028 01075 903 0035 01103 947 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 0010011000000050017000110100038000281000041000661010008001071020007001151050 1800122200009300140205001200233210002200245211001300267215005500280225004000 3353300298003753330017006733450018006904100052007086060030007606100084007906 7600140087467600130088870000410090180100330094290100830097590200170105890300 2801075903003501103947001001138-2008401207-20081010000000.0- a978-2-7460-4644-3bBr.d27.14 EUR- a20081010d2008 m |0fre|01 ||||ba-0 afre- aFR- aa 0||y|-1 aXML par la pratiqueebases indispensables, concepts et cas pratiquesfSÂebastien Lecomte- a2e Âed.- aNantescENI d2008- a20081208- a353 p.cillustrations en noir et blancd22 x 18 cm-2 aRessources informatiquesx1627-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- 034237610000tRessources informatiquesx1627-8224- aXML (langage de balisage)-0 aInternetalangage de programmationastructure de donnÂees adocument multimÂedia- a005.3v99- a004v99a- 132003090210aLecomtebSÂebastien 4070- 3aFRbElectrec20081010gAFNOR- 39800003724aExtendible markup language 39800003724aExtensible markup language- aTous niveaux- aTechniques Informatique- aLivres pratiques Autoformation- c27.14-
La zone comporte (00)93 octets 01510nam1 22003612i 450 0010011000000050017000110100038000281000041000661010008001071020007001151050 1800122200009300140205001200233210002200245211001300267215005500280225004000 3353300298003753330017006733450018006904100052007086060030007606100084007906 7600140087467600130088870000410090180100330094290100830097590200170105890300 2801075903003501103947001001138-2008401207-20081010000000.0- a978-2-7460-4644-3bBr.d27.14 EUR- a20081010d2008 m |0fre|01 ||||ba-0 afre- aFR- aa 0||y|-1 aXML par la pratiqueebases indispensables, concepts et cas pratiquesfSÂebastien Lecomte- a2e Âed.- aNantescENI d2008- a20081208- a353 p.cillustrations en noir et blancd22 x 18 cm-2 aRessources informatiquesx1627-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- 034237610000tRessources informatiquesx1627-8224- aXML (langage de balisage)-0 aInternetalangage de programmationastructure de donnÂees adocument multimÂedia- a005.3v99- a004v99a- 132003090210aLecomtebSÂebastien 4070- 3aFRbElectrec20081010gAFNOR- 39800003724aExtendible markup language 39800003724aExtensible markup language- aTous niveaux- aTechniques Informatique- aLivres pratiques Autoformation- c27.14- Etiquette 200 |-1 aXML par la pratiqueebases indispensables, concepts et cas pratiquesfSÂebastien Lecomte- La zone comporte (00)93 octets Elle commence à la position (00)140 200 0093 00140
DublinCore la balise <head> doit posséder l'attribut profile avec la valeur http://dublincore.org/documents/2008/08/04/dc-html/ Déclaration des propriétés de DublinCore : <link rel="schema.DC" href="http://purl.org/dc/elements/1.1/" /> DC Gère 15 attributs > http://www.bnf.fr/fr/professionnels/formats_catalogage/a.f_dublin_core.html
Propriété Description title Titre du document : il s'agit a priori du titre principal du document. creator Créateur du document : nom de la personne, de l'organisation ou du service à l'origine de la rédaction du document. subject Sujet et mots-clefs : mots-clés, phrases de résumé, ou codes de classement. Il est préférable d'utiliser des mots-clés choisis dans le cadre d'une politique de classement. Par exemple, on peut utiliser les codages de la bibliothèque du congrès (LCSH et LCC), le vocabulaire médical (MESH), ou les notations décimales des bibliothécaires (DDC et UDC). description Description du document : résumé, table des matières, ou texte libre. publisher Publicateur du document : nom de la personne, de l'organisation ou du service à l'origine de la publication du document.
contributor Contributeur au document : nom d'une personne, d'une organisation ou d'un service qui contribue ou a contribué à l'élaboration du document. date Date d'un événement dans le cycle de vie du document : il peut s'agir par exemple de la date de création ou de la date de mise à disposition. Il est recommandé de spécifier la date au format W3CDTF (AAAA-MM-JJ). type Nature ou genre du contenu : grandes catégories de document. Il est recommandé d'utiliser des termes clairement définis au sein de son organisation. Par exemple, le Dublin Core définit quelques types dans le vocabulaire DCMITypes. format Format du document : format physique ou électronique du document. Par exemple, type de média ou dimensions (taille, durée). On peut spécifier le matériel et le logiciel nécessaires pour accéder au document. Il est recommandé d'utiliser des termes clairement définis, par exemple les types MIME. identifier Identificateur non ambigu : il est recommandé d'utiliser un système de référencement précis, par exemple les URI ou les numéros ISBN.
source Ressource dont dérive le document : le document peut découler en totalité ou en partie de la ressource en question. Il est recommandé d'utiliser une dénomination formelle des ressources, par exemple leur URI. language Langue du document : il est recommandé d'utiliser un code de langue conforme au format RFC4646. relation Lien vers une ressource liée : il est recommandé d'utiliser une dénomination formelle des ressources, par exemple leur URI. coverage Portée du document : la portée inclut un domaine géographique, un laps de temps, ou une juridiction (nom d'une entité administrative). Il est recommandé d'utiliser des représentations normalisées de ces types de données, par exemple TGN (Thesaurus of Geographic Names, un dictionnaire de noms de lieux), ISO3166, Point ou Box pour la portée spatiale, Period ou W3CDTF pour la portée temporelle. rights Droits relatifs à la ressource : permet de donner des informations sur le statut des droits du document, par exemple la présence d'un copyright, ou un lien vers le détenteur des droits. L'absence de cette propriété ne présume pas que le document est libre de droits.
OAI-PMH
Généralités 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 : une logique d’entrepôt 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é : XML DublinCore
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 ou « collection » (‘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).
Métadonnées sur la ressource : le travail du fournisseur d’entrepôt 001 092151655 010 ##$a2-7460-2906-5$bBr.$d27,14 € 073 #1$a9782746029064 200 1#$a@XML par la pratique$bTexte imprimé$ebases indispensables, concepts et cas pratiques$f[Sébastien Lecomte] 210 ##$aNantes$cÉd. ENI$dcop. 2005 215 ##$a1 vol. (353 p.)$cill., couv. ill. en coul.$d22 cm 225 0#$a@Ressources informatiques$fJoe͏̈lle Musset$x1627-8224 320 ##$aIndex 410 ##$aRessources informatiques (Nantes), ISSN 1627-8224 606 ##$aXML (langage de balisage)$2 rameau 606 ##$aEchange électronique d'information$2rameau 676 ##$a006.74$v22$zeng 700 #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
Entrepôt à sémantique commune 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) Création d’enregistrements en DC Création d’enregistrements en DC Création d’enregistrements en DC Création d’enregistrements en DC Spécificité commune Entrepôt à sémantique commune ?query=… Pour l’usager : : formulation d’une requête unique !
Mise en œuvre
« moissonnage » périodique et planifié Client Institution A Institution B Système local Entrepôt A : dc Base de donnée locale SET 1 Harvester « moissonnage » périodique et planifié SET 2 Base de donnée locale SET 3 Transformation XSL Base de donnée « OAI » « Ingest » Éditeur (=fournisseur)
L’interrogation d’un entrepôt OAI : Méthodes et arguments Verbe Rôle Arguments Exemples Identify 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 ListIdentifiers Récupère la liste des identifiants disponibles. GetRecord Permet la récupération d’un enregistrment donné, à partir d’un argument
Utilisation d’un handler Exemple avec http://oai.bnf.fr/oai2/OAIHandler/?verb=... 1. Identify >> http://oai.bnf.fr/oai2/OAIHandler?verb=Identify 2. ListSets >> http://oai.bnf.fr/oai2/OAIHandler?verb=ListSets C’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 4. ListRecords demande obligatoirement au moins un argument : (obligatoire) &metadataPrefix (et non pas *MetadaPrefix) : Attend un format de données, par exemple ‘oai_dc’ >> http://oai.bnf.fr/oai2/OAIHandler?verb=ListRecords&metadataPrefix=oai_dc Autres arguments attendus : &set= …voir &ListSets &from : date d’enregistrement (type : AAAA-MM-JJ%) &until : date d’enregistrement (type : AAAA-MM-JJ%)
&metadataPrefix (et non pas *MetadaPrefix) : >> 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 : (obligatoire) &metadataPrefix (et non pas *MetadaPrefix) : Attend un format de données, ici, ‘didl’ ou ‘oai_dc’ >> http://oai.bnf.fr/oai2/OAIHandler?verb=ListIdentifiers&metadataPrefix=oai_dc Autres arguments attendus : &set= …voir &ListSets &from : date d’enregistrement (type : AAAA-MM-JJ%) &until : date d’enregistrement (type : AAAA-MM-JJ%) <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>
&metadataPrefix (comme précédemment) 6. GetRecords demande obligatoirement au moins un argument : &GetRecord (obligatoire) &metadataPrefix (comme précédemment) (obligatoire) &identifier NB Il s’agit de l’identifier du nœud header/identifier et non pas de celui de dc:identifier Explication : 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. >> http://oai.bnf.fr/oai2/OAIHandler?verb=GetRecord&metadataPrefix=oai_dc&identifier=oai:bnf.fr:gallica/ark:/12148/bpt6k852111 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
Messages d’erreur possibles Liste : badArgument badResumptionToken badVerb cannotDisseminateFormat idDoesNotExist idDoesNotMatch noMetadataFormats noSearchHierarch http://prusse.sudoc.abes.fr:8080/OAISTAR_Real_Web/OAIHandler?verb=Record&metadataPrefix=oai_dc <?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>
Le handler du SUDOC est : http://staroai.theses.fr/OAIHandler Le harvesting Etape 1 : interroger un entrepôt et cibler un SET Etape 2 : ingest initial La 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 locale On 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 (XSLt) Etape 3 : planification d’un update Un outil pratique : 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://staroai.theses.fr/OAIHandler Comparaison de http://staroai.theses.fr/OAIHandler?verb=ListSets et de : http://re.cs.uct.ac.za/ puis « ListSets »
Interrogation d’une thèse qui porte l’identifiant ‘2008BOR13627’ http://staroai.theses.fr/OAIHandler?verb=GetRecord&metadataPrefix=oai_dc&identifier=2008BOR13627 voir Il va falloir utiliser une feuille de transformation TEF xsl:for-each xsl:if (test=) xsl:when xsl:choose xsl:otherwise xsl value-of Xsl:template select=‘’*’’
Un exemple pas à pas http://export.arxiv.org/oai2?verb=Identify http://export.arxiv.org/oai2?verb=ListSets http://export.arxiv.org/oai2?verb=ListMetadataFormats Composons une phrase : demandons les notices DC de la collection « Mathématiques » de arXiv.org : http://export.arxiv.org/oai2?verb=ListRecords&metadataPrefix=oai_dc&set=math Réponse : un fichier XML de 1000 notices !
Transformation XSL <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="math.xsl"?> <WSP> <record> <header> <identifier>oai:arXiv.org:0704.0002</identifier> <datestamp>2008-12-13</datestamp> <setSpec>math</setSpec> </header> <metadata> <oai_dc:dc xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ http://www.openarchives.org/OAI/2.0/oai_dc.xsd"> <dc:title>Sparsity-certifying Graph Decompositions</dc:title> <dc:creator>Streinu, Ileana</dc:creator> <dc:creator>Theran, Louis</dc:creator> <dc:subject>Mathematics - Combinatorics</dc:subject> <dc:subject>Computer Science - Computational Geometry</dc:subject> <dc:subject>05C85</dc:subject> <dc:subject>05C70</dc:subject> <dc:subject>68R10</dc:subject> <dc:subject>05B35</dc:subject> <dc:description> We describe a new algorithm, the $(k,\ell)$-pebble game with colors, and use it obtain a characterization of the family of $(k,\ell)$-sparse graphs and algorithmic solutions to a family of problems concerning tree decompositions of graphs. Special instances of sparse graphs appear in rigidity theory and have <?xml version="1.0" encoding="UTF-8" ?> <xsl:stylesheet version="1.0" xmlns="http://www.openarchives.org/OAI/2.0/" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ http://www.openarchives.org/OAI/2.0/oai_dc.xsd" > <xsl:template match="/"> <html> <body> <!-- ligne de presentation pour compter le nombre de notices --> <p><xsl:text>Nombre de notices dans le fichier : </xsl:text><xsl:value-of select="count(//record)"/></p> <!-- isole l'element parent --> <xsl:for-each select="/WSP/record/metadata/oai_dc:dc"> <!-- titre --> <li><xsl:value-of select="dc:title"/> </li> </xsl:for-each> </body> </html> </xsl:template> </xsl:stylesheet>
VOIR : http://cyberdoc.univ-lemans.fr/PUB/ENSSIB/xml/math.xml <xsl:template match="/"> <html> <body> <!-- ligne de presentation pour compter le nombre de notices --> <p><xsl:text>Nombre de notices dans le fichier : </xsl:text><xsl:value-of select="count(//record)"/></p> <!-- isole l'element parent --> <xsl:for-each select="/WSP/record/metadata/oai_dc:dc"> <!-- titre --> <li><xsl:value-of select="dc:title"/> / <xsl:value-of select="dc:creator"/></li> Ajout de l’auteur introduit par un « / » http://cyberdoc.univ-lemans.fr/PUB/ENSSIB/xml/math2.xml
Application pkpHarvester (public knowledge project) : manipulations http://hephaistos.univ-lemans.fr/harvester-2.3.0/
Cas particulier d’ORI-OAI Voir une feuille de transformation XSL
Catalogue de périodiques en ligne (AtoZ) Schémas de mise en œuvre de l’interopérabilité (3) iso2709 Catalogue d’imprimés OPAC Catalogue d’e-books csv/tabulé Catalogue de périodiques en ligne (AtoZ) IGP P.E.L. oai-pmh ORI-OAI Ressources Pédagogues CERIMES API Articles de BDD en ligne, Catalogues d’autres bibliothèques Ressources externes web service
Intégration des données pédagogiques à l’UM
CLE_PRIMAIRE NOT NULL, NUMBER(10) OAI_IDENTIFIER VARCHAR2(128) champ_de_classement (concatenation), VARCHAR2(240) champ_d’affichage (concatenation), VARCHAR2(240) CREATE_USER VARCHAR2(64) CREATE_DATE VARCHAR2(14) MODIFY_USER MODIFY_DATE TYPDOC <IDENTIFIER /> Binary Large Object Identifiant <TITLE /> “ Titre <LANGUAGE /> Langue du document <DESCRIPTION /> Résumé <KEYWORD /> Mot clé <DOCUMENT_TYPES /> <DOCUMENT_TYPE /> Type de document <AUTHOR /> Auteur <PUBLISHER /> Editeur <DATE /> Date de publication <FORMATS /> <FORMAT /> Format <URL /> URL d’accès <REQUIREMENTS> Nécessite <DURATION> Durée d’exécution <CONDITIONS> Conditions d’utilisation <LEARNING_RESOURCE_TYPES /> <LEARNING_RESOURCE_TYPE /> Type de ressource pédagogique <INTENDED_END_USER_ROLES /> <INTENDED_END_USER_ROLE /> Public concerné <CONTEXT /> Contexte <DEGREE /> Niveau <ADVICE /> Conseil d’utilisation <ACTIVITIES /> <ACTIVITY /> Activité <SET /> Fait partie de <SET_URL /> Niveau de l’ensemble <SET_DESCRIPTION /> Description de l’ensemble <DEWEY_ID /> Indice Dewey <DEWEY_LBL /> Libellé Dewey <RAMEAUX /> <RAMEAU /> Vedette RAMEAU <CLASSIFICATIONS_LOCALES /> <CLASSIFICATION_LOCALE /> Classification locale
oai:record/oai:header/oai:identifier <TITLE /> oai:record/oai:metadata/lom:lom/lom:general/lom:title/lom:string (voir détail ci-dessous) <LANGUAGE /> oai:record/oai:metadata/lom:lom/lom:general/lom:language <DESCRIPTION /> oai:record/oai:metadata/lom:lom/lom:general/lom:description/lom:string <KEYWORD /> oai:record/oai:metadata/lom:lom/lom:general/lom:keyword/lom:string <DOCUMENT_TYPES /> <DOCUMENT_TYPE /> oai:record/oai:metadata/lom:lom/lom:general/lomfr:documentType/lomfr:value <AUTHOR /> oai:record/oai:metadata/lom:lom/lom:lifeCycle/lom:contribute[lom:role/lom:value = 'author'] (voir détail ci-dessous) <PUBLISHER /> = 'publisher'] (voir détail ci-dessous) <DATE /> oai:record/oai:metadata/lom:lom/lom:lifeCycle/lom:contribute/lom:date/lom:dateTime <FORMATS /> <FORMAT /> oai:record/oai:metadata/lom:lom/lom:technical/lom:format <URL /> oai:record/oai:metadata/lom:lom/lom:technical/lom:location <REQUIREMENTS> oai:record/oai:metadata/lom:lom/lom:technical/lom:otherPlatformRequirements/lom:string <DURATION> oai:record/oai:metadata/lom:lom/lom:technical/lom:duration/lom:duration <CONDITIONS> oai:record/oai:metadata/lom:lom/lom:rights/lom:description/lom:string <LEARNING_RESOURCE_TYPES /> <LEARNING_RESOURCE_TYPE /> oai:record/oai:metadata/lom:lom/lom:educational/lom:learningResourceType/. <INTENDED_END_USER_ROLES /> <INTENDED_END_USER_ROLE /> oai:record/oai:metadata/lom:lom/lom:educational/lom:intendedEndUserRole/lom:value <CONTEXT /> oai:record/oai:metadata/lom:lom/lom:educational/lom:context/lom:value XSLIF <DEGREE /> <ADVICE /> oai:record/oai:metadata/lom:lom/lom:educational/lom:description/lom:string <ACTIVITIES /> <ACTIVITY /> oai:record/oai:metadata/lom:lom/lom:educational/lomfr:activity/lomfr:value <SET /> oai:record/oai:metadata/lom:lom/lom:relation/lom:kind/lom:value <SET_URL /> oai:record/oai:metadata/lom:lom/lom:relation/lom:resource/lom:identifier/lom:entry <SET_DESCRIPTION /> oai:record/oai:metadata/lom:lom/lom:relation/lom:resource/lom:description/lom:string <DEWEY_ID /> oai:record/oai:metadata/lom:lom/lom:classification/lom:taxonPath/lom:source XSLIF <DEWEY_LBL /> oai:record/oai:metadata/lom:lom/lom:classification/lom:taxonPath/lom:source XSLIF <RAMEAUX /> <ID> <RAMEAU /> oai:record/oai:metadata/lom:lom/lom:classification/lom:taxonPath/lom:taxon/lom:id oai:record/oai:metadata/lom:lom/lom:classification/lom:taxonPath/lom:taxon/lom:entry oai:record/oai:metadata/lom:lom/lom:classification/lom:taxonPath/lom:source/lom:string XSLIF <CLASSIFICATIONS_LOCALES /> <CLASSIFICATION_LOCALE /> oai:record/oai:metadata/lom:lom/lom:classification/lom:taxonPath XSLIF
=> Table AUTORITES du SID ? Traitement de l’auteur BEGIN:VCARDVERSION:3.0 N:Geneviève;Franck;;; FN:Franck Genevieve ORG:Laboratoire d'Hématologie Biologique du CHU d'Angers URL:http://www.univ-lemans.fr UID:catalogueur EMAIL;TYPE=INTERNET:FrAdr_elec@chu-angers.fr END:VCARD => Table AUTORITES du SID ? S ’appuyer sur le repérage d’une chaîne de caractères plutôt que sur un identifiant… Créer une sémantique commune a posteriori…
Traitement des descripteurs, des mots-clés et de la catégorisation <lom:classification> <lom:purpose> <lom:source>LOMv1.0</lom:source> <lom:value>idea</lom:value> </lom:purpose> <lom:taxonPath> <lom:source> <lom:string language="fre">RAMEAU</lom:string> </lom:source> <lom:taxon> <lom:id>FRBNF11947049</lom:id> <lom:entry> <lom:string language="fre">Cinématique</lom:string> </lom:entry> </lom:taxon> Ajout d’indicateurs DEWEY <lom:source> <lom:string language="fre">Classification 100 Dewey</lom:string> </lom:source> <lom:taxon> <lom:id>530</lom:id> => Incohérence dans le niveau de description
Traitement du niveau - LearningResourceType : propose un classement selon le type de contenu pédagogique, et peut prendre les valeurs suivantes : <xs:enumeration value="étude de cas" /> <xs:enumeration value="liste de références" /> <xs:enumeration value="jeu de données" /> <xs:enumeration value="autres" / Context : propose des niveaux qui pourront être répartis plus globalement entre L/M/D : <xs:enumeration value="bac+1" /> <xs:enumeration value="bac+2" /> <xs:enumeration value="bac+3" /> <xs:enumeration value="bac+4" /> <xs:enumeration value="bac+5" /> <xs:enumeration value="bac>=6" /> <xs:enumeration value="mastère" />
Activity : propose de qualifier le contenu selon un usage possible, ce qui considère le point de vue de l’usager (destinataire duc contenu pédagogique) en priorité : 1 exercice 2 autoévaluation 3 énoncé de problème 4 simulation 5 questionnaire 6 examen 7 évaluation 8 expérience 9 étude de cas 10 cours/présentation 11 animation 12 scénario pédagogique 13 démonstration 14 tutoriel 15 glossaire 16 guide 17 matériel de référence 18 méthodologie 19 liste de référence 20 outil 21 jeu de données. IntendeEndUserRole : qualifie le positionnment du public destinataire : <lom:intendedEndUserRole> <lom:source>LOMv1.0</lom:source> <lom:value>learner</lom:value> <!-- Public prioritairement destinataire de la ressource:Vocabulaire controlé voir liste ci dessous --> <-- teacher/learner/author/manager --> </lom:intendedEndUserRole>