Поэтому я хотел создать правило, которое выглядит так в псевдокоде.
IF ?subject in ?course with ?schedule is still available
OR
IF ?subject in ?course2 with ?schedule2 is still available
THEN assert ?subject
Я думал, что могу использовать связующие ограничения, такие как
(or (and (course ?course) (sched ?sched))
(and (course ?course1) (sched ?sched1)))
У меня есть следующие Deftemplate и Deffacts.
(deftemplate subject-information
(slot name)
(slot course)
(slot prerequisite)
(multislot sem-offered)
(slot priority-lvl)
(slot units)
(slot section)
(slot schedule)
(slot day))
(deffacts subject-info
(subject-information
(name CS222)
(course BSIT)
(prerequisite Math101)
(prerequisite2 CS111)
(sem-offered 2)
(priority-lvl 3)
(units 4)
(section C)
(schedule 1330-1455)
(day MW)
(add-day TTH))
(subject-information
(name CS222)
(pre-requisites CS111)
(pre-requisites2 Math101)
(course BSCS)
(sem-offered 2 3)
(priority-lvl 3)
(units 4)
(section A)
(schedule 1200-1325)
(day MW)))
У меня есть два дефекта ОДНОЙ и той же темы с разными разделами для разных курсов. У меня есть студент с курсом BSCS, я хочу, чтобы программа нашла класс для BSCS, который соответствует его расписанию, но если не найдет. Он идет и проверяет расписание другого класса.