Télécharger Installer Présentation Configuration Indexation Recherche OAI Entrepôts Moisson Javadoc Référence API-XSP Migration Schemas Performances | SDX et les entrepôts OAIUn entrepôt OAI doit rendre disponibles des métadonnées à propos d'objets documentaires. Dans SDX, les objets documentaires sont gérés au niveau d'une base de documents, car ce sont les documents XML indexés, ou encore les fragments de ces documents XML. Il est donc tout à fait naturel d'associer un entrepôt OAI à une base de documents dans SDX. SDX permet donc de transformer toute base de documents en entrepôt OAI, et ce en intervenant au niveau de la configuration de cette base de documents (donc dans le fichier application.xconf) et, éventuellement, en programmant des pipelines. SDX se chargera des aspects tels que les dates de dernière modification, les enregistrements supprimés, etc. La reponsabilité du développeur de l'application est donc de :
Les trois premiers items sont purement déclaratifs et très simples à mettre en place. Le dernier item peut être plus ou moins compliqué, selon la complexité de la transformation entre une unité documentaire et un format de métadonnées. Puisqu'un entrepôt OAI est associé à une base de documents dans SDX, la configuration de cet entrepôt OAI se fera à l'intérieur d'un élément sdx:documentBase dans le fichier application.xconf. On aura donc une structure qui ressemble à celle-ci : <sdx:documentBase ...> <sdx:repositories>...</sdx:repositories> <sdx:fieldList>...</sdx:fieldList> <sdx:index>...</sdx:index> <sdx:oai-repository>...</sdx:oai-repository> </sdx:documentBase> Dans la suite de cette page, nous allons expliquer la structure de l'élément sdx:oai-repository. C'est l'élément sdx:oai-repository lui-même qui contient les informations générales à propos de cet entrepôt elles doivent être renseignées par le développeur de l'application. Ces informations sont surtout utiles pour les requêtes OAI avec le verbe Identify.
Voici un exemple de configuration de ces informations générales : <sdx:oai-repository name="Thèses de doctorat de l'université Lumière Lyon 2 (France)" baseURL="http://monserveur.com/sdx/sdx/oai/mon-appli/ma-base" adminEmail="quelquun@quelquepart.pays unautre@ailleurs.com"> Les autres informations générales, c'est-à-dire la version du protocole supportée (2.0), la date la plus ancienne dans les documents de l'entrepôt OAI, le support ou non des enregistrements supprimés et la granularité des dates sont automatiquement générées par SDX ; elles n'ont pas besoin d'être renseignées dans le application.xconf. A noter que la granularité gérée par SDX est du type "à la journée" : "YYYY-MM-DDThh:mm:ssZ". Par ailleurs, SDX ne supporte pas deux fonctionnalités optionnelles du protocole : la possibiltié de fournir une description plus détaillées de l'entrepôt OAI de même que la possibilité de compresser les données. C'est pourquoi aucune configuration n'est prévue pour ces informations générales. Dans une base de documents SDX, on retrouve un certain nombre d'unités documentaires, soit des ensembles d'information qui peuvent être retournés comme résultat de recherche. La plupart du temps, ces unités documentaires correspondent à des documents XML indexés, mais parfois ces documents ont été fragmentés et dans ce cas il y aura plus d'unités documentaires que de documents XML. Par ailleurs, le scénario le plus courant consiste à offrir toutes les unités documentaires d'une base de documents dans l'entrepôt OAI correspondant. Toutefois, il peut arriver que seule une partie des unités documentaires doit s'y retrouver. SDX permet de configurer cela aisément sous la forme de restrictions. Le mécanisme général des restrictions est celui d'inclusion et d'exclusion d'unités documentaires, inclusions et exclusions qui doivent être exprimées sous la forme d'une requête de recherche. Si aucune mention de restriction n'est présente, alors toutes les unités documentaires font partie de l'entrepôt OAI. S'il y a au moins une inclusion, seules les unités documentaires qui la satisfont seront concernées, sauf si elles sont explicitement exclues. C'est un élément sdx:oai-subset qui permet de spécifier les restrictions ; il est donc facultatif et s'il n'est pas présent toutes les unités documentaires seront ajoutées à l'entrepôt. Il peut avoir deux sous-éléments, sdx:include pour une inclusion et sdx:exclude pour une exclusion. Ces deux éléments peuvent être dans n'importe quel ordre et répétés. Voici quelques exemples : <sdx:oai-repository> ... <!-- Seulement les unités qui satisfont une requête --> <sdx:oai-subset> <sdx:include query="sujet:physique"/> </sdx:oai-subset> </sdx:oai-repository> <sdx:oai-repository> ... <!-- Toutes les unités sauf certaines --> <sdx:oai-subset> <sdx:exclude query="statut:temp"/> </sdx:oai-subset> </sdx:oai-repository> <sdx:oai-repository> ... <!-- Combinaison de requêtes --> <sdx:oai-subset> <sdx:include query="sujet:physique sujet:chimie"/> <sdx:exclude query="statut:temp"/> </sdx:oai-subset> </sdx:oai-repository> Tous les entrepôts OAI doivent fournir des métadonnées en format Dublin Core. Mais d'autres formats peuvent également être envoyés sur demande. On doit donc spécifier quels sont les formats de métadonnées à offrir, mais aussi comment obtenir ces métadonnées à partir des unités documentaires contenues dans la base. Chaque format de métadonnées est spécifié par un élément sdx:oai-format que l'on retrouve à l'intérieur de sdx:oai-repository. Les attributs de cet élément permettent d'identifier et décrire ce format :
Ces attributs permettent donc de connaître les informations générales à propos du format de métadonnées. Il reste ainsi à savoir comment SDX doit obtenir ces métadonnées, et pour cela le développeur d'une application peut utiliser deux méthodes : les correspondances de champs et les pipelines. Cette méthode est définitivement la plus simple. En effet, une base de documents SDX contient un ou plusieurs champs de recherche propres à SDX. Dans certains cas, le format de métadonnées sera très simple et pourra être obtenu directement à partir de ces champs. Considérons le cas où la base de documents possède les champs suivants : <sdx:fieldList> <sdx:field name="auteur" type="field"/> <sdx:field name="titre" type="field"/> <sdx:field name="sujet" type="field"/> </sdx:fieldList> Les champs auteur et sujet peuvent être répétés pour une même unité documentaire. Le protocole OAI nous impose de supporter au moins le format Dublin Core non qualifié, et celui-ci n'est qu'une collection plate d'éléments d'information simple, de type : <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:identifier>Un identifiant</dc:identifier> <dc:title>Le titre</dc:title> <dc:creator>Un auteur</dc:creator> <dc:creator>Un autre auteur</dc:creator> <dc:subject>Un premier sujet ; Un second sujet</dc:subject> </oai_dc:dc> Pour une situation semblable à celle-ci, on peut tout simplement obtenir le format Dublin Core en faisant correspondre les champs SDX à des éléments Dublin Core. La configuration nécessaire pour produire cet exemple serait : <sdx:oai-format name="OAI Dublin core" metadataPrefix="oai_dc" namespace="http://purl.org/dc/elements/1.1/" schemaUrl="http://www.openarchives.org/OAI/2.0/oai_dc.xsd"> <sdx:oai-fields> <sdx:oai-field name="identifier" sdxField="sdxdocid"/> <sdx:oai-field name="title" sdxField="titre" repeated="repeated"/> <sdx:oai-field name="creator" sdxField="auteur" repeated="repeated"/> <sdx:oai-field name="subject" sdxField="sujet" repeated="concatenate" separator=" ; "/> </sdx:oai-fields> </sdx:oai-format> Cet exemple est déjà complet. Les éléments sdx:oai-fields et sdx:oai-field permettent respectivement de spécifier la liste de correspondances. Ensuite, l'élément sdx:oai-field peut avoir quatre attributs qui ont les significations suivantes :
Produire des métadonnées par correspondance de champs est donc très simple et ne fait intervenir que de la configuration. Si vous définissez des champs SDX proches de vos métadonnées, et que votre format de métadonnées est plat (comme le Dublin Core de l'OAI), cette technique peut être tout à fait suffisante. Dans bien des cas, la méthode par correspondance de champs ne sera pas suffisante. Soit parce que le format de métadonnées n'est pas plat, ou encore parce qu'il n'est pas possible de produire les valeurs adéquates à partir des champs SDX. Dans ce cas, il faut utiliser la méthode du pipeline SDX. Conceptuellement, cette méthode est très simple : à chaque fois que SDX doit envoyer des métadonnées à propos d'une unité documentaire, il va transformer l'unité documentaire (forcément du XML) à l'aide d'un pipeline SDX, semblable à un pipeline utilisé pour indexer par exemple. La sortie de ce pipeline doit donc correspondre au format de métadonnées souhaité, en particulier respecter le schéma XML spécifié. Il est de la responsabilité du développeur de l'application de vérifier que les données produites par le pipeline sont correctes. On peut spécifier un pipeline de la même manière que pour un pipeline d'indexation. Il s'agit donc d'une série de transformations, chaque transformation pouvant être une transformation XSLT ou une classe Java. Le plus simple est bien sûr d'avoir une XSLT pour faire le travail. Voici un exemple d'un format de métadonnées produit par un pipeline avec deux transformations, la première étant une classe Java et la seconde une XSLT : <sdx:oai-format name="Mon format" metadataPrefix="mf" namespace="http://monserveur.com/mf/" schemaUrl="http://monserveur.com/mf.xsd"> <sdx:pipeline id="oai-mf"> <sdx:transformation id="oai-mf-1" type="com.monserveur.oai.mf"/> <sdx:transformation id="oai-mf-2" type="XSLT" src="../oai/mf.xsl"/> </sdx:pipeline> </sdx:oai-format> Comme toujours, la classe com.monserveur.oai.mf doit implémenter l'interface fr.gouv.culture.sdx.pipeline.Transformation. Soulignons également que les méthodes par correspondance de champs et par pipeline sont exclusives ; un seul élément sdx:pipeline ou sdx:oai-fields doit être présent dans un élément sdx:oai-format. |
Auteur : Martin Sévigny ( AJLSM ) - 2005-10-06 |