Building blocks
BDRML version 1.0
BDRML primitives
Primitives are the basic blocks of BDRML. They include:
- Behaviour: A set of processes that deal with a particular situation a robot finds itself in, for example "Scout"
- Internal data structure: Information that is stored in a robot's memory
- External data structure: Information that is stored in a non-robot entity, i.e., in the robot's environment

BDRML relations
The following relations between entities can exist:
- Transition: The robot transitions from one behavioural mode to another
- Read \ Write: Internal data is used \ stored by the robot engaged in particular behaviour
- Receive \ Send: External data is used \ stored by the robot. In the case of the Send relation, a robot may also send the data to another robot that stores it in its own internal data structure
- Copy: Information is copied from one data structure to another
- Update: The value of a data structure is updated from that in the previous time step by a subroutine not visualised in the BDRML diagram (for example, a pheromone level may spontaneously decrease over time).
The write and send relations can optionally define the new data structure value or a function that updates the value, indicated by a dashed line extending from the end of the relation arrow in a visual description, and written before a colon proceeding the data structure name in a textual description. The update relation always must specify the new value or the value update function.

BRML relation conditions
Each relation or operation occurs under a specific set of conditions. A condition is visually represented as an annotated triangle at the beginning of a relation or operation arrow. In a textual representation, a condition set follows a relation signature and is separated from it by a colon. Unless otherwise specified, the "or" logical operator is used when multiple conditions affect a single relation.
