<На страницу назад | На страницу вперед>
3.4.1 Некоторые примеры языка детального описания
Язык детального описания - это логический язык, в основе которого (с некоторыми
модификациями) лежит подмножество из выходящего стандарта на совместное
использование информации, известного как "Формат обмена знаниями"
(KIF - Knowledge Interchange Format) (Genesereth & Fikes, 1992). Это
подмножество известно как ядро языка детального описания, которое
содержит базовые элементы, необходимые практически для любого логического
языка. Это ядро расширено при использовании ряда характерных для IDEF3 конструкций,
предназначенных для выражения точной информации о процессах и переходах
состояний, представляемых в языках схематик IDEF3. Однако, для обеспечения
эффективности необходимо иметь ясную семантику для данного языка.
В основе интуитивной семантики для схематик IDEF3 лежит теория ситуаций
- недавно разработанная теория информации [(Barwise & Perry, 1983);
неформальный обзор теории приводится в разделе А.4 Приложения А]. В языке
детального описания такие базовые понятия IDEF3, как UOB, процесс и др.,
идентифицируются при использовании определенных базовых семантических категорий
теории ситуаций. Конструкции, добавленные в ядро языка детального описания,
соответствуют этим категориям.
Для иллюстрации использования языка детального описания для схематики процессов рассмотрим процесс в схематике, представленной на рис. 3-84. Назовем этот процесс "PQD" (Paint/Queue/Dry - покрасить/поставить в очередь/высушить).
Рис. 3-84
Процесс "Покрасить/Поставить в очередь/Высушить"
Помимо ограничений, указанных в данной схематике, возможны различные дополнительные ограничения процесса, которые не могут быть выражены графическим языком, например:
В активации PQD производится покраска только одной детали
в любом данном вхождении "Покрасить деталь"
(In an activation of PQD, exactly one part is painted in any given occurrence
of Paint Part)
Это ограничение выражается следующим образом:
(forall (?coe: (activation-of ? coePQD))
(forall (?sit: (and (occurs-in ? sit ? coe) (occurrence-of ? sit Paint-part)))
(exists!-1 ?x (supports ?sit (painted ?x + )))))
В этом ограничении переменная "?coe" охватывает диапазон развитий событий (courses-of-events), т.е. активаций или реализаций общего процесса типа PQD. Далее эта переменная ограничивается справа от двоеточия - (activation-of ?coe PQD) - теми развитиями событий, которые представляют активации процесса PQD. Тогда для любого такого развития событий c остальные две линии говорят о том, что для любой ситуации s, которая представляет вхождение данной UOB, или для типа ситуации, "Покрасить Деталь" в c, существует только один объект (значение "exists!-1") x, так что объект x покрывается краской в ситуации s - т.е. в языке теории ситуаций s "поддерживает" (supports) информацию о том, что x покрывается краской.
Обратите внимание: это ограничение в том виде, в каком оно выражено, применимо к сценарию PQD в целом, который представлен на диаграмме. Однако, естественнее было бы добавить это ограничение непосредственно к характеристике "Покрасить деталь", где оно должно применяться к каждому вхождению "Покрасить деталь" в данной активации PQD. Следовательно, общие условия с квантором общности в начале ограничения можно отбросить; в результате это ограничение выражается более просто и непосредственно:
(exists!-1 ?x (supports ?sit (painted ?x + )))
Обратите внимание: как ограничение на "Покрасить деталь", ситуационная переменная "?sit" не рассматривается как переменная с подразумеваемым квантором общности, а скорее рассматривается как параметр, играющий роль данного вхождения "Покрасить деталь" в данной активации; это же справедливо и для объектной переменной "?x".
Во втором примере предварительно допускается, что было определено несколько вспомогательных понятий, а именно отношение "в очереди" (in-queue), которое устанавливается между объектом, очередью и интервалом времени в том случае, если данный объект находится в очереди в течение этого интервала времени, и функция "начало" (start-of), которая подводит ситуацию к точке (разновидность интервала) во времени, в которой она начинается. Язык детального описания имеет мощные средства для создания таких определений. Рассмотрим следующее ограничение на PQD.
При активации PQD ни один экземпляр "Покрасить
деталь" не начнется ни в один момент времени, если в это время
в очереди имеется пять объектов.
(In an activation of PQD, no instance of Paint Part begins at any
time if there are five objects in the queue at that time).
(forall (?coe: (activation-of ?coe PQD))
(forall (?sit: (and (occurs-in ?sit ?coe) (occurrence-of ?sit Paint-part)))
(not (exists-5 ?x (and (instance-of ?x Part)
(supports ?sit (in-queue ?x Q (start-of ?sit) + )))))).
Иначе говоря, для любой активации PQD для данной активации нет вхождения s "Покрасить деталь", так что в начале s в очереди имеется пять (или больше) объектов. В этом случае снова ограничение выражается относительно PQD вообще, но если его добавить непосредственно к характеристике "Покрасить деталь", где оно должно применяться к вхождениям "Покрасить деталь" в рамках данной активации, то его можно выразить непосредственно следующим образом:
(not (exists-5 ?x (and (instance-of ?x Part) (in ?x Q (start-of (interval-of ?sit)))))).
Для иллюстрации использования языка детального описания для схематик объектов рассмотрим схематику расширенных переходов состояний, представленную на рис. 3-83. Как отмечалось выше, в таких схематиках существует семантическая неопределенность относительно объема окружающей контекстной информации. Например, прокладки вообще считаются вспомогательным материалом или они считаются таковым только в более ограниченных контекстах, подобных представленному процессу? Такую информацию можно в явной форме добавить в язык детального описания. Так, для данной схематики в документ на детальное описание можно добавить ограничение, выраженное в следующей форме:
Прокладки считаются "Вспомогательным материалом" во всех ситуациях. (Grommets are considered Indirect Materials in all situations).
(forall (?sit ?x: (supports ?sit (grommet ?x + )))
(supports ?sit (indirect_material ?x )))
Иначе говоря, любая ситуация вообще (относительно данного предприятия), которая поддерживает информацию, что x является прокладкой, также поддерживает информацию, что этот объект представляет вспомогательный материал.
Как указывалось выше, символ объекта в схематике переходов состояний показывает, помимо данного состояния, тип ситуации, в которой объект находится в данном состоянии. Следовательно, схематики расширенных переходов состояний не являются абсолютно однозначными относительно значения символов объектов. Например, на рис. 3-83 в контексте схематики вложенных переходов состояний символ "Деталь" (Widget) указывает тип ситуации, в которой имеется деталь, тогда как в контексте соединения этого символа с символом "Основной материал" (Direct Material) детали указываются как вид основного материала. Для устранения этой неоднозначности в языке детального описания используется термин "Widget*" для обозначения типа ситуации, в которой имеется деталь.
Теперь можно показать, каким образом язык детального описания используется для выражения следующего ограничения.
Деталь и прокладка в экземпляре WGF находятся в печи при
температуре 500о в течение 5 минут перед сборкой в каркас.
(The widget and the grommet in an instance of WGF are in the oven at 500
degrees for a period of five minutes before they are assembled into a frammitz).
(forall (?coe : (activation-of ?coe WGF))
(forall (?sit ?sit1 ?sit2: (occurs-in ?sit ?coe)
(occurs-in ?sit1 ?coe)
(occurs-in ?sit2 ?coe)
(occurrence-of ?sit Frammitz*)
(occurrence-of ?sit1 Widget*)
(occurrence-of ?sit1 Grommet*))
(forall (?x ?y) : (supports ?sit1 (Widget ?x))
(supports ?sit2 (Grommet ?y)))
(exists (?sit3 ?oven: (during ?sit1 ?sit3)
(during ?sit2 ?sit3)
(precedes ?sit3 ?sit)
(supports ?sit3 (Oven ?oven)
(supports ?sit3 (= (temp-of ?oven) 500)))
(and (supports ?sit3 (in ?x ?oven))
(supports ?sit3 (in ?y ?oven))
(supports ?sit3 (= (in-oven-during ?x 5)))))))
Иначе говоря, в любом c вхождении WGF, если ?sit, ?sit1 и ?sit2 представляют вхождения Frammitz*, Widget* и Grommet*, соответственно, в c, то если ?x и ?y представляют "Деталь" (Widget) и "Прокладку" (Grommet) в Widget* и Grommet*, соответственно, то имеется объект ?oven и ситуация ?sit 3, так что: (1) ?sit1 и ?sit2 входят во время ?sit3; (2) ?sit3 предшествует ?sit; (3) ?oven представляет "Печь" (Oven), температура которой равна 500о в ?sit3, так что ?x и ?y находятся в печи в ?sit3.