CLIPS错误:在clipspy中非法使用模块说明符



我使用clipspy。我想定义一些模块规则来断言模块事实。该规则基于来自多个模块的事实。我得到一个CLIPS错误:

非法使用模块说明符

import clips 
env = clips.Environment()
env.build("(defmodule module1)")
env.build("(defmodule module2)")
env.build("(deftemplate module1::X (slot A) (slot B))")
env.build("(deftemplate module2::Y (slot C) (slot D))")
env.build("(defrule module2::rule1 (module1::X (A ?A) (B One) => (printout t hello crlf))")
print(env.find_rule("module2::rule1)

我了解到,如果我在一个模块中定义一个规则,使用来自同一模块的事实,我不会得到错误。

env.build("(defrule module1::rule1 (X (A ?A) (B One) => (printout t hello crlf))")
print(env.find_rule("module1::rule1))

我想使用来自多个模块的事实构造一个规则。在与Jess一起工作时,我没有得到错误,但在使用clipspy时,我遇到了这个问题。

在CLIPS中,在defmodule定义中使用export和import关键字来共享模块之间的结构(《基本编程指南》第10.4节,导入和导出模块)。模式不能使用模块说明符(例如module1::X)引用另一个模块中的deftemplate。

相关内容

最新更新