|
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.
|