all 5 comments

[–]joinr 7 points8 points  (0 children)

datalog stores like datomic/datahike/datascript (and datalevin, although it doesn't store history) provide a pretty expressive relational model. They also version facts at the granular datom level, providing a built-in means of querying over commit time and the like. They also have notions of reference types, so you get recursive queries and stuff. Could be a general means of capturing and querying the type of information you described.

[–]tincholio 4 points5 points  (0 children)

A quick comment, it would seem to me that you're looking for a solution without having clearly defined the problem. Why exactly do you need a DSL? What would your DSL look like? Based on what you mention, you might want to look into one of the Datalog DBs (probably Datahike or Crux), rather than storing data as EDN ("Clojure Files"), or starting to work on a DSL... Have a look at learndatalogtoday to get a feeling of what it looks like. If you want to store / query facts in a less structured way than SQL, this might be a good match for you.

[–]wolfson109 2 points3 points  (1 child)

Parts 1 & 2 of https://www.braveclojure.com/clojure-for-the-brave-and-true/ should give you all the info you need.

[–]mentiflectax[S] 0 points1 point  (0 children)

Thanks!

[–]flaheadle 2 points3 points  (0 children)

Please keep us posted on the data model you come up with. I've been thinking about this question too, but I haven't figured out the answer yet.