Introduction

Previous: Preface Up: DRAFT

Specification of the KQML

Agent-Communication Language

plus example agent policies and architectures

The DARPA Knowledge Sharing Initiative

External Interfaces Working Group Next: KQML String Syntax

Introduction

Modern computing systems often involve multiple intergenerating computations/nodes. Distinct, and often autonomous nodes can be viewed as agents performing within the overall system, in response to messages from other nodes. There are several levels at which agent-based systems must agree, at least in their interfaces, in order to successfully interoperate:

Transport:
how agents send and receive messages;
Language:
what the individual messages mean;
Policy:
how agents structure conversations;
Architecture:
how to connect systems in accordance with constituent protocols.

This document is mostly about the language level. This document specifies the syntactic and semantic fundamentals of the Knowledge Query and Manipulation Language (KQML).

KQML is complementary to work on representation languages for domain content, including the DARPA Knowledge Sharing Initiative's Knowledge Interchange Format (KIF). KQML has also been used to transmit object-oriented data, and a wide range of information can be accumulated. KQML is a language for programs to use to communicate attitudes about information, such as querying, stating, believing, requiring, achieving, subscribing, and offering. KQML is indifferent to the format of the information itself, thus KQML expressions will often contain subexpressions in other so-called ``content languages.''

KQML is most useful for communication among agent-based programs, in the sense that the programs are autonomous and asynchronous. Autonomy entails that agents may have different and even conflicting agendas; thus the meaning of a KQML message is defined in terms of constraints on the message sender rather than the message receiver. This allows the message receiver to choose a course of action that is compatible with other aspects of its function. Of course, most useful agent architectures strive for maximal cooperation among agents, but just as with human organizations, complete cooperation is not always possible.

KQML is complementary to new approaches to distributed computing, which focus on the transport level. For example, the new and popular Object Request Broker [OMG ORB] specification defines distributed services for interprocess and interplatform messaging, data type translation, and name registration. It does not specify a rich set of message types and their meanings, as does KQML.

A KQML message is called a performative, in that the message is intended to perform some action by virtue of being sent. (The term is from speech act theory.) This document defines a substantial number of performatives in terms of what they connote about the sender's knowledge.

However, we recognize that the performatives defined herein are neither necessary nor sufficient for all agent-based applications. Therefore, agents need not support the entire set of defined performatives (indeed, we expect that agents will usually support a small subset), and agents may use performatives that do not appear in this specification. New performatives should be defined precisely, and in the style of this specification.

The performative names in this specification are reserved; an application is not KQML-compliant if it uses these performatives in ways that are inconsistent with the definitions in this specification. We encourage implementors to use these reserved performatives when possible, to increase overall interoperability.

The primary dimension of KQML extension is through the definition of new performatives. The definitions of new performatives must explicitly describe all permissible parameters, and when applicable, default values for parameters that do not appear in particular messages. A performative definition may coin new parameter names; however, we encourage the use of the parameter names in this specification when they apply.

Besides KQML, at the language level of interoperation, this document touches on issues at the other three levels. Appendix A describes work-in-progress on KQML APIs that provide a definition of and code for the transport level, Appendix B defines some useful terms for describing messaging policies (e.g., timely responses, pertinent communications), and Appendix C describes the architectures of some existing agent-based systems. Our intent is for these terms and examples to make other agent-based systems easier to characterize and compare for the task of achieving high-level interoperation.

This specification is written in the style of an Internet RFC. That is, the main thread of this document is a dry description of what KQML is; comments regarding motivation for particular aspects are relegated to inset NOTEs. Also, the latter portion of this document describes several example systems that use (or in one case, could use) KQML messages.

-----------------------------------------------

finin@cmsc