ClaraEAV is a thin layer over Clara-Rules API that simplifies working with EAV triplets, similar to Triplestores.
The main benefit of EAV triplets over Clara's default n-tuples (arbitrary records) is that updates (equivalent to a retraction and an insertion) are local to the attribute (EAV triplet). Updating an n-tuple requires retraction and re-insertion of the whole tuple. The downside is extra joins are needed to build back an entity from it's constituent EAVs.
ClaraEAV releases are on Clojars:
You should be familiar with Clara Rules before using ClaraEAV. See the documentation on Cljdoc:
(ns sample
(:require [clara.rules :as r]
[clara-eav.rules :as er]))
(er/defquery todo-q [:?e]
[?todo <- er/entity :from [[?e]]])
(er/defsession session
'sample)
(def tx
#:todo{:db/id :new
:text "..."
:done false})
(-> session
(er/upsert tx)
(r/fire-rules)
(r/query todo-q :?e :new))
; ({:?e :new, :?todo #:todo{:db/id :new, :text "...", :done false}})
Can you improve this documentation?Edit on GitHub
cljdoc is a website building & hosting documentation for Clojure/Script libraries
× close