An olog is, roughly speaking, a category that models a given real-world situation. Ologs or ontology logs can be approached via different paths:

  • they can act as knowledge representations much like an ontology in a triple store or semantic nets
  • they are real-world examples of categories and as such articulate the whole machinery of functors and natural transformations
  • they can be seen as database schema’s and the data as a functor to Set, the category of sets.

An olog is a system of boxes and arrows, each labeled with English text, something like a concept web. The main difference is that ologs follow rules that make them “functional”. That is, an olog about a given subject automatically serves as a database schema for storing data about that subject.

Below is a typical olog:


This might look like a naive mind map but there are various rules of good conduct hidden to ensure that things are functional. For example, one could be tempted to add “has numbers” as a link away from “a date” but this would create a multi-valued map and, hence, not a function. The functional aspect matters in the context of the mathematical context. If you deviate from it you remain with a mindmap (or alike).

It’s obvious this olog conveys some sort of domain knowledge and as such acts as a way to describe concrete instances on an abstract level. While this could also be done via RDF (Resource Description Framework), the turtle format of the n3 format this representation is a bridge towards category theory. Note that that the whole semantic stack has its own virtues. Semantic representations and ontologies work with triple stores, SPARQL and all that. Not so for ologs. An olog is ideal to think in abstract terms about knowledge while a semantic representation enable concrete software projects.

One thing not so immediately obvious by looking at an olog is that it can be seen as a database schema. The arrows representing fields and the boxes tables. So, an olog is both a concrete category, a database schema and representing domain knowledge. One can show in detail that a database with the given olog schema can be functorially mapped to the dataset. That is, there is functor F:  Db \mapsto Set from database schema’s to the category of sets.

The whole topic (well, category theory as a whole) is misleadingly simple and can quickly turn into mind-bending mathematics (Grotendieck construction, oplax colimit and so on). It is at the same time terribly practical to formalize analogies and symmetries. A good example of this is the article relating “spider silk and music notation“.