kqml

更新时间:2024-01-02 09:16

KQML(Knowledge Query and Manipulation Language知识查询和处理语言)是一种基于消息的通信协议, 同时本身也是一种独立的信息交换和协议语言。

特性

KQML有三大独立性:

1. KQML独立于网络传输机制(即TCP/IP,SMTP,IIOP等);

2. KQML独立于内容语言(即SQL,PROLOG等);

3. KQML独立于内容实体;

结构

KQML消息的三层结构如下:

①内容层: 在程序开发语言中,包含有消息的实际内容,KQML支持ASCII码语言和二进制符号

②通信层: 实现消息特性,将低级的消息参数,例如消息的传送者和接受者,采用特定的标识符

进行标识.

③消息层: KQML的核心,其基本功能是标识用以发送消息的协议,提供讲话动作或执行发送者

在内容中附加的行为,另外,消息层还包括一些用以描述内容层信息的可选部分,如语言,采用的术

语,通信主题描述符等,以便KQML对要传递的内容进行分析,路由和发送.

(一) KQML语言规范

KQML的核心是预先定义的行为词(performative).采用 ASCII字符串表示的行为词(performative)

具有可读性好,方便程序分析(特别是对许多知识库程序) ,可以在许多内部应用消息调用机制的平台之间

传递等优点 .行为词形式化定义如下:

::= ( { : } *)

::= | | | ( { } *)

::= *

::=''|''

::= | |, | ( { } *)

注意在上述定义中, 是特殊的 ;在定长字符串中, 如:# 3abc,

双引号前的数字表明双引号后的字符串的长度.行为词的一些参数是可选的, 在调用参数时在前面注明

关键字, 因此和参数顺序无关.

这些称作参数名的关键字必须以冒号(:)开头, 后面加上相应的参数值.KQML使用了一些关键字作

为行为词的参数名, 如下表一:

参数名 参数类型 含义

:sender 请求的真实发送者

:receiver 请求的真实接受者

:form 使用forward转发请求时 ,参数

content内记录的原始发送者

:to 使用 forward转发请求时 ,参数

content内记录的原始接收者

:reply-with- 此消息 (回应消息)的标记

:in-reply-to 使用 reply- with所回应的前条消

息的标记

:language 参数 content中使用的语言名称

:ontology 参数 content中使用的实体集

名称

:content 实际传递的信息

表一 行为词(performative)的参数含义

KQML语言具有可扩展性, 针对不同应用领域的MAS系统, 可以自己定义新的行为词,如register ,

recommend,advertise等等,只要这些行为词(performative)仍然符合KQML规范并具有一定的实际功能

即可.

下面是一个KQML的消息实例:

Mark和 John分别是网络上有协作关系的两个节点的agent.Mark想知道中间人Annie的电话号码.

Mark接口主体将这一请求发送给自身的任务主体.任务主体在本节点内查询,未能满足请求时,自动

将请求通过通信主体发送给所有存在协作关系的其它通信主体.其中,发送给 John的代码如表二

ask- one:

sender Mark

:receiver John

:language Prolog

:ontology person

:reply- with id1

表二

person,内容描述语言为Prolog,发送者为Mark,接受者为John.John一种可能的应答为表三所示:

tell :

sender John

:receiver Mark

:language Prolog

:ontology person

:in- reply- to id1

表三

记为person,内容描述语言为Prolong.Mark的请求被透明地完成了,而不必了解复杂的实现过

如前文所述,在每个基于 KQML会话的 MAS系统中, 至少有一个agent处在称作管理服务机构

的特殊地位,我们称之为scheduler, 该agent能够处理本系统中其他 agent请求的一些网络通信服务 ,

如:注册/取消注册 (register/unregister),转交请求 (forward),推荐一个/或所有能够解决某项请求的agent

(rec-ommend-one/recommend-all),招募一个/或所有的代理解决某项请求后将结果返回 (recruit-one/recruit-all).其他agent向scheduler发出advertise消息告知自己愿意接受并能正确处理的信息 .实际

系统中也可加入一些限制条件, 如:此agent仅处理来自特定位置的请求等.对于一个由多个域组成的

MAS系统(一个schedulerr 对应一个域) , agent之间可以通过scheduler通信, 也可以直接通信, 这就意

味着当一个scheduler在自身接受的advertise中找不到某个请求相应的回答时, 将向其他scheduler发出

请求.KQML为agent之间以及agent与人之间提供了一种简便而统一的方法来查询,修改.

免责声明
隐私政策
用户协议
目录 22
0{{catalogNumber[index]}}. {{item.title}}
{{item.title}}