viernes, 30 de octubre de 2015

3.3.3 El operador SPARQL UNION

Aquí continuaremos con nuestro estudio del lenguaje de consulta SPARQL y en particular veremos el operador UNION, que nos permite realizar la unión de un conjunto de respuestas. Utilizaremos los siguientes datos sobre actores que hemos tomado desde dbpedia. 

En este grafo RDF tenemos el recurso dbpedia Thalía que representa a la actriz Thalía nacida en la ciudad de México y con ocupación actor. También tenemos a Ricardo Darín que es un actor, esto lo indica el triple Ricardo Darín, dbpedia-owl occupation dbpedia actor y que nació en la ciudad de Buenos Aires. Además tenemos información sobre estas dos ciudades; sabemos que la ciudad de México es de tipo lugar y que Buenos Aires es también de tipo lugar. 

En esta imagen podemos ver el grafo de RDF como una secuencia de triples. Recuerde que primero se especifican cuáles son los prefijos que se  van a utilizar. dbpprop, dbpedia-owl y dbpedia, y a continuación tenemos la secuencia de triples que forman parte de nuestro grafo RDF. Por ejemplo, el primer triple nos dice dbpedia:Thalía dbpedia-owl:occupation dbpedia:actor, lo que se traduce en que Thalía tiene como ocupación actor. 

El operador UNION en SPARQL nos permite hacer la unión de un conjunto de respuestas. Por ejemplo queremos todas las personas que hayan nacido en México, unido con todas las personas que hayan nacido en Chile. Para poder expresar esto usamos este operador. A continuación veremos un ejemplo del operador UNION.

 En la siguiente consulta buscamos los actores que hayan nacido en Buenos Aires y vamos a unir esto con los actores que hayan nacido en ciudad de México. En esta consulta SPARQL puede ver en amarillo el operador UNION que en este caso se está realizado sobre dos patrones. 

En el primer patrón podemos ver que buscamos actores que hayan nacido en Buenos Aires. Recuerde que un patrón es un conjunto de triples. En estos triples usamos el signo de pregunta para indicar que algo es una variable, en este caso persona 1. En el primer triple entonces, estamos diciendo que persona 1 tiene que tener como lugar de nacimiento Buenos Aires; en el segundo triple estamos diciendo que persona 1 tiene que tener como ocupación actor. Así, estamos buscando actores que hayan nacido en Buenos Aires. 

Cuando respondemos a esta parte de la consulta, si usamos los datos anteriores, podemos reemplazar la variable persona 1 por Ricardo Darín y vamos a obtener dos triples que están en nuestro grafo RDF. 

En esta consulta el segundo patrón que está dentro de la unión, tiene dos triples. La variable es persona 2 porque comienza con el signo de pregunta y en el primer triple estamos indicando que para persona 2 esperamos que el lugar de nacimiento sea la ciudad de México. En el segundo triple especificamos que para persona 2 la ocupación sea actor. En estos dos triples estamos indicando que persona 2 debe ser un actor que haya nacido en la ciudad de México. Si tratamos de responder esta consulta en nuestro grafo RDF podemos reemplazar persona 2 por Thalía, vamos a obtener una respuesta. 

 Finalmente, para calcular el resultado final de la consulta hacemos la unión de los resultados anteriores. Tenemos una tabla que nos muestra los resultados, en la que hemos incluido algunos resultados adicionales que sacamos desde dbpedia. Y nos muestran por ejemplo que, para persona 1, que representa los actores nacidos en Buenos Aires tenemos a Ricardo Darín y a Nicole Neumann y para persona 2 que representa los actores que nacieron en México tenemos a Thalía, a Alejandra Bogue y a Gloria Izaguirre. 

Como resumen, el operador UNION permite hacer la unión de conjuntos de respuestas y por ejemplo nos permite encontrar a todas las personas que hayan nacido en Chile o en México.

No hay comentarios:

Publicar un comentario