在制定规则谁可以计算它之后,我如何将事实布尔值放入插槽中?

how do i put facts boolean in a slot by then after make a rule who can count it?

我想计算我的事实,而事实必须是布尔值。对于我的意图,我只需要计数为真。我的问题是,例如,如果我断言或使用 defact 在一个插槽中制作 4 个事实。工作记忆不会读取所有的事实。我尝试将另一个插槽与另一个数据(在这种情况下为名称)放在一起并且工作正常,但我不需要另一个插槽。我这样做只是为了尝试 运行 这段代码。还有其他选择吗?让我告诉你:

(deftemplate testing (slot bole)(slot otro))

(watch all)

(defquery search-by-true

  "Finds true"
(declare (variables ?ln))
(testing (bole ?ln)(otro ?ot)))

 (deffacts data

  (testing (bole TRUE)(otro josue))
  (testing (bole TRUE)(otro pedro))
  (testing (bole FALSE)(otro pablo))
  (testing (bole TRUE)(otro carlos))
)

(reset)

    (bind ?result (run-query* search-by-true TRUE))

(bind ?x 0)

  (while (?result next)

   (bind ?x (+ ?x 1))

   )
       (printout t (* ?x 0.3) crlf)

我的意图是通过使用带有 java 代码和 jess 的对象来学习这一点。我将如何使用 JCheckbox 并且这个对象是布尔值,所以这就是为什么我需要理解这一点。 如果您对我有好的建议,我会虚心接受。谢谢

如果我没理解错的话,你希望工作记忆包含类似

的内容
(testing (bole TRUE))
(testing (bole TRUE))
(testing (bole FALSE))

... 然后 运行 一些代码告诉您有 2 个“bole TRUE”事实。这在 Jess 中是不可能的:工作记忆不能包含重复的事实。如果您尝试断言一个与现有事实相同的事实,请断言 returns FALSE 并且不会对工作记忆进行任何更改。您可以使用额外的插槽来包含序列号或其他一些独特的信息。