gpt4 book ai didi

java - 我们如何在 Jess 规则中从终端选​​择默认值

转载 作者:太空宇宙 更新时间:2023-11-04 07:23:18 24 4
gpt4 key购买 nike

我用 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 的事实并仅搜索该事实的规则。我希望我的条目类似于 (Peter) which Peter=?x 。

最佳答案

正确的方法是 (1) 使用显式触发事实,或者 (2) 使用 defquery 而不是 defrule —— 查询很像规则,只不过您可以显式调用查询。

第一种方法看起来像

(defrule EXAMPLE::rule1
(greet ?x)
?res <- (status (name ?x))
=>
(printout t "Hello, " ?x "!" crlf)
(retract ?res))


Jess> (assert (greet Peter))
<Fact-1>
Jess> (run)
Hello, Peter!

而第二个看起来像这样:

(defquery EXAMPLE::query1
(declare (variables ?x))
?res <- (status (name ?x))))


Jess> (bind ?result (run-query* EXAMPLE::query1 Peter))
Jess> (while (?result next)
(printout t "Hello, " (?result getString ?x) crlf)
(retract (?result getObject res)))

您可以阅读有关查询的更多信息 here.

关于java - 我们如何在 Jess 规则中从终端选​​择默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18958571/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com