sábado, 31 de octubre de 2015

3.4.2 Funciones en SPARQL

Vamos a ver lo que son las funciones en SPARQL. A modo de resumen, las funciones son operadores que se suelen colocar dentro de otro operador FILTER y permiten realizar distintas verificaciones sobre una variable u otro tipo de operaciones. Ahora lo vamos a ver en más detalle.

Vamos a comenzar escribiendo los datos. Por ejemplo, la ciudad de México tiene como título de los gobernantes entre otros, el Senado de la República de México. Además la ciudad de México es de tipo lugar y está en el país, México. También la ciudad tiene como nombre México D.F.

Estos datos, los vemos aquí en formato de triples rdf. Este es el archivo que normalmente uno puede cargar en el triple store de su gusto.

Las funciones son operadores que normalmente se utilizan dentro de un filter. Esas funciones lo que hacen es revisar distintas operaciones, como por ejemplo, verificar si una variable contiene un URI o no, si una variable tiene un valor o no, si es un literal, etcétera. Son operaciones relativamente sencillas que nos dan más flexilibilidad del lenguaje. Además, también se consideran funciones, los operadores  (!) negación, (&&) conjunción y (||) disyunción de funciones.

Algunos ejemplos de funciones son IsIRI, que verifica si el resultado es una URI o no; IsLiteral, que verifica si la variable dentro de la función es un literal o no; Bound, que verifica si la variable tiene un valor o no; y hay muchas más que se pueden encontrar en la URL de SPARQL sección funciones:
isIRI
isBlank
isLiteral
isNumeric
str
lang
datatype
IRI
BNODE
STRDT
STRLANG
UUID

Vamos a poner ahora, un ejemplo de la función IsIRI, que verifica si los valores dentro de la variable, tienen una URI o no. Si tienen una URI, entonces retorna a cierto. Si no, retorna a falso. Aquí, esta consulta busca todos los lugares en los cuales los gobernantes tengan algún título. Y vamos a filtrar, esos títulos de gobernantes, o sólo los que tengan una URI, es decir, solo aquellos recursos de datos que tengan información que enlace a otros recursos de datos.

Ejecutamos esa consulta y obtenemos estos resultados. La ciudad de México tiene como título del líder, el Senado de la República; es decir, el Senado de la República está en México, y si hacemos clic en este resultado, el Senado de la República, vamos a obtener la información acerca de este recurso de datos.

Lo que vamos a hacer ahora es, negar la función IsIRI, es decir, no queremos en los resultados aquellos valores que tengan una URI dentro de la variable título. Para ello lo que hacemos es negarlo (con el operador (!).

Ejecutamos, y vamos a obtener un recurso de datos, en este caso Chinatown, que no tiene información acerca del título de los gobernantes. En este caso, lo tendremos entre comillas porque es un literal, Councilmember.

Ahora vamos a pasar a la función Bound. La función Bound nos retorna a cierto, si la variable de la función contiene un valor y si no contiene un valor, va a retornar a falso. Y en este ejemplo lo que vamos a hacer es, negar; si la variable dentro de la función Bound no contiene un valor retornará a cierto.

En este ejemplo lo que estamos preguntando es, por todos los lugares y finalmente quiero obtener todos los títulos de los gobernantes. Y fuera de lo opcional, tenemos el filter con la función Bound, negándola, es decir, solo nos va a retornar aquellos recursos de datos que no tengan un valor en la variable título.

Lo ejecutamos y lo que tenemos de vuelta es el recurso Metro La Paz, que es la zona metropolitana de La Paz, en Perú; sin nada en la variable, en el campo resultado a la variable que estaba dentro de la negación del Bound.

Las funciones en SPARQL son operadores que normalmente se utilizan dentro del filter, aunque en casos especiales y muy particulares se pueden utilizar fuera. Tres de estas funciones son IsIRI, IsLiteral o Bound.

No hay comentarios:

Publicar un comentario