2.2.
Lenguajes para la representación del conocimiento
En el caso de los sistemas basados en conocimiento, el lenguaje en el que se expresa
la ontología debe reunir características que a veces (dependiendo del dominio) no es
fácil compatibilizar:
- Sintaxis formalizada, para poder diseñar sobre bases sólidas un procesador (lo que
en sistemas expertos se llama tradicionalmente «motor de inferencias»
, Apartado 1.2).
- Semántica bien definida y que permita la implementación procedimental en el
procesador de algoritmos de razonamiento eficientes.
- Desde el punto de vista pragmático, expresividad suficiente para representar de la
manera menos forzada posible el conocimiento. Esto significa que, para una
determinada conceptuación, el lenguaje con el que se construyen los modelos en
el nivel simbólico debe permitir una interpretación declarativa (Figura 1.5) que
represente todos los aspectos de esa conceptuación. En la práctica puede ocurrir
que no encontremos el lenguaje «ideal»
, y tengamos que «forzar»
la conceptuación para que se ajuste al lenguaje elegido.
Hay lenguajes formales, o «teóricos»
, que satisfacen en mayor o menor grado esas condiciones y lenguajes de implementación,
o «prácticos»
, que, siguiendo el modelo de algún lenguaje formal, están adaptados para mecanizar la
construcción de ontologías. Nos centraremos en los primeros, que son relativamente
«estables»
, y sobre los que se basan los segundos, algunos muy «volátiles»
. Por ejemplo:
- Prolog es un lenguaje de implementación de la lógica de primer orden,
que en sus versiones más recientes incluye también construcciones para
la programación con restricciones. El Capítulo 4 se dedica a la lógica de
primer orden; un resumen de Prolog se da en el Apéndice A.
- OWL (Web Ontology Language) es un lenguaje de ontolologías para la web
basado en una lógica de descripciones (en realidad, son tres sublenguajes).
Procede de la fusión de otros dos elaborados independientemente alrededor del
año 2000: DAML (DARPA Agent Markup Language, de la Agencia de proyectos
del Ministerio de Defensa U.S.A) y OIL (Ontology Inference Layer, de un
consorcio formado en el marco de los programas de la U.E.). En 2001 se formó un
comité conjunto que hizo una propuesta al Consorcio Web (W3C), y éste publicó
el estándar («Proposed Recommendation»
en la terminología del W3C) en 2003, modificado el 10 de febrero de 2004.
Existen numerosas propuestas de mejoras y modificaciones. En el Apéndice B se
resume la versión actual.
Hasta la segunda mitad de los años 80 se estaban utilizando diversos lenguajes que
podían clasificarse en dos tipos:
- Lenguajes basados en la lógica de predicados de primer orden, con sintaxis y
semántica formalizadas, con una base rigurosa para el razonamiento, pero
con grandes dificultades para implementar algoritmos de razonamiento
eficientes, con una rigidez sintáctica que impide ciertas conceptuaciones
«naturales»
y con pocas posibilidades de modularización.
- Lenguajes basados en modelos de psicología que, al estar derivados del estudio de
la mente humana, permiten conceptuaciones más naturales y algoritmos de
razonamiento más eficientes, pero que tienen una sintaxis menos formalizada y
carecen de una definición semántica precisa (a pesar de que uno de ellos se llama
«redes semánticas»
).
Como es natural, diversos investigadores trataron de elaborar propuestas
para aunar las ventajas de unos lenguajes y otros (Hayes, 1979 [42], Nilsson,
1982 [74], Brachman y Levesque, 1985 [6]), pero no fue hasta el final de
los 90 cuando quedaron relativamente establecidas las llamadas «lógicas de
descripciones»
, que en el momento actual son los lenguajes por antonomasia para la representación del
conocimiento.
A las lógicas de descripciones dedicaremos el Capítulo 5. Pero hay al menos cuatro
razones por las que nos parece conveniente detenernos previamente en los lenguajes
«más antiguos»
:
- la lógica clásica de primer orden sigue siendo la base fundamental de las
demás formulaciones de la lógica (la estudiaremos en el Capítulo 4);
- en el diseño de muchos sistemas basados en conocimiento, especialmente
los que no son muy complejos, se siguen utilizando algunos de esos
lenguajes;
- las ideas originales ayudan a entender y justifican ciertas decisiones de
diseño, y
- la naturaleza interdisciplinaria de estos primeros trabajos hace muy
interesante su estudio.
Empezaremos precisamente con un breve apunte para mostrar cómo algunos
modelos elaborados en psicología se han aplicado luego en ingeniería, por ejemplo, en
la programación orientada a objetos y en RDF (Apéndice B).
DIT-ETSIT-UPM