JessTab:寻找家庭本体中最年轻的人

时间:2014-12-14 12:26:55

标签: protege jess

我正在使用[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中但它会导致错误。

[1]:家庭本体论https://wiki.csc.calpoly.edu/OntologyTutorial/attachment/wiki/AddingRuleWithJessTab/family_example_for_rules.owl

1 个答案:

答案 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))