*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.*

*By continuing to use our website without changing the settings, you are agreeing to our use of cookies.*

# De-projection

**De-projection** is an operation of the concept-oriented model (COM) which is applied to a set of elements and returns its lesser elements. The target set of elements and the inverse dimension leading to it from the source set are normally specified as parameters of the operation.

In the concept-oriented query language (CoQL) de-projection is denoted by left arrow '<-' which connects the source set of elements, the inverse dimension name, and the target set of elements.

Source<-inv-dimension<–Target

The inverse dimension or the target set can be omitted. Dimensions are specified in the concept-oriented schema which is a partially ordered set of concepts specified using order relation. Note that de-projection is supposed to be applied to sets of elements and if it is applied to a single instance than it is interpreted as a shortcut for a set consisting of one element.

De-projection can be used sequentially and along with the operation of projection.

## Example

If each employee (collection `Employees`

) belongs to one department (collection `Departments`

) then we can project a selected set of departments to employees and get a set of employees which work there:

(Departments d | d.size > 10)<-department<–Employees

This query finds all employees for the departments larger than 10. We can omit either dimension name `department`

or target collection `Employees`

.

Longer inverse dimension paths with more intermediate collections can be used where each collection may have its own restrictions. For example, if each department has one manager (collection `Managers`

) then we could find all employees for the selected managers using two-step de-projection:

(Managers m | m.salary > 1000)<-manager<–(Departments d | d.size > 10)<-department<–(Employees e | e.age > 30)

This query de-projects all managers with the salary higher than 1000 to departments larger than 10 which in turn are de-projected to employees older than 30.