Как уже отмечалось в подразд. 15.2, обычно фреймовая модель знаний имеет сложную иерархическую структуру, отражающую реальные объекты (понятия) и отношения (связи) некоторой предметной области. Механизм логического вывода в таких ЭС основан на обмене значениями между одноименными слотами различных фреймов и выполнении присоединенных процедур «если — добавлено», «если — удалено» и «если — нужно». Условная схема таких действий для простейшего варианта представлена на рис. 15.4.
Запрос к ЭС в виде сообщения поступает в старший по иерархии фрейм (на рисунке — фрейм А). Если ответа на запрос нет ни в одном из слотов этого фрейма или их совокупности, соответствующие сообщения (запросы) передаются во все фреймы, где имеются слот (слоты), имена которых содержатся в запросе или необходимы для поиска ответа на него (фреймы В и D). Если в них содержится искомый ответ, значение соответствующего слота передается в старший по иерархии фрейм (из фрейма D во фрейм А). Если для этого нужна дополнительная информация, предварительно передается сообщение (из фрейма В во фрейм С) и получается значение (из фрейма С во фрейм В). Значения, передаваемые в ответ на сообщения, либо непосредственно содержатся в соответствующих слотах фреймов, либо определяются как результат выполнения присоединенных процедур.
В современных фреймовых системах, как правило, для пользователя реализована возможность формулировать запросы на языке, близком к реальному. Интерфейсная программа (лингвистический процессор) должна «уметь» по результатам анализа запроса определять, в какой (какие) слот (слоты) необходимо поместить значение (значения) для инициализации автоматической процедуры поиска ответа.
Рассмотрим более конкретный пример, иллюстрирующий работу фреймовой ЭС, используемой в подразделении, организующем научно-исследовательскую работу в некотором учреждении. На рис. 15.5 представлена иерархия справочной информации об отчете по научно-исследовательской работе (о понятии, узле «отчет по научно-исследовательской работе»).
Рис. 15.6 содержит структуры понятий «Отчет по научно-исследовательской работе» и «Этапный отчет по научно-исследовательской работе», а рис. 15.7 — структуру понятия «Этапный отчет по научно-исследовательской работе «Залив» со значениями некоторых слотов и присоединенными процедурами.
Фреймовая система функционирует следующим образом. Пусть в ЭС поступил запрос от полномочного пользователя: «Необходима информация о ходе выполнения научно-исследовательской работы «Залив» (напомним, что, как правило, язык исходного запроса близок к естественному). Информация проходит через лингвистический процессор, анализируется и в виде значения «Залив» вносится в слот Шифр узла «Этапный отчет по научно-исследовательской работе «Залив». Далее начинают работать присоединенные процедуры:
· процедура «Если—добавлено», связанная со слотом Шифр, выполняется, поскольку в слот было введено некоторое значение. Эта процедура осуществляет поиск сведений о руководителе научно-исследовательской работы «Залив» (в нашем примере — И.И.Иванов) и вписывает это имя в слот Автор узла «Этапный отчет по научно-исследовательской работе «Залив»;
· процедура «Если—добавлено», связанная со слотом Автор, выполняется, так как в слот было вписано значение. Эта процедура начинает составлять сообщение, чтобы отправить его И. И. Иванову, но обнаруживает, что отсутствует значение слота Дата;
· процедура «Если—добавлено», просматривая слот Дата и найдя его пустым, активизирует процедуру «Если—нужно», связанную с этим слотом. Процедура найдет текущую дату, используя календарь ЭС, выберет ближайшую к ней (но бльшую) дату представления отчета (в нашем примере — 31.03.2003) и впишет ее в слот Дата;
· процедура «Если—добавлено», связанная со слотом Автор, найдет, что отсутствует еще одно значение, необходимое для формирования выходного сообщения, а именно значение слота Объем. Данный слот (узла «Этапный отчет по научно-исследовательской работе «Залив») не имеет присоединенных процедур, поэтому приходится брать значение по умолчанию из одноименного слота общей концепции «Этапного отчета по научно-исследовательской работе» (в нашем примере — 40 с.).
Теперь ЭС может сформировать выходное сообщение типа: «Этапный отчет по научно-исследовательской работе «Залив» должен быть представлен И. И. Ивановым к 31 марта 2003 г. Предполагаемый объем отчета — 40 с.» и/или «И.И.Иванов! Представьте этапный отчет по научно-исследовательской работе «Залив» объемом не более 40 с. к 31 марта 2003 г.».
Если в какой-либо момент значение слота Автор (в нашем примере — И. И. Иванов) будет удалено, то сработает процедура «Если — удалено» и система автоматически отправит И.И.Иванову уведомление о том, что отчет не требуется.