The Concept-Oriented Project

Introduction
Concept-orientation is a new paradigm in computer science, which follows a set of the following fundamental principles:
  • Objects are living in space with complex structure and the space plays a crucial role in defining the system behavior and functionality.
  • Representation and access are the most important functions of space, which are executed each time access request passes the space border
  • Objects are represented by means of references created for them by the space to be used outside

An elementary part of space is referred to as concept, which generalizes such terms as class in programming, table/relation in databases, scope/environment in design.

More information on this approach can be found on the concept-oriented portal http://conceptoriented.com


Concept-Oriented Data Model
The concept-oriented data model (CODM) is the next generation approach to data modelling based on the principles of the Concept-Oriented paradigm. This method is based on the assumption that data items are living in concepts where each concept is a combination of a number of superconcepts. Formally complemented by the top concept and the bottom concepts this structure constitutes a lattice (an order satisfying certain properties). Each item is defined as a combination of some superitems taken from the corresponding superconcepts.

Syntax
The model is based on lattice theory and ordered sets. Each concept is defined as a combination (logical AND) of its superconcepts. This structure is formally complemented by the top concept and bottom concept. The former provides the most abstract view with no items at all while the latter is the most specific and detailed representation. Such syntactic structure provides a multidimensional hierarchical space where items live. Direct subconcepts of the top concepts are called primitive concepts.

Semantics
The model semantics is represented by data items each of them being a combination (logical AND) of its superitems. At the same time each item has a number of subitems from the corresponding subconcepts.


Dimensionality
A path from the current concept to some its superconcept is a dimension. Normally each step in this path has a name in context of its concept. The number of such paths from the bottom to the top is the model (canonical or primitive) dimensionality. Each dimension corresponds to one attribute or variable, which is supposed to be one-valued. Thus all one valued attributes are directed upward in the structure. If we reverse the direction of dimensions then get so called subdimensions or reverse dimensions. They also correspond to attributes or properties but take multiple-values from subconcepts (rather then for superconcepts for normal dimensions).

Relations
Each concept is a relation for its superconcepts but at the same time its subconcepts are interpreted as relations with respect to this concept. Thus to be a relation is a relative role. In particular, each item is an instance of relation for its superitems and it is an object linked to other objects by means of its subitems interpreted as relation instances.

Grouping and Aggregation
Each item has a number of parents from superconcepts and a number of subitems from subconcepts. An item is interpreted as a group/set/category for its subitems. Dually, it is a member of sets/groups/categories represented by its superitems. Thus each problem domain represented in this model has levels of details. At the top we have it represented as a single element, e.g., the whole company. Yet we can propagate information from lower levels to this highest level and produce aggregated characteristics by finding subitems included into this parent item and then applying an aggregation function.

Constraints
For each concept we can specify constraints its items have to satisfy. For that purpose we need to describe properties by specifying a zigzag-like path in the concept structure. This path goes up if need to get more specific information and it goes down if would like to get more general information. In this way we can express constraints in terms of other items wherever they are.


Multidimensional Analysis and Inference
We can indicate several source concepts and impose input constraints on them. After that these constraints are propagated downward to the lowest level (the most specific). Then the result is propagated upward in the direction of the target concept. Drill down operation means moving one of the source concepts down, i.e., choosing one of iits subconcepts with more details. Roll up means moving up by choosing some superconcept with less details.

More information can be found on the site http://conceptoriented.com


Concept-Oriented Programming

The concept-oriented programming (COP) is the next generation approach to programming based on the principles of the concept-oriented paradigm. This method is based on the assumption that any system functionality is determined in great extent by its space structure and its border functionality. It is supposed that representation and access are not implemented automatically by default but rather are an integral part of the whole system. Thus developing a system in this approach means describing its concept structure and defining its border functions. Such a system can exhibit rather complex behavior even if its objects are very simple. Functioning in such a concept-oriented program means accessing indirectly represented objects. Since objects are living in different concepts each access request requires intersecting their borders and hence executing the corresponding functions.

In contrast to object-oriented-programming approach the concept-oriented programming distinguishes a special role of concepts in any complex program. Indeed in OOP objects are supposed to describe all the program functionality while in COP concepts are responsible for some functions (in some systems even for most of their complexity). This approach can be then viewed as a generalization of OOP where we are able to describe in one and the same program not only business methods of objects but also representation and access functions.

In OOP we suppose that having an object reference is enough to send messages, call methods or perform types of interactions. However, in the concept-oriented paradigm it is assumed that no interactions can be executed instantly and any program needs special mechanisms for propagating them. This mechanism of representation and access (RA) is an important part of any program. In this sense COP is aimed at providing means for describing such a functionality within one language.


Concept-Oriented Design
The concept-oriented design (COD) is the next generation approach to system design based on the principles of the concept-oriented paradigm. This method is based on the assumption that all components of the system are living in some environment or container with concrete borders. An environment can be included into other environments and include itself many internal environments. The structure of the system containers determines most of its functionality and has to be defined before objects are placed into the system.

Links
http://conceptoriented.com - The Concept-Oriented Portal

http://conceptoriented.com/faqs/co-faq.html - FAQ on the concept-oriented paradigm

http://conceptoriented.com/faqs/cop-faq.html - FAQ on the concept-oriented programming

http://conceptoriented.com/faqs/codm-faq.html - FAQ on the concept-oriented data model

http://conceptoriented.com/faqs/coql-faq.html - FAQ on the concept-oriented query language


Contact

Alexandr Savinov
E-mail: savinov|at|conceptoriented|dot|com
Home page: http://conceptoriented.com/savinov/

   

 

1