Hi,

No, there's no better solution I'm afraid.

For clean "monotonic" rules the rule engine should deal changes in the data automatically.

However, the noValue builtin is intrinsically non-monotonic and depends entirely on the state of the database at the exact time it fires and there's no support for rolling back such non-monotonic rules. In retrospect it would have been better to develop a separate rule engine for these sort of state-dependent rules rather than bolt them on top of an engine not designed for them. But that's water under the bridge.

Dave

On 03/12/2020 17:34, Jenson Joseph wrote:
Hi,

I'm using a General Rule Reasoner with forward rules and forwardRETE
engine. I am wondering if there is a way to invalidate/rollback the triples
of a rule that uses the 'noValue' builtin when a triple is
introduced invalidating it. It appears to do this for regular rule items,
eg. if an object is no longer an rdf:type a rule requiring it could be
rolled back.

The question is does the same happen for noValue rule items.Currently my
method around this is to look for invalid instances and use the 'remove'
builtin to remove and roll them back but that needs to be done exhaustively
for each 'noValue' instance. If there were a better solution for that that
would be preferable.

Thanks

Reply via email to