Comenzaremos a ver algunas de las nociones básicas sobre el lenguaje de consulta SPARQL, en particular veremos las nociones de variables y patrones en SPARQL. Como ya hemos mencionado anteriormente en la web existe una multitud de base de datos de RDF, por ejemplo dbpedia, que es la representación en RDF de wikipedia, la dbpedia en español y IMDB, que es una base de películas, etcétera. Muchas de estas bases RDF permiten acceder a sus datos utilizando el lenguaje de consulta SPARQL, un lenguaje que nos permite escribir de manera precisa la información que queremos extraer y que es procesable por un computador; recordamos que un computador puede de manera automática construir las respuestas de una consulta SPARQL.
Esta base de datos RDF nos posibilita utilizar este lenguaje SPARQL, y la forma de hacerlo es a través de un SPARQL endpoint,
un servicio web donde uno puede colocar este tipo de consultas.
En esta imagen puede ver la dirección de dos de estos servicios web, la primera de ellas es el SPARQL endpoint de dbpedia que es dbpedia.org/sparql, la segunda es el SPARQL endpoint de dbpedia en español.
En el caso de dbpedia es posible acceder a los datos utilizando en primer lugar el navegador, por ejemplo uno simplemente puede escribir dbpedia.org/page/Santiago para indicar que uno quiere extraer la información sobre la ciudad de Santiago. Como puede ver a la derecha de esta imagen, este es el tipo de información que uno puede encontrar si utiliza esta dirección; por ejemplo podemos ver que la ciudad de Santiago se encuentra en Chile, que la ciudad de Santiago se encuentra en la provincia de Santiago y que fue fundada el 12 de febrero de 1541.
Como mencionábamos en la imagen anterior, tenemos una alternativa para acceder a la información sobre la ciudad de Santiago; utilizar un SPARQL endpoint y el lenguaje de consulta SPARQL. Es posible hacer esto a través de la dirección dbpedia.org/sparql en el caso de dbpedia.
En este ejemplo utilizaremos los siguientes datos; tenemos un grafo RDF que tiene información sobre la ciudad de Santiago, dbpedia:Santiago es el URI que representa a esta ciudad y lo que estamos especificando en este caso es que dbpedia:Santiago es de tipo dbpedia-owl:place, es decir, Santiago es de tipo lugar. Que el nombre oficial de dbpedia:Santiago es Santiago, el nombre oficial de la ciudad de Santiago es Santiago; que Santiago se encuentra en Chile y que además Chile es de tipo país.
En esta imagen podemos ver este grafo RDF escrito en un archivo como una secuencia de triples, recuerde ante una secuencia de triples en primer lugar especificamos los prefijos que vamos a utilizar en los URIs, que estos prefijos son utilizados para simplificar la notación que tenemos en estos URIs.
Una vez que hemos escrito estos prefijos, en este caso tenemos dbpprop, dbpedia-owl y dbpedia, construimos los triples, en este caso tenemos cuatro triples. El primero de ellos es dbpedia:Santiago rdf:type y dbpedia-owl:place, donde estamos diciendo que Santiago es de tipo lugar.
En esta imagen podemos ver un grafo en la dbpedia con datos sobre lugares; esto simplemente es parte del grafo anterior donde se decía que dbpedia:Santiago es de tipo lugar, que se encuentra en Chile y que su nombre oficial es Santiago. También se puede ver una consulta SPARQL, y sus distintas partes; en primer lugar tenemos el encabezado de la consulta que puede ver en amarillo, se puede distinguir a través de la palabra SELECT. En segundo lugar tenemos el patrón de la consulta, también destacado en amarillo y que se encuentra dentro de la cláusula where. Es importante destacar que el patrón sigue la estructura sujeto, predicado, objeto. Por ejemplo en este caso tenemos un patrón que podemos ver en amarillo, en el cual tenemos dos triples; en el primer triple ?X dbpprop:officialName ?name tenemos como sujeto a X, como predicado a dbprop:officialName y como objeto a name. En el segundo triple tenemos como sujeto a X, como predicado a rdf:type y como objeto a dbpedia-owl:Place. También es importante destacar que en este patrón tenemos variables y tenemos URIs; y cada variable en una consulta SPARQL comienza con el signo de pregunta. Entonces, tenemos como variables a ?X y ?name.
También en una consulta SPARQL podemos tener URIs y en estos URIs utilizamos la notación habitual; por ejemplo en esta consulta tenemos el URI dbpprop:officialName, donde estamos usando el prefijo dbpprop:.
¿Cómo se calcula la respuesta a una consulta SPARQL? En el patrón remplazamos cada variable por un URI o por un literal; es importante que los triples resultantes de este remplazo deben estar en el grafo RDF. Por ejemplo, en este caso podemos remplazar la variable X por dbpedia:Santiago y la variable name por Santiago. Si hacemos este remplazo, en el primer triple vamos a obtener el triple dbpedia:Santiago, dbpprop:officialName Santiago, que es un type que está en el grafo RDF marcado en rojo. Lo importante en este caso es que tenemos que hacer el mismo remplazo en el segundo triple, y en este caso vamos a obtener el triple dbpedia:Santiago rdf:type, dbpedia-owl:place que también está en nuestro grafo RDF. Por lo tanto en este caso tenemos un remplazo exitoso.
¿Para qué sirve el encabezado de una consulta SPARQL? El encabezado nos indica en este caso que tenemos SELECT ?name, por lo tanto nos está indicando que vamos a retornar los valores que hemos dado a la variable name, en este caso Santiago; esta consulta nos permite encontrar todos los nombres oficiales de los lugares que tenemos en dbpedia.
Como hemos visto al comienzo, para escribir una consulta SPARQL podemos utilizar un SPARQL endpoint. Lo que podemos ver en la figura es la interfaz del SPARQL endpoint de dbpedia; en este formulario uno puede colocar en Query Text la consulta que quiere realizar. Una vez que hemos escrito la consulta, se puede ejecutar y obtener los resultados.
Como resumen diremos que existen multitud de bases de datos RDF, que muchas de ellas pueden ser consultadas utilizando SPARQL, que las consultas SPARQL se componen de un encabezado y de un patrón, y que cuando realizamos la consulta, al remplazar las variables que tenemos en el patrón, éstas deben coincidir con la estructura del grafo RDF almacenado para obtener las respuestas. Aquí el contenido que queremos ocultar
En esta imagen puede ver la dirección de dos de estos servicios web, la primera de ellas es el SPARQL endpoint de dbpedia que es dbpedia.org/sparql, la segunda es el SPARQL endpoint de dbpedia en español.
En el caso de dbpedia es posible acceder a los datos utilizando en primer lugar el navegador, por ejemplo uno simplemente puede escribir dbpedia.org/page/Santiago para indicar que uno quiere extraer la información sobre la ciudad de Santiago. Como puede ver a la derecha de esta imagen, este es el tipo de información que uno puede encontrar si utiliza esta dirección; por ejemplo podemos ver que la ciudad de Santiago se encuentra en Chile, que la ciudad de Santiago se encuentra en la provincia de Santiago y que fue fundada el 12 de febrero de 1541.
Como mencionábamos en la imagen anterior, tenemos una alternativa para acceder a la información sobre la ciudad de Santiago; utilizar un SPARQL endpoint y el lenguaje de consulta SPARQL. Es posible hacer esto a través de la dirección dbpedia.org/sparql en el caso de dbpedia.
En este ejemplo utilizaremos los siguientes datos; tenemos un grafo RDF que tiene información sobre la ciudad de Santiago, dbpedia:Santiago es el URI que representa a esta ciudad y lo que estamos especificando en este caso es que dbpedia:Santiago es de tipo dbpedia-owl:place, es decir, Santiago es de tipo lugar. Que el nombre oficial de dbpedia:Santiago es Santiago, el nombre oficial de la ciudad de Santiago es Santiago; que Santiago se encuentra en Chile y que además Chile es de tipo país.
En esta imagen podemos ver este grafo RDF escrito en un archivo como una secuencia de triples, recuerde ante una secuencia de triples en primer lugar especificamos los prefijos que vamos a utilizar en los URIs, que estos prefijos son utilizados para simplificar la notación que tenemos en estos URIs.
Una vez que hemos escrito estos prefijos, en este caso tenemos dbpprop, dbpedia-owl y dbpedia, construimos los triples, en este caso tenemos cuatro triples. El primero de ellos es dbpedia:Santiago rdf:type y dbpedia-owl:place, donde estamos diciendo que Santiago es de tipo lugar.
En esta imagen podemos ver un grafo en la dbpedia con datos sobre lugares; esto simplemente es parte del grafo anterior donde se decía que dbpedia:Santiago es de tipo lugar, que se encuentra en Chile y que su nombre oficial es Santiago. También se puede ver una consulta SPARQL, y sus distintas partes; en primer lugar tenemos el encabezado de la consulta que puede ver en amarillo, se puede distinguir a través de la palabra SELECT. En segundo lugar tenemos el patrón de la consulta, también destacado en amarillo y que se encuentra dentro de la cláusula where. Es importante destacar que el patrón sigue la estructura sujeto, predicado, objeto. Por ejemplo en este caso tenemos un patrón que podemos ver en amarillo, en el cual tenemos dos triples; en el primer triple ?X dbpprop:officialName ?name tenemos como sujeto a X, como predicado a dbprop:officialName y como objeto a name. En el segundo triple tenemos como sujeto a X, como predicado a rdf:type y como objeto a dbpedia-owl:Place. También es importante destacar que en este patrón tenemos variables y tenemos URIs; y cada variable en una consulta SPARQL comienza con el signo de pregunta. Entonces, tenemos como variables a ?X y ?name.
También en una consulta SPARQL podemos tener URIs y en estos URIs utilizamos la notación habitual; por ejemplo en esta consulta tenemos el URI dbpprop:officialName, donde estamos usando el prefijo dbpprop:.
¿Cómo se calcula la respuesta a una consulta SPARQL? En el patrón remplazamos cada variable por un URI o por un literal; es importante que los triples resultantes de este remplazo deben estar en el grafo RDF. Por ejemplo, en este caso podemos remplazar la variable X por dbpedia:Santiago y la variable name por Santiago. Si hacemos este remplazo, en el primer triple vamos a obtener el triple dbpedia:Santiago, dbpprop:officialName Santiago, que es un type que está en el grafo RDF marcado en rojo. Lo importante en este caso es que tenemos que hacer el mismo remplazo en el segundo triple, y en este caso vamos a obtener el triple dbpedia:Santiago rdf:type, dbpedia-owl:place que también está en nuestro grafo RDF. Por lo tanto en este caso tenemos un remplazo exitoso.
¿Para qué sirve el encabezado de una consulta SPARQL? El encabezado nos indica en este caso que tenemos SELECT ?name, por lo tanto nos está indicando que vamos a retornar los valores que hemos dado a la variable name, en este caso Santiago; esta consulta nos permite encontrar todos los nombres oficiales de los lugares que tenemos en dbpedia.
Como hemos visto al comienzo, para escribir una consulta SPARQL podemos utilizar un SPARQL endpoint. Lo que podemos ver en la figura es la interfaz del SPARQL endpoint de dbpedia; en este formulario uno puede colocar en Query Text la consulta que quiere realizar. Una vez que hemos escrito la consulta, se puede ejecutar y obtener los resultados.
Como resumen diremos que existen multitud de bases de datos RDF, que muchas de ellas pueden ser consultadas utilizando SPARQL, que las consultas SPARQL se componen de un encabezado y de un patrón, y que cuando realizamos la consulta, al remplazar las variables que tenemos en el patrón, éstas deben coincidir con la estructura del grafo RDF almacenado para obtener las respuestas. Aquí el contenido que queremos ocultar
No hay comentarios:
Publicar un comentario