МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
Новосибирский Государственный Технический Университет
Кафедра экономической информатики
Лабораторная работа №1
«Разработка базы знаний предметной области
родственных отношений в системе логического программирования»
Вариант 5
Факультет: Бизнеса
Группа: ФБИ-71
Студенты: Габова Л.А.,
Хуторненко В.А.,
Щелконогова К.М.
Проверили: Авдеенко Т.В.,
Бакаев М.А.
Новосибирск , 2010
Цель работы
1. Получить первое представление о формально-логической модели представления знаний, реализованной в системе логического программирования.
2. Изучить синтаксис и семантику логической программы
3. Получить представление о работе простейшего интерпретатора PIE32 языка Пролог.
4. На примере простейшей предметной области родственных отношений научиться описывать факты и правила в формально-логической модели представления знаний.
План работы:
1. Построение генеалогического дерева.
2. Перевод генеалогического дерева в базу фактов.
3. Составление правил искомых родственных связей в базе знаний.
4. Примеры запросов к базе знаний и ее ответов.
Ход работы:
1. Построили генеалогическое дерево (Рисунок 1).
Рисунок 1 – Генеалогическое дерево.
2. Перевели генеалогическое дерево в базу фактов, используя следующие родственные связи:
· муж/2 ( )
· сын/2( )
· дочь/2( )
Для наглядности нарисуем каждое родственное отношение:
EdmundTudor OwenTudor
HenryVII EdmundTudor
HenryVII MargaretBeaufort
EdmundTudor CatherineOfValois
ElizabethOfYork EdwardIVOfYork
ElizabethOfYork ElizabethWoodville
HenryVIII HenryVII
HenryVIII ElizabethOfYork
Margaret HenryVII.
Margaret ElizabethOfYork
Edmund HenryVII
Edmund ElizabethOfYork
Mary HenryVII
Mary ElizabethOfYork
Arthur HenryVII
Arthur ElizabethOfYork
EdwardVI HenryVIII
EdwardVI JaneSaymour
ElizabethI HenryVIII
ElizabethI AnneBoleyn
MaryI HenryVIII
MaryI CatherineOfAragon
EdmundTudor MargaretBeaufort
OwenTudor CatherineOfValois
HenryVII ElizabethOfYork
EdwardIVOfYork ElizabethWoodville
HenryVIII JaneSeymour
HenryVIII AnneBoleyn
HenryVIII CatherineOfAragon
Перепишем все отношения в виде фактов:
son("EdmundTudor", "OwenTudor").
son("HenryVII", "EdmundTudor").
son("HenryVII", "MargaretBeaufort").
son("EdmundTudor", "CatherineOfValois").
daughter("ElizabethOfYork", "EdwardIVOfYork").
daughter("ElizabethOfYork", "ElizabethWoodville").
son("HenryVIII", "HenryVII").
son("HenryVIII", "ElizabethOfYork").
daughter("Margaret", "HenryVII").
daughter("Margaret", "ElizabethOfYork").
son("Edmund", "HenryVII").
son("Edmund", "ElizabethOfYork").
daughter("Mary", "HenryVII").
daughter("Mary", "ElizabethOfYork").
son("Arthur", "HenryVII").
son("Arthur", "ElizabethOfYork").
son("EdwardVI", "HenryVIII").
son("EdwardVI", "JaneSaymour").
daughter("ElizabethI", "HenryVIII").
daughter("ElizabethI", "AnneBoleyn").
daughter("MaryI", "HenryVIII").
daughter("MaryI", "CatherineOfAragon").
husband("EdmundTudor","MargaretBeaufort").
husband("OwenTudor","CatherineOfValois").
husband("HenryVII","ElizabethOfYork").
husband("EdwardIVOfYork","ElizabethWoodville").
husband("HenryVIII","JaneSeymour").
husband("HenryVIII","AnneBoleyn").
husband("HenryVIII","CatherineOfAragon").
Декларативный смысл фактов:
ü husband(X,Y):
X муж Y
ü son(X,Y):
X сын Y
ü daughter(X,Y):
X дочь Y
3. Составили правила для поиска родственных связей в базе знаний.
Были написаны правила для поиска следующих родственных связей:
· отец, мать, сестра, брат, сын, дочь, муж, жена;
· двоюродная сестра (кузина), двоюродный брат (кузен), дядя, тетя, племянник, племянница;
· дедушка, бабушка, прадедушка, прабабушка, внук, внучка, правнук, правнучка;
· кровные (общий предок), сводные брат и сестра, шурин, деверь, золовка, тесть, теща, зять, невестка и т.п. родственные отношения.
Для каждого родственного отношения первоначально запишем правило на естественном языке (в виде продукции Затем перепишем это же правило в синтаксисе языка ПРОЛОГ.
ü Отец:
ЕСЛИ есть такой Y который является дочерью ИЛИ сыном X И X является мужем Z ТОГДА X является отцом Y.
father(X,Y) :- (son(Y,X);daughter(Y,X)),husband(X,Z).
ü Мать:
ЕСЛИ есть такой Y который является дочерью ИЛИ сыном X И X является женой Z ТОГДА X является матерью Y.
mother(X,Y) :- (son(Y,X);daughter(Y,X)),wife(X,Z).
ü Жена
ЕСЛИ есть такой Y который является мужем X ТОГДА X является женой Y.
wife(X,Y) :- husband(Y,X).
ü Сестра:
ЕСЛИ есть такой X который является дочерью Z И Y который является дочерью ИЛИ сыном Z ТОГДА X является сестрой Y.
sister(X,Y) :- daughter(X,Z),(daughter(Y,Z);son(Y,Z)).
ü Брат:
ЕСЛИ есть такой X который является сыном Z И Y который является дочерью ИЛИ сыном Z ТОГДА X является братом Y.
brother(X,Y) :- son(X,Z),(daughter(Y,Z);son(Y,Z)).
ü Двоюродная сестра (кузина)
ЕСЛИ есть такой X который является дочерью Z И U который является братом ИЛИ сестрой Z И Y который является сыном ИЛИ дочерью U ТОГДА X является двоюродной сестрой Y.
cousinW(X,Y):- daugnter(X,Z),(sister(Z,U);brother(Z,U)),(daughter(Y,U);son(Y,U)).
ü Двоюродный брат (кузен):
ЕСЛИ есть такой X который является сыном Z И U который является братом ИЛИ сестрой Z И Y который является сыном ИЛИ дочерью U ТОГДА X является двоюродным братом Y.
cousinM(X,Y):- son(X,Z),(sister(Z,U);brother(Z,U)),(daughter(Y,U);son(Y,U)).
ü Дядя:
ЕСЛИ есть такой X который является братом Z И Z является мамой ИЛИ папой Y ТОГДА X является дядей Y.
uncle(X,Y):- brother(X,Z),(father(Z,Y);mother(Z,Y)).
ü Тётя:
ЕСЛИ есть такой X который является сестрой Z И Z является мамой ИЛИ папой Y ТОГДА X является тётей Y.
aunt(X,Y):- sister(X,Z),(father(Z,Y);mother(Z,Y)).
ü Племянник:
ЕСЛИ есть такой X который является сыном Z И Y который является сестрой ИЛИ братом Z ТОГДА X является племянником Z.
nephew(X,Y):-son(X,Z),(sister(Z,Y);brother(Z,Y)).
ü Племянница:
ЕСЛИ есть такой X который является дочерью Z И Y который является сестрой ИЛИ братом Z ТОГДА X является племянницей Z.
niece(X,Y):-daughter(X,Z),(sister(Z,Y);brother(Z,Y)).
ü Дедушка:
ЕСЛИ есть такой X который является папой Z И Z является папой ИЛИ мамой Y ТОГДА X является дедушкой Y.
grandfather(X,Y):-father(X,Z),(father(Z,Y);mother(Z,Y)).
ü Бабушка:
ЕСЛИ есть такой X который является мамой Z И Z является папой ИЛИ мамой Y ТОГДА X является бабушкой Y.
grandmother(X,Y):-mother(X,Z),(father(Z,Y);mother(Z,Y)).
ü Прадедушка:
ЕСЛИ есть такой X который является папой Z И Z является папой ИЛИ мамой U И U является папой ИЛИ мамой Y ТОГДА X является прадедушкой Y.
grandgrandfather(X,Y):-father(X,Z),(father(Z,U);mother(Z,U)),(father(U,Y);mother(U,Y)).
ü Прабабушка:
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.