Hello,
i'm new to jess. I try to define an order with the following template:
(deftemplate encodingQualityOrder
(slot encoding)
(slot qualityRank))
Example Facts look like this:
(encodingQualityOrder
(encoding AVI)
(qualityRank 1))
(encodingQualityOrder
(encoding RM)
(qualityRank 2))
.
That means the encoding "RM" has a better quality than
encoding "AVI". Is this a reasonable way to model such
an order?
The real problem now is a rule where I try to find the
best quality for a certain device, which is capable of
playing i.e. only one encoding. Here's the simplified
template for the device:
(device
(slot encoding))
The following rule should find the best quality for the
device, that is the one with the highest qualityRank
from the encodingQualityOrder:
(defrule find-best-quality
(device
(encoding ?encoding))
(encodingQualityOrder
(encoding ?encoding)
(qualityRank ?qualityRank))
(not (encodingQualityOrder (qualityRank ?qo&:(> ?qo ?qualityRank))))
=>
(printout t "Encoding: " ?encoding crlf)
)
But the rule is not working like i expected. It is firing
only when the device really has the highest encoding
defined in my encodingQualityOrder. Otherwise it is doing
nothing.
How can i modify my rule so that it really picks out the right
encoding? What is the trick for these not-constructs ;-)
(The best solution could handle more than one device encoding.)
Hope you can help me and thanks in advance
Sven
--------------------------------------------------------------------
To unsubscribe, send the words 'unsubscribe jess-users [EMAIL PROTECTED]'
in the BODY of a message to [EMAIL PROTECTED], NOT to the list
(use your own address!) List problems? Notify [EMAIL PROTECTED]
--------------------------------------------------------------------