使用Jess规则查找复杂变量绑定中的最小值

时间:2015-04-16 15:45:25

标签: java rules jess

我设计了以下Jess规则来查找基于本体中特定模式构建的温度观测值的最小值:

(defrule TemperatureMinObservation
(object 
    (is-a http://..#ObservationValue)
    (OBJECT ?ov)
    (http://..#hasDataValue ?a1)
) 
(not 
    (object 
        (http://..#hasDataValue ?a2&:(< ?a2 ?a1))))
(object (is-a http://..#SensorOutput) 
    (OBJECT ?so) 
    (http://..#hasValue ?ov))
(object (is-a http://..#Observation)
    (OBJECT ?o)
    (http://..#observationResult ?so)
    (http://..#qualityOfObservation ?qo&:(eq (instance-name ?qo) 
        (instance-name http://..#Temperature)))
)
=>
(printout t "Temperature minimal observation is " (instance-name ?o) " with value " ?a1 crlf))

规则编译并运行良好但未能提供所需的结果:它不会给出温度观测的最小值,而是来自本体中存在的所有观测值。

根据评论的建议,非CE中包含的限制如下:

(not 
    (object 
        (is-a http://..#ObservationValue)
        (OBJECT ?ov)
        (http://..#hasDataValue ?a2&:(< ?a2 ?a1))))

运行该修改的规则导致打印温度观察值和相应的值如下:

Temperature minimal observation is http://..#oo2805 with value 24.094999313354492
Temperature minimal observation is http://..#oo2809 with value 21.75
Temperature minimal observation is http://..#oo2904 with value 9.937999725341797 etc.

0 个答案:

没有答案