index
feat(benchmarks): add the Datalog inversion engine to the KROWN runner
feat(kgi): recover the columns a mapping exposes instead of rejecting it
Indistinguishable subject templates, graph maps built from the same pattern and rr:column term maps with an IRI term type put values in the graph without recording which column they came from. Each used to reject the whole mapping, discarding columns that were perfectly recoverable: the KROWN named-graph scenario with five graph maps recovers p1 over a million rows. Those columns are now left out of the reconstruction, like columns a mapping never reads, and the rest is recovered. Dropping them also collapses the interchangeable triples maps into one query group, so the twenty of mappings_20_1 no longer build a twenty-way self-join.
The graph map inverter emits one GRAPH clause per distinguishable graph map instead of wrapping every pattern in the first one, which left four columns unbound and turned a million source rows into five million.
KROWN gains the AMBIGUOUS outcome for a reconstruction that is sound but misses columns the mapping reads, so the round trip is skipped instead of failing on them. Ten scenarios move there from NON_INVERTIBLE, which none now expects. A reconstructed column that is entirely NULL counts as not reconstructed, so the two engines are compared on what they recovered; souffle also needed the destination table created without the NOT NULL that LIKE copies from the source primary key. Runs measured before an abort are saved instead of being lost with the exception.
- La test bench non fare overshadowing