Ontologies

Introduction

Ontology is the study of existing entities. When we look around us, we see things. Humans, as opposed to machines, are naturally able to divide our images of the world into distinct objects. Our language is a testament that humans seem to agree what entities exist in our reality. Of course, we teach our children what tables, trees and dogs are, but after that, humans are able to abstract the idea of dogginess and apply that name to new instances of dogs. Ontologies try to impose order on those entities and formalize the knowledge that we humans seem to build naturally.

Technicalities

An ontology (as used in computer science) is a set of entities and the logical relations between these entities. Entities can be split into two things: concepts and instances. Instances are representations of specific entities you are trying to model. Concepts are generalizations to which instances belong.

For instance, when I want to model the beings that live in a house I could first write down all the instances of beings that live there: John, Mary and Felix the cat. John and Mary are humans and Felix is a cat. So we could construct an ontology like this:

	  There are living beings
	  Humans are living beings
	  Cats are living beings
	  John is an instance of Human
	  Mary is an instance of Human
	  Felix is an instance of Cat
	

Or in RFD-OWL

<owl:Class rdf:about="&owl;Thing"/>
<owl:Class rdf:about="#Living_Being">
  <rdfs:subClassOf rdf:resource="&owl;Thing"/>
</owl:Class>
<owl:Class rdf:about="#Human">
  <rdfs:subClassOf rdf:resource="#Living_Being"/>
</owl:Class>
<owl:Class rdf:about="#Cat">
  <rdfs:subClassOf rdf:resource="#Living_Being"/>
</owl:Class>
<Human rdf:about="#John"/>
<Human rdf:about="#Mary"/>
<Cat rdf:about="#Felix"/>

Of course, you can express more relationships between entities (John and Mary own Felix) and give entities properties (humans have two legs, cats have four legs).