DEV Community


Ontologies - part I: Introduction

0ctavia profile image Octa Updated on ・2 min read

As someone who studied philosophy back in the day (am I old yet?) I've thrown the word ontology around a lot. As someone who is now a web developer, I've heard it in passing in the corridors. But as someone in a 3-man IT/DEV/OPS team, I have been gifted the task of diving into it because someone had to.

Luckily I like a challenge.

David Tenant about to lose it

A major aspect of this challenge will be to explain to my coworkers what this is and how they will need to wrap their minds around, so this series of posts will be an exercise in summarizing and condensing what I learnt each day.

Basically, what is an ontology?

Before you think of data, think of the real world. You know fruit comes from a tree, not from a seed. You don't know how you know or when you learnt, but you know that you plant a seed, get a tree, get some fruit. One type of fruit comes from one type of tree. Carrots are edible, so is fruit, but a carrot is not a fruit.
All these statements are description of reality. What if someone tried to unravel the matrix behind reality, break all of the fruit-stuff I mentioned before to tiny bits of reality, then classify those in neat boxes and relationships between said boxes?
Basically that's an ontology. Classes and relationships.

Why do we need this?

The main advantage is that those relationships and classes can be translated into a language the machine can understands, ie, your computer. If someone says "this carrot came from the carrot tree" you know it's wrong - but how does your computer know that this can not be true in reality?

Guy dancing in carrot costume

Is this the same as a taxonomy?

Most of us are more familiar with a taxonomy. At the very least you've seen one in biology class.

red fox
Species: Vulpes vulpes -> Genus: Vulpes -> Family: Canidae -> etc.
Taxonomies are hierarchical, they formalize the relationships. It's a type of structure, and you can often easily visualise it as a tree-like structure. They tend to be applied to one domain. You classify documents, you classify tools, but how do you connect information in documents about the tools? That's where ontologies help.
This post was very helpful to me.

Enough for one blog, see you later hopefully for the rest.


Editor guide