viernes, 20 de abril de 2007

Ontologías en JADE

Las ontologías, tal y como se explicó en la anterior entrada, son un mecanismo para representar conceptos que permiten el entendimiento entre dos agentes que establecen una comunicación.

Centrándonos en la comunicación entre agentes de JADE, podríamos pensar que dicha comunicación estaría solucionada con simples intercambios de datos de tipo string. Por ejemplo: si quisiera comunicarle a otro agente que la reunión es "el jueves a las 12:00h en el Hotel Ritz", podría crear un mensaje ACL representado con un string: (Reunion :dia jueves :hora 12:00 :lugar Hotel Ritz).
El verdadero problema de este tipo de comunicación tan simple, es que si quisiéramos obtener directamente la hora o el lugar de la reunión tendríamos que tokenizar el string y recorrerlo de un lado a otro hasta obtener el dato que nos interesa.
Sería más interesante tener la información anterior encapsulada en un objeto Java dentro de un Agente. Posteriormente habría que convertir dicha información en formato de mensaje ACL y a su vez, el agente receptor, debería poder realizar la conversión inversa del mensaje ACL para obtener la información en el formato original. De igual forma, el agente receptor, tiene que poder realizar comprobaciones semánticas para verificar la corrección de dicho contenido con respecto a las reglas de ontología por las cuales los agentes le atribuyen un significado al mensaje intercambiado.

Jade proporciona un soporte para representar lenguajes de contenido y ontologías. Una ontología en Jade no es más que "una colección de esquemas que no cambian durante la vida de un agente". (ref.: Pedro Cuesta Morales; Escola Superior de Enxeñería Informática (Universidade de Vigo); SMProgramacionJADE3.pdf, pág. 6; curso 2006-2007).
Los elementos o esquemas que contiene una ontología en JADE son: los tipos de predicados (Predicates), acciones de los agentes (Agent Actions) y conceptos del dominio de la aplicación (Concepts). Definir una ontología y sus elementos no es más que definir instancias de las clases jade.content.onto.Ontology, para crear un ontología; jade.content.schema.PredicateSchema, para crear un esquema con los tipos de predicado; jade.content.schema.AgentActionSchema, para crear el esquema con las acciones de los agentes; y jade.content.schema.ConceptSchema, para crear el elemento de la ontología que encapsula los conceptos del dominio de la aplicación.

Básicamente esta es la estructura de una ontología en JADE. Queda por explicar con más detalle qué es y cómo se implementa cada elemento de una ontología y el mecanismo para convertir la representación interna de la ontología a la correspondiente expresión de contenido ACL que intercambian los agentes. Esto último es realizado por los códecs, pero será explicado en posteriores entradas del blog.

No hay comentarios: