student(name:PK,office,position,email,phone,supervisor) :- GraduateStudent(X1),Student(X2),Professor(X3), isa(X1,X2),advisor(X1,X3),emailAddress(X2,email), position(X2,position),office(X2,office),phone(X2,phone), personName(X3,supervisor),personName(X2,name):: identifier(X2,name),identifier(X3,supervisor). academicStaff(name:PK,office,position,email,phone) :- Faculty(X1),position(X1,position),emailAddress(X1,email), phone(X1,phone),personName(X1,name),office(X1,office):: identifier(X1,name). adminStaff(name:PK,office,position,email,phone) :- AdministrativeStaff(X1),phone(X1,phone),position(X1,position), office(X1,office),personName(X1,name),emailAddress(X1,email):: identifier(X1,name). technicalStaff(name:PK,office,email,phone) :- SystemsStaff(X1),phone(X1,phone),office(X1,office), emailAddress(X1,email),personName(X1,name):: identifier(X1,name). course(courseNumber:PK,courseTitle,instructor,area,description,prerequisite) :- Faculty(X1),Course(X2),teacherOf(X1,X2), description(X2,description),prerequisite(X2,prerequisite),workTitle(X2,courseTitle), personName(X1,instructor),crsNum(X2,courseNumber),area(X2,area):: identifier(X1,instructor),identifier(X2,courseNumber). taAssignment(courseNumber:PK,studentName) :- Student(X1),Course(X2),hasTAs(X1,X2), personName(X1,studentName),crsNum(X2,courseNumber)::identifier(X1,studentName), identifier(X2,courseNumber). areasOfInterest(name:PK,area:PK) :- Research(X2),Faculty(X1),researchInterest(X1,X2), workTitle(X2,area), personName(X1,name)::identifier(X1,name), identifier(X2,area). roles(name:PK,researchGroup:PK) :- ResearchGroup(X2),Person(X1),member(X1,X2), orgName(X2,researchGroup),personName(X1,name)::identifier(X2,researchGroup), identifier(X1,name).