Asi catcolab-ologs
CatColab Ologs (Ontology Logs) - category-theoretic knowledge representation where objects are concepts and morphisms are functional relationships. Foundation for database schemas and conceptual modeling.
install
source · Clone the upstream repo
git clone https://github.com/plurigrid/asi
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/plurigrid/asi "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/catcolab-ologs" ~/.claude/skills/plurigrid-asi-catcolab-ologs-c93973 && rm -rf "$T"
manifest:
skills/catcolab-ologs/SKILL.mdsource content
CatColab Ologs: Ontology Logs
Trit: -1 (MINUS - validator/verifier) Color: Cyan (#00CED1)
Overview
Ologs (Ontology Logs) are category-theoretic representations of knowledge domains, introduced by Spivak and Kent (2011). In CatColab, ologs serve as:
- Conceptual Foundations: Objects = concepts/types, Morphisms = functional relations
- Database Ontologies: The schema layer before populating with data
- Knowledge Graphs: Categorical structure for reasoning about domains
Mathematical Foundation
An olog is a category where:
- Objects represent types or concepts (e.g., "a person", "a company")
- Morphisms represent functional relationships (e.g., "works for", "has birthday")
- Commutative diagrams encode logical constraints
┌─────────────────────────────────────────────────────┐ │ OLOG │ ├─────────────────────────────────────────────────────┤ │ Objects: │ │ Person, Company, Date, Department │ │ │ │ Morphisms (functional): │ │ works_for: Person → Company │ │ has_birthday: Person → Date │ │ employs: Company → Department │ │ │ │ Commutative Diagram (constraint): │ │ Person ──works_for──► Company │ │ │ │ │ │ in_dept employs │ │ ▼ ▼ │ │ Dept ════════════════► Dept │ │ (must agree) │ └─────────────────────────────────────────────────────┘
CatColab Implementation
Object Declaration
// In CatColab notebook { "type": "ObDecl", "name": "Person", "description": "a person in the organization" }
Morphism Declaration
{ "type": "MorDecl", "name": "works_for", "dom": "Person", "cod": "Company", "description": "the company that employs this person" }
Equation (Commutative Diagram)
{ "type": "EqDecl", "lhs": "Person.in_dept", "rhs": "Person.works_for.employs", "description": "a person's department agrees with their company's structure" }
Double Theory
Ologs in CatColab are instances of the SimpleCategory double theory:
// From catlog pub fn th_category() -> DiscreteDblTheory { let mut cat = FpCategory::new(); cat.add_ob_generator(name("Ob")); cat.add_mor_generator(name("Hom"), name("Ob"), name("Ob")); // Composition and identity axioms cat.into() }
Practical Examples
Example 1: Academic Institution
Objects: Professor, Student, Course, Department, University Morphisms: teaches: Professor → Course enrolled: Student → Course member_of: Professor → Department part_of: Department → University Diagram (functorial): Professor ──teaches──► Course │ │ member_of offered_by ▼ ▼ Department ◄──────────── Department
Example 2: Supply Chain
Objects: Supplier, Warehouse, Product, Customer Morphisms: supplies: Supplier → Product stores: Warehouse → Product orders: Customer → Product ships_from: Product → Warehouse
Integration with Schemas
Ologs upgrade to Schemas by distinguishing:
- Entities (tables with identity)
- Attributes (columns/properties)
OLOG: SCHEMA: Person ──name──► String → Person (Entity) ├── id: UUID └── name: String (Attr)
GF(3) Triads
catcolab-ologs (-1) ⊗ topos-catcolab (0) ⊗ catcolab-schemas (+1) = 0 ✓ catcolab-ologs (-1) ⊗ acsets-relational-thinking (0) ⊗ database-design (+1) = 0 ✓
Commands
# Create new olog just catcolab-new category "my-ontology" # Validate olog constraints just catcolab-validate my-ontology # Export to JSON-LD just catcolab-export my-ontology --format=jsonld
References
- Spivak & Kent (2011) "Ologs: A Categorical Framework for Knowledge Representation"
- CatColab Documentation
- RelationalThinking Book
Skill Name: catcolab-ologs Type: Knowledge Representation / Ontology Trit: -1 (MINUS) GF(3): Conserved via triadic composition