La web semántica (I): Introducción

0
258
imagen con logo w3c

1 – Introducción

La web está repleta de información de toda clase. Esta información puede estar en forma de texto, imágenes, vídeo… todos ellos, formatos que las personas podemos interpretar con facilidad. Sin embargo, las máquinas no lo tienen fácil. Aunque la IA es cada vez más asombrosa, todavía es complejo que puedan interpretar el significado correcto de la información.

De eso trata la web semántica, de significado. Los datos por sí solos no son útiles si no sabemos lo que significan. Para herramientas como los buscadores, esto es un factor crítico. Cuanto mejor entiendan la información que indexan, mejores resultados podrán ofrecer a los usuarios.

Pensemos, por ejemplo, en un vuelo. ¿Qué información importante podríamos necesitar? El origen, el destino, la compañía que lo opera, el identificador del vuelo, el avión que lo realiza, la hora de salida y llegada, los aeropuertos, si hace escala y dónde… Hay mucha información alrededor de este simple concepto. Pedirle a Google que nos busque uno concreto no parece sencillo. Necesitamos recurrir a una aplicación especializada…

¿O no? ¿Y si Google entendiera lo que es un vuelo? ¿Y si también supiera lo que es una compañía aérea, un aeropuerto, y además supiera relacionar todos estos conceptos? Entonces podría ofrecernos directamente resultados que nos interesen, en vez de referirnos a aplicaciones de terceros.

¡Pero esto ya pasa! Busquemos un vuelo, un producto, una película… es como si el buscador entendiera lo que le queremos decir y nos mostrase resultados contextualizados. Esta es una aplicación de la web semántica que da una idea de lo poderosa que puede llegar a ser. Si queréis ahondar más en este tipo de uso, podéis leer este artículo al respecto.

En esta serie de tutoriales vamos a estudiar las bases de la web semántica. Qué es, cómo se utiliza y qué tecnologías implica. Poco a poco, veremos que, sin saberlo, está más presente en nuestras vidas de lo que pensamos.

2 – La web de los datos

Lo que comúnmente conocemos como web está compuesta por documentos HTML. Algunos son estáticos y otros dinámicos, pero no dejan de ser documentos. Su estructura y representación es muy conveniente para la percepción y el entendimiento humano, pero no para el de las máquinas. Mientras que nosotros podemos abstraer el significado de las cosas por la jerarquía de los contenidos, el léxico o la sintaxis de los textos, para las máquinas esto es mucho más complicado.

Las máquinas son mucho más hábiles que nosotros a la hora de procesar datos estructurados. Pensemos en documentos XML, JSON o incluso objetos. En todos ellos, siempre les damos dos datos fundamentales: el nombre del dato y el tipo de dato que es. Con esto, son capaces de leer y manipular un conjunto de bits a una velocidad que nuestro cerebro ni siquiera sueña con conseguir.

Sin embargo, todavía le falta algo: el significado. Las máquinas no saben interpretar los datos. Se limitan a operar con ellos con las instrucciones que les damos. Esto tiene algunas limitaciones. La más evidente, que no son capaces de extraer semántica de los datos.

2.1 – El problema de la semántica

Vamos a poner un ejemplo sencillo. Pensemos en un entorno educativo. Aquí encontramos dos tipos de personas: profesores y alumnos. Todas las personas tienen una serie de propiedades: nombre, edad, sexo, altura, peso… Además, los profesores pueden tener propiedades específicas, como las asignaturas que imparten, y los alumnos las que estudian.

Hasta aquí, todo bien. Podríamos decir que este modelo se podría trasladar a una jerarquía de objetos tradicional. Pero vamos a añadir un poco más de complejidad. Consideremos ahora que las personas también pueden ser familiares. Sí, digo bien, ser, no tener. Yo soy familiar de alguien. Son los familiares quienes tienen relaciones con otros familiares. Además, puedo inferir algunas relaciones a partir de otras. Las reglas son sencillas:

  • A es hijo de B si B es padre de A.
  • A es descendiente de B si B es padre de A, o C es descendiente de B y A es descendiente de C.
  • A es hermano de B si A y B son hijos de C.
  • A es tío de B si A es hermano de C y C es padre de B.
  • A está casado con B si B está casado con A.

Podríamos pensar que esto podemos hacerlo también con un modelo tradicional. Sería un poco trabajoso, pero podríamos sacar las relaciones entre familiares. Sin embargo, ¿qué ocurre si mezclamos ambos modelos? Digamos que dado un grupo de personas que pueden tener todos estos roles, quisiera realizar las siguientes consultas:

  • Profesores que son padres de sus alumnos.
  • Hermanos que cursan la misma asignatura.
  • Hermanos mayores que son profesores de algún hermano pequeño.

Las posibilidades son infinitas. Cuantos más conceptos introducimos en el sistema, más impracticable es abordarlo de la forma tradicional. ¿Por qué? Porque las máquinas no entienden el significado de los datos. Se limitan a hacer lo que les decimos con ellos, y, cuanto más crece nuestro dominio de trabajo, más esfuerzo es necesario para poder interrelacionar todos esos conceptos de forma artesanal.

Además, esa aproximación no sería extensible. ¿Y si tengo una empresa y quiero catalogar a una persona como empleado? Con un enfoque tradicional, tendría que crear esos datos de cero, en lugar de poder aprovechar los recursos ya existentes en otro lugar, que además aportan más información sobre dicha persona.

2.2 – Linked data

La solución, por tanto, es clara: las máquinas deben entender el significado de los datos. Además, estos datos deben poder enlazarse desde fuentes diversas. Puede que no me interese la familia de George R.R. Martin, pero sí que me interesen los libros que ha escrito. Esos datos pueden pertenecer a fuentes diferentes y no tengo por qué trabajar con todo el conjunto.

Aquí es donde la web semántica aporta su solución para crear el linked data. El significado de los datos se introduce mediante vocabularios y ontologías. A diferencia de los modelos de objetos tradicionales, las propiedades, jerarquías y relaciones no son un todo. Cada cual puede definir las suyas para un recurso concreto gracias a que trabaja en un namespace propio. Así, los recursos se definen con un Internationalized Resource Identifier (IRI) de forma unívoca, muy similar a una URI.

La forma de hacerlo es bastante simple: tripletas de sujeto-predicado-objeto. Estas se expresan mediante el Resource Description Framework (RDF). Puede serializarse de varias formas: XML, JSON-LD, Turtle… En cualquiera de ellas, el significado es el mismo, lo que quiere decir que podemos adaptarlo al formato que mejor nos venga para consumirlo en una aplicación. Un ejemplo de tripletas con el modelo del apartado anterior podría ser:

Como vemos, se trata de un formato sencillo de leer también para personas. El punto y coma (;) sirve para concatenar varios predicados sobre un mismo sujeto, mientras que las comas (,) concatenan objetos sobre un mismo predicado. Cada declaración termina con un punto (.).

Los sujetos deben ser siempre un recurso identificado por su IRI, mientras que los objetos pueden ser otros recursos o literales. Las propiedades, que actúan como predicados, son definidas también en los vocabularios y las ontologías.

Además, cada recurso o propiedad que utilizamos está precedido de su namespace para que pueda ser interpretado de forma unívoca. Normalmente, se declaran alias al inicio del documento RDF para no tener que introducir el IRI completo más adelante. Las siguientes tripletas serían equivalentes:

En este caso, vemos cómo los vocabularios de familia, persona y edu son completamente independientes, pero podemos combinarlos sin problema. Además, Jose es un recurso del namespace x, mientras que Juan es un recurso del namespace y. Como vemos, la web semántica nos permite relacionar datos de cualquier parte de la forma en que más nos convenga.

Un documento RDF genera un grafo de recursos. Estos recursos son los nodos. Las propiedades son las que conectan estos nodos entre sí. Es esto lo que le dota a la web semántica de una potencia enorme, ya que encontrar la información que buscamos sólo requiere de profundizar en el grafo en la dirección correcta.

3 – Especificaciones de la web semántica

Además de RDF, contamos con algunas especificaciones más que nos permiten completar el puzle del linked data. Existen también otras especificaciones complementarias, pero las más importantes son:

  • RDF Schema (RDFS): Es un metavocabulario que permite definir vocabularios. Con él podemos definir clases, relaciones, jerarquías y propiedades.
  • Web Ontology Language (OWL): Se trata de un vocabulario que permite definir ontologías. A diferencia de los vocabularios generados con RDFS, las ontologías permiten definir ciertas reglas lógicas de inferencia. Así, relaciones como las que hemos descrito de los familiares pueden expresarse en OWL.
  • SPARQL: Este es un lenguaje de consulta similar a SQL. Con él, podemos utilizar la potencia de la web semántica para lanzar consultas sobre ficheros o SPARQL end points ubicados en cualquier parte del mundo. Gracias a esto, podemos generar conocimiento nuevo a partir del ya existente.

4 – Una golosina para la espera

Como podéis ver, la web semántica abarca una serie de tecnologías y especificaciones que es imposible de abordar en un solo tutorial. Espero que esta introducción os haya servido para descubrir qué es, el porqué de su existencia y necesidad, las tecnologías que están involucradas… Y, sobre todo, os hayan entrado ganas de profundizar en el tema. En el próximo capítulo de la serie abordaremos RDF y todas sus características.

Hasta entonces, os dejo con una golosina: la DBPedia. Seguro que todos estáis familiarizados con la Wikipedia. Pues bien, aquí podéis consultar la información en formato de web semántica. ¡Echadle un vistazo! ¡Es bastante útil!

5 – Referencias

[1] Resource Description Language

[2] RDF Schema

[3] Web Ontology Language

[4] SPARQL

Dejar respuesta

Please enter your comment!
Please enter your name here