# Concepts

## Overview <a href="#rxheur5avrbt" id="rxheur5avrbt"></a>

Concepts are containers for data. The concept name is a label for the data it will contain (e.g. Person, Country, Language, Date of Birth etc.). The [concept instance](https://docs.rainbird.ai/rainbird/knowledge-modelling/modelling-features/concepts/concept-instances) is the data that it holds.

If you had a spreadsheet of data, the column header would be the concept name, each item of data in that column would be an instance.

You add a concept like this:

<figure><img src="https://2183467111-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FehfnPLAHSx4uHugNiyth%2Fuploads%2F6fZNzRL8RO75G8wHcdP0%2FAdd%20concept.gif?alt=media&#x26;token=141986eb-376a-4a12-ad48-56510be555cc" alt=""><figcaption><p>Adding a concept</p></figcaption></figure>

{% hint style="warning" %}
Concepts names must be:

* Unique
* Not contain quotation marks `"`
  {% endhint %}

## Concept types

A concept has a data type. Four types are supported:

1. **String (default)** - plain text that can be used to represent a wide range of data. (can be used as a subject or object of a relationship)
2. **Number** - to represent numerical concepts such as `Loan amount`, `Vehicle mileage` etc. (can only be used as the object of a relationship)
3. **Date** - to represent date data such as `Claim date`, `Date of birth` etc. (can only be used as the object of a relationship)
4. **True/False** - to represent boolean data that con only be true or false, such as `Fraud confirmed`, `Over 18` etc. (can only be used as the object of a relationship)

Much like a spreadsheet, the different data types allow you to perform different functions on the data when you start creating rules and want to compare or transform this data. A list of these can be found in the [expressions](https://docs.rainbird.ai/rainbird/knowledge-modelling/modelling-features/relationships/rules/expressions-list) section.

{% hint style="warning" %}
Changing a concept's data type after it is being used by instances, facts or rules can introduce errors. Carefully consider the data type for each concept in advance, to avoid refactoring your knowledge map.
{% endhint %}

### **Mutually exclusive**

This feature is only available on concepts with a String data type. Selecting mutually exclusive will restrict the concept to two instances where the selection of one will preclude the other. It is very similar in behaviour to a true/false concept, however it allows custom instances to be set. E.g. hot/cold, night/day, yes/no.

{% hint style="warning" %}
An error message of “The concept \[concept name] is mutually-exclusive and should define 2 instances but no instances have been defined.” may be received upon saving your knowledge map when using this feature.

If this error is received it is because no instances have been created. Create two instances on the mutually exclusive concept (e.g. yes and no) and save again.
{% endhint %}
