Разработка базы знаний предметной области родственных отношений в системе логического программирования

Страницы работы

15 страниц (Word-файл)

Содержание работы

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

Новосибирский Государственный Технический Университет

Кафедра экономической информатики

nstu

Лабораторная работа №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)).

ü Прабабушка:

Похожие материалы

Информация о работе