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