Sie sind auf Seite 1von 27

KQML - A Language and Protocol

for Knowledge and Information Exchange

Introduccin
Muchos sistemas de computadoras estn estructurados como colecciones de procesos independientes que frequentemente estn distribuidos en multiples huspedes (hosts) ligados en una red. Ejemplos: procesos de bases de datos, procesos de tiempo real, sistemas IA distribuidos, etc.

KQML
Knowledge Query and Manipulation Language. Es un protocolo para el intercambio de informacin y conocimiento. Toda la informacin para comprender el contenido de un mensaje est en la comunicacin por s misma.

KQML
KQML - es un lenguaje y protocolo que soporta la programacin en red especficamente de sistemas basados en conocimiento o agentes inteligentes. Fue desarrollado por ARPA apoyado por el Knowledge Sharing Effort, e implementado de manera separada por varios grupos de investigacin.

Knowledge Sharing Effort


El ARPA Knowledge Sharing Effort es un consorcio para desarrollar convenciones para facilitar la comparticin y uso de bases de datos de conocimiento y sistemas basados en conocimiento. Su meta es definir, desarrollar y probar infraestructura y tecnologa de apoyo para permitir a los participantes construir sistemas funcionales ms grandes y amplios.

Comunicacin entre agentes inteligentes


Muchas de las dificultades de la comunicacin entre agentes inteligentes podran atacarse al darles un lenguaje comn. En trminos lingsticos, esto significa que deben compartir una sintaxis comn, una semntica y pragmtica.

Ontologa
Dos agentes pueden comunicarse si tienen un lenguaje de representacin comn o traducible. Asumiendo un lenguaje comn o traducible, aun es necesario que los agentes compartan una estructura de conocimiento (ej. compartir una estructura de vocabulario), para poder interpretar los mensajes que intercambian. Esto en realidad no es una semntica compartida, sino una ontologa compartida.

Pragmtica
Las pragmticas entre procesos de computadoras incluyen 1) saber a quien hablar y como encontrarlo 2) saber como iniciar y mantener un intercambio

Pragmtica
El KQML se preocupa, principalmente, de la pragmtica (y en segundo plano de la semntica). KQML es un lenguaje y conjunto de protocolos que apoya los programas computacionales en identificar, conectarse con e intercambiar informacin con otros programas.

Protocolos de comunicacin
La comunicacin sincrnica donde un bloque de consulta est en espera de una respuesta.
Client query Servidor

reply

Ejemplo: razonador backward-chaining obteniendo informacin de una fuente remota.

Protocolos de comunicacin
Otro caso de comunicacin sincrnica es aquel donde el servidor puede mantener el estado al recordar la respuesta parcial. Las respuestas son enviadas individualmente, cada una cuando son requeridas por el cliente.
Client query handle next reply next reply Servidor

Ejemplo: un cliente sencillo preguntando a una base de datos relacional o a un razonador.

Protocolos de comunicacin
En una comunicacin asncrona, una solicitud de suscripcin sin bloqueo puede resultar en respuestas espaciadas y de nmero indeterminado.
Client subscribe reply reply reply Servidor

Ejemplo: sistemas de tiempo-real, donde el cliente subscribe informacin a un servidor.

Comunicacin entre agentes que entienden KQML


KQML apoya estos protocolos al hacerlos parte explcita del lenguaje de comunicacin. KQML es conceptualmente un lenguaje de niveles. Se puede observar divido en tres:
Nivel de contenido Nivel de mensaje Nivel de comunicacin
Comunicacin Mensaje Contenido Mecnica de la comunicacin Lgica de la comunicacin Contenido de la comunicacin

Niveles del KQML


El nivel de contenido es el contenido real del mensaje en el lenguaje de representacin propio del programa. El KQML puede llevar cualquier lenguaje de representacin, incluyendo lenguajes expresados con strings ASCII y aquellos que utilizan expresin binaria. Todas las implementaciones de KQML ignoran la parte de contenido del mensaje, solo interpretan sus fronteras.

Niveles del KQML


El nivel de mensaje conforma la esencia del lenguaje. Este determina el tipo de interacciones que se pueden tener con un agente que habla KQML. La funcin primaria del nivel de mensaje es identificar el protocolo a ser utilizado para enviar el mensaje y sustituir el acto del habla o performativa el cual el remitente pone al contenido.

Niveles del KQML


El nivel de comunicacin codifica un conjunto de propiedades al mensaje las cuales describen los parmetros de comunicacin de bajo nivel, tales como la identidad del remitente o el del destinatario, y un identificador nico asociado con la comunicacin.

Performativas
La performativa indica si el contenido es una aseveracin (assertion), una consulta (query), o cualquiera de un conjunto de performativas conocidas. Como el contenido es opaco para el KQML, este nivel incluye opciones que describen el contenido: el lenguaje, la ontologa. Esto permite que las implementaciones en KQML puedan analizar y enviar un mensaje aunque su contenido sea inaccesible.

El mensaje KQML
Conceptualmente, un mensaje KQML consiste de una performativa, sus argumentos asociados los cuales incluyen el verdadero contenido del mensaje y un conjunto de argumentos opcionales que describen el mensaje de una manera independiente de la sintaxis del lenguaje del contenido.

Protocolo bsico
La elegancia del KQML es que toda la informacin necesaria para entender el contenido del mensaje est incluida en la comunicacin misma. La sintaxis se parece a Lisp, sin embargo los argumentos pueden darse en cualquier orden.

Protocolo bsico
Estructura bsica:
Parameter value (KQML performative :sender <word> :receiver <word> Performatives :language <word> :ontology <word> :content <word> Parameter names ....)

KQML
Los trminos: contenido, lenguaje y ontologa delnean la semntica del mensaje. La comunicacin en KQML puede ser sincrnica o asincrnica.

Performativas de KQML
Performativas: identifican la fuerza ilocutiva de una sentencia. Performativas de KQML
Preguntas bsicas Multirespuesta Respuesta Informativas Generadoras Definir-capacidades Red

Categoras de nombres de performativas


Basic query performatives: Evaluate, ask-if, ask-in, ask-one, ask-all Multi-response query performatives: Stream-in, stream-all Response performatives: Reply, sorry

Categoras de nombres de performativas


Generic informational performatives: Tell, achieve, cancel, untell, unachieve Generator performatives: Standby, ready, next, rest, discard, generator Capability-definition performatives: Advertise, subscribe, monitor, import, export

Categoras de nombres de performativas


Networking performatives: Register, unregister, forward, broadcast, route

Ejemplos
Agente A enva la siguiente performativa al agente B:
(evaluate :language KIF :ontology motors :reply-with q1 :content (val (torque motor1) (sim-time 5)))

Y el agente B responde:
(reply :language KIF :ontology motors :in-reply-to q1 :content (scalar 12 kgf))

Ejemplos
Agente A enva la siguiente performativa al agente B:
(stream-about :language KIF :ontology motors :replywith q1 :content motor1)

Y el agente B responde:
(tell (tell :language KIF :ontology motors :in-reply-to q1 :content(= (val (torque motor1) (sim-time 5)) (scalar 12 kgf) :language KIF :ontology motors :in-reply-to q1 :content(fastens fram12 motor1)))