С каждым слотом можно связать любое число процедур. Три типа процедур, чаще всего связывающиеся со слотами: 1. IF – ADDED: процедура ЕСЛИ – ДОБАВЛЕНО. Выполняется, когда новая информация помещается в слот.
2. IF – DELETED: процедура ЕСЛИ – УДАЛЕНО. Выполняется, когда информация удаляется из слота.
3. IF – NEEDED: процедура ЕСЛИ – НУЖНО. Выполняется, когда запрашивается информация из слота, а он пустой.
Эти процедуры могут следить за приписыванием информации к данному узлу и проверять, что при изменении значения производятся соответствующие действия. Как ясно из их структуры, системы, основанные на фреймах, хороши в тех предметных областях, где ожидания относительно формы и содержания данных играют важную роль, например, интерпретация визуальной информации или понимание речи.
Чтобы проиллюстрировать, как работает система, основанная на фреймах, на рис. 7. 16 представляется иерархия отчета, структура которого показана на рис. 7. 14, на этот раз со всеми слотами, их значениями и процедурами.
Допустим с целью упрощения, что некоторые слоты имеют значения по умолчанию. Например, пока нет информации об обратном, автор отчета о продвижении разработки считается руководителем проекта.
Каким образом можно использовать таким образом организованные знания? Предположим, ведущий специалист по программному обеспечению в некой корпорации имеет доступ через настольный терминал к системе, основанной на фреймах. Допустим, упомянутый специалист связался с системой через программный интерфейс, который позволяет общаться с ней на языке, весьма близком к естественному. Специалист запрашивает: «Мне нужен отчет о продвижении проекта по биологической классификации». Интерфейсная программа анализирует это предложение и вносит «Предложение биологической классификации» в слот тема следующего пустого узла «отчет о продвижении», в данном случае узла # 15. Далее все происходит автоматически.
1. Процедура если – добавлено, связанная со слотом «тема», выполняется, поскольку в слот было введено некоторое значение. Эта процедура осуществляет поиск (в базе данных системы) руководителя проекта. Пусть это Мэри Смит. Процедура вписывает это имя в слот «автор» отчета о продвижении работ # 15.
2. Процедура если – добавлено, связанная со слотом «автор», выполняется, так как в слот было только что вписано значение. Эта процедура начинает составлять сообщение, чтобы отправить его Мэри Смит, но обнаруживает, что у нее нет нужного значения «Дата исполнения».
3. Процедура если – добавлено, просмотрев слот «дата исполнения» (и найдя его пустым) осуществляет процедуру «если – нужно», связанную с этим слотом. Процедура «если – нужно» найдет текущую дату, используя календарь в базе данных, и решит, что дата «30. 09» ближайшая к ней. Затем процедура впишет «30. 09» в слот с датой исполнения.
4. Теперь процедура если – добавлено, связанная со слотом «автор», найдет, что еще одно значение, которое нужно включить в отчет, т. е. «объем отчета» отсутствует. Слот «объем» не связан с процедурами, он ничем не может нам помочь. Однако, выше узла # 15 существует узел общей концепции отчета о продвижении работ, содержащий значение объема. Процедура использует его значение и составляет следующее сообщение: «Мэри Смит, пожалуйста, окончите отчет о продвижении работ по проекту биологическая классификация к 30. 09. Предполагаемый объем отчета равен двум страницам».
Если в какой- то момент имя Мэри Смит удалится из слота «автор», то система автоматически отправит ей сообщение, что ее отчет не требуется (поскольку процедура, если – удалено, сработает).