?- parent(X, _). %Vilka av personerna i databasen ar foraldrar X= nisse; % Vi far till svar med namn pa foraldrarna men inte barnens namn X= kalle; no
Vi kan satta ihop ett program som haller reda familjeforhallandena i en slakt genom att satta ihop fakta och klausuler t.ex
%%program for att trana pa sokande i rolog databas
%%Vi satter ihop lite fakta om slakten
parent(pam, bob).
parent(tom, bob).
parent(tom, liz).
parent(bob, ann).
parent(bob, pat).
parent(pat, jim).
female(pam).
male(tom).
male(bob).
female(liz).
female(pat).
female(ann).
male(jim).
sex(pam, feminine).
sex(tom, masculine).
sex(bob, masculine).
sex(liz, feminine).
sex(pat, feminine).
sex(ann, feminine).
sex(jim, masculine).
%For att Y skall vara barn till X maste X vara foralder till Y
offspring(Y,X) :-
parent(X,Y). %Om Y ar barn till X da ar X foralder till Y
%Om X ar foralder till Y och X ar en kvinna da ar X en mamma
mother(X,Y) :-
parent(X,Y),female(X).
%Om X ar foralder till Y och X ar en man da ar X en pappa
father(X,Y) :-
parent(X,Y), male(X).
%Om X ar foralder till Y och Y ar foralder till Z da ar X forfader till Z
grandparent(X,Z) :-
parent(X,Y),parent(Y,Z). %Om X ar forfader till Z da maste
%% X vara foralder till Y och Y foralder till Z
%Om X ar en syster till Y da har de samma foraldrar och X ar en kvinna
sister(X,Y) :-
offspring(X, Z),offspring(Y,Z), female(X).
%For at fa reda pa en foretradare till X gar det att gora rekursiva anrop tills
%ingen mer hittas
predecessor(X,Z):-
parent(X,Z).
predecessor(X,Z) :-
parent(X,Y),predecessor(Y,Z).
Det var ett exempel hur man kan koppla ihop data i en databas och lata
prolog soka igenom efter det kriterium och fragor man staller.