Recuperación y organización de la información
Práctica de recuperación y acceso a la información de la Universidad Carlos III

SeRQL

Marzo 29, 2008 de Diego

Index:

Introducción

SeRQL ("Sesame RDF Query Language") es un nuevo lenguaje RDF/RDFS que ha sido desarrollado por Aduna como parte del proyecto Sesame. Combina lo mejor de otros lenguajes de consulta (RQL, RDQL, N-Triples, N3) y añade algunas características propias. Este texto trata de mostrar algunas de las caraterísticas de este lenguaje de consulta de forma que se puedan al menos entender las SeRQL queries.

Algunas de las características más importantentes de SeRQL son:

  • Transformación gráfica.
  • Soporte del esquema RDF.
  • Soporte de los tipos de esquema XML.
  • Sintasix para expresar las rutas.
  • Comparación opcional de las rutas.

URIs, literales y variables

Las URIs y los literales son bloques básicos de construcción de sentencias en RDF. Para un lenguaje de consulta como SeRQL, además habrá que tener en cuenta las variables. En esta sección se describen los elementos implicados en SeRQL.

Variables

Las variables se definen mediante sustantivos. Estos nombres deben de comenzar con una letra o el símbolo '_' y pueden ir seguidos de 0 o más letras, numeros, o los símbolos '_', '-' ó '.'. Ejemplos de variables válidas son:

Var1
_var2
unwise.var-name_isnt-it

SeRQL define algunas palabras reservadas que no pueden utilizarse como variables : select, construct, from, where, using, namespace, true, false, not, and, or, like, label, lang, datatype, null, isresource, isliteral, sort, in, union, intersect, minus, exists, forall, distinct, limit, offset.

Mientras que las palabras reservadas de SeRQL no son sensibles a las mayúsculas (OR es igual que or), las variables si son sensibles (var1 es diferente a Var1).

URIs

Hay dos formas de escribir las URIs in SeRQL: mediante una URI completa o una abreviada. Las URIs completas deben de comenzar y terminar con los símbolos "<" y ">". Por ejemplo:

<http://www.openrdf.org/index.html>
<http://www.w3.org/1999/02/22-rdf-syntax-ns#type>
<mailto:sesame@openrdf.org>
<file:///C:\rdffiles\test.rdf>

SeRQL permite también escribir URIs abreviadas (también conocidas como QNames).

sesame:index.html
rdf:type
foaf:Person

Literals

Los literales constan de tres partes: una etiqueta, el identificador del idioma y el identificador de tipo de dato. La notación de los literales en SeRQL ha sido diseñada siguiendo la de N-Triples. Ejemplos de literales son:

"foo"
"foo"@en
"<foo/>"^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral>

La notación de SeRQL para las URIs abreviadas pueden ser usadas también. Si por ejemplo el prefijo rdf coincide con el espacio de nombres http://www.w3.org/1999/02/22-rdf-syntax-ns#, puede simplificarse in escribirese como:

"<foo/>"^^rdf:XMLLiteral

 

Expresiones de Ruta

Una de las características más relevantes de SeRQL son las expresiones de ruta. Las expresiones de ruta son expresiones que coinciden con una ruta descrita por medio de un gráfico RDF.

Exprsiones de rutas básicas

Imagine que queremos consultar a un gráfico RDF por una persona que trabaja para una alguna compañía de telecomunicaciones. Consultar esta información se podría hacer analizando el gráfico RDF que se muestra a continuación (los nodos grises son las variables):

Figura 1. A basic path expression
A basic path expression

En la notación SeRQL se puede construir el gráfico por medio de la siguiente expresión:

{Person} ex:worksFor {Company} rdf:type {ex:ITCompany}

Los elementos rodeados por las llaves representan los nodos en el gráfico RDF, el resto representan los enlaces en el gráfico. La dirección de los vértics se expresa siembre de izquierda de derecha.

En las consultas SeRQL, se pueden expresar múltiples caminos por medio de la separación de las expresiones por medio de comas. Por ejemplo el gráfico anterior, podría ser expresado también de la siguiente forma.:

{Person} ex:worksFor {Company},
{Company} rdf:type {ex:ITCompany}

 

Consultas Select y construct

Una consulta SeRQL normalmente consta de 1 a 6 instrucciones. Para una consulta SELECT, las instrucciones serían: SELECT, FROM, WHERE, LIMIT, OFFSET and USING NAMESPACE. Viendo esto un podría pensar que tiene un gran parentesco con SQL, pero en realizada su uso es ligeramente diferente.

Consultas Select

Devuelve tablas de valores, o un conjunto de pares variable/valor. Las variables devueltas se definen en la sentencia Select. Sólamente puede espresarse variables o valores in esta sentencia, separándolas por medio de comas. El ejemplo siguiente devolvería todas las URIs de classes:

SELECT C
FROM {C} rdf:type {rdfs:Class}

Consultas Construct

Las consultas Construct devuelven gráfos RDF como conjuntos triples. Estos conjuntos devueltos pueden especificarse mediante la sentencia CONSTRUCT, por medio de las sentencias explicadas anteriormente para definir caminos. A continuación se muestra un ejemplode una consulta construct:

CONSTRUCT {Parent} ex:hasChild {Child}
FROM {Child} ex:hasParent {Parent}
USING NAMESPACE
    ex = <http://example.org/things#>

 

Ejemplos de consultas SeRQL

Consulta 1

Descipción: Encuentra todos los documentos que traten sobre "RDF" y sobre "Querying", y los autores de estos documentos:

SELECT
   Author, Paper
FROM
   {Paper} rdf:type {foo:Paper};
           ex:keyword {"RDF", "Querying"};
           dc:author {Author}
USING NAMESPACE
   dc = <http://purl.org/dc/elements/1.0/>,
   ex = <http://example.org/things#>

El modelo anterior se muestra en la figura siguiente, esta consulta busca en un gráfico RDF, en todos los subgrafos que coincidan con la plantilla:

Figura 2. Camino definido por la expresión de la consulta 1

Path expression for query 1

 Consulta 2

Descripción: Encauentra todos los objetos cuyo título en inglés contenga la palabra "night" y el museo en que esté expuesto. Los objetos deben haber sido creados por alguien cuyo nombre coincida con "Rembrandt". Los objetos y museos deberán mostrarse con sus títulos.

SELECT DISTINCT
   label(ArtefactTitle), MuseumName
FROM
   {Artefact} arts:created_by {} arts:first_name {"Rembrandt"},
   {Artefact} arts:exhibited {} dc:title {MuseumName},
   {Artefact} dc:title {ArtefactTitle}
WHERE
   isLiteral(ArtefactTitle) AND
   lang(ArtefactTitle) = "en" AND
   label(ArtefactTitle) LIKE "*night*"
USING NAMESPACE
   dc   = <http://purl.org/dc/elements/1.0/>,
   arts = <http://example.org/arts/>

De nuevo, a continuación se muestra ilustrada la plantilla del subgrafo de búsqueda:

Figura 3. Camio de búsqueda de la consulta 2

Path expression for query 2
Dese cuenta de que la ilustración sólo muestra el camino generado desde la instrucción FROM. La instrucción WHERE plantea restricciones adicionales en los valores devueltos, y esto no puede expresarse tan fácilmente en el gráfico.

 

Fuente del artículo

El documento ha sido extraído parcialmente de www.openrdf.org.

Referencias

 

 
¡CSS Válido! Recuperacion y organizacion de la informacion Recuperacion y organizacion de la informacion Recuperacion y organizacion de la informacion Recuperacion y organizacion de la informacion



Free Website Hosting
Free Web Hosting