I am sure Clojure is great but it really shows the need for an "overview of datalog" that is not embedded in the context of a programming language with it's own syntactic choices.<p>My own humble attempt is here
<a href="https://github.com/google/mangle">https://github.com/google/mangle</a> ... I had come across datalog in Clojure and thought it is a complete nonstarter. Most people (including me) are not in a position to start using Clojure if all they want is a query capability.<p>IMHO what most people would want a datalog implementation that is very easy to integrate into their existing setup, with their existing data. Yet for extensibility it is also important to enable users to write datalog queries in it's own special syntax so one can have type checking, modules, declarations in a way that is independent of the host programming language.<p>From a teaching point of view, one does need an example database. Here is "employee department boss", with a volunteering spin:
<a href="https://github.com/google/mangle/blob/main/docs/example_volunteer_db.md">https://github.com/google/mangle/blob/main/docs/example_volu...</a><p>There is a long history of approaches to integrate querying into programming languages (eg LINQ). Trade off here between making an easy to use yet powerful query language, keeping it simple and integrating it tightly into the host language or using a DSL along clear interface.