This page is not created by, affiliated with, or supported by Slack Technologies, Inc.

## 2021-02-08

## Channels

- # announcements (50)
- # asami (19)
- # babashka (28)
- # beginners (68)
- # calva (34)
- # cider (11)
- # cljdoc (24)
- # clojure (148)
- # clojure-australia (1)
- # clojure-brasil (6)
- # clojure-europe (48)
- # clojure-france (13)
- # clojure-germany (4)
- # clojure-italy (6)
- # clojure-nl (19)
- # clojure-uk (22)
- # clojurescript (36)
- # conjure (3)
- # cursive (10)
- # data-science (1)
- # datascript (3)
- # datomic (12)
- # etaoin (3)
- # events (3)
- # fulcro (33)
- # graalvm (7)
- # honeysql (4)
- # jobs (4)
- # jobs-discuss (11)
- # kaocha (1)
- # keechma (4)
- # luminus (1)
- # malli (10)
- # membrane (8)
- # off-topic (34)
- # pathom (35)
- # pedestal (1)
- # re-frame (15)
- # releases (1)
- # remote-jobs (1)
- # reveal (41)
- # shadow-cljs (42)
- # startup-in-a-month (2)
- # vim (11)

I’m going offline for a week. Before I left I wanted to provide some descriptions of the structure of Asami, and some historical context of the architectural choices. I’m not done yet, but you can find links to the posts on the https://github.com/threatgrid/asami/wiki/History-of-Asami.

This looks great… thanks! I think I noticed a small typo in the first post that confused me: https://dev.to/quoll/asami-7ll > It turns out that these 3 orderings allow someone to find all matching statements for any given group of subject, predicate, and object. Interestingly, the remaining 3 possible orderings also permit this. Shouldn’t that be “these 6 orderings”? 3 would imply there are no remaining 3. again many thanks 🙇

I just read this and it says what I meant to say. I tweaked the sentence a little, in case that might help.

- `Subject, Predicate, Object`

- `Predicate, Object, Subject`

- `Object, Subject Predicate`

There are 6 possible orderings (calculated as 3! or 3 factorial). It turns out that the 3 orderings shown here allow someone to find all matching statements for any given group of subject, predicate, and object. Interestingly, the remaining 3 possible orderings also permit this. The two groups of orderings are distinct, in that any group that tried to contain ordering from more than one group would need more than 3 indices to be able to fulfill every possible query.

Not shown in the post are the other 3:
- `object,predicate,subject`

- `predicate,subject,object`

- `subject,object,predicate`

ok that reads better thanks. I think I understood what you were saying, as I read a paper on this subject a few years back. Essentially you don’t need full coverage of all index permutations, as the two groups are ultimately equivalent.

But when you get to 4 values, you have 4 groups that are equivalent, and each group is 6 in size

:thumbsup:

I didn’t mean to drag you back online though! Sorry about that 🙂

Fortunately, a few of the indexes are almost never used, since each value has a different use. So Asami doesn’t use all 6

@quoll This is very cool! Thanks for taking the time to write it up. 🙂