We are using cookies to give you the best experience on our site. Cookies are files stored in your browser and are used by most websites to help personalise your web experience.
Concept-oriented expression language
Concept-oriented expression language (COEL) is a formula language based on the principles of the concept-orientation. It is implemented in the DataCommandr Engine in Java and C#. The main purpose of COEL is to provide syntactic constructs for easily defining new data columns in terms of already existing data columns, and in this sense, it is opposed to classical row-oriented approaches where new data tables are defined in terms of existing tables.
The general goal of COEL is very similar to that of Data Analysis Expressions (DAX). One difference is that COEL is based on the concept-oriented model of data while DAX is based on the tabular model implemented in Microsoft Power Pivot.
Both approaches proceed from the informal observation that it is very convenient to define new data by defining formulas similar to how it is done in classical spreadsheet applications. In other words, instead of querying data we compute data. The main difference from the spreadsheet applications is that instead of defining new cells, the language formulas define new columns. In other words, a spreadsheet formula represents an expression which describes how a cell depends on other cells. In contrast, a COEL or DAX formula describes how a new column depends on other columns.
This approach works perfectly if all columns belong to one table. The main problem however is to provide conception for working with a set of columns belonging to different tables. For example, how to define a new column
Total Amount of the table
Purchase Orders so that the values of this column depend on the values in other table columns, for example, column
Price in the table
The main conceptual difference of COEL from the classical approach to data transformations is how new data elements are defined. The classical approach assumes that a query defines how new tables (their rows) are produced from other tables. Normally it is done by describing how an output row depends on one or more input rows (from different input tables). Therefore, it is inherently row-oriented approach and it has been implemented in almost all traditional query languages and systems starting from relational DBMSs and ending with MapReduce.
COEL is fundamentally different because its expressions return a single value rather than a row (object). Formally, an expression in COEL represents a mathematical function, that is, a mapping from input values to one output value. An output of COEL expressions is not a row of a table - it is a single value from some set.
Another unique feature of COEL is that it gets rid of such relational operations as join and group-by which are known to be quite difficult to comprehend and use.