- •1. Семантичні мережі.
- •1.1. Визначення та класифікацій семантичних мереж.
- •1.2. Семантичні мережі в пам'яті людини.
- •1.3. Трирівнева архітектура семантичних мереж.
- •1.4. Асиміляція нових знань, на основі семантичних мереж.
- •1.5. Різні способи задания семантичних мереж.
- •1.6. Логічне виведення на семантичних мережах.
- •1.7. Процедурні і розділені семантичні мережі.
- •2. Фреймові мережі.
- •2.1. Фрейми та слоти: базові поняття.
- •2.2. Конкретизація, ієрархія та наслідування фреймів.
- •2.3. Поповнення первинних описів на основі фреймових моделей.
- •0.10 * (Кількість уроків - 1)),
- •0.10 * (Кількість_уроків - 1)),
- •2.4. Мережі подібностей і відмінностей.
- •2.5. Фрейми та об'єктно-орієнтоване програмування.
2.5. Фрейми та об'єктно-орієнтоване програмування.
Поняття фрейму, яке розглядається в теорії штучного інтелекту, та поняття об'єкта (в іншій термінології - класу), тісно пов'язані між собою. Парадигма об'єктно-орієнтованого програмування випливає з об'єктно-орієнтованого сприйняття світу, що складається з великої кількості об'єктів. Вони є порівняно незалежними, але постійно взаємодіють між собою. Кожний об'єкт має певні властивості та вміє виконувати деякі функції. Можна вважати, що об'єктна модель є конкретизацією абстрактнішої фреймової моделі.
У [1] сформульовано деякі важливі визначення.
Об'єктом називається абстракція, що характеризується станом, поведінкою та ідентифікованістю; сукупності схожих об'єктів утворюють клас; терміни "екземпляр класу" та "об'єкт" рівноправні.
Стан об'єкта характеризується переліком (як правило, статичним) усіх його властивостей і поточними (як правило, динамічними) значеннями кожної з цих властивостей.
До цього можна додати, що "статичний перелік властивостей" є характеристикою всього класу, а "поточні динамічні значення" - характеристикою окремого об'єкта, або екземпляра класу. Опис окремого екземпляра на основі загального опису класу можна отримати, якщо визначити конкретні значення властивостей.
Поведінка визначається тим, як об'єкт функціонує та реагує на зовнішні події; поведінку прийнято характеризувати в термінах зміни станів об'єктів та передачі повідомлень між об'єктами; поточний стан об'єкта є сумарним результатом його поведінки.
Ідентифікованість - це така властивість об'єкта, яка відрізняє його від усіх інших об'єктів.
Важливим є те, що об'єкти слід розглядати як абстракції певних сутностей, тобто об'єкт описує властивості даної сутності, що є найважливішими з певної точки зору. При цьому для екземплярів класу спільними є всі характеристики, а не лише деякі. Точніше, спільним є перелік характеристик, а не конкретні значення; екземпляри одного класу можна розрізняти між собою саме за рахунок того, що характеристики різних екземплярів класу мають різні значення.
Об'єкти та класи мають такі найважливіші властивості [1]:
Абстрагування - виокремлення в описі класу найважливіших характеристик деякої сутності, що відрізняють її від усіх інших сутностей.
Інкапсуляція - елементи об'єкта, що визначають його властивості та поведінку, повинні бути відокремлені один від одного. Інакше кажучи, клас повідомляє про свої функціональні можливості, але приховує від зовнішнього світу особливості реалізації цих можливостей і свою внутрішню будову.
Слід відмітити, що в програмуванні термін "інкапсуляція" часто вживається у вужчому значенні, а саме: в класі можуть бути описані процедури (методи), що визначають його поведінку.
Модульність - об'єкт складається з окремих відносно самостійних модулів.
Ієрархія - об'єкти та класи є ієрархічно упорядкованими. Зокрема, вони утворюють ієрархію класів та ієрархію об'єктів. Успадкування (наслідування) пов'язане саме з цими ієрархіями, в першу чергу - з ієрархією класів.
Існує багато об'єктно-орієнтованих мов програмування, тобто мов, які безпосередньо підтримують об'єктну модель та об'єктно-орієнтовану парадигму програмування. Історично першою була мова Smalltalk. Зараз популярними є Delphi (візуальна реалізація Паскалю), С++ (стандарт де-факто в сфері об'єктно-орієнтованого програмування), Java. Також розвиваються технології об'єктно-орієнтованих баз даних [1].
Контрольні запитання.
1. Дайте неформальне визначення семантичної мережі.
2. Дайте формалізоване визначення семантичної мережі.
3. Намалюйте семантичну мережу, що описує деякий набір фактів з довільної предметної області.
4. Охарактеризуйте трирівневу архітектуру семантичних мереж.
5. Що таке концептуальний граф?
6. Який елемент семантичної мережі відповідає тріаді "об'єкт — атрибут — значення"?
7. Опишіть процес асиміляції нової інформації в рамках моделі семантичних мереж.
8. Охарактеризуйте повну і модальну асиміляцію нової інформації.
9. Охарактеризуйте відомі підходи до логічного виведення на семантичних мережах. Який з них є основним?
10. Як пов'язане логічне виведення на семантичних мережах з відношенням "Є"?
11. Опишіть механізм блокування наслідування за наявності винятків. Наведіть приклади.
12. Охарактеризуйте поняття перехресного пошуку на семантичних мережах.
14. Що таке розділені семантичні мережі?
15. Що таке процедурні семантичні мережі?
16. Охарактеризуйте визначення фрейма як структури даних для опису певного поняття.
17. Що означає мінімальність опису у визначенні фрейму, що було дано М. Мінським?
18. Яким чином можна описати об'єкт на основі фреймової моделі?
19. Яким чином описи конкретних об'єктів утворюються з описів відповідних фреймів?
20. Опишіть схему поповнення первинних описів на основі фреймових моделей.
21. Що таке приєднана процедура?
22. Що таке мережі подібностей і відмінностей? Опишіть їх можливі застосування.
23. У чому полягає зв'язок між семантичними мережами і фреймами?
24. Що таке сценарій?
25. Опишіть послідовність подій з деякої предметної області у вигляді сценарію, що залежить від ролей і змінних.
26. Поясніть зв'язок між фреймовими моделями та об'єктно-орієнтованими моделюванням і програмуванням.
27. Дайте визначення об'єкта та класу за Г. Бучем.
28. Перелічіть та охарактеризуйте основні властивості об'єктів і класів.