Agent Skills: CatColab Ologs: Ontology Logs

CatColab Ologs (Ontology Logs) - category-theoretic knowledge representation where objects are concepts and morphisms are functional relationships. Foundation for database schemas and conceptual modeling.

UncategorizedID: plurigrid/asi/catcolab-ologs

Install this agent skill to your local

pnpm dlx add-skill https://github.com/plurigrid/asi/tree/HEAD/plugins/asi/skills/catcolab-ologs

Skill Files

Browse the full folder contents for catcolab-ologs.

Download Skill

Loading file tree…

plugins/asi/skills/catcolab-ologs/SKILL.md

Skill Metadata

Name
catcolab-ologs
Description
CatColab Ologs (Ontology Logs) - category-theoretic knowledge representation where objects are concepts and morphisms are functional relationships. Foundation for database schemas and conceptual modeling.

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


Skill Name: catcolab-ologs Type: Knowledge Representation / Ontology Trit: -1 (MINUS) GF(3): Conserved via triadic composition