Foundations of deductive databases and logic programming
Decidable optimization problems for database logic programs
STOC '88 Proceedings of the twentieth annual ACM symposium on Theory of computing
Bottom-up beats top-down for datalog
PODS '89 Proceedings of the eighth ACM SIGACT-SIGMOD-SIGART symposium on Principles of database systems
Logic programming and databases
Logic programming and databases
Query evaluation in recursive databases: bottom-up and top-down reconciled
Data & Knowledge Engineering
Journal of Logic Programming
Journal of Computer and System Sciences
Semantic query optimization in Datalog programs (extended abstract)
PODS '95 Proceedings of the fourteenth ACM SIGACT-SIGMOD-SIGART symposium on Principles of database systems
Tabled evaluation with delaying for general logic programs
Journal of the ACM (JACM)
Demand-driven pointer analysis
Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation
Foundations of Databases: The Logical Level
Foundations of Databases: The Logical Level
OLD Resolution with Tabulation
Proceedings of the Third International Conference on Logic Programming
DATALOG with Constraints: A Foundation for Trust Management Languages
PADL '03 Proceedings of the 5th International Symposium on Practical Aspects of Declarative Languages
Binder, a Logic-Based Security Language
SP '02 Proceedings of the 2002 IEEE Symposium on Security and Privacy
Declarative information extraction using datalog with embedded extraction predicates
VLDB '07 Proceedings of the 33rd international conference on Very large data bases
Adding magic to an optimising datalog compiler
Proceedings of the 2008 ACM SIGMOD international conference on Management of data
OpenRuleBench: an analysis of the performance of rule engines
Proceedings of the 18th international conference on World wide web
From datalog rules to efficient programs with time and space guarantees
ACM Transactions on Programming Languages and Systems (TOPLAS)
Communications of the ACM - Scratch Programming for All
Graph queries through datalog optimizations
Proceedings of the 12th international ACM SIGPLAN symposium on Principles and practice of declarative programming
Precise complexity analysis for efficient datalog queries
Proceedings of the 12th international ACM SIGPLAN symposium on Principles and practice of declarative programming
Using datalog with binary decision diagrams for program analysis
APLAS'05 Proceedings of the Third Asian conference on Programming Languages and Systems
CodeQuest: scalable source code queries with datalog
ECOOP'06 Proceedings of the 20th European conference on Object-Oriented Programming
LogicBlox, platform and language: a tutorial
Datalog 2.0'12 Proceedings of the Second international conference on Datalog in Academia and Industry
Hi-index | 0.00 |
Given a set of Datalog rules, facts, and a query, answers to the query can be inferred bottom-up starting with the facts or top-down starting with the query. The dominant strategies to improve the performance of answering queries are reusing answers to subqueries for top-down methods, and transforming rules based on demand from the query, such as the well-known magic sets transformation, for bottom-up methods. However, the performance of these strategies vary drastically, and the most effective method has remained unknown. This paper describes precise time and space complexity analysis for efficient implementation of Datalog queries using subsumptive tabling, a top-down evaluation method with more reuse of answers than the dominant tabling strategy, and shows that subsumptive tabling beats bottom-up evaluation of rules after magic sets transformation in both time and space complexities. It also describes subsumptive demand transformation, a novel method for transforming the rules so that bottom-up evaluation of the transformed rules mimics subsumptive tabling; we show that the time complexity of bottom-up evaluation after this transformation is equal to the the time complexity of top-down evaluation with subsumptive tabling. The paper further describes subsumption optimization, an optimization to increase the use of subsumption in subsumptive methods, and shows its application in the derivation of a well-known demand-driven pointer analysis algorithm. We support our analyses and comparisons through experiments with applications in ontology queries and program analysis.