I have been experimenting with something I call "path database". It is very rough, but usable. I would welcome some additional eyes and hands.
I have an index structure where you can "build an index" and then "find" things. https://github.com/mstang/pathdatabase regards, Mark On Tue, Jul 19, 2016 at 4:05 PM, Olek <aleksander.nas...@gmail.com> wrote: > Hi! > > Often through the software development I bump into structures defining > specification/manifest/configuration of some Unit > (service/process/transformation/configuration). > From my observation I've noticed the repeating pattern in software > development for consuming above. We star with a > > structure > (then go to) slurp > (then) morph to indexed structures > (for > final) retrieve (during algorithms executions) > > What bothers me is the slurp and morph steps. These always seem to be big > effort which is not particular functional from the algorithm use (these are > internal steps not produced by Business Analytics and not consumed by > Program Algorithms). It would be nice if there was a method to make slurp > and morph as one step in declarative (because it is most natural way to > express statement) manner. > > Now lets dive to example and make some assumptions. Let assume that > structure can be any tree structure. For example let say it will be XML > which can have parent node, child nodes with attributes. > > <node> > <events> > <event name="foo"/> > <event name="bar"/> > <events> > <transformations> > <transformation name="transfoo" source="fooxu" dest-event="foosa"/> > <transformation name="transfer" source="barxu" dest-event="barsa"/> > </transformations> > <node/> > > This can be for example specification of node which has declared group of > events and group of transformations. So it can easily fit in memory and is > read only once at startup. > Now it would be nice to make slurp of that structure (and it's pretty easy > in clojure - the only true language in which you express the algorithms in > terms of thoughts - only if there are built of lists ;-) ) and next get the > structure of which we could make farther retrieves. For example we could > ask for all incoming events or ask if we can expect the event of name "foo" > in that spec. Or we can ask for transformation of name "transfoo". As you > can see, to be able to ask such questions, I would have to index above > structure for given predicates. > First I thought about indexing every data. For example I make inverted > index of all terminal nodes. So I got indexes like: transformation, name, > events, event, node, source, dest-event, from which I could just ask for > (query example) #{transformation [ :name %1 ]} to get all transformation > which match the %1 argument. > Latter I noticed that in fact, Datomic does that, but the indexing and > query language would be not so easy. > > Nevertheless do you know any piece of code/software/library which allow > for such functionality? > > > > > > > > > -- > You received this message because you are subscribed to the Google > Groups "Clojure" group. > To post to this group, send email to clojure@googlegroups.com > Note that posts from new members are moderated - please be patient with > your first post. > To unsubscribe from this group, send email to > clojure+unsubscr...@googlegroups.com > For more options, visit this group at > http://groups.google.com/group/clojure?hl=en > --- > You received this message because you are subscribed to the Google Groups > "Clojure" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to clojure+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.