- An annotation can be seen as a key-value pair that can be
attached to an item.
- A single annotation may have multiple values, how many is
controlled by the annotation type (see below).
- Many, but not all, items may be annotated.
- An item may have primary and secondary annotations.
A primary annotation is an annotation that was attached
directly to that item. A secondary annotation is an annotation
that was attached to another item, which is somehow related
to the current item.
- Secondary annotations may be picked, one by one, from
related items, or as a set of all annotations. If the
whole set is picked, new annotations will propagate
to the related items.
- [CLIENT] Picking annotations from related items
may also be done by copying the related values, and attach them as
primary annotations to the current item.
2. Annotation types
- Each annotation must have a type.
- Annotation types contain information about possible values;
either primitive types (int, float, string, etc.) with
optional limits, or complex types like ontonlogy terms.
- An annotation type applies to one or more item types (e.g. sample
- Each item may only have one annotation of each annotation type,
but, as mentioned above, an annotation may have more than one
- Users can define annotation types.
- [QUESTION] Can annotation types be made
mandatory, and if so for what subset of items? Per project, maybe?
- It should be possible to flag annotations as
required for MIAME compliance.
3. Standard ontologies
- BASE should be able to import values from standard ontologies
like GO and MAGE.
- Those values are used to create annotation types.
- While annotating items, the actual value is be copied, but a reference
to the original value should also be maintained. This will
make searching less complicated, but also make it possible
for a client application to generate warnings or make automatic
modifications after an update.
- The core will never automatically update the annotation values
if the ontologies are updated.