Мультиагентные системы и сообщества агентов, страница 7

Сообщение, содержащиеся внутри протокола, может быть двусмысленно, может иметь более одного ответа, или может требовать разделения и помощи других агентов, однако сам коммуникационный протокол должен четко определять тип посылаемого сообщения.

2.2.6 Язык запроса и управления знаниями (KQML – knowledge query and manipulation language).

Фундаментальным решением во взаимодействии агентов является разделение семантики коммуникационного протокола (которая должна быть доменно-независима) и семантики, заключенной в сообщении (которая может зависеть от домена). Коммуникационный протокол должен быть универсально разделяем всеми агентами. Он должен быть лаконичным и иметь только ограниченное число элементарных коммуникационных действий.

Язык запроса и управления знаниями (KQML) это протокол обмена информацией и знаниями, как показано на рисунке 2.2. Элегантность KQML заключается в том, что вся информация, необходимая для понимания содержания сообщения, включена в сам процесс коммуникации. Базовый протокол определяется следующей структурой:

(KQML – performative

                   :sender                   <word>

                   :receiver                 <word>

                   :language              <word>

                   :ontology               <word>

                   :content                 <expression>

                   …)

Синтаксис похож на синтаксис Лисп; однако аргументы, определяемые ключевыми словами, начинаемые двоеточием,  могут располагаться в любом порядке. Перформативы KQML созданы по образцу перформативов речевых действий. Таким образом, семантика перформативов KQML доменно независима, в то время как семантика сообщения определена полями :content (само сообщение), :language (язык в котором записано сообщение), :ontology (словарь «слов» в сообщении). В результате KQML «обертывает» сообщение в структуру, которая может быть понята любым агентом. (Для понимания самого сообщения, получатель должен понимать язык и иметь доступ к онтологии).

Термины :content, :language, :ontology описывают семантику сообщения. Другие аргументы, включая :sender, :receiver, :reply-with, :in-reply-to, является параметрами передачи сообщения. KQML предполагает асинхронную коммуникацию; поля :reply-with от отправителя и :in-reply-to от отвечающего агента связывают исходящее сообщение с ожидаемым ответом.

KQML является частью широкой исследовательской попытки разработать методологию для распределения информации между различными системами [35] Одна часть попытки включает определение формата обмена знаниями (KIF – knowledge interchange format), формального синтаксиса для представления знаний. Описанный в следующем разделе, KIF в значительной степени основывается на исчислении предикатов первого порядка. Другая часть попытки, определение общих концепций, атрибутов, и связей для различных подмножеств мира знаний. Определения онтологических терминов придает значение выражениям, представленным в KIF. Например в Block-World онтологии, если концепция деревянного блока данного размера представлена унарным предикатом Block, то факт, что блок A находится на вершине блока B, может быть сообщен:

(tell

   :sender                   Agent1

   :receiver                 Agent2

   :language              KIF

   :ontology               Block-World

   :content                 (AND (Block A) (Block B) (On A B))

Язык в KQML сообщении не ограничивается KIF; другие языки, такие как Пролог, Лисп, SQL или любой другой определенный язык коммуникации агента может быть использован.

KQML-говорящие агенты представляются друг для друга как клиенты и серверы. Их коммуникация может быть как синхронной, так и асинхронной, как это проиллюстрировано на рисунке 2.3. Для синхронной коммуникации агент отправитель ждет ответа. При асинхронной коммуникации агент, отправивший сообщение, продолжает свое размышления и действия, которые в последствии будет прерваны приходом ответа.