72 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			72 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
|   | 
 | ||
|  | /* base file for school database. Supposed to be called from school_*.yap */ | ||
|  | 
 | ||
|  | professor_key(Key) :- | ||
|  | 	professor(Key). | ||
|  | 
 | ||
|  | professor_ability(Key,Abi) :- | ||
|  | 	abi_table(Key, AbiDist), | ||
|  | 	{ Abi = ability(Key) with p([h,m,l], AbiDist)   }. | ||
|  | 
 | ||
|  | professor_popularity(Key, Pop) :- | ||
|  | 	professor_ability(Key, Abi), | ||
|  | 	pop_table(Key,PopTable), | ||
|  | 	{ Pop = popularity(Key) with | ||
|  | 		p([h,m,l], PopTable,[Abi]) }. | ||
|  | 
 | ||
|  | registration_key(Key) :- | ||
|  | 	registration(Key, _, _). | ||
|  | 
 | ||
|  | registration_course(Key, CKey) :- | ||
|  | 	registration(Key, CKey, _). | ||
|  | 
 | ||
|  | registration_student(Key, SKey) :- | ||
|  | 	registration(Key, _, SKey). | ||
|  | 
 | ||
|  | registration_grade(Key, Grade) :- | ||
|  | 	registration(Key, CKey, SKey), | ||
|  | 	course_difficulty(CKey, Dif), | ||
|  | 	student_intelligence(SKey, Int), | ||
|  | 	grade_table(Int, Dif, Table), | ||
|  | 	{ Grade = grade(Key) with Table }. | ||
|  | 
 | ||
|  | % registration_satisfaction(r0, h) :- {}. | ||
|  | registration_satisfaction(Key, Sat) :- | ||
|  | 	registration_course(Key, CKey), | ||
|  | 	course_professor(CKey, PKey), | ||
|  | 	professor_ability(PKey, Abi), | ||
|  | 	registration_grade(Key, Grade), | ||
|  | 	satisfaction_table(Abi, Grade, Table), | ||
|  | 	{ Sat = satisfaction(Key) with Table }. | ||
|  | 
 | ||
|  | course_key(Key) :- | ||
|  | 	course(Key,_). | ||
|  | 	 | ||
|  | course_professor(Key, PKey) :- | ||
|  | 	course(Key, PKey). | ||
|  | 	 | ||
|  | course_rating(CKey, Rat) :- | ||
|  | 	setof(Sat, RKey^(registration_course(RKey,CKey), registration_satisfaction(RKey,Sat)), Sats), | ||
|  | 	{ Rat =  rating(CKey) with avg([h,m,l],Sats) }. | ||
|  | 
 | ||
|  | course_difficulty(Key, Dif) :- | ||
|  | 	dif_table(Key, Dist), | ||
|  | 	{ Dif = difficulty(Key) with p([h,m,l], Dist) }. | ||
|  | 
 | ||
|  | student_key(Key) :- | ||
|  | 	student(Key). | ||
|  | 
 | ||
|  | student_intelligence(Key, Int) :- | ||
|  | 	int_table(Key, IDist, Domain), | ||
|  | 	{ Int = intelligence(Key) with p(Domain, IDist) }. | ||
|  | 
 | ||
|  | student_ranking(Key, Rank) :- | ||
|  | 	setof(Grade, CKey^(registration_student(CKey,Key), | ||
|  | 			 registration_grade(CKey, Grade)), Grades), | ||
|  | 	{ Rank = ranking(Key) with avg([a,b,c,d],Grades) }. | ||
|  | 
 | ||
|  | :- ensure_loaded(tables). | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 |