我正在使用[family ontology] [1]来测试Jess规则。除非使用Jess内置函数操作数据,否则一切正常最小和最大我设计了以下规则:
(defrule print_people_min_age
(object (https://wiki.csc.calpoly.edu/OntologyTutorial/family_example.owl#age ?a))
=>
(printout t "Min age " (min ?a) crlf))
规则编译得很好,但我没有得到所需的输出。它输出了本体中每个人的年龄。我试图将min函数放在LHS中但它会导致错误。
答案 0 :(得分:1)
函数(min <numeric-expresion>+)
和(max <numeric-expresion>+)
意味着应用于许多参数 - 您只用一个参数调用它。该规则针对每个对象触发一次,并且该单个年龄的最小值是 - 该年龄。
此规则说明了如何找到最低要求:
(defrule print_people_min_age
(object (https://wiki.csc.calpoly.edu/OntologyTutorial/family_example.owl#age ?a1))
(not (object (https://wiki.csc.calpoly.edu/OntologyTutorial/family_example.owl#age ?a2&:(< ?a2 ?a1))))
=>
(printout t "Min age " ?a1 crlf))