ACSets(Attributed C-Sets,属性化 C-集)是一类泛化图与数据框的数据结构,是范畴论形式化关系数据库的高效内存实现。其数学基础是函子 X: C → Set,其中 C 为小范畴(模式/schema)。
用途:以模式定义对象与态射,构建图、对称图、半边图、旋转系统、自反图等结构,并支持属性(如权重)与索引查询。
主要能力:用 Catlab 的 @present 定义模式,@acset_type 生成类型并可用 index=[:src,:tgt] 建立反向索引以加速关联查询;支持 add_parts!、add_vertices!、add_edges!、incident 等操作;对称图通过 inv 对合满足 inv⨟src=tgt、inv⨟tgt=src、inv²=id;半边图以 inv²=id 配对半边,固定点为悬挂边;旋转系统加入置换 σ 对应有向曲面嵌入;自反图含 refl 自环。还提供 C-集同态、乘积、子图命题逻辑(连接词由伴随导出)等。
使用方式:在 Julia 中 using Catlab.CategoricalAlgebra,定义模式后创建 ACSet 并添加部件;Specter 风格导航提供 acset_field、acset_where、acset_parts 等路径,同一路径可同时用于 select 与 transform;@acset_colim 可暴露名称到部件的绑定,结合 Gay.jl 做确定性着色与 GF(3) 守恒校验。
适用场景:图与关系数据建模、拓扑图论、认知范畴论与主动推断相关研究。
限制:资料未提供安装命令、收费、平台与性能基准;部分内容(如 GF(3)、Gay.jl 绑定、Open ACSets)依赖特定 PR 或扩展库,实际可用性暂未提供。