| TerminusDB CTO here. Echoing what triska said, CLP(ℤ) and friends are some of the most under-appreciated aspects of prolog implementations. I'm amazed that programmers still don't have access to CLP when trying to do scheduling and planning solutions. As an example in practice, what if you want to know about a transaction in which a number of entities transitively had holdings in one of the beneficiaries of the transaction at that particular time. The date window is not known, and the date windows are important in the ownership chain as well as the transactions that are being undertaken. With CLP(FD) you can ask for a window of time, and the solution will zoom in on an appropriate time window which exists for the entire chain and match the time of the transaction. Now try to do this query in SQL. It's almost impossibly hard. I can't wait until I have the time to implement constraint variables for TerminusDB, but at the minute we are still working on more prosaic features. Aside from that there are very interesting program correctness and optimisation systems which are based on prolog (usually a datalog). For instance Soufflé: https://souffle-lang.github.io |