logoalt Hacker News

thesz06/16/20251 replyview on HN

They use triples as triplets can represent any n-tuple facts.

E.g., if you have a fact id=(a,b,c,d), you can record triples (id, 1, a), (id, 2, b), (id, 3, c) and (id, 4, d) and reconstruct original fact.

Look at it as columnar storage in databases.

Then, if your query only needs a third value from a 4-tuple facts, you can get only those, ignoring first, second and fourth values. This is what columnar storage engines do.

In fact, I read that one of most efficient datalog engines use relational query execution under the hood.

Take a look here: https://github.com/philzook58/awesome-egraphs

The paper you'll most probably find interesting is "Better Together: Unifying Datalog and Equality Saturation," but there are many others interesting things there.


Replies

deosjr06/16/2025

Cheers, this is super useful. I will have to do some reading. Being able to build up n-ary predicates using triples that way makes a lot of sense.