我有超过150个科目,每个科目都有以下信息,我想在我的deffacts中加入
> Subject: CS222
> Pre-requisite: CS111
> Units: 4
> Priority-lvl: 3
> Semester-offered: 2
> Class: A
> Schedule: 9:00am - 10:00am (Mon & Wed)
> Slots Available: 30
> Class: B
> Schedule: 9:00am - 10:00am (Tue - Thurs)
> Slots Available: 26
> Class: C
> Schedule: 12:00nn - 01:30pm (Mon - Wed)
> Slots Available: 10
我知道如何编写deffacts,但问题是,我每个Class有两个信息(显然变成了subfact),我不知道如何将这些信息转换为deffacts。
我知道我可以使用下面的信息制作4个deffacts,但我发现代码效率不高。有没有其他方法可以解释上述信息?
(Deffacts subject
(subject-information
(name CS222)
(identifier 1)
(pre-requisite CS111)
(priority-lvl 3)
(units 4)
(semester-offered 2)))
(Deffacts Ident
(ident-class
(identifier 1)
(class A)
(schedule 0900-1000MW)
(stud-avail 30)))
(Deffacts Ident
(ident-class
(identifier 1)
(class B)
(schedule 0900-1000TTH)
(stud-avail 26)))
(Deffacts Ident
(ident-class
(identifier 1)
(class C)
(schedule 1200-0130MW)
(stud-avail 10)))
答案 0 :(得分:0)
如果您担心内存消耗:150个主题和几个类几乎不会导致OutOfMemory异常。
如果你担心执行时间方面的“效率”,我不能说 - 这取决于访问这些事实的规则。是否使用两个不同的deftemplate或将其压缩为单个deftemplates更好取决于您在访问数据的规则中要做什么。通常最好避免使用列表作为属性并坚持使用关系模型,即你所拥有的。
插槽“标识符”未出现在原始数据中。我想你已经介绍了它将课堂事实与主题事实联系起来。最好使用主题名称。