Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
AlgStr / Библиотека / ЛЕКЦИИ / POSIBNIK / ПРОГР НА ПРОЛОГЕ.doc
Скачиваний:
42
Добавлен:
23.03.2015
Размер:
669.7 Кб
Скачать

4. Подання знань

4.1. Процес подання знань

Використання мови ПРОЛОГ для подання знань про предметну область розподіляється на ряд етапів.

1. Фахівець вивчає предметну область з метою з'ясувати усі значимі сутності й важливі відношення між сутностями предметної області, наприклад (рис 5).

чоловік-або-жінкаІван Марія

батьки

брат-чи-сестра Петро Катерина Павло

Рис. 5. Приклад відношень предметної області

2. Програміст вибирає символічні позначення для подання кожної сутності й кожного відношення предметної області, наприклад:

DOMAINS

член_родини = symbol

DATABASE

батьки (член_родини, член_родини)

PREDICATES

чоловік_або_жінка (член_родини, член_родини)

брат_чи_сестра(член_родини, член_родини)

Знання про предметну область можуть бути двох видів: фактуальні та концептуальні.

Фактуальні знання містять інформацію про конкретні екземпляри відношень, що існують у предметній області. Вони описуються в розділі DATABASE. Для нашого прикладу такими знаннями слугують конкретні екземпляри відношення “батьки”.

Концептуальні знання містять узагальнені знання про предметну область і метазнання (знання про знання). Ці описи мають на меті подати структуру, властивості й поводження класів об'єктів предметної області. При цьому мається на увазі, що такий опис, складений для класу, буде справедливий для будь-якого об'єкта цього класу. Ці знання описуються в розділі PREDICATES. Для нашого прикладу такими знаннями є відношення “чоловік-або-жінка” і “брат_чи_сестра”. У базі даних не існує конкретних екземплярів цих відношень, але вони можуть бути виведені з правил для відношень “чоловік-або-жінка” та “брат_чи_сестра” і конкретних екземплярів відношення “батьки”.

3. Фахівець визначає кожне відношення семантично, а також визначає конкретні реалізації кожного екземпляра відношення предметної області (рис. 5).

4) Програміст аксіоматично визначає кожне відношення за допомогою фраз ПРОЛОГу (у розділі CLAUSES), наприклад:

CLAUSES

/* Фактуальные знання */

батьки(іван, петро).

батьки(іван, катерина).

батьки(іван, павло).

батьки(марія, петро).

батьки(марія, катерина).

батьки(марія, павло).

/* Концептуальні знання */

чоловік-або-жінка (X,Y):-

батько(X,Z),

батько(Y,Z).

/* Чоловіками будемо вважати тих, хто має загальних дітей */

брат_чи_сестра(X,Y):-

батько(Z,X),

батько(Z,Y).

/* братами чи сестрами є ті члени родини, що мають загальних батьків */

4.2. Способи подання бази знань

Існує декілька способів подання бази знань засобами мови ПРОЛОГ. Розглянемо їх.

4.2.1. Представлення цілісних інформаційних елементів у вигляді фактів

Розглянемо базу даних про службовців деякої установи.

/* Ім'я Відділ Посада Оклад */

сл1 (іванов, 100, оператор, 200).

сл1 (петров, 200, керівник, 700).

сл1 (сидоров, 200, менеджер, 715).

Щоб надрукувати всіх службовців відділу 200 можна у вікні Dialig поставити таку ціль “сл1 (Ім'я, 200, Посада, _ )”.

Зверніть увагу, що на місці окладу поставлено анонімну змінну. Це означає, що в даному запиті нас не цікавить оклад. Але для дотримання синтаксису його наявність у запиті необхідна.