我有一个名为“人”的模板,该模板有眼睛、手、 body 和很多其他插槽。但这些插槽中的每一个都是其他模板。
那么如何为其他模板类型的模板定义插槽?
以及如何定义事实?
这是我主要内容的一个示例:
(deftemplate Eyes
(slot colorOfEye (type STRING))
(slot ShapeOfEye (type STRING)))
(deftemplate Person
(slot eye (type Eyes))
)
(deffacts People
(Person (eye ....))
)
(reset)
定义 Person 模板不是这样工作的,我不知道如何定义事实
谢谢
最佳答案
您必须将它们定义为单独的模板。然后,您可以在主要事实中存储“事实ID”或“子事实”的其他标识符,然后使用该值将主要事实模式与“子事实”模式连接起来:
(defrule blue-eyed-person
(person (name ?name) (eyes ?eyes))
?eyes <- (eyes (color blue))
=>
(printout t ?name " has blue eyes." crlf))
或者另一种选择
(defrule blue-eyed-person
(person (name ?name) (eyes ?eyes))
(eyes (id ?eyes) (color blue))
=>
(printout t ?name " has blue eyes." crlf))
你可能会说,首先要创造事实
(bind ?eyes (assert (eyes (color blue))))
(assert (person (name Fred) (eyes ?eyes)))
关于java - 如何在jess中定义另一种模板类型的槽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10323024/