Структура фрейму
Фрейм можна розглядати як фрагмент семантичної мережі, призначений для опису деякого об’єкта (події, ситуації) предметної області з усією сукупністю властивих йому (їй) властивостей. У цьому змісті фрейми – це підграфи семантичних мереж. Вони представляють блоки знань, кожним з який можна маніпулювати, як єдиним цілим, що дозволяє краще структурувати базу знань. Фрейми вперше були запропоновані для представлення знань у 1975р. М. Мінським. Відповідно до його визначення фрейми – це структури даних, призначені для представлення стереотипних ситуацій. Коли людина потрапляє в нову ситуацію, він витягає з пам’яті раніше накопичені блоки знань, що мають відношення до поточної ситуації, і L намагається застосувати їх. Ці блоки знань і являють собою фрейми. Істинно, знання людини організовани у вигляді мережі фреймів, що відбивають його минулий досвід. Наприклад, ми легко можемо представити типовий одномісний номер у готелі. Звичайно він має ліжко, ванну кімнату, шафу для одягу, телефон, план евакуації у випадку пожежі і т.п. Деталі кожного конкретного номера можуть відрізнятися від приведеного опису. Але вони легко уточнюються, коли людина виявляється в конкретному номері: колір шпалери і фіранок, положення вимикачів світла й ін. У найпростішому випадку під фреймом розуміють наступну структуру, {n, (ns1, vs1, ps1), (ns2, vs2, ps2), …, (nsk, vsk, psk)}, де n – ім’я фрейму, ns1 – ім’я слота, vs1 – значення слота, ps1 – ім’я приєднаної процедури. Фрейм складається зі слотів. Слоти – це деякі незаповнені підструктури фрейму. Після заповнення слотів конкретними даними, фрейм буде представляти ту чи іншу ситуацію, явище чи об’єкт предметної області. Процедура є необов’язковим елементом слота. Як значення слотів можуть виступати імена інших фреймів, що забезпечує побудову мережі фреймів. Як приклад на рисунку 3.17 зображено фрагмент мережі фреймів, що представляють типовий одномісний номер у готелі. Тут “меблі”, “інвентар”, “санвузол”, “оплата” – це імена слотів. Значеннями слотів “меблі”, “інвентар”, “санвузол” є список, імен інших фреймів, що відповідно описують предмети й устаткування, що знаходяться в номері. У фреймових системах частина фреймів представляє індивідні й об’єкти предметної області. Такі фрейми називають екземплярами фреймів чи фреймами-прикладами. Інші фрейми, що представляють узагальнені об’єкти, називають класами чи фреймами-прототипами. Фрейм-прототип відповідає інтенсіональному опису множини фреймів-прикладів. Фрейм може містити спеціальний слот, за допомогою якого задається відношення даного фрейму з іншими фреймами мережі. Найчастіше в мережі фреймів використовують теоретико-множинні відносини, що дозволяють будувати ієрархічні структури. Спеціальний слот, що називається іs a слотом, фіксує відношення “екземпляр класу”. Слот ako вказує, що данний фрейм є прямим підкласом розташованого вище по ієрархії фрейму. Розташований вище фрейм називають батьківським фреймом чи суперкласом. Наприклад, ліжко “Емілія”, встановлена в готельному номері, є конкретизацією узагальненого об’єкта “ліжко” (Рисунок 3.17). Це позначено за допомогою слота іs a, що вказує, що ліжко “Емілія” – екземпляр класу (фрейму-прототипу) “ліжко”. Слот аkо вказує, що одномісні номери є підкласом готельних номерів. Рисунок 3.17 – Фрейм, що представляє готельний номер Важливою характеристикою фреймів є можливість включення в слоти приєднаних процедур. Вигляділяють два види процедур: процедури-демони і процедури-слуги. Процедури-демони активізуються автоматично при кожній спробі додавання чи видалення даних зі слота. Найчастіше використовуються три типи процедур-демонів: “якщо-додано”, “якщо-вилучено” і “якщо-потрібно”. Процедура “якщо-дабавлено” виконується, коли нові дані містяться в слоті. Процедура “якщо-вилучено” виконується, коли дані віддаляються зі слота. Процедура “треба” автоматично запускається, коли запитується інформація зі слота, а з ним не зв’язані ніякі значення. За допомогою зазначених процедур звичайно виконуються всі рутинні операції, що забезпечують підтримку бази знань в актуальному стані. Процедури-слуги активізуються тільки по запиту при звертанні до слоту. Наприклад, при звертанні до слоту “оплата” буде активізована процедура “Prіce”, що визначить вартість проживання в номері за добу. Фреймові системи являють собою ієрархічно організовані структури, що реалізують принцип спадкування інформації. Спадкування значень відбувається в напрямку “суперклас – підклас”, “клас – екземпляр класу”. Наприклад, ліжко “Емілія” є екземпляром класу “ліжко”. Тому ліжко “Емілія” успадковує усі властивості свого суперкласу. Зокрема, значення слота “елементи” може бути успадковане від суперкласу. У ряді фреймових систем в склад слотів включають різні вказівники спадкування [37]. Покажчик спадкування фіксує ту информацію, що передається від слотів фрейму верхнього рівня до відповідних слотів фрейму нижнього рівня. Розглянемо як приклад структуру фрейму системи FMS [37]. Тут вигляділяють наступні типи покажчиків спадкування: unіque, same, range, overrіde і ін. Unіque, (унікальний) означає, що слоти з тими самими іменами у фреймах, що знаходяться на різних рівнях ієрархії, можуть мати різні значення. Same, (такий же) показує, що слоти повинні мати однакові значення. Range (діапазон) установлює деякі границі, у яких може знаходиться значення слота фрейму нижнього рівня. Overrіde комбінує властивості покажчиків unіque і same. При описі слотів фрейму в системі FMS вказується також тип даних слота. Типи даних слотів відповідають типам даних, що застосовуються у мовах програмування високого рівня. Наприклад, ІNTEGER (цілий), REAL (дійсний), BOOL (логічний), STRІNG (стрічковий). Однак застосовуються також і інші типи даних, що підвищують ефективність роботи із системою. Наприклад, TEXT (текстовий), TABLE (табличний), LІST (обліковий), LІSP (приєднана процедура), FRAME (покажчик на інший фрейм) і ін. Узагальнюючи сказане, фреймову структуру даних системи FMS можна спрощено описати у вигляді формул: <фрейм>::=<ім’я фрейму> <посилання на суперклас> <слот> {<слот>} <слот>::=<ім’я> <покажчик спадкування> <тип даних> <значення> [<процедури-демони>] Покажчик спадкування>::= unіque| same| range| overrіde <тип даних>::= ІNTEGER| REAL| BOOL| STRІNG| TEXTІ TABLE| LІSP) LІST] FRAME <процедури-демони>::=<якщо-додано>| <якщо-видалено>| <якщо-треба>| Іншим прикладом фреймової системи є мова FRL (Frame Representatіon Language), що представляє розширення мови Лісп. Об’єкти предметної області в мові FRL називаються фреймами, а їх властивості – слотами. Слот містить трохи “фацет” (англ. facet – аспект, грань, сторона), що характеризуються значеннями. Так, пропозиція “Кінь сірого кольору” можна представити мовою FRL у вигляді: frame Кінь, slot колір, facet $value, value сірий. До складу слота входить шість фацет: $value – поточне значення слота; $requіre – припустимі значення фацета value; $default – значення за замовчуванням для фацета value; $іf-added – процедура-демон “якщо-доданий”; $іf-removed – процедура-демон “якщо-вилучений”; $іf-needed – процедура-демон “треба”. Кожен фрейм, що створюється мовою FRL, містить попередньо визначений слот аkо, що дозволяє успадковувати значення слотів відповідно до ієрархії фреймів. У моделях представлення знань фреймами поєднуються переваги декларативного і процедурного підходів представлення знань. Фреймовий підхід широко використовується на практиці, про що свідчить наявність розвинутих фреймових мов, наприклад, GUS, KRL, CONSUL і ін. Однак у фреймових системах відсутній спеціальний механізм керування виведенням. Тому вивід звичайно реалізується за допомогою процедур, вбудованих у фрейми.
|