relation("birthday","Stud19","1978").
relation("person in brigade","Stud1","brigade 3").
relation("person in brigade","Stud2","brigade 5").
relation("person in brigade","Stud3","brigade 2").
relation("person in brigade","Stud4","brigade 6").
relation("person in brigade","Stud5","brigade 5").
relation("person in brigade","Stud6","brigade 3").
relation("person in brigade","Stud7","brigade 2").
relation("person in brigade","Stud8","brigade 1").
relation("person in brigade","Stud9","brigade 3").
relation("person in brigade","Stud10","brigade 6").
relation("person in brigade","Stud11","brigade 1").
relation("person in brigade","Stud12","brigade 1").
relation("person in brigade","Stud13","brigade 4").
relation("person in brigade","Stud14","brigade 6").
relation("person in brigade","Stud15","brigade 4").
relation("person in brigade","Stud16","brigade 2").
relation("person in brigade","Stud17","brigade 5").
relation("person in brigade","Stud18","brigade 5").
relation("person in brigade","Stud19","brigade 4").
relation("defence","brigade 1","laboratory work 1").
relation("defence","brigade 1","laboratory work 2").
relation("defence","brigade 2","laboratory work 1").
relation("defence","brigade 3","laboratory work 1").
relation("defence","brigade 4","laboratory work 1").
relation("defence","brigade 6","laboratory work 1").
% Working tools
% Conversion of string to the list of words
str_to_str_list("",[]).
str_to_str_list(S,X) :get_word(S,W,S1),
str_to_str_list(S1,X1),
X=[W|X1].
% Extract of the first word from string
get_word(S,"",S1) :frontchar(S,' ',S1),!.
get_word(S,"",S1) :frontchar(S,'?',S1),!.
get_word(S,W,S1) :frontchar(S,A,S2),
get_word(S2,B,S1),
frontchar(W,A,B).
% Has not found necessary to explain sense of following procedures
con_lab(L,W,N,LWN) :concat(L," ",T1),
concat(T1,W,T2),
concat(T2," ",T3),
concat(T3,N,LWN).
con_brigade(C,N,Name) :concat(C," ",T1),
concat(T1,N,Name).
def_sex("man","man").
def_sex("woman","woman").
def_when(Year1,Year2,"in") :Year1=Year2.
def_when(Year1,Year2,"after") :Year1<Year2.
def_when(Year1,Year2,"before") :Year1>Year2.
GOAL
makewindow(1,24,15,"",0,0,25,80),
makewindow(1,7,15,"",1,14,9,52),
write(" S E M A N T I C A N A L Y S I S "),nl,
write(" ********************************** "),nl,
field_attr(0,3,44,80),
write(" You can ask questions to a knowledge base on"),nl,
write("sublanguage of the English language. "),nl,
write("Examples of questions: "),nl,
write("Who is a man and was born before 1979? "),nl,
write("Stud12 is a man and consist in brigade 1? "),
% write("What brigade has defended laboratory work 1? "),nl,
% write("Stud8 consist in brigade 1 , that has defended lw 1?"),nl,
makewindow(3,7,7,"",10,3,14,73),
clearwindow,
readln(S),
str_to_str_list(S,SL),
sentence(SL,Who,Brigade,Sex,When,Year,Lab),
composite_query(Who,Brigade,Sex,When,Year,Lab).
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.