Ontology

What is an ontology?

In philosophy,

“ontology is the study of being or existence. It seeks to describe or posit the basic categories and relationships of being or existence to define entities and types of entities.”1) Rana, Noman. Small Business - The Art of the Start. Self-Help Publishers, 2009.

In modern computer science and information science basic definitions consider an ontology to be:

“a data model that represents a set of concepts within a domain, and the relationships between those concepts”1)

“an explicit specification of a conceptualization.”2) Gruber, Thomas R. A translation approach to portable ontology specifications. Knowledge acquisition, 5: 199-220, 1993.

“an explicit formal specification of the terms in the domain and relations among them”3) Gruber, Thomas R. A translation approach to portable ontology specifications. Knowledge acquisition, 5: 199-220, 1993. cited by Noy, Natalya F., and Deborah L. Mcguinness. Ontology Development 101: A Guide to Creating Your First Ontology, 2001.

In more details, an ontology can be described as:

a formal explicit description of concepts or classes in a domain of discourse, with

properties of each concept describing various features and attributes of the concept (slots, roles or properties), and

restrictions on concept slots (facets or role restrictions).4) Noy, Natalya F., and Deborah L. Mcguinness. Ontology Development 101: A Guide to Creating Your First Ontology, 2001.

An ontology has the following properties:1)

it is used to reason about the objects in a domain;

specifies the classes of concepts and their relations at a higher level than relevant to the domain;

captures the intrinsic conceptual structure of a domain;

forms the hearth of the knowledge representation within a domain.

Why do we need an ontology?

An ontology can be used to:4)

share common understanding of the structure of information among people or software agents

enable reuse of domain knowledge

make domain assumptions explicit

separate domain knowledge from the operational knowledge

analyze domain knowledge

Ontology software

Some of the software applications for creating ontologies are:

Ontolingua

Protégé

Open Cyc

Chimaera

How to create an ontology?

The process of developing an ontology is an iterative process which can be described in the following steps:4)

Determine the domain and scope of the ontology - Scope and domain of the ontology should be determined knowing what we want the ontology to cover, what we want to use the ontology for, and what information we want it to provide us with. One should also consider reusing or extending existing ontologies5) For example see: Ontolingua ontology library or DAML ontology library .

Identify terms important for the ontology - Prior identification of terms which will be used in the ontology can be helpful.

Define classes and class hierarchy (subclass/superclass) - There are different approaches suggested for developing a class hierarchy:6) Uschold, Mike, and Michael Gruninger. Ontologies: Principles, Methods and Applications. The Knowledge Engineering Review 11, no. 2: 93-136, 1996. cited by Noy, Natalya F., and Deborah L. Mcguinness. Ontology Development 101: A Guide to Creating Your First Ontology, 2001. the top-down approach (where process starts by identifying the more general domain concepts and then progresses towards more specific concepts), the bottom-up approach (where process starts by identifying the more specific domain concepts and then progresses towards more general ones), or the combination, which combines both top-down and bottom-up approaches.

Define the properties of classes (slots) - Slots help defining the internal structure of concepts. Slots can for example be extrinsic, intrinsic, parts or relationships to other individuals. It is important to keep in mind that subclases inherit all the slots of their superclasses.

Define the facets of the slots - Slots can have different restrictions or facets restricting for example: slot cardinality (number of values a slot can have, for example 1, more or 0 - if this slot in a particular subclass can't have a value), slot-value type (for example string, number, Boolean, enumerated or even instance), or domain and range of a slot.

When creating an ontology one should also keep in mind that there are always multiple ways in which an ontology can be designed, and that the ontology should be close to physical or logical objects and their relations in the domain.4)