Skip to content

Sacando provecho a la Web Semántica: SPARQL

2012 noviembre 5
by classora

¿Para qué vale la Web Semántica? ¿qué sentido tiene esforzarse tanto en estructurar información de Internet siguiendo unos estándares?

Quizás el principal motivo sea el poder cruzar o integrar, de manera completamente automática, la información de una compañía con datos externos de su mercado, su competencia, sus proveedores… o con cualquier otra información disponible en La Red. Independientemente de donde venga, de su idioma original o de quién la haya publicado. De ahí el esfuerzo en implantar unos estándares universales para representar el conocimiento.

Pero una vez integrada toda esa información, para sacarle partido es necesario poder crear informes o consultas que nos permitan obtener conocimiento aplicable a nuestro negocio. Por ello, en este post vamos a intentar explicar el principal lenguaje de consulta para la Web Semántica: SPARQL.

Al igual que RDF, SPARQL es un estándar ideado por Tim Berners-Lee y monitorizado por el Data Access Working Group (DAWG) del World Wide Web Consortium (W3C).

Si no lo has hecho ya, te recomendamos que antes de leer este post leas nuestra entrada anterior acerca de cómo se describe el conocimiento en la Web Semántica utilizando RDF.

Pirámide de niveles en Web Semántica

SPARQL: SPARQL Protocol and RDF Query Language

SPARQL es el lenguaje que nos permitirá extraer información y conocimiento de la Web Semántica. Utiliza una sintaxis derivada de SQL, y está especialmente diseñado para recuperar datos partiendo de ontologías y documentos RDF.

Al igual que SQL, mantiene una estructura declarativa con la típica sintaxis basada en cláusulas SELECT, FROM, WHERE y ORDER BY. Por supuesto, y siguiendo la equivalencia con SQL, también es necesario distinguir entre lenguaje de consulta y motor para almacenar y recuperar los datos. Por este motivo, existen múltiples implementaciones de SPARQL, generalmente ligadas a entornos concretos de desarrollo y plataformas tecnológicas.

En principio SPARQL únicamente incorpora funciones para recuperar información. Sin embargo, algunas propuestas también incluyen operaciones para el mantenimiento (creación, modificación y borrado) de datos.

Veamos cláusula a cláusula como se podría trasladar una consulta SQL a SPARQL:

  • SELECT: se mantiene su funcionalidad, indicando cada elemento a seleccionar (sujeto, predicado, objeto) precedido de un símbolo ?. Al igual que en SQL, es posible especificar un carácter * para representar todos los elementos.
  • FROM: la tabla a consultar (en este caso, la ontología o grafo a consultar) no se especifica mediante la cláusula FROM, sino que se indica de manera externa a la consulta. El motor SPARQL utilizado tendrá una ontología por defecto.
  • WHERE: la cláusula WHERE sigue siendo la parte más importante de la consulta. Para filtrar tripletes, es posible establecer una parte del triplete (sujeto, predicado, objeto) como variable, asignándole un nombre precedido del símbolo ?. El resto del triplete puede mantenerse constante, manteniendo las URIs para especificar los valores por los que filtrar.
  • GROUP BY: el funcionamiento es el mismo que en SQL. Permite agrupar resultados, y realizar operaciones de grupo tipo SUM o COUNT, al igual que filtros HAVING.
  • ORDER BY: al igual que en SQL, la cláusula ORDER BY sigue permitiendo ordenar los resultados en SPARQL. No hay variación significativa.


De esta forma, la query SPARQL más simple sería la siguiente:

SELECT ?sujeto ?predicado ?objeto
WHERE {  
   ?sujeto ?predicado ?objeto .
}

Vendría a significar un SELECT * FROM [TABLA] ya que todos los elementos del triplete especificados en la cláusula WHERE son variables. Pongamos ahora una consulta ficticia basada en el primer ejemplo RDF de nuestro post anterior:

PREFIX base: <http://www.knowledge.base.org/> .
PREFIX ontology: <http://www.ontology.org/> .

SELECT ?sujeto
WHERE {  
   ?sujeto ontology:hasMother base:susana . 
}

La cual pregunta al motor de SPARQL: ¿cuáles son los hijos de Susana?

Evidentemente, las consultas SPARQL pueden llegar a complicarse de una manera sorprendente, combinando múltiples cláusulas y condiciones. Pongamos a continuación un ejemplo de consulta real basada en el ejemplo previo de RDF:

PREFIX clsa:     <http://www.classora.com/units/> .
PREFIX ontology: <http://www.classora.com/ontology/> .

SELECT ?objeto
WHERE {  
   clsa:q10035/fernando-alonso ontology:x81190/birthPlace ?objeto . 
}

La cual pregunta al motor de SPARQL: ¿dónde nació Fernando Alonso?. La respuesta de Classora se puede consultar en este enlace.

Para finalizar, hagamos una consulta real a DBPedia:

SELECT *
WHERE {  
  ?company a <http://dbpedia.org/ontology/Organisation> .
  ?company <http://dbpedia.org/ontology/foundationPlace> <http://dbpedia.org/resource/California> .
  ?product <http://dbpedia.org/ontology/developer> ?company  .
  ?product  a <http://dbpedia.org/ontology/Software> .
}

La cual pregunta al motor de SPARQL: dime todas las empresas de California que sean fabricantes de software. La respuesta de DBPedia se puede consultar en este enlace.

Si lo deseas, es posible “cacharrear” con SPARQL en este portal online del Principado de Asturias.

Triplify - Te recomendamos que le eches un vistazo

Más información sobre SPARQL

En fin, no es nuestra intención escribir un curso detallado de SPARQL en este post, pero si te interesa saber más sobre el tema no dudes en contactar con nosotros para que te enviemos documentación adicional. Esperamos al menos haber logrado despejar las principales dudas sobre este lenguaje tan importante para el futuro de Internet.

5 Responses leave one →
  1. Javier permalink
    noviembre 21, 2012

    Decis en este post que si a alguien le interesa el tema os lo comuniquemos, puedes mandarme más información sobre este tema que me interesa bastante

  2. classora permalink*
    diciembre 20, 2012

    Por supuesto Javier. Puedes enviarnos un correo a info [arroba] classora.com indicándonos en qué aspecto te gustaría profundizar. Gracias por tu interés. Un cordial saludo.

  3. david permalink
    enero 12, 2013

    Hola quería consultarte si es posible la extracción del conocimiento mediante la web semántica, es decir, así como el data mining tiene por objetivos extraer conocimiento a través de encontrar patrones en grandes volúmenes de datos, al aplicar web semántica para filtrar búsquedas también podríamos decir que estamos aplicando extracción de conocimiento??

    Gracias anticipadas por tu respuesta

    • classora permalink*
      enero 30, 2013

      Hola David, efectivamente es posible la extracción de conocimiento mediante la web semántica. De hecho, consideramos que ése es precisamente uno de los principales objetivos y utilidades que ofrece. Esa extracción de conocimiento puede llevarse a cabo de manera manual (siendo los propios humanos los que hacen las preguntas) o incluso de manera automática (retroalimentando procesos automáticos con los resultados de queries SPARQL). En cualquiera de los dos casos se puede considerar que, dado el nivel de estructuración y comprensión de la respuesta, estamos hablando de “conocimiento” (frente a “información” o “datos”). Un cordial saludo.

Trackbacks and Pingbacks

  1. OWL: el lenguaje de ontologías web del W3C | El Blog de Classora

Leave a Reply

Note: You can use basic XHTML in your comments. Your email address will never be published.

Subscribe to this comment feed via RSS