Need help with datascript-tutorial?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

kristianmandrup
152 Stars 19 Forks 237 Commits 0 Opened issues

Description

Datascript and Datomic tutorial book

Services available

!
?

Need anything else?

Contributors list

# 56,102
Ruby
quasar-...
Clojure
Shell
222 commits
# 180,796
Clojure
Clojure...
React
datomic
3 commits
# 339,455
Clojure
HTML
extensi...
React
1 commit
# 6,413
Kivy
rhel
stress-...
report
1 commit
# 236,579
D
secret-...
pgp
Azure
1 commit

Datascript

Datascript is based on the Datomic DB created by Cognitect.

Datalog

Datomic's query and rules system is an extended form of Datalog. Datalog is a deductive query system, typically consisting of:

  • A database of facts
  • A set of rules for deriving new facts from existing facts
  • A query processor that, given some partial specification of a fact or rule: finds all instances of that specification implied by the database and rules i.e. all the matching facts

Data model

The data model in Datascript/Datomic is based around atomic facts called datoms. A datom is a 4-tuple consisting of:

  • Entity ID
  • Attribute
  • Value
  • Transaction ID

Example:

[                  ]
...
[ 167    :person/id       168373838          102  ]
[ 167    :person/name     "James Cameron"    102  ]
...
[ 234    :movie/id        173532083          102  ]
[ 234    :movie/title     "Die Hard"         103  ]
[ 234    :movie/year      1987               103  ]

The following query finds all entity-ids that have the attribute

:person/name
with a value of
"Ridley Scott"
:
[:find ?e
 :where
 [?e :person/name "Ridley Scott"]]

Useful resources

Learn datalog queries

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.