WEB SEMANTICA Y BASES DE DATOS XML

45
WEB SEMANTICA Y BASES DE DATOS XML JUAN DIEGO LOSADA CABRERA UNIVERSIDAD DE LOS ANDES FACULTAD DE INGENIERIA DEPARTAMENTO INGENIERIA DE SISTEMAS Y COMPUTACIÓN SANTA FE DE BOGOTÁ 2004

Transcript of WEB SEMANTICA Y BASES DE DATOS XML

Page 1: WEB SEMANTICA Y BASES DE DATOS XML

WEB SEMANTICA Y BASES DE DATOS XML

JUAN DIEGO LOSADA CABRERA

UNIVERSIDAD DE LOS ANDES

FACULTAD DE INGENIERIA DEPARTAMENTO INGENIERIA DE SISTEMAS

Y COMPUTACIÓN SANTA FE DE BOGOTÁ

2004

Page 2: WEB SEMANTICA Y BASES DE DATOS XML

2

WEB SEMANTICA Y BASES DE DATOS XML

JUAN DIEGO LOSADA CABRERA

Proyecto de Grado

Director Dr. JOSE ABASOLO

UNIVERSIDAD DE LOS ANDES

FACULTAD DE INGENIERIA DEPARTAMENTO INGENIERIA DE SISTEMAS

Y COMPUTACIÓN SANTA FE DE BOGOTÁ

2004

Page 3: WEB SEMANTICA Y BASES DE DATOS XML

3

TABLA DE CONTENIDO

1. INTRODUCCIÓN .................................................................................................... 5

1.1. Objetivo general.................................................................................................. 7 1.2. Objetivos específicos......................................................................................... 7

2. Bases de Datos XML........................................................................................... 8 2.1. ¿Que es una base de datos XML?................................................................. 8 2.2. XML y Bases de Datos ...................................................................................... 9 2.3. Características de una base de datos XML nativa ............................... 10

2.3.1. Almacenamiento del XML ...................................................................... 10 2.3.2. Colecciones.................................................................................................. 11 2.3.3. Queries.......................................................................................................... 11 2.3.4. Updates......................................................................................................... 12 2.3.5. Áreas de Aplicación.................................................................................. 12

2.4. Lista de Productos............................................................................................ 13 2.4.1 Middleware.................................................................................................... 13 2.4.2. Bases de datos XML-Enabled............................................................... 14 2.4.3. Bases de datos XML Nativas ................................................................ 15

3. Bases de Datos XML Nativas ..................................................................... 17 3.1. Ejemplo de Aplicaciones................................................................................. 17 3.2. Solución con Base de datos Relacional.................................................... 18 3.3. Solución con XML.............................................................................................. 18 3.4. Conclusión ........................................................................................................... 19

4. Buscador Semántica ........................................................................................ 20 4.1 ¿Qué es la Web Semántica? .......................................................................... 20 4.2. Buscador Semántica y Web Semántica ................................................... 21 4.3. TAP ......................................................................................................................... 22

5. Buscador Semántica y NXD ........................................................................ 24 5.1. Base de Datos XML nativa eXist ................................................................. 26

5.1.1 Comandos Comunes................................................................................ 27 5.1.2 Seguridad...................................................................................................... 28

Page 4: WEB SEMANTICA Y BASES DE DATOS XML

4

5.2. Languaje de base de datos a Utilizar........................................................ 29 5.2.1 Principios de XPath............................................................................................ 29 5.2.2. Principios de XQuery ......................................................................................... 37

5.3 Arquitectura Utilizada....................................................................................... 40 5.6 Criterios de Búsqueda ...................................................................................... 41 5.7. Dificultades Encontradas.............................................................................. 43

6. Conclusiones.......................................................................................................... 44 BIBLIOGRAFIA ............................................................................................................ 45

Page 5: WEB SEMANTICA Y BASES DE DATOS XML

5

1. INTRODUCCIÓN

La definición de Web Semántica acorde a Tim Berners-Lee, el inventor de de la World Wide Web es: “La extensión de la Web actual en donde la información es dada de forma bien definida, permitiendo una mejor cooperación entre computadoras y humanos”1 La Web semántica es la representación abstracta de los datos en la World Wide Web, basado en el estándar RDF2 y otros estándares por definir. En un principio este fue desarrollado por la W3C3, con la participación de universidad e industrias. Los datos se pueden definir y ligar de tal manera haya un descubrimiento, una automatización, una integración, y una reutilización más eficaz a través de diversos usos. La mayor parte de la Word Wide Web que encontramos hoy esta diseñara para que los humanos la lean y la entiendan, no para que los programas puedan realizar manipulaciones significativas. En la actualidad existen procesos que analizan las paginas Web, pero no lo suficientemente confiables para analizar la semántica. La Web Semántica brindara una estructura para la manipulación de las páginas Web, en donde agente viajeros hiendo de una pagina a otra podrá realizar tareas sofisticadas asignadas por los usuarios. El primer paso es incorporar la Web Semántica dentro de la estructura de la Web existente. En un futuro cercano, la integración permitirá 1 [13] Tim Berners-Lee: "The extension of the current web in which information is given well-defined meaning, better enabling computers and humans to work in cooperation." 2 RDF: Resource Description Framework 3 W3C: World Wide Web Consortium

Page 6: WEB SEMANTICA Y BASES DE DATOS XML

6

nuevas funcionalidad ya que las maquinas serán capaces de procesas y entender los datos que se encuentran en la Web. En la actualidad, la Web esta creciendo más rápido de lo que la información puede llegar a ser procesada automáticamente. Si usted quiere encontrar algo en la Web, entonces se tiene que hacer manualmente. En la Web existente encontramos un alto número de información que no cumplen con una estructura estándar, tratar de modelar la información en un sistema estructural de fácil entendimiento, es imposible debido a la magnitud de la información ya publicada; lo que se busca con el estándar RDF, es hablar un lenguaje común en la red, basado en XML, donde el resultado son documentos semi-estructurados de fácil creación llamados XML RDF. La Web Semántica podría ser vista como una gran solución de ingeniería… pero es más que eso. Nos daremos cuenta que es más fácil publicar datos de una forma ordenada. Veremos que existe un gran número de publicaciones para la Web semántica que pueden ser usadas para diferentes tareas, incrementando la modularidad de aplicaciones en la Web. Ante un rápido crecimiento en la publicación de datos cumpliendo el estándar XML RDF, nace la necesidad de encontrar una forma eficiente de almacenarlos y consultarlos; un repositorio que no permita una consulta adecuada de la información, no permitiría aprovechar al máximo todas las cualidades que ofrece la utilización de un estándar como el RDF. Las bases de datos XML nativas nos presta la funcionalidad de almacenar datos semi-estructurados como los XML RDF, se pueden realizar consultas complejas sobre la información almacenada, ya sean globales o grupales. El interés de este trabajo es diseñar y modelar un sistema que nos permita almacenar y consultar datos que se encuentren en formato XML, utilizando como repositorio una base da datos XML nativas. El diseño de un sistema de comunicación entre repositorio que permita que las búsquedas no solo se realicen en el repositorio local si no en el mayor número de repositorios que se encuentren en red. Para el desarrollo de este sistema se necesitan tener conocimientos de bases de datos XML nativas, de sistemas de búsqueda que nos permita realizar las consultas remotas de forma eficiente y lo más precisas posibles. Para el desarrollo mismo de la aplicación se necesita conceptos

Page 7: WEB SEMANTICA Y BASES DE DATOS XML

7

en herramientas de programación que para este proyecto va a ser basado en Java aprovechando la interoperabilidad que éste ofrece. Se quiere buscar que la solución propuesta sea multiplataforma, de esta forma permitiendo un mayor crecimiento en los repositorios basados en la arquitectura expuesta, lo que traduce en un densidad de información mas alta con resultados en las búsquedas más completas. Permitir que todo aquel que se quiere conectar a la aplicación por medio de alguna otra herramienta, lo pueda hacer por medio de llamados remotos a funcionas publicas en la red, sin la necesidad de ningún tipo de autenticación.

1.1. Objetivo general El principal objetivo del presente trabajo es diseñar una solución para el almacenamiento y consulta en la Web de datos en formato XML.

1.2. Objetivos específicos Desarrollar un piloto que se convierta en middleware que permita la integración entre diferentes bases de datos XML, sin importar la estructura que contenga cada una. Permitir la realización de consultas sobre la información almacenada en las bases de datos, utilizando lenguaje natural para facilitar la realización de las búsquedas, traduciendo la información pasado en lenguaje natural a Xquery, el lenguaje utilizado por las bases de datos XML. Estudiar el funcionamiento de algunas bases de datos XML que se encuentran disponibles bajo el licenciamiento GNU.

Page 8: WEB SEMANTICA Y BASES DE DATOS XML

8

2. Bases de Datos XML

2.1. ¿Que es una base de datos XML? La iniciativa XML:DB4 ha definido tres diferentes tipos de base de datos XML.

i. Bases da datos XML nativas (NXD por sus siglas en ingles, Native XML Databse).

a. Define un modelo lógico para los documentos XML,

almacena y recupera documentos basándose en el modelo. Como mínimo, el modelo debe de incluir elementos, atributos, PCDATA y el orden del documento.

b. Los documentos XML deben de tener una unidad fundamental de almacenamiento, igual como las bases de datos relacionales tiene una columna con una unidad lógica de almacenamiento.

c. No se requiere tener un modelo particular de almacenamiento. Por ejemplo, este puede ser construido sobre una relación, jerarquía, basándose en objetos, o usando un tipo de almacenamiento propio como índices.

ii. Bases de datos XML-enable (XEDB por sus siglas en ingles, XML

Enabled Databse). Es una base de datos que trae adherido un intérprete de XML proporcionado por la base de datos o por un tercero. Este intérprete maneja el almacenamiento y recuperación de los datos XML. Los Datos ingresados a la base de datos se basan en los tipos, atributos y el texto; casi siempre omite su estructura física. En consecuencia al recuperar un documento XML, dará el resultado en un documento distinto. En la manipulación de los datos se utilizan diferentes especificaciones tecnológicas de XML (Ej. XPath, XSL-T, DOM o SAX) u otras tecnologías de base de datos (Ej. SQL). Usualmente se utiliza dos tipos de mapeo, para un documento XML: el table- based mapping y el object-relational mapping.

4 Comunidad dedicada al desarrollo e investigación de bases de datos XML. (http://www.xmldb.org)

Page 9: WEB SEMANTICA Y BASES DE DATOS XML

9

iii. Las bases de datos híbridas (HXD por sus siglas en ingles, Hibrid

XML Databse). Estas bases de datos se pueden comportar como una XEDB o una NXD dependiendo de los requerimientos de la aplicación. Un ejemplo podría se Ozone5.

2.2. XML y Bases de Datos Los archivos XML se pueden clasificase en dos categorías: centrada en datos y centradas en documentos. Cuando se centra en datos es cuando el XML es utilizado para transferir datos. Estas incluyen órdenes de venta, expedientes médicos, etc. Su estructura física - el orden de los elementos, donde los datos son almacenados en atributos - a menudo no importan. Un caso especial de estos documentos son páginas Web dinámicas, como catálogos en línea y lista de direcciones; estos son construidos a base de un conjunto de datos conocidos. Cuando se centra en documentos es utilizado por sus cualidades parecidas al SGML6, por ejemplo en los manuales de usuario, paginas Web estáticas, etc. Se caracterizan por una estructura irregular, el contenido mezclado y su estructura física es importante. Para almacenar y recuperar los datos de un archivo XML centrado en datos, el tipo de software que se necesita depende de lo bien estructurado que se encuentren los datos. Para un alto volumen de datos, como las paginas blancas de un directorio telefónico, se necesitara una base de datos XML-enabled que sea eficiente en el almacenamiento de datos, por ejemplo una base de datos relacional o una base de datos objeto relacional y algún software de transferencia de datos. Estos documentos pueden ser construidos dentro de la base de datos (en este caso se dice que la base de datos es XML-enable) o puede ser un tercer software, por ejemplo un middleware o un servidor XML. Si los datos están semi-estructurados, por ejemplo las paginas amarillas de un directorio telefónico o datos médicos, se tienen dos opciones. Se puede tratar de arreglar los datos para que sea una base de datos bien estructurada, como una base de datos relacional, o se pueden almacenar en una base de datos XML nativa, la cual esta diseñada para manejar datos semi-estructurados. Para almacenar archivos XML centrados en documentos, se necesita una base de datos XML nativa o un sistema de manejo de contenido. 5 Ozone es una base de datos orientada a objetos, implementada completamente en JAVA con licencia open source. Implementa DOM para almacenar datos XML. 6 Standard Generalized Markup Language (SGML),

Page 10: WEB SEMANTICA Y BASES DE DATOS XML

10

(Algunas bases de datos XML-enable proporciona este tipo de almacenamiento). Están diseñadas para almacenar fragmentos de contenido, como procedimientos, capítulos, etc. Pueden incluir meta-datas, como el nombre del autor y numero del documento. Los sistemas de manejo de contenido por lo general tienen funciones adicionales, como editores, control de versiones y control de flujo de trabajo. Aunque los sistemas de control de contenido generalmente usan una base de datos XML nativa para el almacenamiento, esto es ocultado al usuario.

2.3. Características de una base de datos XML nativa No todas las NXDs son exactamente iguales, hay unas similitudes que proporcionan una discusión básica de sus atributos. El modelo de las NXDs aun está en evolución y continuaran en evolución por muchos años más. Hay variaciones significativas entre productos, por lo tanto se busca las características con mayor afinidad entre los productos.

2.3.1. Almacenamiento del XML

NXDs almacenan los documentos XML como una unidad y crean un modelo muy cercano con XML o con alguna tecnología XML, como Infoset o DOM. Estos modelos incluyen niveles arbitrarios de anidamiento y complejidad, como un soporte completo de contenido mezclado y datos semi-estructurados. Este modelo es automáticamente creado por la NXD dentro de un mecanismo de almacenamiento subyacente. Se asegura que el modelo específico del XML es mantenido. Una vez ya están almacenados los datos se continua utilizando las herramientas del NXD donde se espera una representación completa de los datos. Por ejemplo, si se esta utilizando una NXD, que se base en una base de datos relacional, accesando los datos usando directamente SQL, puede que no sea tan útil como se espera. La razón es simplemente que los datos que se verán, es el modelo del documento XML (elementos y atributos) en vez de las entidades que los datos representan. Las entidades existen dentro del dominio del documento XML, no dentro del dominio del sistema de datos almacenados. Para trabajar con los datos, hay que trabajar con ellos como XML. La base de datos ara una abstracción de los detalles de cómo esta

Page 11: WEB SEMANTICA Y BASES DE DATOS XML

11

almacenado el XML y permitirá hacer aplicaciones utilizando tecnología XML.

2.3.2. Colecciones

Las NXDs manejan una colección de documentos, permitiendo manipularlos como un conjunto. Es muy similar al concepto relacional de tablas. NXDs diverge del concepto de tablas en que no todas las bases de datos requieren un schema para asociar una colección. Esto significa que se puede almacenar cualquier documento XML en la colección, sin importar el schema. Con esto, se puede construir cualquier query sobre todos los documentos de la colección. Los NXDs que soportan esta funcionalidad son llamados schema-independent. Teniendo una colección de documentos con schema independiente le da a la base de datos una alta flexibilidad y desarrollar aplicaciones es muy fácil. Desafortunadamente, es una característica que generalmente ocasiona grandes problemas a los administradores, corre el riego de una baja integridad en los datos. Si se necesita una fuerte estructura de esquemas, entonces hay que asegurase de utilizar una NXD que soporte esquemas o encontrar otra forma de almacenar los datos de un XML.

2.3.3. Queries

XPath es el lenguaje más utilizado en las NXDs. XPath se extiende para permitir consultas en una colección de documentos. Desafortunadamente, XPath no fue diseñado como un lenguaje de base de datos y se encuentran muchos problemas cuando se utiliza como una. Uno de los principales problemas que se ven con XPath es imposibilidad de agrupar, clasificar, hacer joins entre documentos y el soporte de tipo de datos. Debido a esto XPath necesita ser expandido como una parte de un lenguaje más comprehensivo. Muchos de estos problemas pueden ser resueltos utilizando XSLT, en forma de XQuery.7

7 XQuery es un lenguaje que permite hacer diferent es tipos de consultas sobre conjunto de archivos XML.

Page 12: WEB SEMANTICA Y BASES DE DATOS XML

12

Para mejorar el funcionamiento de las consultas, NXDs soporta la creación de índices sobre los datos almacenados en una colección. Estos índices son usados para mejorar la velocidad de las consultas. Los detalles de que clase de índices y como debe de ser creados, varia entre productos.

2.3.4. Updates

Las actualizaciones son una gran debilidad de las NXDs. La mayoría de los productos requieren que el documento sea extraído de la base de datos, cambiado con algún API de XML, y luego almacenado en la base da datos. Algunos productos han agregado un lenguaje que permite hacer actualizaciones llamado XUpdate8. Esto representa un problema al tratar de agregarlo al XQuery. La utilización de DOM es la forma más común de realizar las actualizaciones en NXD. La debilidad del update a llevado que cada iniciativa maneje su propio estándar dejando atrás la idea original de un estándar único como lo propone XQuery.

2.3.5. Áreas de Aplicación Hay tan solo una restricción para cualquier aplicación que quiera usar una NXD: debe usar XML. De lo contrario no hay ninguna regla que nos diga que tipo de aplicaciones pueden o no pueden ser representadas en una NXD. En general, las NXDs sobresale en el almacenamiento de documentos con gran cantidad de datos (Ej. XHTML o DocBook), datos que tengan una estructura compleja y datos cuya naturaleza sea semi-structured. Básicamente, si los datos son representados en XML y son muy poco legibles, una NXD podría ser una buena solución, pero probablemente no puede ser la mejor herramienta cuando los datos están bien definidos y son rígidos, por ejemplo un sistema de cuentas. Algunas áreas en las que se puede utilizar:

Información corporativa. Catálogos. Información Medica. Logs de transacciones B2B.

8 Iniciativa de XMD:DB para crear un lenguaje que permitan una fácil actualización de los documentos XML. (Http://www.xmldb.org/xupdate/)

Page 13: WEB SEMANTICA Y BASES DE DATOS XML

13

Documentos en que cumplan diferentes estándares como el propuesto en el XML RDF:

2.4. Lista de Productos

2.4.1 Middleware

Producto Desarrollador Licencia Tipo DB DB => XML

XML=>DB

ADO Microsoft Comercial Relacional X X ALLORA Hit Software Comercial Relacional X X ASP2XML Sonebroom Comercial Relacional X X ATTUNITY C. Attunity ltd. Comercial Rel, Jera X X Beanstalk Beanstalk Corp. Comercial Relacional X -- CASTOR Exolab.org Open S. Relacional X X Charteris I. T. C. Comercial Relacional X X DatabaseDom IBM Evaluation Relacional X X Data Junction Data Junction Comercial Rel., ISAM X X DB2XML Volker Turau Open S. Relacional X -- DbToXml SoftUs Comercial Relacional X X DBIx::XML_RDB Matt Sergeant Open S. Relacional X X DBIx::XMLMess. Andrei Nossov Open S. Relacional X X DB-X Swift Inc. Comercial Relacional X X DB/XML DataMirror

Corp. Comercial Relacional X X

Delphi Borland Comercial Relacional X X XML-ODBC Serv. Easysoft Comercial Relacional X -- e.Reporting Actuate Comercial Relacional X -- ETools XML Express Comercial MultiValue X X Iconnector Infoteria Comercial Relacional X X Idx-xmnesia IDEALX Open Sou. Mnesia X X Iintegrator Lightspeed

Inter. Comercial Relacional X X

Import/Export St,

Etasoft Comercial Relacional X X

InterAccess XML Software Co

Comercial Relacional X X

JaxMe Jochen Wiedmann

Open Sou. Relacional X X

Page 14: WEB SEMANTICA Y BASES DE DATOS XML

14

JXTransformer DataDirect Tec. Comercial Relacional X X ODBC2XML Itelligent

System Shareware Relacional X --

ODBC S. S. T. FXML Open Sou. Relacional X -- O. G. Stewart Et al Open Sou. Relacional X X PowerXML Wizen Software Open Sou. Relacional X X PXSLServlet Paul A. Tchisto Open Sou. Relacional X X Sql2dtd David Mertz Public

Dom. Relaciona X --

Sql2xml Scott Hathaway Public Dom.

Relacional X --

Sunopsis XML Diver Sunopsis Comercial Relacional X X SXQL Goetz Hatop Shareware Relacional X X Sypram XML Studio Sypram Comercial Relacional X -- TransVerse Coyote Consul. Comercial Relacional X X XchainJ Cogent Logic C. Comercial Relacional X X X:Forge Bidop Research Open Sou. Rel-N. XML X -- Xlinkit Xlinkit.com Free/com Relacional X -- XML DataDesk Comercial Relacional X -- XMLDataLink Integra Comercial Relacional X X XML-DBMS Ronald Bourret Open Sou. Relacional X X XML::Generator Matt Sergean Open Sou Relacional X -- XMLizer E-XMLMedia Comercial Relacional X X XLE IBM Evaluation Relacional X -- XML Servlet Cerium Comercial Relacional X X XMLShark InfoShark Comercial Oracle X X XML Spy Altova Comercial Relacional X X XML SQL Oracle Dev.-Only Relacional X X XTS IWay Soft. Comercial Rel. – Jerar X X XSQL Servlet Oracle Dev.-Only Relacional X -- XVRL Xvrl.org Open Sou. Relacional X --

Tabla 1. [5]XML Database Products

2.4.2. Bases de datos XML-Enabled

Producto Desarrollador Licencia Tipo DB Access 2002 Microsoft Comercial Relacional Cache InterSystems Corp. Comercial Multi-valued DB2 IBM Comercial Relacional EXtremeDB McObject Comercial Navigational FileMaker FileMaker Comercial FileMaker FoxPro Microsoft Comercial Relacional Informix IBM Comercial Relacionl

Page 15: WEB SEMANTICA Y BASES DE DATOS XML

15

Matisse Matisse Software Comercial Object-oriented

Objectivity/DB Objectivity Comercial Object-oriented

OpenInsigth Revelation Soft Comercial Multi-valued Oracle 8i, 9i Oracle Comercial Relacional SQL Server 2000 Microsoft Comercial Relacional Sybase ASE 12.5 Sybase Comercial Relacional Versant enJin Versant Corp. Comercial Object-

oriented Tabla 2. [5]XML Database Products

2.4.3. Bases de datos XML Nativas

Producto Desarrollador Licencia Tipo DB 4Suite, 4Suite Server FourThought Open Sou. Object-orien Birdstep RDM XML Birdstep Comercial Object-orien Centor Interaction Server

Centor Software Co.

Comercial Propietario

Cerisent XQE Cerisent Comercial Propietario Coherity XML DB Coherity Comercial Propietario DBDOM Ellipsis Comercial Propietario eXist Wolgang Meier Open Source Relational Ext. M/Gateway Comercial Multi-valued XIS eXcelon Corp. Comercial Object-orien GoXML DB XML Global Comercial Propietario Infonyte DB Infonyte Comercial Propietario Ipedo XML Database Ipedo Comercial Propietario Lore Stanfor University Research SemiStructured Lucid XML Data Manager

Ludic i.t. Comercial Propietario

MindSuite XDB Wired Minds Comercial Object-orien Natix Data ex machina Comercial File System Neocore XML m. s. NeoCore Comercial Propietario Oxone ozone-db.org Open source Object-orien Sekaiju / Yggdrasil Media Fusion Comercial Propietario Socrates XML Cincom Comercial Object-relatio SQL/XML-IMDB QuiLogic Comercial Native XML –

relational Tamino Software AG Comercial Propietario Tendara Mobile XML DB

Tendara Comercial Propietario

TeraText DBS TeraText Solutions Comercial Propietario TEXTML Server IXIA, Inc. Comercial Propietario TigerLogic XDBMS Rining Data Comercial Pick Virtuoso OpenLink Software Comercial Relacional a

Page 16: WEB SEMANTICA Y BASES DE DATOS XML

16

través de ODBC

XDBM Matthew Parry, Paul Sokolovsky

Open Source Propietario

XDB ZVON.org Open Source Relacional Xfinity Server B-Bop Associates,

Inc. Comercial Relacional

X-Hive/DB X-Hive Corporation Comercial Object-orien Xindice Apache Software

F. Open Source Propietario

Xyleme Zone Server Xyleme S.A. Comercial Propietario XYZFind Server XYZFind Cor. Comercial Propietario

Tabla 3. [5]XML Database Products

Page 17: WEB SEMANTICA Y BASES DE DATOS XML

17

3. Bases de Datos XML Nativas

Una base de datos XML nativa, define un modelo lógico para cada uno de los documentos XML, almacena y recupera información de acuerdo al modelo. Como mínimo, el modelo debe incluir elementos, atributos, el modelo de los datos en el que sé esta trabajando y el orden del documento. No requiere tener ningún modelo físico subyacente de almacenamiento. Por ejemplo, puede ser construido sobre una base de datos relacional, jerárquica u orientada a objetos, o ser usada como un sistema propio de almacenamiento basado en índices.

3.1. Ejemplo de Aplicaciones Hay todo un mundo de aplicaciones en donde las bases de datos XML son la mejor solución. Para estas aplicaciones una base de datos XML sobrepasara una base de datos relacional en conveniencia, en su fácil desarrollo y funcionamiento. Para saber en que momento una base de XML es considerada la mejor solución, lo primero que hay que hacer es identificar el problema. Para esto se va a utilizar el siguiente ejemplo. La meta de un sistema de administración de gastos, es permitir a sus usuarios almacenar los expedientes de todas sus actividades económicas para los propósitos del reembolso. El individuo desea ser compensado por todo lo que pago a nombre de la compañía. La compañía desea cerciorarse de que los costos incurridos estén perfectamente almacenados en las cuentas internas de la compañía. Si se mira una copia del recibo, aparentemente es tan solo un simple proceso de crear cada campo dentro de una base de datos. Pero si se mira más detalladamente, el problema comienza a ser más complejo. La complejidad comienza en la representación de los artículos individualmente por su costo. Es fácil crear un gran reporte que

Page 18: WEB SEMANTICA Y BASES DE DATOS XML

18

contenga la identificación individual de cada compañía, así como los detalles específicos del informe, tales como la fecha en la cual los costos fueron incluidos y si algunos avances fueron hechos. Cada uno de los artículos debe de tener una fecha y una razón de compra. También debe de tener un cronograma del viaje. Las cuentas de los hoteles contienen detalles tales como, impuestos, llamadas de negocios y otras cuentas. Cada uno de estos detalles se necesita para hacer una declaración de impuestos.

3.2. Solución con Base de datos Relacional Primero veamos una posible solución utilizando una base de datos relacional; Se crearía una tabla la cual tendría cada uno de los reportes, esta tabla estaría relacionada con los artículos, por medio de una tabla de relaciones, la tabla de artículos tendría la fecha y descripción; cada articulo tiene que estar relacionado con una tabla de avances, por consiguiente se necesita otra tabla de relaciones, para adjudicar a cada artículo un numero X de pagos. Por otra parte para llevar las cuentas de los hoteles se necesita una llave única por hotel, asociado a cada uno de los gastos, esto nos implica como mínimo tres tablas más. Todo esto se puede hacer con una base de datos relacional, pero se necesita un gran desarrollo. Para acceder a los datos de una compra, se necesita involucrar un gran número de tablas, lo mismo para actualizar algún registro.

3.3. Solución con XML Ahora vamos a analizar la solución de este mismo problema utilizando XML. Todas las columnas de las tablas pueden ser representadas dentro de un solo documento XML, creando una solución más elegante y fácil. Para hacer esto, primero se necesita definir cada uno de los tipos que se van a utilizar. Cada tipo puede tener extensiones de un tipo diferente; por ejemplo de tipo que contiene los itinerarios de viaje, pueden tener otro tipo que definan la información de los hoteles. Cada una de las columnas podría estar representada en un esquema, que defina el campo y sus diferentes extensiones. Por ejemplo, el tipo producto podría tener una extensión que contenga el tipo pagos adelantados, el cual trae la fecha y la cantidad pagada.

Page 19: WEB SEMANTICA Y BASES DE DATOS XML

19

Usando esta estructura, un solo bloque de XML representa detalladamente toda la información necesaria, con cada una de sus expresiones. Además el acceso de la información es mas sencillo, se esta trabajando todo sobre un solo documento, al cual se le puede pedir que nos de todas las extensiones sin hacer un solo Join, o pedir una sola parte de la información. Esta solución e poco mas flexible, y es fácilmente extensible sin necesidad de adicionar mas código. Por ejemplo si un usuario quiere agregar campos adicionales a su itinerario, este podría editar el esquema (Si esta basado en esquema), creando una nueva extensión y de esta forma el reporte cambiara automáticamente.

3.4. Conclusión La extensión de los reportes en tan solo una de las muchas flexibilidades que se pueden lograr utilizando el estándar XML. La habilidad de acomodar los datos dinámicamente y desplegarlos usando XSLT es una potente herramienta que no se puede ignorar. Un base de datos XML Nativa puede ser utilizada para dar solución a cualquier tipo de problema, al igual que a una base de datos relacional puede ser utilizada para resolver estos mismo problemas. Pero así como para algunos casos XML nos facilita la representación del mundo, lo mismo sucede con las relacionales; por ejemplo, cuando los datos son muy rígidos y se sigue un patrón que no cambia, se facilita la utilización de una base de datos relacional.

Page 20: WEB SEMANTICA Y BASES DE DATOS XML

20

4. Buscador Semántica

4.1 ¿Qué es la Web Semántica?

Felicitar que las maquinas entiendan los datos publicados en las Web se ha convertido en una prioridad para muchas comunidades. La Web puede tener un mayor potencial solo si se convierte en un lugar en donde la información pueda ser compartida y procesada por herramientas como por personas. La Web semántica es una combinación de información encadenada de tal forma que sea fácilmente procesada por las maquinas, a un nivel global. Se puede pensar en una forma eficiente de representar los datos en las World Wide Web, o en una base de datos global encadenada. La Web semántica fue ideada por Tim Berners-Lee, el inventor de la WWW, URIs, http, y HTML. Hay un equipo de personas dedicado en el W3C9 trabajando para mejorar, extender y estandarizar el sistema; se han realizado gran número de publicaciones acerca de lenguajes y herramientas. Sin embargo, la Web semántica apenas se esta empezando a desarrollar. La Web semántica en términos genérales utiliza una sintaxis que utiliza URIs10 para representar datos, usualmente en estructuras basadas en triplas. Esta sintaxis es llamada “Resource Description Framework” por sus siglas en ingles (RDF). La mayor cualidad del lenguaje de la Web Semántica es que cualquiera puede crear uno, simplemente publicando algún RDF que describa un grupo de URIs, que hacen y como deben de ser usados; nos encontramos entonces ante un lenguaje para hacer lenguajes. En la actualidad nos encontramos ante el nacimiento de una nueva Internet; cada nuevo estándar que propone la Web Semántica nos acerca un poco más a la Web propuesta por Tim Berners-Lee; pero al mismo tiempo la falta de herramientas que promuevan la implantación de dicho estándares, dificulta la popularización, que es lo que realmente determina el éxito o el fracaso.

9 [10] World Wide Web consortium (W3C) 10 [11] Uniform Resource Identi fiers (URI)

Page 21: WEB SEMANTICA Y BASES DE DATOS XML

21

4.2. Buscador Semántica y Web Semántica Los buscadores son una de las herramientas más populares en la Web, la utilización de Web Semántica sobre un buscador podría darle un nuevo rumbo a los buscadores actuales. Los buscadores actuales están basados solamente en la ocurrencia de palabras en los documentos. Buscadores como Google11, aumentan la calidad de las búsquedas basándose en el contenido de los hyperlinks de cada website bajo estructuras complejas. La posibilidad de mantener estructuras estándares, capaces de ser entendidas tanto por humanos como por maquinas, ampliaría el rango y la exactitud de cada búsqueda, al mismo tiempo cualquier buscador que se base en semántica estaría incentivando el crecimiento y la popularización del estándar XML RDF. En la actualidad encontramos diferentes iniciativas que apoyan la utilización de la Web Semántica por medio de los buscadores semánticos. Se han construido dos tipos de buscadores semánticas. El primero llamado ABS, provee búsquedas semánticas para un rango de dominios, incluye temas como música, deporte, lugares y producto, entre otros. El segundo sistema llamado W3C Semantic Search esta mas enfocado y proveer búsquedas semánticas en el website del World Wide Web Consotium. Ambos buscadores en estos momentos no contienen gran cantidad de información, pero es un buen comienzo en la popularización de la Web Semántica. También encontramos iniciativas que pretender proveer la infraestructura necesaria para desarrollar aplicaciones basadas en Web Semántica, una de estas iniciativas en TAP12, desarrollada por profesores de la universidad de Stanford. 11 Google (http://www.google.com) 12 [14] R.Guha and R. McCool. Tap: Towards a web of data. (http://tap.stanford.edu/.)

Page 22: WEB SEMANTICA Y BASES DE DATOS XML

22

4.3. TAP En diferentes partes del mundo se están desarrollando proyectos basados en Web Semántica, una de las propuestas mas interésenlas la encontramos en la universidad de Stanford, bajo un proyecto llamado TAP En la idea general del proyecto se asume que la web semántica contiene fuentes que se relacionan entre sí. Más concretamente, se asume que los datos están modelados como un sistema de grafos, en donde cada nodo corresponde a una fuente y cada arco esta etiquetado con un tipo, este tipo también corresponden a una fuente. TAP intenta servir como infraestructura para aplicaciones basadas en la Web Semántica. TAP provee un conjunto de simple mecanismos para que los websites publiquen datos basándose en Web Semántica y para que las aplicaciones que recurren a esos datos los realice por medio de una interfaz llamada GetData el cual minimiza la complejidad de las consultas. El objetivo de este nuevo lenguaje de consulta es proveer un mecanismo para expresar consultas complejas de una forma sencilla. GetData no intenta ser un lenguaje completo o expresivo como SQL, Xquery, RQL o DQL. Este intenta ser muy fácil de construir, soportar y usar, ambos desde la perspectiva de creación y consulta de datos. GetData esta elaborado sobre SOAP lo cual permite realizar consultas remotas, permitiendo al cliente programar el acceso de los valores de una o más propiedades de una fuente desde un grafo. Cada consulta GetData es un mensaje SOAP a una URL. El mensaje especifica dos argumentos: la fuente a la cual se le va acceder las propiedades y sus características. La respuesta de la consulta al GetData es un grafo que contiene las fuentes con sus propiedades. El API maneja la codificación del XML y los mensajes SOAP al programador. Esto agiliza la creación de las aplicaciones que desean utilizar Web Semántica vía GetData. En una sintaxis abstracta GetData es de la siguiente forma:

• GetData(<resource>, <property> ) => <value> La interfaz del buscador toma un string y retorna todas las Fuentes con sus propiedades que se encuentran en el TAB. Todos los datos mantienen el estándar XML RDF.

Page 23: WEB SEMANTICA Y BASES DE DATOS XML

23

TAP también ofrece una interfaz llamada TAPApache la cual permite desplegar los resultado en forma de inclusión en otros sites que utilicen otro tipo de buscadas, permitiendo la combinación con paginas populares como Amazon.

Page 24: WEB SEMANTICA Y BASES DE DATOS XML

24

5. Buscador Semántica y NXD

La posibilidad que nos da una base de datos XML Nativa para el manejo de documentos bien formados, nos da la alternativa de experimentar con la creación de una herramienta que nos permita realizar búsquedas sobre documentos XML. En este caso no podemos hablar de Búsquedas Semánticas sobre la base de datos ya que se sale del alcance de este trabajo, pero si de demostrar las facilidades que nos prestan las NXDs como repositorio y consulta de documentos basados en estándares como el XML RDF. La aplicación la cual voy a proponer no solo busca ofrecer un repositorio local de documentos XML, para ese caso se podría utilizar la base de datos sin necesidad de alguna aplicación intermedia, también buscar plantear un sistema el cual permita compartir la información entre las bases de datos. Con la utilización de diferentes tecnologías se busca llegar a un sistema como él represando en la figura 1, en donde cada base de datos esta relacionada por medio de XML Web Services, de esta forma cada buscada pueda tener el mayor número de resultados sin importar la base de datos local. Se ha estudiado la utilización de 4 bases de datos XML Nativas que se encuentran bajo el licenciamiento GNU, ellas son dbXML13, eXist-db14, ozone y Xindice. De entre las cuatro se destaca eXist por su fácil manejo, la completa implementación de XQuery totalmente compatible con Xpath; dbXML aun no han implementado XQuery y la interconectividad es muy limitada; ozone no nación siendo base de datos XML Nativa si no una base de datos orientada a objetos, pero la implementación de DOM le ha

13 dbXML http://sourceforge.net/projects/dbxml-core 14 eXist-db (http://www.eXist-db.org)

Page 25: WEB SEMANTICA Y BASES DE DATOS XML

25

permitido comenzar a ofrecer todos los servicios de una base de datos XML Nativa, pero por no haber nacido siendo una base de dato XML las consultas que se realizan sobre documentos XML no son muy eficientes y tan bien le falta la implementación de XQuery; Xindice es una base de datos muy parecida a eXist-db, ambas manejan una orientación Web, eXist-db con apache cocoon y Xindice con apache Tomcat, pero la implementación de XQuery no se encuentra al 100% y presento problemas con él ultimo Kernel de Linux luego de una actualización. Después de realizar el estudio de las diferentes bases de datos XML nativas, he decidido la utilización de eXist-db como manejador de base de datos, ya que es una herramienta totalmente orientada a la WEB con la integración de apache cocoon, desarrollada en JAVA, lo cual permite una optima integración con el leguaje de programación a utilizar, al mismo tiempo facilitando operatividad en diferentes sistemas operativos lo que me permite cumplir el objetivo de realizar una herramienta completamente multiplataforma.

Figura 1. Propuesta inicial del buscador

Page 26: WEB SEMANTICA Y BASES DE DATOS XML

26

5.1. Base de Datos XML nativa eXist En el mercado se encuentran diferentes tipos de bases de datos XML nativas, entre ellas Xindice y eXist que son de código abierto y proceso de desarrollo, la primera es liderada por Apache Group y la segunda por Wolfgang Meier. Ambas bases de datos usan XPath como lenguaje de consulta y XML:DB API para su interacción con JAVA. He decidido utilizar eXist ya que su interfaz de desarrollo es mas amena al usuario y ofrece unas funcionalidades que no se encuentran en Xindice, las cuales se van a presentar en este documento, esto no significa que se va a dejar de estudiar Xindice ya que ambas se complementas, por ejemplo esta implementa XML:DB XUpdate. eXist es una aplicación liviana totalmente desarrollada sobre JAVA por consiguiente es multiplataforma y puede ser fácilmente desplegada con las aplicaciones existentes. La base de datos puede correr como un servidor stand-alone, agregado dentro de una aplicación o conectada con un contenedor de servlet. También se puede configurar para que funcione en modo de solo lectura. Viene integrado con el servidor apache Cocoon15, lo cual permite un total acceso por interfaz WEB a la base de dato, facilitando la elaboración de paginas WEB dinámicas. http://jdlc.homelinux.net:8080/exist/xadmin.xsp

15 Apache Cocoon utiliza tecnología XML y XSL

Page 27: WEB SEMANTICA Y BASES DE DATOS XML

27

Figura 2. Ventana de Administrador

Figura 3. Ventana de consultas eXist ofrece una interfaz de comandos para los clientes. Esta totalmente basado en XML:DB API y proporciona comandos para cada uno de los servicios de la base de datos, como crear y remover colecciones, administración de usuarios, subida de datos y consultas.

5.1.1 Comandos Comunes

1. El servidor se arranca con el siguiente comando: [julosad@jdlc bin]$ ./startup.sh

2. El cliente ingresa con el siguiente comando:

[julosad@jdlc bin]$ ./client.sh eXist version 0.9, Copyright (C) 2003 Wolfgang Meier eXist comes with ABSOLUTELY NO WARRANTY.

Page 28: WEB SEMANTICA Y BASES DE DATOS XML

28

This is free software, and you are welcome to redistribute it under certain conditions; for details read the license file. type help or ? for help. exist:/db>

3. Para listar las colecciones se utiliza ls

exist:/db>ls drwur-ur-u admin dba food drwur-ur-u admin dba xinclude drwurwu--- admin dba system drwur-ur-u admin dba shakespeare drwur-ur-u admin dba library

4. Ingresar a una colección: cd

exist:/db>cd food exist:/db/food>

5. Agregar un archivo y directorio a la base de datos: put

exist:/db/food/simple>put /home/julosad/food/simple.xsl storing document simple.xsl (1 of 1) ...done. parsing 924 bytes took 73ms. parsed 924 bytes in 74ms.

6. mkcol colección Crea una nueva sub colección dentro de otra. 7. rm documento Remueve un documento de una colección. 8. rmcol colección Remueve una colección. 9. find consulta Realiza una consulta.

5.1.2 Seguridad Desde la versión 0.9, la base de datos soporta autenticación de usuarios y control de acceso. El control de acceso se hace utilizando las convenciones de Unix.

Page 29: WEB SEMANTICA Y BASES DE DATOS XML

29

Carda archivo XML que es cargado en la base de datos, sigue las mismas convenciones de permisos que en Unix, lectura, escritura y actualización. Se pueden configurar con el comando chmod.

Desde la versión 0.9.1 un sistema simple de backups para los clientes, es el comando bin/backup.sh. El cliente puede hacer un backup de cualquier colección remota o local que este disponible en el XML:DB API. Para hacer el backup de una colección, se hace:

bin/backup.sh -d backup -u admin -p somepass -b /db

Se crea una instancia de la base de datos de modo local. Una jerarquía de los directorio se crea en un directorio llamado backup. Los directorios corresponden a las colecciones encontradas en la base de datos.

Para restaurar los datos, se usa la opción –r y se pasa el archivo __contents__.xml como argumento. La herramienta restaura todos los archivos y colecciones descritas en el archivo XML, por ejemplo

bin/backup.sh -r backup/db/__contents__.xml -ouri=xmldb:exist://

5.2. Languaje de base de datos a Utilizar Cuando nacieron las bases de datos XML, el lenguaje más utilizado era XPath, pero hoy en día la mayoría de bases de datos soporta XQuery el cual se podría decir que es el sucesor de XPath, y al mismo tiempo heredando muchas de sus cualidad, por esa razón vamos hacer una introducción a ambos lenguajes.

5.2.1 Principios de XPath La clave para acceder a una porción de un documento XML es su path de localización. Un path de localización describe como un objeto puede ser encontrado. Por analogía, se puede pensar que el path de localización nos dice como localizar cierto párrafo en un documento, por ejemplo, “El segundo párrafo en el tercer capitulo”.

Page 30: WEB SEMANTICA Y BASES DE DATOS XML

30

XPath convierte un documento XML en una estructura de árbol y usa algunos términos genealógicos para describir los niveles del árbol. En el árbol hay siete tipos de nodos, los cuales identifica cada uno de los tipos que pueden parecer en un documento XML; elementos, atributos, texto, instrucciones de procesamiento, comentarios, namespace y raíz. Son estos nodos los que son las partes diseccionadas en el documento. El nodo raíz es la raíz del documento (todo documento XML tiene exactamente un nodo raíz el cual se puede considerar que contiene todo el documento). XPath no solo se concentra en localizadores. También permite ciertas funciones y expresiones que son realizadas en los nodos seleccionados por la localización del path, por ejemplo una prueba de texto, seleccionando partes del contenido de los nodos y contando el número de nodos seleccionados por el path. Debajo hay un ejemplo de una estructura de árbol que tiene y tipos de nodos.

Fig 4 XPath. (http://www.originalab.se/advent/html/en/prd_3B2_xpath-in-depth.html). E jemplo de un árbol representado por XPath de forma Genealógica.

Page 31: WEB SEMANTICA Y BASES DE DATOS XML

31

Cada nodo tiene una identidad. La identidad de un nodo es establecida cuando el constructor del nodo es aplicado para crear el nuevo nodo: cada aplicación del constructor del nodo, crea un nuevo nodo que es identificado con si mismo, y es distinto a cualquier otro nodo. Este concepto no se puede confundir con el concepto de ID único.

Un documento ordenado por nodos tiene que satisfacer las siguientes reglas:

• El nodo del documento es el primer nodo. • El orden relativo de hermanos es determinado por su orden en la

representación del XML. Un nodo N1 ocurre antes que un nodo N2 en el orden del documento, si solo si el comienzo de N1 ocurre antes del comienzo de N2 en el documento XML.

• El elemento nodo ocurre antes que sus hijos, los hijos ocurren

antes que sus hermanos siguientes.

• Los nodos del namespace siguen inmediatamente al nodo del elemento con el cual son asociados. El orden relativo de los nodos del namespace es estable pero con implementación dependiente.

• Los atributos de los nodos siguen al nodo del namespace con los

elementos a los cuales son asociados. En otras palabras, dados dos documentos diferentes A y B, si un nodo en el documento A esta antes que un nodo en el documento B, entonces todos los nodos del documento A están antes que todos los nodos del documento B. Todo documento XML que quiera ser utilizado, necesita tener su propio esquema, o ser un documento XML bien formado según la W3C.

5.2.1.2 Ejemplos de XPath Estos Ejemplos están basados en la base de datos XML nativa eXist. En el momento en que salieron las primeras bases de datos XML nativas, XPath no era considerado como estándar pero siguieron el mismo

Page 32: WEB SEMANTICA Y BASES DE DATOS XML

32

esquema, por consiguiente no todas las búsquedas se hacen de la misma forma en los diferentes manejadores.

1. exist:/db>find //SPEECH Se esta realizando la búsqueda de todos los tags <SPEECH>

<SPEECH >

<SPEAKER > BERNARDO </ SPEAKER > <LINE > Who's there? </ LINE >

</ SPEECH >

2. exist:/db>find //SPEECH/LINE En esta búsqueda ya tan solo nos retorna lo del tag <LINE>, especificándole que se encuentra dentro de <SPEECH>

<SPEECH> <SPEAKER > BERNARDO </ SPEAKER > <LINE > Who's there? </ LINE >

<SPEECH>

3. exist:/db>find //STAGEDIR Cuando se realiza una búsqueda de un tag sin ningún tipo de especificación, retorna el tag sin importar en donde se encuentre.

<SPEECH >

<SPEAKER > HAMLET </ SPEAKER > <LINE >

<STAGEDIR > Advancing </ STAGEDIR > What is he whose grief </ LINE > <LINE > Bears such an emphasis? whose phrase of sorrow </ LINE > <LINE > Conjures the wandering stars, and makes them stand </ LINE > <LINE > Like wonder-wounded hearers? This is I, </ LINE > <LINE > Hamlet the Dane. </ LINE > <STAGEDIR > Leaps into the grave </ STAGEDIR >

</ SPEECH >

Page 33: WEB SEMANTICA Y BASES DE DATOS XML

33

4. exist:/db>find //LINE/STAGEDIR Nos damos cuenta que especificando la ruta completa nos retorna solo el de la ruta y no los demás.

<SPEECH > <SPEAKER > HAMLET </ SPEAKER > <LINE >

<STAGEDIR > Advancing </ STAGEDIR > What is he whose grief </ LINE > <LINE > Bears such an emphasis? whose phrase of sorrow </ LINE > <LINE > Conjures the wandering stars, and makes them stand </ LINE > <LINE > Like wonder-wounded hearers? This is I, </ LINE > <LINE > Hamlet the Dane. </ LINE > <STAGEDIR > Leaps into the grave </ STAGEDIR >

</ SPEECH >

5. exist:/db>find //SCENE/SPEECH/* El * indica que retorne todo lo que se encuentra dentro del tag.

<SCENE > <TITLE > SCENE II. A hall in the castle. </ TITLE > <STAGEDIR > Enter HAMLET and HORATIO </ STAGEDIR > <SPEECH >

<SPEAKER > HAMLET </ SPEAKER > <LINE > So much for this, sir: now shall you see the other; </ LINE > <LINE > You do remember all the circumstance? </ LINE > <STAGEDIR > Enter OSRIC </ STAGEDIR >

</ SPEECH > <SPEECH >

</SCENE>

6. exist:/db>find //SCENE/*/STAGEDIR En este caso el * nos indica que busque dentro del tag SCENE pero dentro de cada uno de los tag que se encuentra este.

<SCENE > <TITLE > SCENE II. A hall in the castle. </ TITLE > <STAGEDIR > Enter HAMLET and HORATIO </ STAGEDIR > <SPEECH >

Page 34: WEB SEMANTICA Y BASES DE DATOS XML

34

<SPEAKER > HAMLET </ SPEAKER > <LINE > So much for this, sir: now shall you see the other; </ LINE > <LINE > You do remember all the circumstance? </ LINE > <STAGEDIR > Enter OSRIC </ STAGEDIR >

</ SPEECH > <SPEECH >

</SCENE>

7. exist:/db>find //* Nos retorna todo lo que se encuentra en la base de datos.

<SPEECH>

<SPEAKER > BERNARDO </ SPEAKER > <LINE > Who's there? </ LINE >

<SPEECH>

8. exist:/db>find //SPEECH/LINE[1] Indica un la búsqueda una línea especifica.

<SPEECH > <SPEAKER > HAMLET </ SPEAKER > <LINE > No, believe me, 'tis very cold; the wind is </ LINE > <LINE > northerly. </ LINE >

</ SPEECH > 9. exist:/db> find //SPEECH/LINE[last()] Indica la ultima linea de la busqueda.

<SPEECH >

<SPEAKER > HAMLET </ SPEAKER > <LINE > No, believe me, 'tis very cold; the wind is </ LINE > <LINE > northerly. </ LINE >

</ SPEECH >

10. exist:/db> find //*[@type] La @ nos indica búsqueda dentro de los tipos

<food>

Page 35: WEB SEMANTICA Y BASES DE DATOS XML

35

<name>French Toast</name> <price type="Dolar">$4.50</price> <description>Thick slices made from our homemade sourdough bread.</description> <calories>600</calories> </food>

11. exist:/db> find //SPEECH[COUNT(LINE) = 2] Se pueden hacer operaciones dentro de la búsqueda, como contar líneas, como en el caso del ejemplo.

<SPEECH > <SPEAKER > HAMLET </ SPEAKER > <LINE > No, believe me, 'tis very cold; the wind is </ LINE > <LINE > northerly. </ LINE >

</ SPEECH >

12. exist:/db> find //*[name() = `LINE`]

<SPEECH > <SPEAKER > GUILDENSTERN </ SPEAKER > <LINE > In what, my dear lord? </ LINE >

</ SPEECH > <SPEECH >

<SPEAKER > HAMLET </ SPEAKER > <LINE > I am but mad north-north-west: when the wind is </ LINE > <LINE > southerly I know a hawk from a handsaw. </ LINE >

</ SPEECH > Se puede utilizar las siguientes funciones:

• starts-with(name(),'B') Selecciona todos los elementos que empiezan con B

• contains(name(),'C') Selecciona todos los elementos que tienen C.

• string-length(name()) Nos da la longitud de un elemento y se pueden hacer comparaciones de =, <, >.

5.2.1.2 Operadores

Page 36: WEB SEMANTICA Y BASES DE DATOS XML

36

elemento &= 'string'

Nos da la primera aparición de izquierda a derecha del string en un elemento.

Find document(*)//SPEECH[LINE &= "cursed spite"] <SPEECH exist:id="58818"

exist:source="/db/shakespeare/plays/hamlet.xml" xmlns:exist="http://exist.sourceforge.net/NS/exist">

<SPEAKER>HAMLET</SPEAKER> <LINE>Rest, rest, perturbed spirit!</LINE> <STAGEDIR>They swear</STAGEDIR> <LINE>So, gentlemen,</LINE> <LINE>With all my love I do commend me to you:</LINE> <LINE>And what so poor a man as Hamlet is</LINE> <LINE>May do, to express his love and friending to you,</LINE> <LINE>God willing, shall not lack. Let us go in together;</LINE> <LINE>And still your fingers on your lips, I pray.</LINE> <LINE>The time is out of joint: O

<exist:match>cursed</exist:match> <exist:match>spite</exist:match>,</LINE>

<LINE>That ever I was born to set it right!</LINE> <LINE>Nay, come, let's go together.</LINE> </SPEECH>

Elemento |= 'string'

Como la primera pero cualquiera de las dos.

Find document(*)//SPEECH[LINE |= "cursed spite"] <SPEECH exist:id="73469" exist:source="/db/shakespeare/plays/hamlet.xml" xmlns:exist="http://exist.sourceforge.net/NS/exist"> <SPEAKER>LAERTES</SPEAKER> <LINE>O, treble woe</LINE>

Page 37: WEB SEMANTICA Y BASES DE DATOS XML

37

<LINE>Fall ten times treble on that <exist:match>cursed</exist:match> head,</LINE> <LINE>Whose wicked deed thy most ingenious sense</LINE> <LINE>Deprived thee of! Hold off the earth awhile,</LINE> <LINE>Till I have caught her once more in mine arms:</LINE> <STAGEDIR>Leaps into the grave</STAGEDIR> <LINE>Now pile your dust upon the quick and dead,</LINE> <LINE>Till of this flat a mountain you have made,</LINE> <LINE>To o'ertop old Pelion, or the skyish head</LINE> <LINE>Of blue Olympus.</LINE> </SPEECH>

And – Or Se utilizan para reunir condiciones sobre una búsqueda. document(*)//SPEECH[LINE &= "cursed" and LINE &="spite"] <SPEECH exist:id="58818" exist:source="/db/shakespeare/plays/hamlet.xml" xmlns:exist="http://exist.sourceforge.net/NS/exist"> <SPEAKER>HAMLET</SPEAKER> <LINE>Rest, rest, perturbed spirit!</LINE> <STAGEDIR>They swear</STAGEDIR> <LINE>So, gentlemen,</LINE> <LINE>With all my love I do commend me to you:</LINE> <LINE>And what so poor a man as Hamlet is</LINE> <LINE>May do, to express his love and friending to you,</LINE> <LINE>God willing, shall not lack. Let us go in together;</LINE> <LINE>And still your fingers on your lips, I pray.</LINE> <LINE>The time is out of joint: O

<exist:match>cursed</exist:match> <exist:match>spite</exist:match>,</LINE>

<LINE>That ever I was born to set it right!</LINE> <LINE>Nay, come, let's go together.</LINE> </SPEECH>

5.2.2. Principios de XQuery

Page 38: WEB SEMANTICA Y BASES DE DATOS XML

38

XQuery esta diseñado para cubrir los requerimientos identificados por la W3C XML Query Working Group. Esta diseñado para ser un lenguaje cuyas consultas sean concisas y fáciles de entender. XQuery se deriva de una lenguaje llamada Quilt, del cual también deriban otros lenguajes, incluyendo XPath, XQL, XML-QL. La parte principal de XQuery es la expresión. El lenguaje provee de diferentes tipos de expresiones las cuales pueden ser construidas por palabras, símbolos y operadores. In general, los operadores de una expresión son otras expresiones. XQuery es un lenguaje funcional que soporta diferentes tipos de expresiones para ser combinadas en una general.

XQuery tiene un conjunto de funciones que provee acceso a los datos. Estas funciones son particularmente importantes ya que estas son las que proveen el camino para que las expresiones puedan ser referenciadas a un documento a una colección de documentos.

Tambien contamos con diferentes funciones que permiten realizar búsquedas más complejas, en especial la base de datos eXist permita la creación de funciones nuevas utilizando lenguajes diferentes lenguajes, no solamente XQuery.

XQuery hereda todo los operadores de Xpath, por lo que muchos lo llaman una extensión de Xpath.

5.2.2.1 Ejemplos de XQuery Consulta for $speech in //*[. &= '*love* *j* '] return <info doc="{fn:document-uri($speech)}" > {$speech} </info> Se realiza la búsqueda de las palabras en cualquier documento que se encuentra en la base de datos y le da organización al documento. Resultados

Page 39: WEB SEMANTICA Y BASES DE DATOS XML

39

<info doc ="/db/shakespeare/plays/r_and_j.xml" > <LINE > Thou mayst prove false; at lovers' perjuries </ LINE > </ info > <info doc ="/db/shakespeare/plays/r_and_j.xml" > <LINE > Wert thou as young as I, Juliet thy love, </ LINE > </ info > <info doc ="/db/shakespeare/plays/r_and_j.xml" > <LINE > Thy dear love sworn but hollow perjury, </ LINE > </ info > <info doc ="/db/shakespeare/plays/r_and_j.xml" > <LINE > When but love's shadows are so rich in joy! </ LINE > </ info > <info doc ="/db/shakespeare/plays/r_and_j.xml" > <LINE > That heaven finds means to kill your joys with love. </ LINE > </ info > Ejemplo de Función con integración de JAVA. xquery version "1.0"; declare namespace rand="java:java.util.Random"; let $r := rand:new() return <random>{rand:nextInt($r, 100)}</random> Resultado <random > 49 </ random >

Page 40: WEB SEMANTICA Y BASES DE DATOS XML

40

5.3 Arquitectura Utilizada El sistema se compone de un XML Web Services el cual esta programado bajo SOAP, este servidor se encarga de recibir las peticiones de consultas remotas realizadas por otras bases de datos, ofreciendo dos servicios remotos. public String conDBConsul(String consul) throws RemoteException; Este método presta el servicio de consulta remota, el String que recibe como parámetro es la consulta en XQuery o el llamado a una función almacenada en la base de datos. public String localColection(String consul) throws RemoteException; Retorna todas las colecciones que se encuentran en la base de datos. También se compone de un cliente el cual esta configurado para realizar cualquier petición, a cualquier servidor, mientras su parámetro de entrada sea un String al igual que retorne un String, se realizo así pensando en poder hacer peticiones a otros servicios que mantengan en el mismo estándar. La conexión a la base de datos se realiza por el intermedio de una sola clase, esta misma clase es la encargada de ejecutar las consultas centralizando de esta forma todo el manejo de la base de datos. eXist-db facilita las librerías necesarias para realizar la conexión a la base de datos de forma muy similar de lo que se hace con una base de datos relacional:

String driver = "org.exist.xmldb.DatabaseImpl"; // initialize database driver Class cl = Class.forName(driver); Database database = (Database) cl.newInstance(); DatabaseManager.registerDatabase(database);

Page 41: WEB SEMANTICA Y BASES DE DATOS XML

41

La arquitectura dispone de una clase encargada de manejar la conexión con la interfaz, en este sistema se manejas con JSP y por ultimo se maneja un objeto el cual almacena las consultas encargadas de realizar las búsquedas y manejar los resultados.

Figura 5. Arquitectura Utilizada

5.6 Criterios de Búsqueda Los buscadores semánticas buscan dos objetivos, el primero es lograr realizar búsquedas tradicionales basadas en la Web Semánticas. El segundo es utilizar una denotación sencilla en los términos de búsqueda. En la actualidad los sitios que promueven la Web Semántica proveen de diferentes tipos de datos, lo cual dificulta las búsquedas inclusive sobre un solo sitios, debido a esto es muy importante que cada tipo de dato este directamente relacionado con una ontología.

Page 42: WEB SEMANTICA Y BASES DE DATOS XML

42

Las ontologías han permitido que en el momento de realizar una búsqueda esta se pueda orientar a una ontología especifica, al mismo tiempo sé esta convirtiendo en una limitante de búsqueda. Realizar búsquedas genéricas sobre todas las ontologías puede llegar a ser muy costoso tanto en tiempo como en contenido, no hay una forma concreta que nos determine que mostrar dependiendo de la ontología lo que reduce a una simple aproximación semántica. El sistema de búsqueda propuesta para el sistema permite realizar las consultas basándose en colecciones o general, se utilizan dos tipos de consultas dependiendo si es general o para una colección especifica. Query Utilizado Uno for $speech in //*[. &= Busqueda] return <info doc="{fn:document-uri($speech)}" > {$speech} </info> Este Query se utiliza para búsquedas generales en todas las colecciones. Antes de entrar a la función la búsqueda sé parsea en java para agregarle * a cada uno de los lados de las palabras y de esta forma también tratar de buscar palabras parecidas. Las búsquedas en el motos de base de datos no determinan mayúsculas y minúsculas lo cual facilita la búsqueda. Query Utilizado Dos for $speech in //COLECCION[. &= Busqueda] return <info doc="{fn:document-uri($speech)}" > {$speech} </info> Se utiliza cuando se determina una colección especifica. Las consultas que se realizan de modo remoto por medio de SOAP, las funciones permiten pasar el query que el usuario decida. De esta misma forma se plantea agregar nueva información a la base de datos ya que

Page 43: WEB SEMANTICA Y BASES DE DATOS XML

43

no se tiene que atar a ninguna función especifica; toda la información que se pasa por medio de SOAP es interpretada por el servidor como una petición directa a la base de datos. 5.8. Instalación de la aplicación

1. Hay que realizar la instalacón de las siguientes herramientas: - Apache Tomcat. (http://www.apache.com) - Java (http://java.sun.com) - eXist-db (http://www.exist-db.com)

2. La aplicación se encuentra en el CD adjunto dentro de la carpeta

Tesis, se puede colocar en cualquier path de la maquina, ya sea Linux o Windows.

3. Configurar Tomcat modificando el conf.xml para que corrar sobre un servidor distinto al 8080 ya que sobre este puerto corre la base de datos.

4. Dentro de la carpeta conf/localhost enrutar tomcat a la ubicación de la aplicación-

5.7. Dificultades Encontradas La mayoría de problemas en un sistema basado en tecnología relativamente buena, es la falta de documentación de calidad, aun no existe un estándar claro de cómo realizar consultas que arrojen resultados semánticamente correctos sin importar el número de colecciones que se contenga. En el momento de tomar la decisión de utilizar una base de datos XML Nativa, se corre el riesgo de no poder migrar a otra, ese es el caso de eXist-db, a pesar de que maneja el estándar XQuery gran parte de su funcionalidad aun se baja en funciones propias de la base de datos, las cuales carecen de una buena documentación y todo el aprendizaje se tiene que hacer siguiendo los pocos ejemplos que prestan. Existen muchas propuestas de cómo modelar un sistema basado en bases de datos XML, pero en realidad ninguna con una propuesta contundente que sobresalga de las demás.

Page 44: WEB SEMANTICA Y BASES DE DATOS XML

44

6. Conclusiones

Se podría llegar a decir que la Web Semántica es el ideal de la Internet del futuro; no se podría hablar de un futuro cercano ya que aun faltan muchas cosas por definir, pero cada herramienta que surge con el fin de promover la utilización de la Web Semántica es un paso más a ese futuro. Las bases datos XML es una de las herramientas que permiten la popularización de la Web Semántica, a pesar de que ellas mismas aun están en un claro proceso de maduración. La arquitectura propuesta permite un buen manejo de las consultas, pero en el momento de realizar el despliegue de resultados no se logro lo esperado, en la última versión de eXist-db que salio mientras se realizaba esta tesis permite una mejor integración entre la base de datos y Apache Cocoon, lo cual permite un mejor despligue de información al usuario dejando de un lado la utilización de JSPs, además ofrece otras alternativas para el manejo de Web Services como integración con Tomcat. La mayor cualidad encontrada en la base de datos XML es la facilidad que da para el manejo de texto, las búsquedas son rápidas y precisas, otra razón mas para pensar que en un futuro la integración de las bases de datos XML Nativas y la Web Semánticas es una buena alternativas para los buscadores semánticas y cualquier otra herramienta que se quiera necesite utilizar mejores aproximaciones semánticas. Se puede pensar en darle mas funcionalidades a la aplicación para extenderla a un futuro hacia la web semántica, lo que se realizó fue solo una pequeña introducción que permite la consulta de la información almacenada, pero sin tener en cuenta la semántica de las búsquedas, se podría pensar en optimizar el método de búsqueda para hacerlo más eficiente y más acorde a la semántica de cada documento; el desarrollo tan solo fue un ciclo que acerca un paso hacia la web semántica.

Page 45: WEB SEMANTICA Y BASES DE DATOS XML

45

BIBLIOGRAFIA

[1] Role of Java in the Semantic Web, Sione Palu. http://www.developer.com/java/article.php/10922_1475381_1 [2] The Semantic Web: An Introduction, Sean B. Palmer - http://infomesh.net/2001/swintro/

[3] Introduction to Native XML Databases. http://www.xml.com/pub/a/2001/10/31/nativexmldb.html [4] XML and DATABASE http://www.rpbourret.com/xml/XMLAndDatabases.htm#isxmladatabase

[5] XML Database Products http://www.rpbourret.com/xml/XMLDatabaseProds.htm

[6] Exist, Open Source XML Database http://exist-db.org/quickstart.html

[7] Practical XML with Linux, Part 3: XML database tools for Linux http://www.linuxworld.com/linuxworld/lw-2001-02/lw-02-xml3databases.html

[8] Apache XML http://xml.apache.org/

[9] XQuery 1.0: An XML Query Language http://www.w3.org/TR/xquery/#id-introduction [10] World Wide Web consortium http://www.w3c.org [11] Uniform Resource Identifiers (URI): Generic Syntax http://www.isi.edu/in-notes/rfc2396.txt [12] The Semantic Web: An Introduction http://infomesh.net/2001/swintro/#whatIsSw [13] The Semantic Web Made Easy http://www.w3.org/RDF/Metalog/docs/sw-easy [14] R.Guha and R. McCool. Tap: Towards a web of data. http://tap.stanford.edu/