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

Без запятых это изречение

(interested joe ‘(salary ,?x ,?y ,?z))

означало бы, что агент Джо заинтересован в изречении (salary ?x ?y ?z) вместо его значений.

KIF также может быть использован для описания процедур, т.е. для написания программ или скриптов, которым будут следовать агенты. Имея префиксный синтаксис KIF, эти программы походят на Лисп или Scheme. Ниже приведен пример трехшаговой процедуры, написанной на KIF. Первый шаг проверяет появилась ли свежая строка в стандартном входном потоке системы; второй шаг печатает «Hello!» в стандартный поток вывода системы; завершающий шаг добавляет перевод строки в поток вывода.

(progn        (fresh-line t)

   (print “Hello!”)

   (fresh-line t))

Семантика ядра KIF (KIF без правил и определений) похожа на логику первого порядка. Добавлены расширения для работы с нестандартными операторами (как апостроф и запятая), и появились ограничения, что модели должны соответствовать различным аксиомам схемы (для придания значения основному формату словаря). Несмотря на эти расширения и ограничения,  ядро языка сохраняет фундаментальные характеристики логики первого порядка, включающие компактность и semi-decidability (полу-разрешимость?) логического следования.

2.2.8 Онтология.

Онтология – спецификация объектов, понятий, и связей в интересующей области. В примере Block-World приведенном выше, терм Block представляет понятие, а терм On представляется связь. Понятия могут быть представлены логикой первого порядка как унарные предикаты; предикатов высших порядков представляющих связи. Для выражения идеи что блок является физическим объектом мы можем использовать выражение первого порядка:

"x (Block x) Þ (PhysicalObject x)

Есть другие более общие представления. Вместо (Block A), выражение (instanceOf A Block) может быть использовано. Теперь A и Block являются объектами во множестве обсуждаемых объектов, также введены новые отношения instanceOf и subclassOf :

(class Block)

(class PhysicalObject)

(subclassOf Block PhysicalObject)

"x,y,z  (instanceOf x y) Ù (subclassOf y z) Þ (instanceOf x z)

Последнее заключение это правило, которое выражает представление о иерархии типов.

Онтология это больше чем просто таксономия классов (или типов); онтология должна описывать отношения. В онтологии должны быть представлены классы и отношения; указывать экземпляры классов нет необходимости. Например, не надо представлять A в онтологии как или (Block A) или (instanceOf A Block). Онтология аналогична схеме базы данных, но не содержанию самой базы данных.

Не выраженное явно в этом обсуждении что агент должен представлять свои знания в справочники по специфицируемой онтологии. Т.к. агенты создаются людьми, то создатель агента должен использовать заданную онтологию для представления знаний агента. Все агенты, которые разделяют одну и ту же онтологию представления знаний,  понимают значения «слов» в коммуникационном агентном языке.

Многие агенты имеют базы знаний, в которых отношения представлены более детально, чем просто строка символов. Например, область и диапазон парного отношения может быть определен:

(domain On PhysicalObject)

(range On PhysicalObject)

Эти ограничения описывают допустимые значения используемых отношений. (On A B) является разрешенным т.к. и A и B являются экземплярами PhysicalObject через транзитивное объединение subclassOf; (On A Dream1) будет запрещенным, полагая что Dream1 не является PhysicalObject.

Редакторы онтологии, такие как разработаны в Стэнфорде [14] и университете Южной Калифорнии [32], обычно являются фреймовыми системами представления знаний, которые позволяют пользователям определять онтологии и их компоненты: классы, экземпляры, отношения и функции. На рисунке 2.4 показан пример такой онтологии. Редакторы онтологии предлагают различные функции, такие как возможность перевода онтологии на несколько языков представления или способность для распределенных групп разрабатывать онтологии совместно через Интернет.