Subsumption permits to delete more specific tuples by more general tuples. A programmer can express this by declaring a partial-order in the form of a subsumptive clause.
Syntax
In the following, we define rule declarations in Soufflé more formally using syntax diagrams and EBNF. The syntax diagrams were produced with Bottlecaps.
Subsumptive Rule
A subsumptive rule has a dominated and a dominating head seperated by <=
and is followed by its rule body. The rule body is defined as in a standard rule. A query plan is optional for a subsumptive rule.
rule ::= atom '<=' atom ':-' disjunction '.' query_plan?