An UpdatableSchema is a schema which can be modified. A schema can only be modified if it is not in use or if the modification has no consequence on existing use. For example a series can always be added but can only be deleted if no chronicle using the schema has actually created the series.
Updatable schemas are not only used in client applications like schema editors but also by CrNiCKL internally. Any schema can be defined as an extension to another schema. Schemas are kept in permanent storage without resolving these extensions. Before a schema is made available for use, CrNiCKL resolves the extensions. Extensions are visible to clients only in edit mode.
A hypothetical example will help to illustrate how schemas are constructed. The example uses 3 schemas: a, b, and c. Schema a defines two series, s1 and s2, and one attribute, a1. Schema b extends schema a; it removes series s2, and adds series s3. Schema c extends schema b; it adds attribute a2 and redefines attribute a1 (for example with a different default value). Given this design, a chronicle with effective schema c, will have two series, s1 and s3, and two attributes, a1 and a2. It will not be aware of the existence of schemas a and b.
@author Jean-Paul Vetterli
@version 1.1.0