0

我设计了以下 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.
4

0 回答 0