Each computer program collects, processes and outputs data. Therefore we can simplify a computer program as DATA + ALGORITHM. Here we focus on the DATA.
The data of a computer program is a representation of a model which lives in our mind about our world. The elements of a model are objects and the semantics of a model is based on the relations between these objects. An object in essence is an association with a pattern in our world and its relations with other objects in our mind. With our senses: sight, hearing, taste, smell or touch, we are able to map patterns to objects. The whole purpose of our mind is in fact to monitor events in our surroundings and take appropriate actions. An event is a measurement of some facts relating to a context. When we communicate with each other we use a language. A language is a mapping from the model in our mind to tokens and vice-versa. It just enables us to interface with other humans, which is usefull to coordinate actions in a group of individuals. Of course for one to understand the communication one need to understand the mapping of these tokens to the model. This requires that we share a certain model about our world.
The data of a computer program is similar and consists of:
We introduce some terminology to facilitate our further study. We call classes of objects dimensions. As the whole purpose of the model is to measure events, it make sense to call the axis along which we measure: dimensions. Therefore we call the data model of a computer program a dimensional model. Each object is an instance of the object that represents a class of objects, a dimension. We call this an instance relation (IS_A) between the object and its class. The relation between objects is defined by a relation between a dimension I with another dimension II. This relation we call a characteristic of a dimension (HAS_CHAR) and is bidirectional. A characteristic defines subsets of a dimension. Facts are represented by tokens (like numbers and characters) which follow some syntax rules or just patterns (like streams of bits for sound and image). A fact is specified by a data type, DATA, which represents the pattern of tokens and a length in bytes of the pattern, LEN. A fact which relates to one dimension is called a property of that dimension (HAS_PROP) and belongs to the dimension PROPERTY. When the distinction between property or characteristic is not important we will use the term attribute. Facts related to more than one dimension we will call a measurement of an event (HAS_MEASURE). An event is just a dimension, but of a certain kind. We use a dimension EVENT to classify all dimensions which are events. All other dimensions we call referential data for events.
Notice that everything in our data model is an instance direct or indirect of a root DIMENSION. We assume that each instance has an identifier, ID. Instances of an EVENT type have no ID. These instances are identified by characteristics.We define a number of functions to work with the dat in our data model.
The first function is ID() which returns a new unique ID.
Each instance must be an instance of either a dimension or an event type. We define the function IS_A(i)=d/e which defines i as an instance of dimension d or event type e. The relation IS_A(i) returns the dimension d or event type e of the instance i.
For interfacing with the data model we need tokens. We assume that each ID of an instance has a one-to-one relation with a property CODE. CODE is a token representation of the instance. We define the following functions CODE(i) which returns a token of instance i and I(token) which returns an instance i.
A CODE is in terms of our data model an instance of the dimension PROPERTY. A property is represented by a stream of tokens. We must define the some essential properties of this stream. For that we need two new properties: DATA for the data type and LEN for the length in bytes of the stream of tokens. We add DATA and LEN as instances to the dimension PROPERTY. Each instance of PROPERTY has now 3 properties: CODE, DATA and LEN.
The PROPERTY dimension defines relation types between an instance of a dimension and a token representation. We define the following functions:
The CHARACTERISTIC dimension defines relation types between two instances. These instances can be of the same dimension or of different dimensions. We define the same type of relations as for the PROPERTY dimension:
The meta model consist of the following objects and relations: