De la necesidad de ontologías

De la necesidad de ontologías

Jueves 25 Ene 2007

Hace algunos meses escribí un par de artículos relacionados con la Web Semántica. En realidad, existen una multitud de aspectos relacionados que podría detallar, pero hoy me quiero enfocar en uno: La necesidad de ontologías.

Quizás lo más urgente sería definir qué es una ontología. Según Wikipedia:

El término ontología en informática hace referencia al intento de formular un exhaustivo y riguroso esquema conceptual dentro de un dominio dado, con la finalidad de facilitar la comunicación y la compartición de la información entre diferentes sistemas.

¿Qué significa esto?

En resumen, es un modelo de una parte de la realidad que nos interesa caracterizar formalmente. Es una forma de decirle al computador de que existen ciertos conceptos (clases) que estan relacionados (tienen propiedades) de alguna forma. Por ejemplo, una entidad que llamaremos "estudiante" es una subclase de otra clase llamada "ser humano". Asimismo, un "ser humano" tiene ciertas propiedades que pueden ser únicas, tales como la fecha de nacimiento, múltiples como los hijos que tenga, etc.

¿Y para que sirve esto?

En la medida que los computadores "entiendan" formalmente el mundo, serán capaces de comunicarse y realizar búsquedas complejas dado que "saben" qué están buscando (alguna clase o propiedad) más que simplemente hacer un matching de palabras. Es así como será posible consultar en la web acerca de todos los jugadores de futbol que vistan la camiseta 11 en un club de futbol que tenga un estadio con capacidad para más de 40 mil personas y que sea de un pais de más de 10 millones de habitantes*.

(*) Para entender la complejidad de esta búsqueda, intenten realizarla a mano usando Google :-)

Ok, y de donde saco una ontología?

En principio uno podría comenzar creando su propia ontología desde cero. Sin embargo, hay una fuente de conocimiento que puede ser utilizada y que ha sido desarrollada durante decenios: Los esquemas de base de datos. En estos tenemos una serie de clases (tablas), propiedades (campos), relaciones (llaves primarias, foráneas, triggers), tipos (int, varchar, etc.). En resumen, aunque nunca me ha tocado ver un traductor automático desde un esquema a una ontología, sospecho que debe ser más o menos directo.

Existen una serie de complicaciones relacionadas con las ontologías, por ejemplo, eventualmente se podrían crear ontologías que no son decidibles por un computador (es decir, un computador como lo conocemos, nunca va a ser capaz de "entender", independiente de la velocidad, ram, etc.). Además existen una seria de problemas "mundanos". Por ejemplo ¿Cómo saber si 2 ontologías son equivalentes?, ¿Existe una ontología que que me sirve y que alguien más hizo? Si es así ¿Cómo la encuentro?

De todas formas, para quienes deseen echarle una mirada, ya existen ontologías que abarcan grande áreas del conocimiento humano, tales como FOAF, Gene Ontology y Dublin Core entre muchos otros.