simple_query(Name,Brigade,"","","","") :person_brigade(Name,Brigade),
write(Name," consist in ",Brigade,";"),nl.
simple_query(Name,Brigade,"","","","") :not(person_brigade(Name,Brigade)),
write(Name," not consist in ",Brigade,";"),nl.
% Definition of birthday.
simple_query(Name,"","",Year1,When,"") :person_birthday(Name,Year2),
def_when(Year1,Year2,When),
write(Name," was born ",When," ",Year1,";"),nl.
simple_query(Name,"","",Year1,When,"") :person_birthday(Name,Year2),
not(def_when(Year1,Year2,When)),
write(Name," was not born ",When," ",Year1,";"),nl.
% Definition of defence of laboratory work by a brigade.
simple_query("",Name,"","","",Lab) :brigade_lab(Name,Lab),
write(Name," has defended ",Lab,";"),nl.
simple_query("",Name,"","","",Lab) :not(brigade_lab(Name,Lab)),
write(Name," has not defended ",Lab,";"),nl.
sentence(["Who"|S],"Who",Brigade,Sex,Year,When,Lab) :- !,
sentence(S,Brigade,Sex,Year,When,Lab).
sentence(["What","brigade"|S],"","Brigade","","","",Lab) :- !,
sentence(S,Lab).
sentence([C,N,"has"|S],"",Name,"","","",Lab) :- !,
con_brigade(C,N,Name),
sentence(["has"|S],Lab).
sentence([Name|S],Name,Brigade,Sex,Year,When,Lab) :sentence(S,Brigade,Sex,Year,When,Lab).
sentence(["is","a",Sex],"",Sex,"","","").
sentence(["is","a",Sex,"and"|S],Brigade,Sex,Year,When,Lab) :sentence(S,Brigade,_,Year,When,Lab).
sentence(["consist","in",C,N],Brigade,"","","","") :con_brigade(C,N,Brigade).
sentence(["consist","in",C,N,"and"|S],Brigade,Sex,Year,When,Lab) :con_brigade(C,N,Brigade),
sentence(S,_,Sex,Year,When,Lab).
sentence(["consist","in",C,N1,",","that","has","defended",L,W,N2],Brigade,"","","",Lab) :con_brigade(C,N1,Brigade),
con_lab(L,W,N2,Lab).
sentence(["consist","in",C,N1,",","that","has","defended",L,W,N2,"and"|S],Brigade,"","","",Lab) :con_brigade(C,N1,Brigade),
con_lab(L,W,N2,Lab).
sentence(["was","born",When,Year],"","",Year,When,"").
sentence(["was","born",When,Year,"and"|S],Brigade,Sex,Year,When,Lab) :sentence(S,Brigade,Sex,_,_,Lab).
sentence(["has","defended",L,W,N],Lab) :con_lab(L,W,N,Lab).
% Definition of an accessory the person to a brigade
person_brigade(Person,Brigade) :relation("is",Brigade,"brigade"),
relation("is",Person,X),
relation("type","person",X),
relation("person in brigade",Person,Brigade).
% Definition of a sex the person
person_sex(Person,Sex) :relation("is",Person,Sex),
relation("type","person",Sex).
% Definition of birthday the person
person_birthday(Person,Birthday) :relation("is",Person,X),
relation("type","person",X),
relation("is",Birthday,"year"),
relation("birthday",Person,Birthday).
% Definition of execution by a brigade of laboratory work
brigade_lab(Brigade,Lab) :relation("is",Brigade,"brigade"),
relation("is",Lab,"laboratory work"),
relation("defence",Brigade,Lab).
% Semantic network
relation("type","person","man").
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.