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 鈥渃osecha鈥 (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 av3 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 av3 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
           av3 and block
           av3 interaction with MMP2. Although
           disrupting av3/MMP2 complex formation,
           TSRI265 has no effect on av3 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 av3 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: