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.
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.