This document covers the details of the general annotation system, which BASE uses for annotations of just about anything.

  1. Annotations
  2. Annotation types
  3. Standard ontologies
See also

Last updated: $Date: 2009-04-06 14:52:39 +0200 (må, 06 apr 2009) $

1. Annotations

  1. An annotation can be seen as a key-value pair that can be attached to an item.
  2. A single annotation may have multiple values, how many is controlled by the annotation type (see below).
  3. Many, but not all, items may be annotated.
  4. 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.
  5. 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.
  6. [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

  1. Each annotation must have a type.
  2. Annotation types contain information about possible values; either primitive types (int, float, string, etc.) with optional limits, or complex types like ontonlogy terms.
  3. An annotation type applies to one or more item types (e.g. sample or hybridization).
  4. Each item may only have one annotation of each annotation type, but, as mentioned above, an annotation may have more than one value.
  5. Users can define annotation types.
  6. [QUESTION] Can annotation types be made mandatory, and if so for what subset of items? Per project, maybe?
  7. It should be possible to flag annotations as required for MIAME compliance.

3. Standard ontologies

  1. BASE should be able to import values from standard ontologies like GO and MAGE.
  2. Those values are used to create annotation types.
  3. 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.
  4. The core will never automatically update the annotation values if the ontologies are updated.