Generally I know there is no guarantee in which order rules are executed. However, how exactly is this the case in hybrid mode?

Let's say one forward rule is executed, are all following backward rules executed before another forward rule is executed, or is this too unpredicatable?

I'd like to know, because I don't know how to avoid using "noValue" for my rules. I am checking, if something is invalid, so the absence of an "invalid" statement should automatically imply that it is valid.

When starting the reasoner of course noValue would always be true, therefore I'd like to know if it is safe to use the "isChecked" statment as I did in the example below, or could "noValue" still mean, that there was no invalidity check yet?

[rule1:
       (?x :hasY ?y)
       (?y :isChecked ?checked)
       noValue(?y, :isInvalid)

       ...

        ->
       ...
]

[rule2:
        (?x :hasY ?y)
        ....
        ->
        (?y :isChecked "true")

        [rule3:
            (?y :isInvalid "true")
            <-
            ...
        ]
        [rule4:
            (?y :isInvalid "true")
            <-
            ...
        ]
]

Reply via email to