Acsets ("attributed C-sets") are a family of data structures generalizing both graphs and data frames. They are an efficient in-memory implementation of a category-theoretic formalism for relational databases.
ACSets.jl is a lightweight package that provides
- data structures for acset schemas, acsets, and tabular columns
- serialization of acset schemas and acsets
Catlab.jl extends this package to offer many more features, beginning with homomorphisms between acsets and including limits and colimits of acsets, functorial data migration, and automated homomorphism finding. AlgebraicRewriting.jl goes further still to provide declarative rewriting for acsets.
The ideas behind this package are described in the paper: