Avi Drucker / Jun 06 2021
Remix of Clojure by Nextjournal
Asami Demo 001
Links: https://clojars.org/org.clojars.quoll/asami
https://cljdoc.org/d/org.clojars.quoll/asami/0.4.9/doc/introduction-to-asami
https://dev.to/quoll/asami-3fi7
https://github.com/threatgrid/asami
https://github.com/dakrone/cheshire
https://bauerspace.com/library-cheshire/
{:deps {org.clojure/clojure {:mvn/version "1.10.1"}
;; complient is used for autocompletion
;; add your libs here (and restart the runtime to pick up changes)
compliment/compliment {:mvn/version "0.3.9"}
org.clojars.quoll/asami {:mvn/version "2.0.5"}
;; NOTE: "cheshire/cheshire" as written on Clojars did not work here in this context... Question: Why?
cheshire {:mvn/version "5.10.0"}
}}
deps.edn
Extensible Data Notation
{:hello (clojure-version)}
0.1s
Clojure
Import the necessary libaries
(require [asami.core :as d])
(require [cheshire.core :as json])
11.8s
Clojure
(def conn (d/connect "asami:local://tmpdata"))
(def d (json/parse-string (slurp "/Users/pgearon/tmp/data/cb.json")))
0.3s
Clojure
(count d)
Clojure
(first d)
Clojure
(def tx (d/transact conn {:tx-data d}))
Clojure
(count (:tx-data tx))
Clojure
Heading
(def db (d/db conn))
(d/q [:find (count ?e) . :where [?e :tg/entity true]] db)
(d/q [:find (count ?a) . :where [?e ?a ?v]] db)
(d/q [:find (count ?a) . :where [?e ?a ?v]] conn)
Clojure
(pprint (d/q [:find [?a ...] :where [?e ?a ?v]] db))
(d/q [:find [?v ...] :where [?e "frame" ?v]] db)
(->> (d/q [:find [?v ...] :where [?e "frame" ?v]] db)
(take 2)
(map (d/entity db %))
pprint)
Clojure
(def bundle-dir (io/file "/Users/pgearon/dev/iroh-engine/resources/data/bundle"))
(def bundles (map (comp json/parse-stream io/reader) (.listFiles bundle-dir)))
(def tx2 (d/transact conn {:tx-data bundles}))
(count (:tx-data tx2))
Clojure
(def db2 (d/db conn))
(d/q [:find (count ?e) . :where [?e :tg/entity true]] db2)
(d/q [:find (count ?a) . :where [?e ?a ?v]] db2)
Clojure