📝Datomic syntax
- tags
s
[:find ... :in ... :where ...]
s
[:find ... :in $ % ?scalar [?descructuring1 ?descructuring2] [?each ...] ;; ... is not omission [[?rel-from ?rel-to]] :where ...]
[?e :attr ?v]
simple match[?e :attr ?v ?tx]
match transaction (fourth element)[(< ?v1 ?v2)]
predicate[(func ?v1) ?res]
transformation.func
can be any clojure or host function (e.g., Java one)(rule ?v1 ?v2)
rule invocation. note missing square brackets
- rules are passed in as
%
argument %
is an array of rules, where each rule has the following form_
[(name ?param1 ?param2) ;; rule head [?param1 :attr ?param2] ;; rule body ]
- the body of the rule can use all the same form as [where | from Datalog]
- if there are multiple rules with the same name, they act as OR. they will be tried in order
Backlinks
- 📝 Datomic