4.1. Ontological Principles of Information Modeling
Ontology is the philosophical discipline that investigates which categories of things (such as objects, events, processes, etc.) do exist in the real world. Since the goal of information modeling is to capture the required types of information about relevant parts of the real world, it is important to understand the ontological foundations of information modeling.
We present seven principles that summarize the ontological foundations of information modeling and information systems.
1 Entities
An information system (IS) has to represent information about entities that occur in the universe of discourse of its domain, and that can be uniquely identified and distinguished from other entities. Examples of such entities are: the Mount Everest, the Empire State Building, John Travolta, the movie "Pulp Fiction", and the wedding of Prince William and Catherine Middleton.
The two most important kinds of entities are objects and events. The Mount Everest is an object, while the wedding of Prince William and Catherine Middleton is an event.
2 Qualities and Relationships
Entities have qualities and participate in relationships with other entities. Examples of qualities are:
- the height of the Mount Everest,
- the shape of the Empire State Building, and
- the eye color of John Travolta.
Examples of relationships among entites are:
- The Mount Everest is higher than the Empire State Building.
- John Travolta is an actor in "Pulp Fiction".
- Prince William is married to Catherine Middleton
3 Entity Types
Entities are classified by entity types. Examples of entity types are: mountains, buildings, people, movies, movie performances and weddings. The two most important kinds of entity types are object types (such as mountains, buildings, people, and movies) and event types (such as movie performances and weddings).
Entity types are represented, or implemented, as classes in object-oriented programming languages and as tables in (relational) databases.
4 Properties
An entity type comes with properties that allow making statements about the qualities of an entity classified by the entity type, or about its relationships with other entities. Each property has a range. When its range is another entity type, the property is called a reference property. When its range is a datatype, it is called an attribute.
Examples of reference properties are:
- the owner of a building,
- the director of a movie.
Examples of attributes are:
- the height of a mountain given as a quantity combining a positive integer with the length unit "meter",
- the eye color of a person given by three integers in the range between 0 and 255 representing an RGB triple.
A class implementing an entity type defines a list of properties for representing relevant quality types and binary associations. Each property is defined with a range. The range of a reference property is a class (normally representing an entity type), while the range of an attribute is a datatype (such as Integer or String).
5 Associations
Domain relationships between entities are classified by associations (or relationship types). An association is a relationship between entity types. In many cases, associations are binary (involving only one or two entity types). For instance, the association is-director-of is a binary association between the object types people and movies. But there are also cases of n-ary associations between one or at most n entity types.
In an IS, associations can be represented by reference properties of a class in an OO program, or by relationship tables in a (relational) database.
6 Object States
The state of an object, which may change over time, consists of its qualities and its relationships with other entities.
In an IS, the state of an object can be represented by the property value slots of an OOP object or by the column values of a table row representing the object in a (relational) database.
7 Specialization and Inheritance
There may bekann a special relationship between two entity types that is independent of the application domain: specialization or generalization (also known as subclass/superclass relationship). When an entity type specializes another entity type, then it inherits its properties.
OOP languages (like Java, JavaScript or C#) allow defining a class as a subclass of another class such that it inherits its properties (and methods).