viernes, 30 de octubre de 2015

3.4.1 Retornando grafos RDF en SPARQL

Hasta ahora hemos visto que nuestras consultas retornan un conjunto de resultados en formato de una tabla. El primer resultado en la primera fila, el segundo resultado en la segunda fila, etcétera. pero, si consultamos grafos, ¿no sería más natural retornar grafos a nuestras consultas, en lugar de tablas con resultados? Pues bien, esto es lo que vamos a ver ahora, cómo retornar a nuestras consultas un grafo. 

Vamos a empezar con estos datos. Tenemos aquí que Amparo Noguera, cuando nació se llamaba María Amparo Noguera Portales. Además tiene como almaMater la Pontificia Universidad Católica de Chile. Amparo Noguera nació en Santiago, cuyo nombre oficial es Santiago, y además el recurso Santiago es de tipo lugar. 

Los datos que mostraba anteriormente en un grafo los podemos ver aquí en un archivo de texto. 

Vamos a empezar recordando que la consulta SELECT lo que hace es retornar tablas con resultados. El asterisco que vemos aquí junto al SELECT, lo que está haciendo es retornarnos los resultados para todas las variables que están presentes dentro de la consulta. 

Si ejecutamos la consulta anterior solo con los datos que hemos visto en la segunda imagen, obtenemos los resultados para todas las variables de la consulta: dbpedia:Santiago es recurso para la variable x, nombre de ciudad Santiago, etcétera. 

Pero nos gustaría obtener todos estos resultados como si fuesen un grafo, ya que va a ser un resultado mucho más conciso y mucho más entendible. 

Este es el grafo que nos gustaría obtener: Amparo Noguera, su nombre completo es María Amparo Noguera Portales, almaMater de la Universidad Católica, y el lugar de nacimiento fue Santiago. Nótese que aquí no queremos obtener el nombre Santiago, simplemente queremos el recurso, y todo ello dentro de un grafo. 

El grafo en RDF sería el que vemos ahora en esta transparencia, que es más sencillo, más conciso, y sólo obtenemos los datos que a nosotros nos interesan. ¿Cómo obtenemos estos resultados? SPARQL nos ofrece el operador CONSTRUCT para obtener los resultados en forma de grafo, en lugar de una tabla. 

Una consulta CONSCTRUCT recibe RDF como entrada en el patrón de la consulta y genera RDF como salida en una plantilla que nosotros vamos a especificar. Esta plantilla es un conjunto de triples con variables y dentro del patrón es exactamente lo mismo que las consultas SELECT. 

Aquí vemos un ejemplo de consulta CONSTRUCT que nos va a generar el grafo que hemos visto antes. Dentro de CONSTRUCT, dentro de las primeras llaves y en amarillo, lo que estamos haciendo es formar la plantilla del grafo que vamos a tener como salida, y después en el WHERE, en blanco tenemos el patrón SPARQL que teníamos inicialmente como si fuese un SELECT. Lo nuevo es el patrón, la plantilla nueva que estamos generando con CONSTRUCT. 

Y así obtenemos el resultado a la consulta anterior. Amparo Noguera nació en Santiago, tiene almaMater la Pontificia Universidad Católica de Chile y su nombre completo es María Amparo Noguera Portales; y dbpedia:Santiago no tiene el nombre, básicamente porque nosotros no hemos querido incluirlo en la plantilla CONSTRUCT, en la parte amarilla. 

Ahora, otra opción que nos da CONSTRUCT es cambiar las URIs del grafo de resultado. Si por ejemplo, nosotros consideramos que las URIs de dbpedia, el vocabulario de dbpedia no nos acomoda, podemos invocar otro vocabulario.  lo Lo que hacemos para ello, es utilizar dentro de la plantilla CONSTRUCT el vocabulario que nosotros queramos. Por ejemplo, ahora dentro de CONSTRUCT vamos a tener la variable persona del vocabulario ex, lugar de nacimiento x, porque preferimos lugar de nacimiento a birth place. Entonces en el grafo de resultados vamos a tener que Amparo Noguera...


No hay comentarios:

Publicar un comentario