It's a shame that there doesn't seem to be any decent open-source implementation of Datalog. If you go for full Prolog instead of Datalog, there are several (Scryer Prolog being my personal favourite).
1. Datomic - While not open-source, it has an open-source version called Datomic Free, which is a distributed database designed to enable scalable, flexible, and intelligent data storage and queries. Datomic's query language is closely inspired by Datalog.
2. DataScript - An open-source in-memory database and query engine for Clojure, ClojureScript, and JavaScript that is heavily influenced by Datalog and Datomic.
3. Crux (now XTDB) - A bitemporal database with Datalog-inspired querying capabilities. It is designed for efficient querying of historical data and offers ACID transactions.
4. Racket's miniKanren - While not strictly a database, miniKanren is an open-source logic programming extension to the Racket language, which is inspired by Datalog and can be used to manipulate and query data in a manner similar to Prolog.
5. LogicBlox - An open-source platform that combines a database system, a Datalog-based modeling language, and application server facilities. It allows developers to build complex, data-intensive applications.
6. Soufflé - A Datalog-inspired language that is designed for static analysis problems. It can be viewed as a database query language with a focus on performance, allowing for parallel execution of queries.
7. Dedalus - A Datalog-like temporal logic language used to express complex distributed systems. It is primarily a research tool but has informed the design of other Datalog-inspired systems.
8. Flora-2 - An open-source object-oriented knowledge representation and reasoning system that integrates a variant of Datalog with objects and frames.
Top 3 are from the Clojure ecosystem. Additionnaly in this same space there is Datalevin & Datahike among many others
Is LogicBlox open-source now? I encountered it on a project several years ago and at that point it was very much closed/commercial.
Now the website isn't even loading... has the project been shuttered? I know LogicBlox was acquired by Predictix a long time ago, and recently Infor acquired Predictix. Hoping the project is still a going concern, there was some very cool tech in there.
LogicBlox and Predicix merged. Predictix was just a company created solely to be a customer of LogicBlox. In the end it couldn’t survive on its own. Infor acquired LogicBlox and then reneged on some agreements, leading to a mass exodus. Infor made zero effort to sell LogicBlox technology or solutions, and then essentially threw their hundreds of millions away. It may never see the light of day again.
Cozo is very attractive. I just wish there was a native Rust DSL API for it, so it could be embedded in Rust programs without using datalog queries in strings.
the thing is written in Rust. but does not expose a Rust query API, you have to query it through Datalog queries in strings; what you shared there just builds those strings from python.. it'd be nice to have a directly native API, with horne clauses constructed in Rust.
Not only is the join algorithm patented, but my understanding is the original authors of it can't even use it, because the LogicBlox IP was acquired but the people moved on.
But some have since gone on to create new stuff @ RelationalAI
CodeQL is another datalog with the domain of code analysis as its use case. Too bad you cannot create a custom fact database with CodeQL. Otherwise, the implementation of CodeQL is pretty advanced and efficient.
Souffle deserves a high ranking. It really is a nice datalog. If only field reference was possible, instead of excessive tuple pattern matching. (Though, one could write a preprocessor for it, it is just syntax).
Differential datalog is also nice, if you have the usecase.
ErgoAI is as "an enterprise-level extension of the Flora-2 system" which was recently open-sourced: https://github.com/ErgoAI . It seems to be well documented.
Also GDL and its variants, but that is more of a domain-specific language for game descriptions and general game-playing runtimes. Still, they refer to Datalog as its basis.
#1 is wrong. Datomic Free is not open source, either. The Apache License they mention applies only to the binaries, which is confusing, if not actually misleading.
Would folks please stop publishing nonsense about simple relational algebra implementations claiming they are Datalog, even though there is no recursion.
This is like seeing an article about how to implement context free parsing and finding one about implementing regular expressions with DFAs.
Mangle https://github.com/google/mangle is an open-source implementation in golang, it was an explicit goal to make it easy to learn. Meaning: it is easy to recognize the pure datalog part, the syntax is following the good old course material.