¿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.
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:
?
. Al igual que en SQL, es posible especificar un carácter *
para representar todos los elementos.?
. El resto del triplete puede mantenerse constante, manteniendo las URIs para especificar los valores por los que filtrar.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.
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.
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
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.
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
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.