Lenguajes de recuperación para la Web


Recuperación y organización de la información

XML-Query

XQuery, también conocido como XML Query, es un lenguaje que falicita la recuperación y organización de la información, y que se centra en encontrar y extraer elementos y atributos de documentos XML. La mejor forma de entender este lenguaje es diciendo que XQuery es para XML lo que SQL es para las bases de datos. Por ejemplo, una pregunta que XQuery podría resolver sería la siguiente: Seleccionar todos los libros con un precio menor a 20 euros de la colección de libros almacenada en un documento XML llamado catalogo.xml.

XQuery es supervisado por W3C (World Wide Web Consortium), por lo que es compatible con XML, Namespaces, XSLT, XPath y XML Schema.

XQuery es soportado por los principales motores de bases de datos (IBM, Oracle, Microsoft, etc.).

XQuery hace uso de XPath, un lenguaje utilizado para seleccionar partes de XML. De hecho, XQuery 1.0 y XPath 2.0 comparten el mismo modelo de datos y soportan las mismas funciones y operadores. Por ello, si ya conoces XPath, no tendrás problemas en comprender XQuery.

Para entender mejor el lenguaje de recuperación XQuery, a continuación, se muestra un ejemplo, basándonos en el siguiente documento:

<?xml version="1.0" encoding="ISO-8859-1"?>
<libros>
</libro>
<libro tema="Humanidades">
<titulo ISBN="8434453096">La vida eterna</titulo>
<autor>Fernando Savater</autor>
<fecha>2007</fecha>
<precio>17.50</precio>
</libro>
<libro tema="Literatura">
<titulo ISBN="8476697635">Los irlandeses</titulo>
<autor>Rodolfo Walsh</autor>
<fecha>2007</fecha>
<precio>16</precio>
</libro>
<libro tema="Gastronomía">
<titulo ISBN="8496434559">Galicia en el paladar</titulo>
<autor>Cristóbal Ramírez</autor>
<autor>Miguel Pazos</autor>
<autor>Mantel Xose Santos Díaz</autor>
<fecha>2007</fecha>
<precio>24.90</precio>
</libro>
</libro>
<libro tema="Artes">
<titulo ISBN="8496445550">Los tesoros de Rembrandt</titulo>
<autor>Michiel Roscam Abbing</autor>
<fecha>2006</fecha>
<precio>35</precio>
</libro>
</libros>

XQuery utiliza funciones para extraer información de un documento XML. La siguiente función permite abrir el fichero.

doc("catalogo.xml")

XQuery utiliza expresiones para navegar a través de los elementos de un documento XML. La siguiente expresión sirve para seleccionar el título de todos los libros.

doc("catalogo.xml")/libros/libro/titulo

El resultado sería:

<titulo ISBN="8434453096">La vida eterna</titulo>
<titulo ISBN="8476697635">Los irlandeses</titulo>
<titulo ISBN="8496434559">Galicia en el paladar</titulo>
<titulo ISBN="8496445550">Los tesoros de Rembrandt</titulo>

XQuery usa predicados para limitar la información extraída del documento XML. El siguiente predicado sirve para seleccionar aquellos libros cuyo precio sea menor a 20 euros.

doc("catalogo.xml")/libros/libro[precio<20]

El resultado sería:

</libro>
<libro tema="Humanidades">
<titulo ISBN="8434453096">La vida eterna</titulo>
<autor>Fernando Savater</autor>
<fecha>2007</fecha>
<precio>17.50</precio>
</libro>
<libro tema="Literatura">
<titulo ISBN="8476697635">Los irlandeses</titulo>
<autor>Rodolfo Walsh</autor>
<fecha>2007</fecha>
<precio>16</precio>
</libro>

Las expresiones FLWOR (For, Let, Where, Order by, Return) son en XQuery equivalentes a las distintas claúsulas usadas en SQL. Usando FLWOR podemos obtener el título de cada libro cuyo precio sea mayor que 20 euros y ordenada alfabéticamente:

for $x in doc("catalogo.xml")/libros/libro
where $x/precio>20
order by $x/titulo
return $x/titulo

El resultado sería:

<titulo ISBN="8496434559">Galicia en el paladar</titulo>
<titulo ISBN="8496445550">Los tesoros de Rembrandt</titulo>

Además, usando FLWOR podemos después representar el resultado en HTML. Por ejemplo, mediante una lista mostrar sólo el título de cada libro y ordenada alfabéticamente:

<ul>
{
for $x in doc("catalogo.xml")/libros/libro/titulo
order by $x
return <li>{data($x)}</li>
}
</ul>

El resultado sería:

<ul>
<li>Galicia en el paladar</li>
<li>La vida eterna</li>
<li>Los irlandeses</li>
<li>Los tesoros de Rembrandt</li>
</ul>

Para terminar, vamos a hablar acerca del uso de expresiones condicionales en este tipo de lenguaje de recuperación y que también serán útiles para realizar ciertas consultas. El ejemplo siguiente permite diferenciar entre los libros que considero entretenidos y los que no lo son.

for $x in doc("catalogo.xml")/libros/libro
return if ($x/@tema="Literatura")
then <entretenido>{data($x/titulo)}</entretenido>
else <aburrido>{data($x/titulo)}</aburrido>

Esto daría el resultado:

<aburrido>La vida eterna</aburrido>
<entretenido>Los irlandeses</entretenido>
<aburrido>Galicia en el paladar</aburrido>
<aburrido>Los tesoros de Rembrandt</aburrido>

Lenguajes de recuperacion Descárgate la información completa en formato *.doc

Lenguajes de recuperacion Descárgate la información completa en formato *.pdf

No olvides enlazarme en tu página. Gracias !!!

Nombre del link: Lenguajes de recuperación: XML-Query, XQL y Tolog