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

ЕСЛИ есть такой X который является мамой Z И Z является папой ИЛИ мамой U И U является папой ИЛИ мамой Y ТОГДА X является прабабушкой Y.

grandgrandmother(X,Y):-mother(X,Z),(father(Z,U);mother(Z,U)),(father(U,Y);mother(U,Y)).

ü Внук:

ЕСЛИ есть такой X который является сыном Z И Z является сыном ИЛИ дочерью Y ТОГДА X является внуком Y.

grandson(X,Y):-son(X,Z),(son(Z,Y);daughter(Z,Y)).

ü Внучка:

ЕСЛИ есть такой X который является дочерью Z И Z является сыном ИЛИ дочерью Y ТОГДА X является внучкой Y.

granddaughter(X,Y):-daughter(X,Z),(daughter(Z,Y);son(Z,Y)).

ü Правнук:

ЕСЛИ есть такой X который является сыном Z И Z является сыном ИЛИ дочерью U И U является сыном ИЛИ дочерью Y ТОГДА X является правнуком Y.

grgrandson(X,Y):-son(X,Z),(son(Z,U);daughter(Z,U)),(son(U,Y);daughter(U,Y)).

ü Правнучка:

ЕСЛИ есть такой X который является дочерью Z И Z является сыном ИЛИ дочерью U И U является сыном ИЛИ дочерью Y ТОГДА X является правнучкой Y.

grgranddaughter(X,Y):-daughter(X,Z),(son (Z,U);daughter(Z,U)),(son (U,Y);daughter(U,Y)).

ü Кровные (общий предок):

ЕСЛИ есть такой X который является сыном ИЛИ дочерью ИЛИ папой ИЛИ мамой ИЛИ сестрой ИЛИ братом ИЛИ двоюродной сестрой ИЛИ двоюродным братом ИЛИ дядей ИЛИ тётей ИЛИ внуком ИЛИ внучкой ИЛИ дедушкой ИЛИ бабушкой ИЛИ прадедушкой ИЛИ прабабушкой ИЛИ правнучкой ИЛИ правнуком Y ТОГДА X является кровным родственником Y

krovny(X,Y):-son(X,Y);daughter(X,Y);father(X,Y);mother(X,Y);sister(X,Y);brother(X,Y);

cousinW(X,Y);cousinM(X,Y);uncle(X,Y);aunt(X,Y);nephew(X,Y);niece(X,Y);grandfather(X,Y);

grandmother(X,Y);grandgrandfather(X,Y);grandgrandmother(X,Y);grandson(X,Y);granddaughter(X,Y);

grgrandson(X,Y);grgranddaughter(X,Y).

ü Сводный брат:

ЕСЛИ есть такой X который является сыном Z И F И Y который является сыном ИЛИ дочерью U И B И Z является мужем ИЛИ женой U ТОГДА X является сводным братом Y.

svodbrother(X,Y):-son(X,Z), son(X,F),(daughter(Y,U);son(Y,U)),(daughter(Y,B); son(Y,B)),(husband(Z,U);wife(Z,U)).

ü  Сводная сестра:

ЕСЛИ есть такой X который является дочерью Z И F И Y который является сыном ИЛИ дочерью U И B И Z является мужем ИЛИ женой U ТОГДА X является сводной сестрой Y.

svodsister(X,Y):-daughter(X,Z), daughter (X,F),(daughter(Y,U);son(Y,U)),(daughter(Y,B); son(Y,B)),(husband(Z,U);wife(Z,U)).

ü Шурин (брат жены):

ЕСЛИ есть такой Y который является мужем Z И X который является братом Z ТОГДА X является шурином Y.

shurin(X,Y):-husband(Y,Z),brother(X,Z).

ü Деверь (брат мужа):

ЕСЛИ есть такой Z который является мужем Y И X который является братом Z ТОГДА X является деверем Y.

dever(X,Y):-husband(Z,Y),brother(X,Z).

ü Золовка (сестра мужа):

ЕСЛИ есть такой Z который является мужем Y И X который является сестрой Z ТОГДА X является золовкой Y.

zolovka(X,Y):-husband(Z,Y),sister(X,Z).

ü Тесть (отец жены):

ЕСЛИ есть такой Y который является мужем Z И X который является папой Z ТОГДА X является тестем Y.

test(X,Y):-husband(Y,Z),father(X,Z).

ü Тёща (мать жены):

ЕСЛИ есть такой Y который является мужем Z И X который является мамой Z ТОГДА X является тёщей Y.

tescha(X,Y):-husband(Y,Z),mother(X,Z).

ü Зять:

ЕСЛИ есть такой X который является мужем Z И Z является дочерью Y ТОГДА X является зятем Y.

zyat(X,Y):-husband(X,Z),daughter(Z,Y).

ü Невестка:

ЕСЛИ есть такой Z который является мужем X И Z является сыном Y ТОГДА X является невесткой Y.

nevestka(X,Y):-husband(Z,X),son(Z,Y).

ü Свёкр (отец мужа):

ЕСЛИ есть такой X который является папой Z И Z является мужем Y ТОГДА X является свёкром Y.

svekor(X,Y):-father(X,Z),husband(Z,Y).

ü Свекровь (мать мужа):

ЕСЛИ есть такой X который является мамой Z И Z является мужем Y ТОГДА X является свекровью Y.

svekrov(X,Y):-mother(X,Z),husband(Z,Y).

4.  Примеры запросов к базе знаний и ее ответов.

ü Кто является женой Henry VIII?

ü Кто является мужем Anne Boleyn?

ü Кто является деверем Anne Boleyn?

ü Кто является сводным братом Anne Boleyn?

ü Кто является племянницей Edmund?

ü Кто является прабабушкой Mary I?

  1. Листинг разработанной базы знаний на языке ПРОЛОГ.

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").

father(X,Y):-(son(Y,X);daughter(Y,X)),husband(X,Z).

mother(X,Y):-(son(Y,X);daughter(Y,X)),wife(X,Z).

wife(X,Y):-husband(Y,X).

sister(X,Y):-daughter(X,Z),(daughter(Y,Z);son(Y,Z)).

brother(X,Y):-son(X,Z),(daughter(Y,Z);son(Y,Z)),X\=Y.

cousinW(X,Y):-daugnter(X,Z),(sister(Z,U);brother(Z,U)),(daughter(Y,U);son(Y,U)).

cousinM(X,Y):-son(X,Z),(sister(Z,U);brother(Z,U)),(daughter(Y,U);son(Y,U)).

uncle(X,Y):-brother(X,Z),(father(Z,Y);mother(Z,Y)).

aunt(X,Y):-sister(X,Z),(father(Z,Y);mother(Z,Y)).

nephew(X,Y):-son(X,Z),(sisgrandgrandmotherter(Z,Y);brother(Z,Y)).

niece(X,Y):-daughter(X,Z),(sister(Z,Y);brother(Z,Y)).

grandfather(X,Y):-father(X,Z),(father(Z,Y);mother(Z,Y)).

grandmother(X,Y):-mother(X,Z),(father(Z,Y);mother(Z,Y)).

grandgrandfather(X,Y):-father(X,Z),(father(Z,U);mother(Z,U)),(father(U,Y);mother(U,Y)).

grandgrandmother(X,Y):-mother(X,Z),(father(Z,U);mother(Z,U)),(father(U,Y);mother(U,Y)).

grandson(X,Y):-son(X,Z),(son(Z,Y);daughter(Z,Y)).

granddaughter(X,Y):-daughter(X,Z),(daughter(Z,Y);son(Z,Y)).

grgrandson(X,Y):-son(X,Z),(son(Z,U);daughter(Z,U)),(son(U,Y);daughter(U,Y)).

grgranddaughter(X,Y):-daughter(X,Z),(son (Z,U);daughter(Z,U)),(son (U,Y);daughter(U,Y)).

krovny(X,Y):-son(X,Y);daughter(X,Y);father(X,Y);mother(X,Y);sister(X,Y);brother(X,Y);

cousinW(X,Y);cousinM(X,Y);uncle(X,Y);aunt(X,Y);nephew(X,Y);niece(X,Y);grandfather(X,Y);grandmother(X,Y);grandgrandfather(X,Y);grandgrandmother(X,Y);grandson(X,Y);granddaughter(X,Y);grgrandson(X,Y);grgranddaughter(X,Y).

svodbrother(X,Y):-son(X,Z), son(X,F),(daughter(Y,U);son(Y,U)),(daughter(Y,B); son(Y,B)),(husband(Z,U);wife(Z,U)).

svodsister(X,Y):-daughter(X,Z), daughter (X,F),(daughter(Y,U);son(Y,U)),(daughter(Y,B); son(Y,B)),(husband(Z,U);wife(Z,U)).

dever(X,Y):-husband(Z,Y),brother(X,Z).

zolovka(X,Y):-husband(Z,Y),sister(X,Z).

test(X,Y):-husband(Y,Z),father(X,Z).

tescha(X,Y):-husband(Y,Z),mother(X,Z).

zyat(X,Y):-husband(X,Z),daughter(Z,Y).

nevestka(X,Y):-husband(Z,X),son(Z,Y).

svekor(X,Y):-father(X,Z),husband(Z,Y).

svekrov(X,Y):-mother(X,Z),husband(Z,Y).