java如何在Jess规则中从终端选择deffacts
我用Jess写了我的代码:
;;;*************
;;;* MODULES *
;;;*************
(defmodule EXAMPLE)
;;;*************
;;;* TEMPLATES *
;;;*************
(deftemplate EXAMPLE::status
(slot name)
(slot age)
)
;;;*************
;;;* FACTS *
;;;*************
(deffacts EXAMPLE::?x
(status (name Peter)
(age 24)
)
)
;;;***********************
;;;* GENERATE PATH RULES *
;;;***********************
(defrule EXAMPLE::rule1
?res <-
(status (name Peter)
(age 24)
)
=>
(printout t "Hello Peter" crlf)
(restract ?res)
)
(run)
我该如何称呼规则?从我的终端收到x
因为我想用名字找出真相?只搜索规则中的这个事实。我希望我的参赛作品是这样的(彼得),彼得=?x
# 1 楼答案
正确的方法是(1)使用显式触发器事实,或(2)使用
defquery
而不是defrule
。查询很像规则,只是可以显式调用查询第一种方法看起来像
第二个看起来像这样:
你可以阅读更多关于查询here.