In order to parse, optimize, and execute, recursive queries, expressed in SQL, datalog, SPARQL, or other high level language we need first to be able to represent recursive queries in relational algebra.
The subject has been previously discussed in the dev list (see thread with title Recursive query, graph query, Datalog) where various ideas and optimizations were proposed.
In this issue, we attempt to address only the algebraic part providing the following:
- logical operator(s) for expressing recursion;
- naive physical operator(s) for the Enumerable convention;
- ability to create a recusive plan using the RelBuilder.