{"id":19526492,"url":"https://github.com/philzook58/duckegg","last_synced_at":"2025-04-26T10:31:15.025Z","repository":{"id":141524749,"uuid":"541745181","full_name":"philzook58/duckegg","owner":"philzook58","description":"An experiment in using DuckDB for a datalog / egg","archived":false,"fork":false,"pushed_at":"2023-10-11T20:15:01.000Z","size":196,"stargazers_count":25,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-04-04T11:36:53.656Z","etag":null,"topics":["datalog","egg","egraph","sql"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/philzook58.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2022-09-26T19:12:47.000Z","updated_at":"2024-10-24T03:59:02.000Z","dependencies_parsed_at":"2023-10-12T02:52:04.390Z","dependency_job_id":null,"html_url":"https://github.com/philzook58/duckegg","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/philzook58%2Fduckegg","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/philzook58%2Fduckegg/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/philzook58%2Fduckegg/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/philzook58%2Fduckegg/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/philzook58","download_url":"https://codeload.github.com/philzook58/duckegg/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250972748,"owners_count":21516419,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["datalog","egg","egraph","sql"],"created_at":"2024-11-11T01:10:06.189Z","updated_at":"2025-04-26T10:31:14.746Z","avatar_url":"https://github.com/philzook58.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"# duckegg\n\n[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](http://colab.research.google.com/github/philzook58/duckegg/blob/master)\n\nDuckegg is an embedded python datalog implementation built around duckdb to supply it's core functionality. Duckdb is making waves as a performant, embedded, easy-to-deploy OLAP database\n\nBlog post here \u003chttps://www.philipzucker.com/duckegg-post/\u003e\n\nReally duckegg is a designed to be a relational egglog. Egraphs are a data structure for performing nodestructive term rewriting and equational reasoning. This graph can be represented and queried as tables (each enode becomes a row in the corresponding table of it's symbol). The various rebuilding operation can also be represented as SQL operations. The hope basically is that duckdb is so good that the translation cost into SQL is worth it.\n\nYihong Zhang previously had the idea of building a [relational egglog around sqlite in racket](https://github.com/yihozhang/egraph-sqlite) [PLDI workshop paper](https://src.acm.org/binaries/content/assets/src/2022/yihong-zhang.pdf), and this implementation is very much related and inspired by that one.\n\nFor more on egraphs and egglog\n\n- \u003chttps://egraphs-good.github.io/\u003e\n- \u003chttps://www.philipzucker.com/egglog/\u003e\n- \u003chttps://www.philipzucker.com/souffle-egg4/\u003e\n- \u003chttps://www.hytradboi.com/2022/writing-part-of-a-compiler-in-datalog\u003e\n- \u003chttps://www.philipzucker.com/notes/Logic/egraphs/\u003e\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphilzook58%2Fduckegg","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fphilzook58%2Fduckegg","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphilzook58%2Fduckegg/lists"}