IEEE LATIN AMERICA TRANSACTIONS, VOL. 6, NO. 6, OCTOBER 2008
535
IWPAAMS2007-08: Multiagent System For
Information Integration And Consulting In XML
Format
R. Berjón, A. Fermoso, E. Beato, M. Mateos, M.A. Sánchez, M.I. Manzano, M.J. Gil
Abstract— Nowadays, organizations need to work with large
amounts of information from different sources. Therefore it
becomes necessary tools and formats such as XML, which serve
as integrators to this heterogeneity. This paper describes XDS, a
tool designed with agents, which integrates data from multiple
sources: relational databases, native XML databases and XML
documents, obtaining the results in XML format. Besides its
usefulness is demonstrated with a case study applied to the
environment of libraries, consisting of bibliographic consults,
where the result obtained are formatted in MODS.
Keywords— Information
heterogeneous data, MODS.
Integration,
XML,
sistema multiagente que se ejecuta en un ambiente
colaborativo.
Para demostrar la valía de la herramienta se ha aplicado a
un caso práctico: se ha utilizado XDS para consultar fuentes
de datos con información sobre recursos bibliográficos
obtenido el resultado de las consultas en el formato MODS[8].
En los siguientes apartados primero se describirá la
herramienta XDS y a continuación su aplicación al caso
práctico de integración de información al formato
bibliográfico MODS.
databases,
I. INTRODUCCIÓN
H
OY en día las organizaciones tienen que trabajar con
gran cantidad de información, con formatos dispares y
además distribuida en distintas fuentes. Por otro lado se hace
necesario intercambiar esta información y/o acceder a los
datos que ponen a nuestra disposición otros sistemas. Dada
esta situación, resulta imprescindible herramientas y formatos
que sirvan como integradores ante esta heterogeneidad de
contenidos. Dentro de los formatos, hoy en día XML se
considera el estándar para el intercambio y presentación de
información.
En este trabajo se describe la herramienta software XDS
que da solución a la problemática descrita. XDS es un sistema
que integra en XML datos procedentes de los tipos de fuentes
más habitualmente utilizadas en las organizaciones: bases de
datos relacionales, bases de datos nativas XML y documentos
XML. Este sistema se presenta, además, como una alternativa
a los sistemas tradicionales basados en servidor en los que
todo el trabajo se realizaba de forma centralizada. XDS, es un
Este trabajo ha sido financiado por la Junta de Castilla y León a través del
proyecto de investigación «Estudio sobre integración y acceso único a
recursos documentales informatizados» (PON06B06).
.
R. Berjón, A. Fermoso, E. Beato, M. Mateos y M.A. Sánchez trabajan en
la Escuela Universitaria de Informática de la Universidad Pontificia de
Salamanca. Compañía 5, 37002, Salamanca. España (e-mail:
rberjonga@upsa.es,
afermosoga@upsa.es,
ebeatogu@upsa.es,
mmateossa@upsa.es, masanchezvi@upsa.es).
M.I. Manzano trabaja en el servicio de Biblioteca de la Universidad
Pontificia de Salamanca. Compañía 5, 37002, Salamanca. España (e-mail:
mmanzanoga@upsa.es).
M.J. Gil trabaja en E.S.I.D.E. Universidad de Deusto. Avda. de las
Universidades 24, 48007 Bilbao. España (e-mail: marijose@eside.deusto.es).
II. HERRAMIENTA XDS
De los estudios sobre las fuentes heterogéneas de datos
realizados en [1] [2] y [3] se puede deducir cuáles son los
requisitos necesarios para integrar con XML información
procedente de distintas fuentes:
a) La información puede proceder simultáneamente de
distintas fuentes de información.
b) Estas fuentes pueden ser de los siguientes tipos:
documentos XML, bases de datos relacionales, bases
de datos relacionales habilitadas para XML y bases de
datos nativas XML.
c) Cada fuente debe ser consultada empleando su propio
lenguaje nativo.
d) Con el fin de que no sean necesarias posteriores
transformaciones XSL, el usuario debe poder
especificar cuál es la estructura en que desea obtener el
resultado XML.
e) Para aquellas fuentes de datos que no sean XML, se
tiene que:
· soportar vistas NF2 (Non First Normal Form).
· facilitar la anidación de la información.
· parametrizar las consultas.
· especificar cómo se desea transformar a XML la
información consultada.
f) Las peticiones (o consultas) que los usuarios realicen a
la herramienta, a su vez deben ser XML, a fin de poder
crearlas o modificarlas empleando métodos estándar.
En base a estos requisitos se ha desarrollado la herramienta
XDS (eXtensible Data Sources) que soporta los siguientes
tipos de fuentes: documentos XML, base de datos Tamino,
base de datos Oracle y cualquier otro RDBMS que pueda ser
536
IEEE LATIN AMERICA TRANSACTIONS, VOL. 6, NO. 6, OCTOBER 2008
accesible a través de ODBC. El esquema general se describe
en la Figura 1.
Figura 1. Esquema de XDS
La herramienta es un sistema multiagente, implementado en
Jade, que posee dos módulos principales: XDSConnections y
XDSQueryParser.
El primero (XDSConnections) se encarga de consultar las
fuentes de datos empleando el lenguaje nativo propio de cada
una. Independientemente de cuál sea el tipo de fuente, el
resultado que obtendría de este módulo siempre sería XML.
Requiere de un fichero de configuración (connections.xml),
que en sí es un documento XML, donde se describe: los
parámetros necesarios para acceder a cada fuente de datos
(tipo de la fuente, ubicación de la misma, nombre de usuario y
contraseña con la que acceder a ella), las consultas nativas que
potencialmente emplearán los usuarios para recuperar la
información (en las peticiones a la herramienta, el usuario
identificará la fuente y la consulta nativa con la que obtener la
información), los posibles parámetros que puedan tener dichas
consultas, las reglas que permitirán, si así se desea, anidar la
información relacional consultada, así como también las que
permiten especificar cómo se desea transformar este mismo
tipo de información a una representación XML.
Este módulo se ejecuta en un ambiente de trabajo
colaborativo distribuido: las peticiones que recibe agente
manager identifican la fuente y la consulta con la que se desea
obtener la información requerida. A través de estos
identificadores se localiza el agente de computación vinculado
con la fuente de datos. Éstos poseen distintos
comportamientos, con una creencia por cada uno de ellos,
asociados con cada una de las consultas descritas en
connections.xml. Además también poseen distintos
componentes que permitirán: fijar el valor de los posibles
parámetros definidos en la consulta, realizar la operación de
anidamiento si así se especificó en el documento de
configuración, así como también realizar la transformación de
la información relacional a formato XML.
El otro módulo, XDSQueryParser, se construye por medio
de un agente que actúa como interface entre el usuario y el
resto del sistema multiagente. Es al que los usuarios dirigen
sus peticiones, en las que se identifican las fuentes y consultas
que debe emplear el sistema para obtener la información, así
como la estructura con la que se desea obtener la respuesta.
Estas peticiones están expresadas en el lenguaje XDSQuery
que también se ha definido.
XDSQueryParser interactúa con XDSConnections para
obtener, a través de los identificadores de la fuente y la
consulta,
la
información
requerida,
integrándola
posteriormente y generando la respuesta XML que finalmente
se le devolverá al usuario. A continuación se analiza con más
detalle las características de XDSConnections y
XDSQueryParser
A. XDSConnections
Mediante XDSConnections se accede a las distintas fuentes
de datos mediante consultas nativas. La descripción de estas
fuentes y consultas se realiza en el fichero connections.xml
cuyo esquema se representa en la Figura 2.
En dicho documento y por cada fuente de información, se
incluye un elemento <connection> que define: por una parte los
parámetros necesarios para establecer una conexión a dicha
fuente (elementos <property>) y, por otra, las distintas
consultas nativas que pueden ser ejecutadas (elementos
<query>). Puesto que se puede describir distintas fuentes, a
cada una se le asigna un nombre para poder identificarlas
(atributo name de cada elemento <conection>). Además y
también para cada uno de estos elementos, se especifica, a
través de su atributo type, el tipo de la fuente. Los tipos
soportados son: file para documentos XML, sql para bases de
datos relacionales y aquéllas que también estén habilitadas
para XML y finalmente tamino para la base de datos Tamino
(de momento es la base de datos nativa XML que está
soportada).
BERJÓN et al.: IWPAAMS2007-08: MULTIAGENT SYSTEM
537
Figura 2 Esquema de connections.xml
Cada elemento <query> también posee atributos name y
type que, de forma análoga a los anteriores, describen
respectivamente el nombre o identificador de la consulta y el
tipo de la misma. El tipo de la consulta describe el lenguaje
nativo empleado para consultar la fuente, ya que como se
analizó en [1], una misma fuente de datos puede soportar
distintos lenguajes de consulta (por ejemplo en Tamino las
consultas pueden realizarse a través del lenguaje XQuery y
también empleando X-Query que es una versión extendida de
XPath).
Todo elemento <query> incluye a su vez los siguientes
elementos: <statement>, <parameters>, <nesting> y <rowSchema>.
En el elemento <statement> se describe la consulta nativa, en
<parameters> se incluirá la definición de los posibles
parámetros que puedan haber sido incluidos en dicha consulta.
Los elementos <nesting> y <rowSchema> describen
respectivamente el anidamiento (operador NEST) que puede
realizarse sobre datos relacionales, así como la transformación
de este tipo de información a XML. Estos dos elementos se
analizan a continuación con más detalle.
Anidamiento. Según se indica en [4] [5] [6] y [7] «En NF2 las
tuplas siguen una estructura jerárquica, lo que resulta útil para
representar objetos que por su naturaleza están estructurados
jerárquicamente». Teniendo en cuenta esta afirmación, se
puede concluir que la mejor alternativa para transformar datos
relacionales a XML es que el modelo de éstos sea el relacional
anidado NF2 (este modelo permite datos multivaluados y/o
compuestos).
En XDS hemos incorporado la operación NEST en
cualquier consulta que pertenezca a una fuente de datos de
tipo SQL. El elemento <query> posee un elemento <nesting>
donde, si fuese requerido, se describe el anidamiento. Éste
puede incluir tantos niveles como se desee, definiéndolos a
través de elementos <nested> anidados. Cada uno define, a
través de subelementos <field>, el campo o campos sobre los
que se realizará el anidamiento (o agrupamiento). Además, el
elemento <nested> define en su atributo name el nombre del
nuevo campo compuesto que contendrá como subcampos el
resto de los no designados en elementos <field>.
Esquemas. Para XDS, la información extraída por
XDSConnections de toda fuente de datos es de tipo XML. Por
tanto, para aquellas fuentes que no lo sean, será necesario
realizar una transformación a este formato. XDS proporciona
dos formas diferentes de transformar a XML cada uno de los
registros devueltos por una consulta: incluyendo en la misma
al menos un XDSSchema que defina, mediante reglas, la
estructura que tendrá dicha representación XML, o siguiendo
un modelo de transformación canónica (éste es el valor por
defecto, no requiere ninguna definición adicional en
connections.xml).
Para definir un XDSSchema, se añade un elemento
<rowSchema> al elemento <rowSchemas> de la consulta (su
esquema se muestra en la Figura 3). Los elementos de
XDSSchema (<element>, <complexType>, <sequence>, <group>,
<attribute>,<attributeGroup>,<extension>,<any>y <simpleContent>)
se corresponden con un subconjunto extendido del estándar
XMLSchema.
538
IEEE LATIN AMERICA TRANSACTIONS, VOL. 6, NO. 6, OCTOBER 2008
Figura 3 Esquema de XDSSchema
Además de los atributos que para estos elementos define
XMLSchema, XDSSchema incluye otros nuevos que permiten
identificar el origen de la información. Estos atributos son:
field, newNF2 y occursField.
El atributo field definido en <element>, <attribute> y <any>
identifica el campo del registro que contiene la información
que finalmente incluirán dichos nodos. Este atributo debe ir
complementado con el atributo newNF2 si la información a
incluir fuese la de un subcampo de uno compuesto (al estar
soportadas las estructuras NF2 este atributo referencia a un
campo compuesto que contiene el campo descrito por field).
Para transformar un campo multivaluado, en el esquema
XDSSchema necesariamente habrá una estructura repetitiva
en la que el atributo maxOccurs tome el valor unbounded. En
este caso el atributo occursField indica el nombre de dicho
campo multivaluado.
Por último, el elemento <rowSchemas> puede contener
tantos
elementos
<rowSchema>
como
diferentes
transformaciones se quiera plantear. Cuando en una consulta
XDSQuery, el usuario desee procesar el resultado de una
consulta SQL, sólo tendrá que indicar el nombre de la
transformación a realizar (valor del atributo name del
elemento <rowSchema>) y el nombre del elemento que en
dicho XDSSchema actuará como root element.
B. XDSQueryParser
XDSQuery es el lenguaje que se ha diseñado para que los
usuarios de XDS consulten las fuentes de datos. Es un
subconjunto extendido de XQuery descrito en XML. Su
gramática se muestra en la Tabla 1 y su esquema XML en la
Figura 4. Permite aprovechar la potencia de las expresiones
FLWOR de XQuery para realizar consultas, pero con el valor
añadido de que éstas puedan realizarse a fuentes de datos no
necesariamente XML.
Para especificar en XDSQuery una consulta a una fuente de
datos, se utiliza el elemento <datasource>. Sus atributos
connection y query identifican respectivamente los nombres
de la conexión a la fuente de datos y el de la consulta nativa.
Opcionalmente, y sólo en el caso de que la fuente de datos
fuese una base de datos relacional, este elemento dispone de
los atributos schema y root que indican respectivamente el
nombre del XDSSchema y el del elemento que, en dicho
XDSSchema, actuará como root element (si se omitiesen estos
atributos, la transformación a XML seguiría el modelo
canónico).
Por otra parte, si la consulta referenciada por <datasource>
incluyera parámetros, este elemento contendría un elemento
<parameter> por cada uno indicando su valor.
Tabla 1. Gramática XDSQuery
Query
Expr
ExprSingle
FLWORExpr
FORClause
::=
::=
::=
::=
::=
Expr
ExprSingle("," ExprSingle)*
FLWORExpr | IfExpr | Constructor | EnclosedExpr
(ForClause | LetClause)+ WhereClause? OrderByClause? "return" Expr
"for" "$" VarName PositionalVar? "in" Expr
BERJÓN et al.: IWPAAMS2007-08: MULTIAGENT SYSTEM
LETClause
PositionalVar
VarName
WhereClause
OrderByClause
OrderSpecList
OrderSpec
OrderModifier
IfExpr
Constructor
DirectConstructor
DirElemConstructor
DirAttributeList
DirAttributeValue
QuotAttrValueContent
AposAttrValueContent
QuotAttrContentChar
AposAttrContentChar
DirElemContent
ElementContentChar
CommonContent
EnclosedExpr
::=
::=
::=
::=
::=
::=
::=
::=
::=
::=
::=
::=
::=
::=
::=
::=
::=
::=
::=
::=
::=
::=
539
("," "$" VarName PositionalVar? "in" Expr)*
"let" "$" VarName ":=" Expr ("," "$" VarName ":=" Expr)*
"at" "$" VarName
QName
"where" XPathExpr
"order" "by" OrderSpecList
OrderSpec ("," OrderSpec)*
XPathExpr
("ascending" | "descending")? ("empty" "greatest" | "empty" "least")?
"if" "(" XPathExpr ")" "then" Expr "else" Expr
DirectConstructor
DirElemConstructor
"<" QName DirAttributeList ("/>" | (">" DirElemContent* "</" QName ">") )
(S (QName S? "=" S? DirAttributeValue)? )*
(' " ' QuotAttrValueContent* ' " ') | (" ' " AposAttrValueContent* " ' ")
QuotAttrContentChar | CommonContent
AposAttrContentChar | CommonContent
Char - [{}&]
Char - [{}&]
DirectConstructor | ElementContentChar | CommonContent
Char - [{}&]
EnclosedExpr
"{" XPathExpr "}"
Figura 4 Esquema de XDSQuery
540
IEEE LATIN AMERICA TRANSACTIONS, VOL. 6, NO. 6, OCTOBER 2008
<?xml version = '1.0' encoding = 'ISO-8859-1'?>
<connections xsi:noNamespaceSchemaLocation="file:///C:/schemas/connection.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<connection name="Oracle" type="sql">
<properties>
<property name="url">jdbc:oracle:thin:@localhost:1521:orcl</property>
<property name="driver">oracle.jdbc.OracleDriver</property>
<property name="user">MODS</property>
<property name="password">MODS</property>
</properties>
<queries>
<query name="ResourceByRecordIdentifier">
<statement>SELECT R.RECORD_IDENTIFIER, R.RECORD_CREATION_DATE, R.RECORD_CHANGE_DATE,
R.RECORD_CONTENT_SOURCE, R.TITULO, R.LANGUAGE_AUTHORITY, R.LANGUAGE_CODE,
R.LANGUAGE_VALUE, R.DATE_ISSUED, R.ABSTRACT, T.NOMBRE TYPE_OF_RESOURCE,
G.TEXT GENRE_TEXT, G.CODE GENRE_CODE, G.AUTHORITY GENRE_AUTHORITY
FROM RESOURCES R, TYPES_OF_RESOURCES T, GENRE G
WHERE T.CODIGO = R.TYPEOFRESOURCE
AND G.CODIGO = R.GENRE
AND R.RECORD_IDENTIFIER = ?
</statement>
<parameters>
<parameter name="$RECORD_ID" index="1" typeName="VARCHAR" sqlTypeName="VARCHAR2"/>
</parameters>
<nesting/>
<rowSchemas>
<rowSchema name="schema0">
<element name="resource">
<complexType>
<sequence>
<element name="titleInfo" type="titleInfo_TYPE"/>
<element name="typeOfResource" field="TYPE_OF_RESOURCE"/>
<element name="Genre" type="genre_TYPE"/>
<element name="recordInfo" type="recordInfo_TYPE"/>
<element name="language" type="language_TYPE"/>
<element name="dateIssued" field="DATE_ISSUED"/>
</sequence>
</complexType>
</element>
<complexType name="titleInfo_TYPE">
<sequence>
<element name="title" field="TITULO"/>
</sequence>
</complexType>
<complexType name="genre_TYPE">
<sequence minOccurs="1" maxOccurs="1">
<element name="text" field="GENRE_TEXT" nillable="false" >
<element name="code" minOccurs="0" nillable="false" field="GENRE_CODE" occursField="GENRE_CODE"/>
<element name="authority" minOccurs="0" nillable="false" field="GENRE_AUTHORITY" occursField="GENRE_AUTHORITY"/>
</sequence>
</complexType>
<complexType name="recordInfo_TYPE">
<sequence>
<element name="recordIdentifier" field="RECORD_IDENTIFIER"/>
<element name="recordChangeDate" field="RECORD_CHANGE_DATE"/>
<element name="recordCreationDate" field="RECORD_CREATION_DATE"/>
<element name="recordContentSource" minOccurs="0" nillable="false"
occursField="RECORD_CONTENT_SOURCE" field="RECORD_CONTENT_SOURCE"/>
</sequence>
</complexType>
<complexType name="language_TYPE">
<simpleContent>
<extension field="LANGUAGE_VALUE">
<attribute name="authority" use="optional" field="LANGUAGE_AUTHORITY"/>
<attribute name="type" use="optional" field="LANGUAGE_CODE"/>
</extension>
</simpleContent>
</complexType>
</rowSchema>
</rowSchemas>
</query>
:::
</connections>
Figura 5 Detalle parcial del fichero connections.xml
III. CASO PRÁCTICO
Para verificar la validez de la herramienta, se consultó el
catálogo de una biblioteca para generar la descripción de un
recurso en formato MODS. Para ello se creó una conexión a la
base de datos (fichero connections.xml) que incluyera una
serie de consultas SQL que se combinarían finalmente en una
consulta XDSQuery con la que se obtendría el resultado final.
Puesto que los datos procedían de una base de datos
relacional, fue necesario indicar cómo se deseaba realizar la
transformación a XML de los datos consultados. Por ello, por
cada consulta SQL, se definió un XDSSchema que indicara
las reglas a seguir.
En la Figura 5 se muestra parte del fichero de
configuración connections.xml en el que se describe la
conexión a la base de datos así como una de las consultas SQL
parciales junto con su XDSSchema correspondiente.
Finalmente en la Figura 6 se muestra la consulta
XDSQuery que envía el cliente a XDS y el resultado final
generado.
BERJÓN et al.: IWPAAMS2007-08: MULTIAGENT SYSTEM
541
Figura 6 Consulta XDSQuery y resultado MODS generado
.
IV. CONCLUSIONES
La herramienta XDS que se propone permite, a través de
un sistema multiagente colaborativo, obtener datos XML
integrando información procedente de diversas fuentes: de
tipo XML (documentos XML, bases de datos nativas XML y
bases de datos relacionales habilitadas para XML) y/o de
RDBMS.
La herramienta permite consultar cada fuente empleando su
propio lenguaje nativo: esto representa una ventaja notable, ya
que se podrá hacer uso de todas las características y
542
IEEE LATIN AMERICA TRANSACTIONS, VOL. 6, NO. 6, OCTOBER 2008
extensiones que proporciona el lenguaje de cada fuente.
También ofrece una gran flexibilidad a la hora de
transformar los datos relacionales a una representación XML,
ya que permite especificar al usuario, mediante XDSSchema,
distintas estructuras XML para una misma consulta.
Por otra parte, el lenguaje XDSQuery con el que el usuario
realiza sus consultas, permite independizar éstas con respecto
al tipo o tipos de fuente donde se encuentre la información: se
podría migrar los datos entre fuentes, sin tener que modificar
dichas consultas. Por último, al estar su sintaxis basada en
XQuery, nuestro lenguaje XDSQuery también permite definir
la estructura con la que se desea obtener la respuesta XML
final, no siendo necesarias posteriores transformaciones XSL.
REFERENCIAS
[1]
[2]
[3]
[4]
[5]
[6]
[7]
[8]
R. Berjón, A. Fermoso, M.J. Gil, «Obtención de XML a partir de
información residente en bases de datos. XDS, una nueva propuesta».
Proc. 2005 Conferencia Ibero-Americana WWW/Internet 2005, pp. 577582.
R. Berjón, A. Fermoso, M.J. Gil, «Obtaining database information in
XML». Proc. 2005 Internacional Conference e-Society, pp. 656-660.
A. Fermoso, R. Berjón, Business information integration from XML and
relational databases sources. Adaptative Technologies and Business
integration: Social, Managerial and Organizational Dimensions». Idea
group reference. Hersey, 2007, pp. 282-307.
M.A. Roth, H.F. Korth, A. Silberschatz, «Extended algebra and calculus
for nested relational databases». ACM Trans. Database Syst., vol. 4, pp.
389-417 .1988.
P.C. Fischer, D. Van Gucht, «Weak multivalued dependencies». Proc.
1984 of the 3rd ACM SIGACT-SIGMOD symposium on Principles of
database systems.
R. Elmasri, S. Navathe: Fundamentals of database systems. New York.
Addison Wesley, 2002.
A. Silberschatz, H. Korth, S. Sudarshan, Database System Concepts.
New York. McGraw-Hill, 1998
MODS. Metadata Object Description Schema, The Library of Congress,
http://www.loc.gov/standards/mods/ (2007)
Roberto Berjón se licenció en Informática en la Universidad de Deusto
donde también obtuvo el título de doctor. Desde 1994 trabaja como profesor
en la Escuela de Informática de la Universidad Pontificia de Salamanca. Tiene
varias publicaciones referentes al acceso e integración de datos con XML.
Ana Fermoso se licenció en Informática en la Universidad de Deusto
donde también obtendría el título de doctora. Desde 1994 trabaja como
profesora en la Escuela de Informática de la Universidad Pontificia de
Salamanca. Tiene varias publicaciones referentes al acceso e integración de
datos con XML.
Encarna Beato estudió Ingeniería Informática en la Universidad de
Valladolid donde también se doctoró. Desde 1997 trabaja como profesora en
la Escuela de Informática de la Universidad Pontificia de Salamanca.
Actualmente está investigando en la integración y búsqueda de información
dentro del mismo grupo de investigación que el resto de compañeros de este
artículo.
Montserrat Mateos estudió Ingeniería Informática en la Universidad de
Salamanca, donde también se doctoró. Desde el año 2001 trabaja como
profesora en la Escuela de Informática de la Universidad Pontificia de
Salamanca. Tiene varias publicaciones sobre la búsqueda de información.
Miguel Ángel Sánchez estudió Informática e Ingeniería Informática en la
Universidad Pontificia de Salamanca. Obtuvo el título de doctor en la misma
universidad. Desde 1992 trabaja como profesor en la Universidad Pontificia
de Salamanca. Actualmente está investigando en la integración y búsqueda de
información dentro del mismo grupo de investigación que el resto de
compañeros de este artículo.
María Isabel Manzano es estudiante de doctorado en Biblioteconomía y
desarrolla su actividad profesional en la Biblioteca de la Universidad
Pontificia de Salamanca.
María José Gil se licenció en Informática en la Universidad de Deusto
donde actualmente es catedrática. Ha dirigido varias tesis vinculadas al ámbito
del acceso e integración de datos.