-
Feature Request
-
Resolution: Unresolved
-
Minor
-
None
-
None
-
None
-
Documentation (Ref Guide, User Guide, etc.)
Drools "not" operator implements a type of "negation by failure", i.e. not X() behaves as the negation of "exists" or, in other words, translates as "it is NOT asserted that ...".
However, another form of stronger negation is needed to express conditionals such as "it is asserted that NOT ..."
It should be possible, then, to assert facts both in a "positive" and "negative" way, to assert THAT and THAT NOT.
The language should also support a "neg" CE to create "negative" patterns which will match with negative facts. I.e. it should be possible to write rules such as:
when $p : Person() and Car( owner == $p ) then
// a positive, matching Car is present in the WM
when $p : Person() and neg Car( owner == $p ) then
// a negative, matching Car is present in the WM
when $p : Person() and not Car( owner == $p ) then
// neither a positive nor a negative fact exists in the WM
For a more detailed description and motivation see e.g.:
https://oxygen.informatik.tu-cottbus.de/publications/wagner/WebRules2Neg.pdf
- relates to
-
JBRULES-3614 Pluggable Belief System for the Truth Maintenance System
- Closed