Relax rule validation to allow unanswerable but coherent rules #6801
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What is the goal of this PR?
We allow rules to be written in a way that is semantically sensible in the schema, but may not produce any answers (specifically, if
when
types can't have any instances because they are abstract).We therefore match the current behaviour of
match
queries:match $r isa relation;
does not throw any exceptions even if there are no concrete subtypes ofrelation
. As a result, after this change, it will be possible to write rules that will never trigger any inferences, since never match any concrete types.This change allows writing and sharing 'general' rules that work over an abstract schema, only to be specialised at a later part of the development cycle.
Note that a rule
then
must still be written using concrete, insertable types.What are the changes implemented in this PR?
We relax rule validation to log a server-side warning if the rule is not answerable, but it is coherent (eg. it makes sense in the schema).