• No se han encontrado resultados

Un lenguaje de Consulta a Nivel Semántico: RQL

PARTE 3: ENFOQUE SEMÁNTICO PARA EL SISTEMA DE

6 Caso de Estudio: Arquitectura del Sistema de Catalogación con Potencia

6.4 Un lenguaje de Consulta a Nivel Semántico: RQL

En esta sección describiremos brevemente el lenguaje de consulta RQL, que fue utilizado en el sistema de catalogación de métricas e indicadores dado su potencia en la explotación semántica del repositorio. RQL permite recuperar no sólo información de métricas e indicadores y sus relaciones, sino también los metadatos de la ontología y recursos relacionados que estén disponibles en el repositorio local o en otros repositorios de la web. Una descripción detallada del lenguaje, su sintaxis y semántica formal se puede consultar en la documentación en línea disponible en http://athena.ics.forth.gr:9090/RDF/RQL/.

El lenguaje RQL está definido por medio de un conjunto de consultas básicas, e iteradores que se usan para construir otras consultas a través de una composición funcional. Como fue mencionado en la sección anterior, RDF soporta expresiones de caminos generalizadas, permitiendo el uso de variables tanto para denotar nodos rotulados (es decir, clases), como arcos (es decir, propiedades). Esta combinación de esquemas y datos en las expresiones, es una característica clave para satisfacer las necesidades de muchas aplicaciones de la web semántica, como es el caso de nuestro sistema de catalogación.

6.4.1 Consultas Básicas

El núcleo del lenguaje de consultas RQL provee esencialmente una forma de acceder a las bases de descripciones RDF con un conocimiento mínimo del esquema empleado. Estas consultas pueden ser usadas para implementar interfaces de navegación semántica sobre bases de datos codificadas en RDF, en una forma muy simple.

Por ejemplo, en el caso de nuestro sistema de catalogación, para cada concepto (es decir, clase), se puede navegar a sus sub-conceptos (es decir, sub-clases) y eventualmente ver todos los recursos que están directamente catalogados dentro de ellos. Para recorrer las jerarquías de clases/propiedades definidas en un esquema RDF, RQL provee funciones tales como subClassOf (para subclases en forma transitiva) y

subClassOf^(para subclases directas ). Por ejemplo, la consulta subClassOf^(Metric) devuelve una bolsa (bag) con los nombres de clase DirectMetric e IndirectMetric. Existen funciones similares para la jerarquía de propiedades.

También se puede acceder a todas las instancias de una clase, con sólo escribir su nombre. Por ejemplo la consulta DirectMetric, devuelve una bolsa que contiene todos los URI´s de las métricas directas del catálogo, ya que estos recursos son la extensión de la clase DirectMetric.

RQL soporta un conjunto de operadores comunes que se aplican sobre conjuntos de elementos de un mismo tipo (como son: union, intersect, minus). Por ejemplo, la consulta “Metric union Indicator” devuelve una bolsa con los URI´s de todas las métricas e indicadores.

Para realizar filtros sobre los datos, RQL provee los operadores lógicos estándares como =, < , > , y like (para comparación de cadenas de caracteres). Todos estos operadores se pueden aplicar sobre valores literales (por ejemplo sobre cadenas, enteros, reales, fechas) o recursos (URIs). Además RQL provee un conjunto de funciones de agregación (como son: min, max, avg, sum y count).

Para concluir esta subsección, queremos señalar que RQL permite recuperar el contenido de cualquier documento con colecciones de datos RDF o información de esquemas RDF. Provee un iterador de la forma select-from-where, que se aplica sobre estas colecciones e introduce variables. Debido a que la totalidad de las descripciones o esquemas RDF, se pueden ver como colecciones de nodos y arcos, se pueden usar filtros con expresiones de caminos para recorrer grafos RDF, de una longitud arbitraria.

6.4.2 Consultas sobre Esquemas

En esta subsección describiremos a través de algunos ejemplos sencillos, las consultas RQL sobre esquemas RDF (sin tener en cuenta las instancias), mostrando

cómo se puede usar la notación de expresiones de camino, para recorrer las jerarquías de clases (o propiedades), con el objetivo de implementar navegación o filtrado de información semántica usando las condiciones apropiadas.

Por ejemplo, si se quiere obtener los nombres de todas las clases que son dominio y rango de una propiedad dada, (por ejemplo, la propiedad Quantifies), la consulta RQL podría ser la siguiente:

Q1: obtener los nombres de las clases que son dominio y rango de la propiedad Quantifies.

select $C1, $C2

from {$C1}Quantifies{$C2}

Esta consulta dará como resultado el siguiente conjunto de duplas:

$C1 $C2

Metric Attribute DirectMetric Attribute IndirectMetric Attribute

Tabla 6.1 Ejemplo de resultado de la consulta Q1.

Como se puede observar en la consulta, en la cláusula from se usó una expresión de camino compuesta por el nombre de propiedad Quantifies (es decir un rótulo de arco), y dos variables de clase, $C1 y $C2 (es decir variables sobre nodos o clases). Debido a que las propiedades RDF se aplican a cualquier sub-clase de su dominio y rango, la expresión {$C1}Quantifies{$C2} denota que las variables $C1 y $C2 iteran sobre subClassOf(domain(Quantifies)) y subClassOf(range(Quantifies))

respectivamente, incluyendo las raíces de la jerarquía.

La cláusula select define la proyección sobre las variables de interés (en el ejemplo anterior $C1, $C2). Esta proyección construirá una bolsa de t-uplas ordenadas, cuya aridad depende del número de variables usadas. Consideremos ahora otro ejemplo, supongamos que queremos obtener los nombres de todas las propiedades y sus rangos de la clase DirectMetric, la consulta RQL sería en este caso la siguiente:

Q2: obtener los nombres de las propiedades y sus rangos que tienen como dominio la clase DirectMetric.

select @P, range(@P) from {$C1}@P

Esta consulta dará como resultado el siguiente conjunto de duplas: @P Range(@P) Quantifies Attribute Includes Method Contains Scale metricName Literal metricValueInterpretation Literal metricObjective Literal metricReferences Literal metricValueType Literal metricAccuracy Literal

Tabla 6.2 Ejemplo de resultado de la consulta Q2.

En la cláusula from de la consulta Q2 se usa una expresión de camino compuesta por una variable de clase $C1 y una variable de propiedad @P. En general, las variables de clase se prefijan con el carácter $ y las variables de propiedad con el carácter @.

Para cada posible evaluación p de @P, la variable $C1 itera sobre subClassOf(domain(p)). La expresión en la cláusula where filtra los valores de @P quedándose sólo con aquellas propiedades para las cuales la clase DirectMetric es igual a su dominio, o es una subclase válida de su dominio.

Podemos observar en este último ejemplo que la expresión de camino, atraviesa los arcos (propiedades) rdfs:domain y rdfs:range en forma conjunta con los arcos

rdfs:subClassOf, en el grafo RDFS. Otro aspecto importante a destacar es que en el resultado de la consulta, los valores de range(@P) son de tipo unión entre el tipo class

y el tipo Literal. Esto se debe a que las propiedades de los datos (en el caso del catálogo de métricas e indicadores) pueden tener como rango clases (cuando ellas representan relaciones, como es el caso de Quantifies), o tipos literales (cuando representan atributos, como es el caso de metricName).

6.4.3 Consultas sobre Instancias

A continuación ilustraremos algunas consultas RQL sobre descripciones RDF (instancias de clases y propiedades), usando también expresiones de caminos generalizadas. Consideremos por ejemplo la siguiente consulta:

Q3: Encontrar todas las instancias de métricas directas y los atributos que cuantifica

Select X,Y

From DirectMetric{X}.Quantifies{Y}

En la cláusula from se usó una expresión de camino de datos con el nombre de clase DirectMetric y el nombre de propiedad Quantifies. Las variables de datos X e Y iteran respectivamente sobre la extensión de la clase DirectMetric (es decir, recorren los arcos rdf:type, conectando los grafos de datos y de esquemas), y los valores destinos de la propiedad Quantifies (es decir, recorriendo los arcos en los grafos de datos RDF). El símbolo “.” que se usa para concatenar las dos componentes del camino, implican una operación de join (unión de tablas), entre los valores fuentes de la propiedad

Quantifies y X.

También es posible en RQL usar varios caminos de expresión de longitud arbitraria, en una misma consulta, como se mostrará en el siguiente ejemplo:

Q4: Obtener las métricas directas y sus nombres, que cuantifiquen atributos de la entidad cuyo nombre es “Web_site” .

select X,N

from DirectMetric{X}.Quantifies.associeted_with{Y}.entityName{Z}, {X}.metricName{N}

where Z=“Web_site”

RQL permite también realizar consultas más complejas, inclusive con caminos de expresión que involucran variables esquemas y datos en forma combinada [Kar02].

En la siguiente sección, describiremos la arquitectura Sesame [Bro01a], un módulo genérico que da soporte al almacenamiento de datos y esquemas RDF y a su recuperación, mediante un lenguaje de consultas basado en RQL (el lenguaje SeRQL).