# Soma Concepts

* [Record](#record)
* [Column](#column)
* [Directive](#directive)
* [Recipe](#recipe)
* [Transformation step](#transformation-step)
* [Data Axon](#data-pipeline)

The Soma in Turium employs concepts such as record, column, directive, recipe, transformation step, and data axon.

***

### Record  <a href="#record" id="record"></a>

A record is an assembly of field names and their corresponding values.

In this context, a record is depicted as a JSON object where the object key signifies the column names, and the value represents the plain depiction of the data, devoid of type specifications.

For instance:

```json
{
  "id": 1,
  "fname": "root",
  "lname": "joltie",
  "address": {
    "housenumber": "678",
    "street": "Mars Street",
    "city": "Marcity",
    "state": "Maregon",
    "country": "Mari"
  },
  "gender": "M"
}
```

***

### Column  <a href="#column" id="column"></a>

A column is a collection of field values of any of the supported data types, with each field value being part of a single record.

***

### Directive  <a href="#directive" id="directive"></a>

A directive is an individual instruction for data manipulation, designated to either transform, filter, or pivot a single record into no or more records. A directive can generate one or more steps to be executed by a data axon.

A directive can be depicted in text in this format:

```
<command> <argument-1> <argument-2> ... <argument-n> 
```

***

### Recipe  <a href="#recipe" id="recipe"></a>

A recipe is a collection of directives. It comprises one or more directives. For instance, the following recipe alters the data type of Fare to integer.

***

### Transformation step  <a href="#transformation-step" id="transformation-step"></a>

A transformation step is an execution of a data transformation directive, operating on a single record or a set of records. A transformation step can generate no or more records from the implementation of a directive. The Turium Genesis applies the transformation steps in the sequence listed in the recipe.

***

### Data Axon  <a href="#data-pipeline" id="data-pipeline"></a>

A data axon is a set of stages to be implemented on a record. The record(s) outputted from a stage are transferred to the next stage in the axon.

***
