kqml

kqml

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)
具有可讀性好,方便程式分析(特別是對許多知識庫程式) ,可以在許多內部套用訊息調用機制的平台之間
傳遞等優點 .行為詞形式化定義如下:
::= ( { : } *)
::= | | | ( { } *)
::= *
::=''|''
::= | |, | ( { } *)
::="*"| # *"*
::= \ | - \ -
注意在上述定義中, 是特殊的 ;在定長字元串中, 如:# 3"abc,
雙引號前的數字表明雙引號後的字元串的長度.行為詞的一些參數是可選的, 在調用參數時在前面註明
關鍵字, 因此和參數順序無關.
這些稱作參數名的關鍵字必須以冒號(:)開頭, 後面加上相應的參數值.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
:content "telephone(Annie,X)"
:reply- with id1 )
表二
在這一訊息中ask-one是KQML的performative, 內容為"telephone(Annie,X)",實體被標記為
person,內容描述語言為Prolog,傳送者為Mark,接受者為John.John一種可能的應答為表三所示:
(tell :
sender John
:receiver Mark
:language Prolog
:ontology person
:content"telephone(Annie,5586666)"
:in- reply- to id1 )
表三
這樣,tell成為KQML的performative,內容為"telephone(Annie,5586666)",實體依然被標
記為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與人之間提供了一種簡便而統一的方法來查詢,修改.

相關詞條

相關搜尋

熱門詞條

聯絡我們