The current implementation of semantic optimization is standalone and not integrated with provenance capture. To let this be applied in provenance capture we need:
[x] implement lineage provenance capture for Datalog
[x] capture for conjunctive queries
[x] capture for UCQ and multi-level queries
[x] extend GProM Datalog language to support aggregation
[x] add syntax to parser and analyzer
[x] support translation
[x] extend GProM Datalog language to support linage provenance capture
[x] add construct to parser
[x] add provenance rewriter
[x] let rewriter call semantic optimization
[x] translate FDs from tables to goals
[x] adapt creation of provenance rules in semantic optimization
[x] add support to automatically derive FDs
[x] extend metadata lookup to extract FDs
currently uses keys
[x] extend property inference to infer FDs on intermediate results
[x] alternatively, add parser support for FDs and specify them as part of the input
[ ] decide which optimized version of a rule to choose:
naive method: pick rule with least body atoms
smarter method: do cost-based optimization using GProM's framework
[x] semantic optimization
[x] write code that maps fds to use rule variables
[x] fix code that checks whether FDs hold on atoms to take table names into account
The current implementation of semantic optimization is standalone and not integrated with provenance capture. To let this be applied in provenance capture we need: