Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents
minLevel2
outlinetrue
stylenone

Introducción

El Open Archives Initiative Protocol for Metadata Harvesting (OAI-PMH) es un mecanismo de bajo nivel de complejidad para lograr la interoperabilidad entre repositorios. Los Data Providers (proveedores de datos) son repositorios que exponen metadatos estructurados a través de OAI-PMH. Los Service Providers (proveedores de servicios) realizan solicitudes al servicio OAI-PMH para recolectar esos metadatos. OAI-PMH consiste en un conjunto de seis verbos o servicios que se invocan mediante HTTP.

¿Qué es OAI 2.0?

OAI 2.0 es una implementación en Java de una interfaz data provider de OAI-PMH (desarrollada originalmente por Lyncode) que utiliza XOAI, una biblioteca Java para OAI-PMH.

¿Por qué OAI 2.0?

Proyectos como OpenAIRE tienen requisitos de metadatos específicos (para el contenido publicado a través de la interfaz OAI-PMH). Dado que el protocolo OAI-PMH no establece un marco para estos detalles, OAI 2.0 permite, de manera sencilla, tener más de una instancia de una interfaz OAI (una característica proporcionada por la biblioteca central de XOAI), de modo que se podría definir una interfaz para cada proyecto. Ese es el propósito principal, aunque OAI 2.0 permite mucho más que eso.

Conceptos (Biblioteca Central XOAI)

Para entender cómo funciona XOAI, es necesario comprender los conceptos de Filtro, Transformador y Contexto. Un Filtro permite seleccionar información desde la fuente de datos. Un Transformador permite realizar algunas modificaciones en los metadatos antes de mostrarlos en la interfaz OAI. XOAI también agrega un nuevo concepto a la especificación básica de OAI-PMH: el concepto de contexto. Un contexto se identifica en la URL:

Code Block
http://www.example.com/oai/<context>

Los contextos pueden verse como interfaces OAI virtuales y distintas, por lo que, con esta funcionalidad, se podrían tener cosas como:

Con estos elementos es posible construir una solución robusta que cumpla con todos los requisitos de Driver, OpenAIRE y también con otros requisitos específicos de distintos proyectos. Como se muestra en la Figura 1, mediante los contextos se puede seleccionar un subconjunto de todos los ítems disponibles en la fuente de datos. Así, al ingresar al contexto de OpenAIRE, todas las solicitudes OAI-PMH estarán restringidas a ese subconjunto de ítems.

Image Added

En esta etapa, los contextos pueden verse como sets (también definidos en el protocolo básico de OAI-PMH). La verdadera ventaja de XOAI aparece cuando se necesita mostrar un formato de metadatos específico en cada contexto. Los requisitos de metadatos de Driver difieren ligeramente de los de OpenAIRE. Por lo tanto, para cada contexto se debe definir su transformador específico. Así, los contextos pueden entenderse como una extensión del concepto de sets.

Para implementar una interfaz OAI a partir de la biblioteca central XOAI, solo es necesario implementar la interfaz de fuente de datos (datasource interface).

OAI 2.0

OAI 2.0 se implementa como parte de la aplicación web del servidor DSpace (backend). OAI 2.0 tiene una fuente de datos configurable; por defecto, no consulta la base de datos SQL de DSpace en el momento de recibir una solicitud OAI-PMH. En su lugar, mantiene los metadatos requeridos en su índice Solr (actualmente en un núcleo Solr separado llamado "oai") y los sirve desde allí. También es posible configurar OAI 2.0 para que utilice únicamente la base de datos como fuente de consulta si es necesario, aunque esto reduce considerablemente el rendimiento. Además, almacena en caché las solicitudes, por lo que repetir una misma consulta es muy rápido. Adicionalmente, compila los ítems de DSpace para acelerar las respuestas que no están en caché.

Los detalles sobre el funcionamiento interno de OAI 2.0 pueden encontrarse aquí.

Info

El servidor OAI 2.0 utiliza únicamente Solr para su indexación. La capacidad anterior de usar indexación mediante base de datos ha sido eliminada.

Indexación de contenido OAI

OAI 2.0 utiliza Solr para toda la indexación del contenido.

El índice de Solr puede actualizarse según tu conveniencia, dependiendo de qué tan reciente necesites que esté la información. Generalmente, el administrador configura una tarea programada (cron job) nocturna para actualizar el índice de Solr desde la base de datos SQL.

Administrador OAI

El administrador OAI es una utilidad que permite realizar ciertas operaciones administrativas con OAI. Puedes ejecutarlo desde la línea de comandos utilizando el launcher de DSpace:

Sintaxis

[dspace]/bin/dspace oai <acción> [parámetros]

Acciones

  • import Importa ítems de DSpace al índice Solr de OAI (también limpia la caché de OAI)
  • clean-cache Limpia la caché de OAI

Parámetros

  • -c Limpia el índice Solr antes de la indexación (importará todos los ítems nuevamente)
  • -v Muestra salida detallada (verbose)
  • -h Muestra un texto de ayuda

Tareas Programadas

Para actualizar el índice Solr de OAI, es necesario ejecutar periódicamente el comando [dspace]/bin/dspace oai import. Puedes agregar la siguiente tarea a tu archivo crontab:

Code Block
0 3 * * * [dspace]/bin/dspace oai import

Ten en cuenta que [dspace] debe ser reemplazado por el valor correcto, es decir, el valor definido en el parámetro dspace.dir del archivo dspace.cfg.

Hoja de estilo del lado del cliente

La respuesta OAI-PMH es un archivo XML. Aunque OAI-PMH está pensado principalmente para herramientas de recolección y no suele ser utilizado directamente por personas, en ocasiones puede resultar útil visualizar directamente las solicitudes OAI-PMH—por ejemplo, al configurarlas por primera vez o para verificar cambios realizados. Para estos casos, XOAI proporciona una hoja de estilo XSLT que transforma la respuesta XML en un HTML agradable, legible e interactivo. Esta hoja de estilo está vinculada desde la respuesta XML, y la transformación se realiza en el navegador del usuario (esto requiere un navegador moderno; los navegadores antiguos solo mostrarán el XML sin transformación). La mayoría de las herramientas automatizadas solo se interesan por el archivo XML en sí y no realizarán la transformación. Si lo deseas, puedes cambiar qué hoja de estilo se utiliza colocando el archivo en el directorio [dspace]/webapps/oai/static (o en [dspace-src]/dspace-xoai/dspace-xoai-webapp/src/main/webapp/static, tras lo cual deberás recompilar DSpace), modificando el atributo "stylesheet" del elemento "Configuration" en [dspace]/config/crosswalks/oai/xoai.xml, y luego reiniciando el contenedor de servlets.

Formatos de Metadatos

De forma predeterminada, OAI 2.0 proporciona 12 formatos de metadatos dentro del contexto /request:

  1. OAI_DC
  2. DIDL
  3. DIM
  4. ETDMS
  5. METS
  6. MODS
  7. OAI-ORE
  8. QDC
  9. RDF
  10. MARC
  11. UKETD_DC
  12. XOAI

En el contexto /driver proporciona:

  1. OAI_DC
  2. DIDL
  3. METS

Y en el contexto /openaire proporciona:

  1. OAI_DC
  2. METS

Problemas de codificación

Existen dos fuentes principales de posibles problemas de codificación:

a) El conector del servlet debe utilizar la codificación correcta. Por ejemplo, en Tomcat, esto sería: <Connector port="8080" ... URIEncoding="UTF-8" />, donde el atributo port especifica el puerto del conector que DSpace está configurado para usar al acceder a Solr (este suele ser 8080, 80 o, en el caso de AJP, 8009).

b) La configuración regional del sistema (locale) para el script de línea de comandos de DSpace que se utiliza para ejecutar el oai import. Asegúrate de que la cuenta de usuario que ejecuta el script (generalmente desde cron) tenga configurado el locale correcto (por ejemplo, en_US.UTF-8). Además, verifica que dicho locale esté realmente disponible en tu sistema.

Configuración

Configuración básica

Configuration File:

[dspace]/config/modules/oai.cfg

Property:oai.enabled

Example Value:

oai.enabled = true (default)

Information Note:Allows you to enable or disable the OAI module/endpoint
Property:oai.path

Example Value:

oai.path = oai (default)

Information Note:Allows you to specify the path where the OAI module will be deployed.  This path is relative to the dspace.server.url.  So, for example, if "dspace.server.url=http://localhost:8080/server", then by default the OAI module is available at http://localhost:8080/server/oai/

Property:

oai.storage

Example Value:

oai.storage = solr

Information Note:

This allows to choose the OAI data source between solr and database. ONLY "solr" is supported at this time.

Property:

oai.solr.url

Example Value:

oai.solr.url = ${solr.server}/oai

Informational Note:

Solr Server location

Property:

oai.identifier.prefix

Example Value:

oai.identifier.prefix = ${dspace.hostname}

Informational Note:

OAI persistent identifier prefix. Format - oai:PREFIX:HANDLE

Property:

oai.config.dir

Example Value:

oai.config.dir = ${dspace.dir}/config/crosswalks/oai

Informational Note:

Configuration directory, used by XOAI (core library). Contains xoai.xml, metadata format XSLTs and transformer XSLTs.

Property:

oai.cache.enabled

Example Value:

oai.cache.enabled = true

Informational Note:

Whether to enable the OAI cache. Default is true (for better performance).

Property:

oai.cache.dir

Example Value:

oai.cache.dir = ${dspace.dir}/var/oai

Informational Note:

Directory to store runtime generated files (for caching purposes).

Configuración avanzada

OAI 2.0 te permite configurar las siguientes opciones avanzadas:

  • Contextos
  • Transformadores
  • Formatos de metadatos
  • Filtros
  • Sets

Se trata de un archivo XML que normalmente se encuentra en: [dspace]/config/crosswalks/oai/xoai.xml

Opciones generales

Estas opciones afectan globalmente a la interfaz OAI. “Por página” significa por solicitud; la siguiente página (si existe) puede solicitarse usando el resumptionToken provisto en la página actual.

  • identation [booleano] – indica si el XML de salida debe estar indentado para hacerlo más legible para humanos.

  • maxListIdentifiersSize [entero] – cuántos identificadores mostrar por página (verb=ListIdentifiers)

  • maxListRecordsSize [entero] – cuántos registros mostrar por página (verb=ListRecords)
  • maxListSetsSize [entero] – cuántos sets mostrar por página (verb=ListSets)

  • stylesheet [ruta de archivo relativa] – una hoja de estilo XSL utilizada por el navegador del cliente para transformar el XML de salida en HTML legible.

La ubicación y valores predeterminados se muestran en el siguiente fragmento:

Code Block
<Configuration xmlns="http://www.lyncode.com/XOAIConfiguration"
	identation="false"
	maxListIdentifiersSize="100"
	maxListRecordsSize="100"
	maxListSetsSize="100"
	stylesheet="static/style.xsl">

Agregar/Eliminar Formatos de Metadatos

Cada contexto puede tener sus propios formatos de metadatos. Por lo tanto, para agregar o eliminar formatos de metadatos de un contexto, solo es necesario agregar o eliminar su referencia dentro del archivo xoai.xml. Por ejemplo, imagina que se necesita eliminar el esquema XOAI de:

Code Block
<Context baseurl="request">
  <Format refid="oaidc" />
  <Format refid="mets" />
  <Format refid="xoai" />
  <Format refid="didl" />
  <Format refid="dim" />
  <Format refid="ore" />
  <Format refid="rdf" />
  <Format refid="etdms" />
  <Format refid="mods" />
  <Format refid="qdc" />
  <Format refid="marc" />
  <Format refid="uketd_dc" />
</Context>

Entonces se tendría:

Code Block
<Context baseurl="request">
  <Format refid="oaidc" />
  <Format refid="mets" />
  <Format refid="didl" />
  <Format refid="dim" />
  <Format refid="ore" />
  <Format refid="rdf" />
  <Format refid="etdms" />
  <Format refid="mods" />
  <Format refid="qdc" />
  <Format refid="marc" />
  <Format refid="uketd_dc" />
</Context>

También es posible crear un nuevo formato de metadatos mediante la creación de una hoja de estilo XSLT específica para dicho formato. Todas las hojas de estilo XSLT ya definidas para DSpace se encuentran en el directorio [dspace]/config/crosswalks/oai/metadataFormats. Después de crear una nueva hoja de estilo, agrega la siguiente información (la ubicación está indicada entre corchetes) dentro del elemento <Formats> en [dspace]/config/crosswalks/oai/xoai.xml:

Code Block
<Format id="[IDENTIFIER]">
  <Prefix>[PREFIX]</Prefix>
  <XSLT>metadataFormats/[XSLT]</XSLT>
  <Namespace>[NAMESPACE]</Namespace>
  <SchemaLocation>[SCHEMA_LOCATION]</SchemaLocation>
</Format>

donde:

Parameter

Description

IDENTIFIER

The identifier used within context configurations to reference this specific format, must be unique within all Metadata Formats available.

PREFIX

The prefix used in OAI interface (metadataPrefix=PREFIX).

XSLT

The name of the XSLT file within [dspace]/config/crosswalks/oai/metadataFormats directory

NAMESPACE

XML Default Namespace of the created Schema

SCHEMA_LOCATION

URI Location of the XSD of the created Schema

NOTA: Los cambios realizados en [dspace]/config/crosswalks/oai/xoai.xml requieren recargar o reiniciar el contenedor de servlets.

Agregar/Eliminar Campos de Metadatos

Los campos internos de DSpace (Dublin Core) se exponen en el formato interno XOAI (XML). Todos los demás formatos de metadatos expuestos a través de OAI se derivan de este formato XOAI utilizando hojas de estilo XSLT (la hoja xoai.xsl es simplemente una transformación de identidad). Estas hojas de estilo XSLT se encuentran en el directorio [dspace]/config/crosswalks/oai/metadataFormats. Por ejemplo, oai_dc.xsl es una transformación del formato XOAI al formato oai_dc (Dublin Core no calificado).

Por lo tanto, exponer cualquier campo de metadatos de DSpace en cualquier formato OAI es simplemente cuestión de modificar la hoja de estilo correspondiente al formato de salida. (Esto supone un conocimiento general sobre cómo funciona XSLT. Para un tutorial, consulta por ejemplo: http://www.w3schools.com/xsl/).

Por ejemplo, si tienes un campo DC llamado "local.note.librarian" que deseas exponer en oai_dc como <dc:note> (ten en cuenta que este no es un campo válido de Dublin Core y, por lo tanto, rompe la compatibilidad), entonces edita el archivo oai_dc.xsl y agrega las siguientes líneas justo antes de la etiqueta de cierre </oai_dc:dc>:

Code Block
languagexml
<xsl:for-each select="doc:metadata/doc:element[@name='local']/doc:element[@name='note']/doc:element/doc:element/doc:field[@name='librarian']">
    <dc:note><xsl:value-of select="." /></dc:note>
</xsl:for-each>

Si necesitas agregar o eliminar campos de metadatos, estarás modificando el formato de salida. Por lo tanto, se recomienda crear un nuevo formato de metadatos como una copia del que deseas modificar. De esta manera, el formato original seguirá estando disponible junto con el nuevo, y cualquier actualización al formato original durante una actualización de DSpace no sobrescribirá tus personalizaciones. Si necesitas que el nuevo formato tenga el mismo nombre que el formato original (por ejemplo, el formato predeterminado oai_dc), puedes crear un nuevo contexto en xoai.xsl que contenga tu formato modificado con el mismo nombre. Este estará disponible como /oai/context-name.

NOTA: Ten en cuenta que el proveedor OAI almacena en caché la salida transformada, por lo que debes ejecutar [dspace]/bin/dspace oai clean-cache después de cualquier modificación a archivos .xsl y recargar la página OAI para que los cambios surtan efecto. Al agregar o eliminar formatos de metadatos, o al realizar cambios en [dspace]/config/crosswalks/oai/xoai.xml, es necesario recargar o reiniciar el contenedor de servlets.

Cumplimiento con Driver/OpenAIRE

La instalación predeterminada de OAI 2.0 proporciona dos nuevos contextos. Estos son:

  • Contexto Driver, que expone únicamente los ítems compatibles con Driver;
  • Contexto OpenAIRE, que expone únicamente los ítems compatibles con OpenAIRE;

Sin embargo, para poder ser expuestos, los ítems de DSpace deben cumplir con las directrices de Driver/OpenAIRE.

Cumplimiento con DRIVER


Directrices DRIVER para administradores y gestores de repositorios sobre cómo exponer recursos científicos digitales utilizando OAI-PMH y Dublin Core Metadata, creando interoperabilidad mediante la estandarización de la salida del repositorio. El conjunto de directrices OAI-PMH driver se basa en las DRIVER Guidelines 2.0.

Este conjunto se utiliza para exponer los ítems del repositorio que están disponibles en acceso abierto. No es necesario que todos los ítems del repositorio estén disponibles en acceso abierto.

¿Qué valores específicos de metadatos se esperan?

Para que los ítems estén en este conjunto, debes configurar tu archivo input-forms.xml para cumplir con las DRIVER Guidelines:

¿Cómo agregar fácilmente esos valores de metadatos?

Como las directrices DRIVER utilizan Dublin Core, todos los ítems necesarios ya están registrados en DSpace. Solo necesitas configurar el proceso de depósito.

Cumplimiento con OpenAIRE

Info

Para el cumplimiento con OpenAIRE v4, consulta OpenAIRE4 Guidelines Compliancy

Las OpenAIRE Guidelines 2.0 proporcionan compatibilidad con OpenAIRE a repositorios y agregadores. Al implementar estas directrices, los administradores de repositorios facilitan a los autores que depositan sus publicaciones en el repositorio el cumplimiento de los requisitos de acceso abierto de la Comisión Europea (EC). Para los desarrolladores de plataformas de repositorios, las directrices ofrecen orientación para añadir funcionalidades de apoyo a los autores de investigaciones financiadas por la EC en versiones futuras.

El nombre del conjunto en OAI-PMH es "ec_fundedresources" y expondrá los ítems del repositorio que cumplan con estas directrices. Estas directrices están basadas en las DRIVER Guidelines. Consulta la versión 2.0 de las directrices.

Consulta el Application Profile de OpenAIRE.

¿Qué valores específicos de metadatos se esperan?

Estos son únicamente los valores de metadatos de OpenAIRE. Para consultar estos y los valores de metadatos de DRIVER, revisa la página 11 de las OpenAIRE Guidelines 2.0.

  • dc:relation con el ID del proyecto (ver p.8)
  • dc:rights con la información sobre los derechos de acceso según el vocabulario (valores posibles aquí)

Opcionalmente:

  • dc:date con la fecha de finalización del embargo (recomendado para ítems con embargo)
Code Block
languagehtml/xml
linenumberstrue
<dc:date>info:eu-repo/date/embargoEnd/2011-05-12<dc:date>

¿Cómo agregar fácilmente esos valores de metadatos?

  • Incluye un campo dc:relation en el archivo input-forms.xml con una lista de los proyectos. También puedes usar el complemento OpenAIRE Authority Control Addon para facilitar el proceso de búsqueda del proyecto.
  • Utiliza un combo-box para dc:rights que permita ingresar las 4 opciones:
    • info:eu-repo/semantics/closedAccess
    • info:eu-repo/semantics/embargoedAccess
    • info:eu-repo/semantics/restrictedAccess
    • info:eu-repo/semantics/openAccess
  • Utiliza una input-box para dc:date a fin de insertar la fecha de finalización del embargo.
Info
titleEnlaces Relevantes

Verifica la integridad de tu interfaz OAI con el OAI Validator

Existe un validador muy útil para interfaces OAI disponible en http://validator.oaipmh.com, te recomendamos encarecidamente utilizarlo para confirmar que tu interfaz OAI sea realmente funcional.

Today 22-10-2025 you use ruffle!
Today 22-10-2025 you use ruffle!