<?xml version="1.0"?>
<!DOCTYPE webpage PUBLIC "-//Norman Walsh//DTD Website V2.1b1//EN" "../../../dtd/website.dtd" [
<!ENTITY config SYSTEM "configuration.xml" NDATA XML>
<!ENTITY entrepot SYSTEM "entrepot.xml" NDATA XML>
<!ENTITY moissonneur SYSTEM "moissonneur.xml" NDATA XML>
<!ENTITY sitemap SYSTEM "sitemap.xml" NDATA XML>
<!ENTITY url SYSTEM "api-url.xml" NDATA XML>
<!ENTITY xsp SYSTEM "api-xsp.xml" NDATA XML>
]>
<webpage id="oai_intro">
	<head>
		<title> SDX et le protocole OAI-PMH</title>
		<titleabbrev>OAI</titleabbrev>
		<author>
			<firstname>Martin</firstname>
			<surname>Sévigny</surname>
			<affiliation>
				<orgname>AJLSM</orgname>
			</affiliation>
		</author>

		<revhistory>
			<revision>
				<revnumber>1.0</revnumber>
				<date>2003-12-01</date>
			</revision>
		</revhistory>
	</head>
	<para>Le projet OAI (<emphasis><ulink url="http://www.openarchives.org">Open Archives Initiative</ulink>
		</emphasis>) a pour objectif de promouvoir l'interopérabilité des systèmes d'information documentaire en facilitant et automatisant l'échange de <emphasis role="italic">métadonnées</emphasis> à propos des ressources qu'ils gèrent. SDX étant lui-même un système documentaire, il était tout à fait naturel de s'intéresser à ce protocole. Depuis la version 2.2, SDX supporte entièrement le protocole <emphasis role="italic"><ulink url="http://www.openarchives.org/OAI/openarchivesprotocol.html">OAI-PMH</ulink>
		</emphasis>, à la fois comme <olink targetdocent="entrepot">entrepôt</olink> et <olink targetdocent="moissonneur">moissonneur</olink>.</para>

	<para>Le fonctionnement du protocole OAI est relativement simple et se fonde sur deux rôles bien distincts : un <emphasis role="italic">entrepôt OAI</emphasis> rend disponible des métadonnées, un <emphasis role="italic">moissonneur</emphasis> va chercher des métadonnées dans des entrepôts. Le protocole s'intéresse uniquement à la communication entre ces deux intervenants, et non à la manière dont l'entrepôt et le moissonneur vont gérer leurs données. Par ailleurs, cette communication s'effectue simplement via le protocole HTTP et des URLs simples.</para>
	<para>Les métadonnées qui circulent ainsi entre des entrepôts et des moissonneurs OAI sont nécessairement en format XML. Le protocole oblige les entrepôts à fournir des métadonnées à propos de leurs ressources en format <emphasis role="italic"><ulink url="http://www.dublincore.org/documents/dces/">Dublin Core non qualifié</ulink>
		</emphasis>, mais, et c'est très important, ils peuvent également fournir des métadonnées selon d'autres formats, d'autres vocabulaires. Ainsi, même si le Dublin Core est obligatoire, l'OAI ne se limite aucunement à ce format.</para>
	<para>Les interactions sont toujours initiées par un moissonneur, qui va <emphasis role="italic">interroger</emphasis> un entrepôt situé à une certaine adresse (URL). Les demandes effectuées par le moissonneur sont appelées des <emphasis role="italic"><ulink url="http://www.openarchives.org/OAI/openarchivesprotocol.html#ProtocolMessages">verbes</ulink>
		</emphasis>&#160;; le protocole prévoit 6 verbes qui donnent une bonne idée des possibilités offertes.</para>
	<variablelist>
		<varlistentry>
			<term>Identify</term>
			<listitem>
				<para>Ce verbe a simplement pour but de demander des informations générales sur l'entrepôt. Celui-ci retournera des informations telles que son nom, son adresse de base, la version du protocole qu'il supporte, ainsi que certaines caractéristiques de son support OAI.</para>
			</listitem>
		</varlistentry>
		<varlistentry>
			<term>ListIdentifiers</term>
			<listitem>
				<para>Avec ce verbe, l'entrepôt retourne au moissonneur la liste des identifiants des ressources pour lesquelles il peut offrir des métadonnées. On peut préciser cette demande en spécifiant une date de début et/ou une date de fin, les dates qualifiant les modifications de métadonnées dans l'entrepôt. On peut également spécifier un format de métadonnées&#160;; dans ce cas, seuls les identifiants des enregistrements qui sont offerts avec ce format seront retournés.</para>
			</listitem>
		</varlistentry>
		<varlistentry>
			<term>ListMetadataFormats</term>
			<listitem>
				<para>Ce verbe permet au moissonneur de connaître la liste des formats de métadonnées offerts par l'entrepôt. On peut l'accompagner d'un identifiant, ce qui permet d'avoir la liste des formats de métadonnées disponibles pour cet enregistrement en particulier.</para>
			</listitem>
		</varlistentry>
		<varlistentry>
			<term>ListSets</term>
			<listitem>
				<para>Ce verbe permet de connaître les <emphasis role="italic">ensembles</emphasis> (<emphasis role="italic">set</emphasis>) disponibles sur l'entrepôt. En effet, même si cette fonctionnalité est optionnelle, les entrepôts peuvent organiser les ressources et leurs métadonnées dans des ensembles, par exemple par thème, par lieu géographique, etc. En utilisant ce verbe, un moissonneur peut savoir quels sont les ensembles disponibles.</para>
			</listitem>
		</varlistentry>
		<varlistentry>
			<term>GetRecord </term>
			<listitem>
				<para>Par ce verbe, le moissonneur demande un enregistrement particulier, soit un jeu de métadonnées pour une ressource gérée par l'entrepôt. On doit donc nécessairement l'accompagner de l'identifiant de l'enregistrement ainsi que d'un format de métadonnées, par exemple le format Dublin Core.</para>
			</listitem>
		</varlistentry>
		<varlistentry>
			<term>ListRecords</term>
			<listitem>
				<para>Il s'agit du verbe qui permet de récupérer les métadonnées. On doit lui donner un format de métadonnées, et on peut également lui donner des dates de début et/ou de fin. On peut également demander un ensemble précis, et seulement les enregistrements qui font partie de cet ensemble seront retournés.</para>
			</listitem>
		</varlistentry>
	</variablelist>
	<para>Comme on peut le constater, ce protocole est très simple. Les informations importantes sont les identifiants (uniques et obligatoires), les enregistrements, les formats de métadonnées et les ensembles. Toutefois, une telle description ne mentionne pas deux autres aspects intéressants du protocole : les réponses peuvent être envoyées par partie (des groupes de 100 à la fois par exemple) et les entrepôts doivent également signaler les enregistrement supprimés, ce qui permet une parfaite synchronisation entre les outils qui récupèrent les informations du moissonneur et les données gérées par l'entrepôt.</para>
</webpage>
