ElTicus.com

Programación, lenguajes y recursos para programadores

Recurso no clasificado
Protocolo OAI (Open Archives Initiative) Iniciativa de Archivos Abiertos
Como implementar búsquedas en servidores OAI
Publicado por JL Fecha: 2007-01-19 11:21:31 Idioma: Español Tipo de documento:

Protocolo OAI (Open Archives Initiative) Iniciativa de Archivos Abiertos


Como implementar búsquedas en servidores OAI

La Iniciativa de Archivos Abiertos (OAI, por sus siglas en inglés) establece un protocolo de comunicación para compartir información a través de Internet y basado sobre el protocolo http. Esto permite que no sea necesario contar con un servidor extra, tal como pasa con el z39.50, ya que es un servidor Web quien despacha la información y es un programa tipo CGI el que proporciona la misma.

La comunicación con el servidor se realiza por medio de parámetros en formato GET o bien en formato POST. Y la respuesta se realiza en formato XML.
El protocolo OAI no considera aspectos de seguridad (no hay una opción para suministrar un password) y tampoco implementa sistemas de búsqueda booleanos o de otros tipos, siendo posible únicamente recuperar registros especificando una fecha o un rango de fechas, o bien recuperar un registro especifico por su identificador. Por esta razón, las aplicaciones que proporcionan acceso a información en este formato tienen que realizar un proceso de recolección de datos llamado “cosecha” (Harvesting) y posteriormente realizar los índices necesarios de manera local para sobre ellos buscar, ya sea manteniendo una copia completa de la información o simplemente una referencia a la información y acceder a la ficha en el servidor.

En este momento tenemos identificados tres servidores públicos disponibles que soportan el protocolo OAI en las siguientes direcciones:

URL-Base Institución
http://www.pubmedcentral.gov/oai/oai.cgi Pub Med Central
http://ict.udlap.mx:9090/Tales/Oai_tesis Universidad de Puebla
http://copernico.mty.itesm.mx/bibliotecas/oai/oa/request.cgi ITESM

Tenemos disponibles 6 (seis) comandos para recuperar información de los servidores OAI, cada uno se ejecuta enviándoselo a un programa CGI como un parámetro bajo el nombre de verb, por ejemplo: CGI?verb=comando.

Comandos OAI

Los comandos utilizados son los siguientes:




  • Identify Hace que el servidor se identifique.

Ejemplo:

http://www.pubmedcentral.nih.gov/oai/oai.cgi?verb=Identify

Nos daría como respuesta:


<OAI-PMH xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/
         http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd"
>
  <responseDate>2007-01-19T18:03:20Z</responseDate>
  <request verb="Identify">http://www.pubmedcentral.nih.gov/oai/oai.cgi</request>
  <Identify>
    <repositoryName>PubMed Central</repositoryName>
    <baseURL>http://www.pubmedcentral.nih.gov/oai/oai.cgi</baseURL>
    <protocolVersion>2.0</protocolVersion>
    <adminEmail>oai@ncbi.nlm.nih.gov</adminEmail>
    <earliestDatestamp>1999-01-01</earliestDatestamp>
    <deletedRecord>no</deletedRecord>
    <granularity>YYYY-MM-DD</granularity>
    <description>
      <oai-identifier xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai-identifier
                      http://www.openarchives.org/OAI/2.0/oai-identifier.xsd"
>
        <scheme>oai</scheme>
        <repositoryIdentifier>pubmedcentral.nih.gov</repositoryIdentifier>
        <delimiter>:</delimiter>
        <sampleIdentifier>oai:pubmedcentral.nih.gov:13900</sampleIdentifier>
      </oai-identifier>
    </description>
  </Identify>
</OAI-PMH>

Nos presenta información relativa a la identidad del servidor al que nos estamos conectando, toda esta información está en formato XML sin formato, por lo que se puede manipular fácilmente desde nuestra aplicación.
De esta información, podemos sacar en claro lo siguiente:

  • El nombre del repositorio de datos: (repositoryName) PDLib
  • La versión del protocolo: (protocolVersion) 2.0
  • Correo del responsable: (adminEmail) pdlib@itesm.mx
  • Fecha de actualización: (earliestDatestamp) 2004-11-18
  • Entre otras.




  • ListMetadataFormats Muestra los formatos válidos para los metadatos.

Ejemplo:

http://www.pubmedcentral.nih.gov/oai/oai.cgi?verb=ListMetadataFormats

Nos daría como respuesta:


<OAI-PMH xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/
          http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd"
>
  <responseDate>2007-01-19T18:10:45Z</responseDate>
  <request verb="ListMetadataFormats">http://www.pubmedcentral.nih.gov/oai/oai.cgi</request>
  <ListMetadataFormats>
    <metadataFormat>
      <metadataPrefix>oai_dc</metadataPrefix>
      <schema>http://www.openarchives.org/OAI/2.0/oai_dc.xsd</schema>
      <metadataNamespace>http://www.openarchives.org/OAI/2.0/oai_dc/</metadataNamespace>
    </metadataFormat>
    <metadataFormat>
      <metadataPrefix>pmc</metadataPrefix>
      <schema>http://dtd.nlm.nih.gov/2.0/xsd/archivearticle.xsd</schema>
      <metadataNamespace>http://dtd.nlm.nih.gov/2.0/xsd/archivearticle</metadataNamespace>
    </metadataFormat>
    <metadataFormat>
      <metadataPrefix>pmc_fm</metadataPrefix>
      <schema>http://dtd.nlm.nih.gov/2.0/xsd/archivearticle.xsd</schema>
      <metadataNamespace>http://dtd.nlm.nih.gov/2.0/xsd/archivearticle</metadataNamespace>
    </metadataFormat>
  </ListMetadataFormats>
</OAI-PMH>


Con este comando podemos recuperar los formatos de metadatos que están disponibles en este servidor. Para el proyecto de nuestro interés, es necesario estandarizar el proceso a un único formato de información (siempre que esto sea posible).
Elegimos el formato “Dublín Core“, debido a que es un estándar implementado en prácticamente todas las OAIs. Por esta razón, solamente verificamos que aparezca la línea:

<metadataPrefix>oai_dc</metadataPrefix>




  • ListSets Muestra las bases de datos disponibles (o colecciones dentro de la base).

Ejemplo:

http://www.pubmedcentral.nih.gov/oai/oai.cgi?verb=ListSets

Nos daría como respuesta:


<OAI-PMH xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ 
                             http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd"
>
  <responseDate>2007-01-19T18:15:13Z</responseDate>
  <request verb="ListSets">http://www.pubmedcentral.nih.gov/oai/oai.cgi</request>
  <ListSets>
    <set>
      <setSpec>aac</setSpec>
      <setName>Antimicrobial Agents and Chemotherapy</setName>
      <setDescription>
        <oai_dc:dc xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ 
                                       http://www.openarchives.org/OAI/2.0/oai_dc.xsd"
>
        <dc:publisher>American Society for Microbiology (ASM)</dc:publisher>
        <dc:identifier>
          http://www.pubmedcentral.nih.gov/tocrender.fcgi?journal=82
        </dc:identifier>
        </oai_dc:dc>
      </setDescription>
    </set>
    <set>
      <setSpec>actavets</setSpec>
      <setName>Acta Veterinaria Scandinavica</setName>
      <setDescription>
        <oai_dc:dc xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ 
                                       http://www.openarchives.org/OAI/2.0/oai_dc.xsd"
>
        <dc:publisher>BioMed Central</dc:publisher>
        <dc:identifier>
          http://www.pubmedcentral.nih.gov/tocrender.fcgi?journal=424
        </dc:identifier>
        </oai_dc:dc>
      </setDescription>
    </set>
    <set>
      <setSpec>aem</setSpec>
      <setName>Applied and Environmental Microbiology</setName>
      <setDescription>
        <oai_dc:dc xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ 
                                       http://www.openarchives.org/OAI/2.0/oai_dc.xsd"
>
        <dc:publisher>American Society for Microbiology (ASM)</dc:publisher>
        <dc:identifier>
          http://www.pubmedcentral.nih.gov/tocrender.fcgi?journal=83
        </dc:identifier>
        </oai_dc:dc>
      </setDescription>
    </set>
  </ListSets>
</OAI-PMH>

Este comando nos devuelve una lista que puede ser bastante extensa de todas las colecciones o conjuntos de registros que estén disponibles en el servidor. De esta respuesta, nos interesarán de manera principal los datos:


<setSpec>aac</setSpec>
<setName>Antimicrobial Agents and Chemotherapy</setName>

Que son los que nos describen la colección y ya de manera secundaria, los parámetros opcionales que están dentro de la etiqueta "setDescription" que nos dan información adicional sobre cada colección.



  • GetRecord Recuperar un registro (Argumentos: Identificador y Formato).

Ejemplo:

http://www.pubmedcentral.nih.gov/oai/oai.cgi?verb=GetRecord&identifier=oai:pubmedcentral.nih.gov:13900&metadataPrefix=oai_dc

Que nos daría como respuesta


<OAI-PMH xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ 
                             http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd"
>
  <responseDate>2007-01-19T23:47:38Z</responseDate>
  <request verb="GetRecord" identifier="oai:pubmedcentral.nih.gov:13900" metadataPrefix="oai_dc">
    http://www.pubmedcentral.nih.gov/oai/oai.cgi
  </request>
  <GetRecord>
    <record>
      <header>
        <identifier>oai:pubmedcentral.nih.gov:13900</identifier>
        <datestamp>2001-02-27</datestamp>
        <setSpec>brcnres</setSpec>
        <setSpec>pmc-open</setSpec>
      </header>
      <metadata>
        <oai_dc:dc xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ 
                                       http://www.openarchives.org/OAI/2.0/oai_dc.xsd"
>
        <dc:title>
          Comparison of written reports of mammography, sonography and magnetic 
          resonance mammography for preoperative evaluation of breast lesions, 
          with special emphasis on magnetic resonance mammography
        </dc:title>
        <dc:creator>Malur, Sabine</dc:creator>
        <dc:creator>Wurdinger, Susanne</dc:creator>
        <dc:creator>Moritz, Andreas</dc:creator>
        <dc:creator>Michels, Wolfgang</dc:creator>
        <dc:creator>Schneider, Achim</dc:creator>
        <dc:subject>Primary Research</dc:subject>
        <dc:description>
          Patients with abnormal breast findings (n = 413) were examined by 
          mammography, sonography and magnetic resonance (MR) mammography; 185 
          invasive cancers, 38 carcinoma in situ and 254 benign tumours were 
          confirmed histologically. Sensitivity for mammography was 83.7%, for 
          sonography it was 89.1% and for MR mammography it was 94.6% for 
          invasive cancers. In 42 patients with multifocal invasive cancers, 
          multifocality had been detected by mammography and sonography in 26.2%, 
          and by MR mammography in 66.7%. In nine patients with multicentric 
          cancers, detection rates were 55.5, 55.5 and 88.8%, respectively. 
          Carcinoma in situ was diagnosed by mammography in 78.9% and by MR 
          mammography in 68.4% of patients. Combination of all three diagnostic 
          methods lead to the best results for detection of invasive cancer and 
          multifocal disease. However, sensitivity of mammography and sonography 
          combined was identical to that of MR mammography (ie 94.6%).
        </dc:description>
        <dc:publisher>BioMed Central</dc:publisher>
        <dc:identifier>
          http://www.pubmedcentral.nih.gov/articlerender.fcgi?artid=13900
        </dc:identifier>
        <dc:type>Text</dc:type>
        <dc:language>en</dc:language>
        <dc:rights>
          Copyright © 2000 BioMed Central Ltd on behalf of the copyright holders
        </dc:rights>
        </oai_dc:dc>
      </metadata>
    </record>
  </GetRecord>
</OAI-PMH>


Con este comando podemos recuperar un registro completo, los parámetros adicionales fueron identifier=oai:pubmedcentral.nih.gov:13900 que corresponde con el meta dato

<identifier>oai:pubmedcentral.nih.gov:13900</identifier>

del registro recuperado. Este parámetro nos permite recuperar un registro especifico gracias al identificador único que posee. El otro parámetro fue metadataPrefix=oai_dc que es simplemente la especificación del formato Dublín Core que queríamos que utilizara en la recuperación.

NOTA: En la versión 2.0 los nombres de los campos (metadatos) llevan como prefijo la descripción del formato en que se presentan. En el ejemplo mostrado llevan el prefijo dc: y ván dentro de la etiqueta oai_dc:dc


  • ListIdentifiers Recupera los encabezamientos de los registros. (Argumentos: Formato, Rango de fechas)

Ejemplo:

http://www.pubmedcentral.nih.gov/oai/oai.cgi?verb=ListIdentifiers&metadataPrefix=oai_dc&from=2001-03-01&until=2001-04-01

Que nos daría como respuesta:


<OAI-PMH xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/
                             http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd"
>
  <responseDate>2007-01-19T23:56:24Z</responseDate>
  <request verb="ListIdentifiers" from="2001-03-01" metadataPrefix="oai_dc"
                 until="2001-04-01">http://www.pubmedcentral.nih.gov/oai/oai.cgi</request>
  <ListIdentifiers>
    <header>
      <identifier>oai:pubmedcentral.nih.gov:14538</identifier>
      <datestamp>2001-03-07</datestamp>
      <setSpec>pnas</setSpec>
    </header>
    <header>
      <identifier>oai:pubmedcentral.nih.gov:14539</identifier>
      <datestamp>2001-03-07</datestamp>
      <setSpec>pnas</setSpec>
    </header>
    <header>
      <identifier>oai:pubmedcentral.nih.gov:14540</identifier>
      <datestamp>2001-03-07</datestamp>
      <setSpec>pnas</setSpec>
    </header>
    <header>
      <identifier>oai:pubmedcentral.nih.gov:14541</identifier>
      <datestamp>2001-03-07</datestamp>
      <setSpec>pnas</setSpec>
    </header>
    <header>
      <identifier>oai:pubmedcentral.nih.gov:14542</identifier>
      <datestamp>2001-03-07</datestamp>
      <setSpec>pnas</setSpec>
    </header>
    
    <resumptionToken>
      oai%3Apubmedcentral.nih.gov%3A15044!2001-03-01!2001-04-01!oai_dc!
    </resumptionToken>
  </ListIdentifiers>
</OAI-PMH>

Con este comando podemos recuperar un conjunto de registros que coincidan con un rango de fechas, pero solamente nos recupera los encabezados de los registros por lo que la consulta es más rápida que si recuperaramos el registro completo. Cada registro recuperado es identificado por las etiquetas header. Cada uno de los registros se presenta de la siguiente manera:

<header>
      <identifier>oai:pubmedcentral.nih.gov:14542</identifier>
      <datestamp>2001-03-07</datestamp>
      <setSpec>pnas</setSpec>
</header>

El primer campo devuelto es el identificador, por lo que posteriormente podemos utilizarlo para recuperar los registros completos por medio del comando GetRecord.

NOTA: En la versión 2.0 nos puede aparecer paginado, es decir que si la consulta devuelve demasiados registros, nos devolverá solamente una parte y deberémos solicitarle al servidor el resto utilizando el id proporcionado por la etiqueta resumptionToken.

<resumptionToken>
oai%3Apubmedcentral.nih.gov%3A15044!2001-03-01!2001-04-01!oai_dc!
</resumptionToken>



  • ListRecords Recupera los registros completos. (Argumentos: Igual que ListIdentifiers)

Ejemplo:

http://www.pubmedcentral.nih.gov/oai/oai.cgi?verb=ListRecords&metadataPrefix=oai_dc&from=2001-03-01&until=2001-04-01

Que nos daría como respuesta:

<OAI-PMH xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/
                             http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd"
>
<responseDate>2007-01-22T15:57:22Z</responseDate>
<request verb="ListRecords" from="2001-03-01" metadataPrefix="oai_dc"
               until="2001-04-01">http://www.pubmedcentral.nih.gov/oai/oai.cgi</request>
  <ListRecords>
    <record>
      <header>
        <identifier>oai:pubmedcentral.nih.gov:14539</identifier>
        <datestamp>2001-03-07</datestamp>
        <setSpec>pnas</setSpec>
      </header>
      <metadata>
        <oai_dc:dc xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/
                                       http://www.openarchives.org/OAI/2.0/oai_dc.xsd"
>
          <dc:title>
           Model-based analysis of oligonucleotide arrays: Expression index
           computation and outlier detection
          </dc:title>
          <dc:creator>Li, Cheng</dc:creator>
          <dc:creator>Wong, Wing Hung</dc:creator>
          <dc:subject>Physical Sciences</dc:subject>
          <dc:description>
           Recent advances in cDNA and oligonucleotide DNA arrays have made it
           possible to measure the abundance of mRNA transcripts for many genes
           simultaneously. The analysis of such experiments is nontrivial because
           of large data size and many levels of variation introduced at different
           stages of the experiments. The analysis is further complicated by the
           large differences that may exist among different probes used to
           interrogate the same gene. However, an attractive feature of
           high-density oligonucleotide arrays such as those produced by
           photolithography and inkjet technology is the standardization of chip
           manufacturing and hybridization process. As a result, probe-specific
           biases, although significant, are highly reproducible and predictable,
           and their adverse effect can be reduced by proper modeling and analysis
           methods. Here, we propose a statistical model for the probe-level data,
           and develop model-based estimates for gene expression indexes. We also
           present model-based methods for identifying and handling
           cross-hybridizing probes and contaminating array regions. Applications
           of these results will be presented elsewhere.
          </dc:description>
          <dc:publisher>The National Academy of Sciences</dc:publisher>
          <dc:identifier>
           http://www.pubmedcentral.nih.gov/articlerender.fcgi?artid=14539
          </dc:identifier>
          <dc:type>Text</dc:type>
          <dc:language>en</dc:language>
          <dc:rights>Copyright © 2001, The National Academy of Sciences</dc:rights>
        </oai_dc:dc>
      </metadata>
    </record>
    <record>
      <header>
        <identifier>oai:pubmedcentral.nih.gov:14554</identifier>
        <datestamp>2001-03-07</datestamp>
        <setSpec>pnas</setSpec>
      </header>
      <metadata>
        <oai_dc:dc xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/
                                       http://www.openarchives.org/OAI/2.0/oai_dc.xsd"
>
          <dc:title>
           Disruption of matrix metalloproteinase 2 binding to
           integrin avß3 by an organic molecule
           inhibits angiogenesis and tumor growth in vivo
          </dc:title>
          <dc:creator>Silletti, Steve</dc:creator>
          <dc:creator>Kessler, Torsten</dc:creator>
          <dc:creator>Goldberg, Joel</dc:creator>
          <dc:creator>Boger, Dale L.</dc:creator>
          <dc:creator>Cheresh, David A.</dc:creator>
          <dc:subject>Biological Sciences</dc:subject>
          <dc:description>
           Matrix metalloproteinase 2 (MMP2) can associate with
           integrin avß3 on the surface of endothelial
           cells, thereby promoting vascular invasion. Here, we describe an
           organic molecule (TSRI265) selected for its ability to bind to integrin
           avß3 and block
           avß3 interaction with MMP2. Although
           disrupting avß3/MMP2 complex formation,
           TSRI265 has no effect on avß3 binding to
           its extracellular matrix ligand vitronectin and does not influence MMP2
           activation or catalytic activity directly. However, TSRI265 acts as a
           potent antiangiogenic agent and thereby blocks tumor growth in
           vivo. These findings suggest that activated MMP2 does not
           facilitate vascular invasion during angiogenesis unless it forms a
           complex with avß3 on the endothelial cell
           surface. By disrupting endothelial cell invasion without broadly
           suppressing cell adhesion or MMP function, the use of compounds such as
           TSRI265 may provide a novel therapeutic approach for diseases
           associated with uncontrolled angiogenesis.
          </dc:description>
          <dc:publisher>The National Academy of Sciences</dc:publisher>
          <dc:identifier>
           http://www.pubmedcentral.nih.gov/articlerender.fcgi?artid=14554
          </dc:identifier>
          <dc:type>Text</dc:type>
          <dc:language>en</dc:language>
          <dc:rights>Copyright © 2001, The National Academy of Sciences</dc:rights>
        </oai_dc:dc>
      </metadata>
    </record>
    <resumptionToken>
      oai%3Apubmedcentral.nih.gov%3A14588!2001-03-01!2001-04-01!oai_dc!
    </resumptionToken>
  </ListRecords>
</OAI-PMH>

En este caso el resultado incluye los registros completos, con todos los metadatos correspondientes al formato elegido (Dublín Core). La respuesta puede demorar desde unos segundos hasta varios minutos ya que en caso de recuperarse muchos registros, la cantidad de información puede ser muy grande.
En caso de querer recuperar la totalidad de registros de una base de datos, es recomendable especificar rangos de fechas continuos no muy grandes para no saturar al servidor con peticiones.
En la versión 2.0 aplica el uso de resumptionToken para la recuperación por partes.






Hay 3 comentarios sobre este tema por parte de los lectores


Haz un comentario sobre este tema
Nombre email (no se muestra)
comentario:
Escribe las 2 letras que ves aquí: Imagen anti-spam =

Comentarios de parte de los lectores:

1. Comentario de RobertNop el 2017-12-04 02:49:31
zgd

2. Comentario de CasinoXpal el 2017-05-08 17:10:41
casino-x.ucoz.ru

3. Comentario de DuglasebiVof el 2017-04-03 13:02:02
Ëþáîé òåêñò 2 ñëîâà