arrdem / shelving

A toolkit for building data stores.
Eclipse Public License 1.0
38 stars 2 forks source link

Query language #4

Closed arrdem closed 6 years ago

arrdem commented 6 years ago

Now that I've got a fairly stable storage layer API and an index API (#2 / #3) it'd be great shelving could offer a standardized query system as well. The question is what kind of API can I provide, and how general can it be.

Datalog is a subset of Prolog which has been implemented several times for Clojure

and I'm probably missing a few. It sorta seems to be the logical choice, since all these systems have proved that it's possible and even valuable since thanks to Datomic datalog is somewhat documented and known.

Building a layer atop core.logic as PLDB did is another option, but I've never found core.logic to be a particularly good fit for my applications. The docs aren't great, the naming scheme is unque for all it's derived from the domain prior art and eventually I always find myself wanting to consume query/search data from core.logic in normal clojure via the seq interface or something else which means there's a meaningful barrier where I give up on unification/search and do it by hand.

The scope of this ticket is choosing and implementing a query structure.

Feedback on alternative query system designs is of course welcome.