Jess规则编写与Rete算法解析
1. Jess规则与查询基础
Jess允许我们根据工作内存的内容定义规则以采取行动,同时也能编写查询来对其进行程序性调查。规则和查询都可使用约束(对事实槽数据的条件)和条件元素(事实之间的关系)来表达对工作内存元素的详细要求。
1.1 查询结果处理
查询结果通过 (while (?it hasNext) ...(call ?it next)) 控制结构来遍历。每个结果是一个 jess.Token 对象,它是 jess.Fact 对象的集合,每个 Token 代表查询的一个匹配。通过调用 jess.Token 的 fact() 方法可获取其中的 jess.Fact 对象,由于每个匹配开始都有一个额外的查询触发事实,所以 fact() 的参数为1而非0。获取正确的事实后,可使用 fact-slot-value 函数提取 name 槽的内容。
1.2 变量声明
查询中会出现两种变量:内部变量和外部变量。Jess默认查询中的所有变量都是内部变量,若有外部变量,需使用以下语法显式声明:
(declare (variables ?x ?y ...))
使用 run-query
超级会员免费看
订阅专栏 解锁全文
961

被折叠的 条评论
为什么被折叠?



