flag pattern
- alias
Choice, exclusion.
- idea
The interpretation of a data element is controlled by another element.
- context
At least two data elements, one acting as switch, the other as target.
- motivation
Flags allow to easily add or enrich interpretations and to resolve ambiguity.
- implementations
- One value from a list of possible values (encoding).
- A default value (void) which can be overridden.
- Markup to turn flags on and off, for instance
<b>bold</b>
. - An identifier in a key-value record structure.
- An embedding that shows which elements are switches and which elements are targets.
- examples
- The bit as basic unit of all digital data is a choice between two possible values. It can be encoded by
0
and1
, by a given value and absence as default. - Boolean and enumerated data types with type as switch and instance variable as target.
- An exclusive-or constraint in a schema to enforce choice of one possibility.
- A qualified value such as “Dublin, Ohio”.
- The statement “license: CC-BY-SA” in contrast to “CC-BY-SA” only.
- Annotations that modify interpretation, such as uncertainty and temporal flags.
- General rules how to read a data element (schema).
- A namespace is a flag that gives context to local identifiers.
- The bit as basic unit of all digital data is a choice between two possible values. It can be encoded by
- difficulties
- Possible values of the switch must be clear. If the first element is ambiguous, interpretation of the target element will also be.
- Default values are not always known or different values are assumed.
- Some flags don’t have an independent interpretation, for instance the value “miscellaneous” in a classification.
- In practice flags are created or extended ad-hoc, for instance as additional annotation or as additional switch value to add more interpretations.
- A flag may switch more then one element and an element may be influenced by a combination of flags. It should be made clear, what elements a flag refers to,
- Some flags allow nesting (for instance a qualifier of a qualifier), others do not make a difference when nested (
<b><b>...</b></b>
is simply bold).
- related patterns
- Most flags are based on a dependence between switch and target element.
- Instead of exclusion one could also disallow specific combinations of elements prohibition.
- A separator such as ‘
:
’ can simultaneously indicate a flag. - The target data element may not be usable without the flag. In this case, a third element is derived from flag and target (derivation).
- If the switch consists of conditions which must be met to make use of the target element, a schema is more appropriate.
- implied patterns
A flag is a form of derivation as the target’s interpretation is implied by the switch.
- specialized patterns
A schema defines which choices and exclusions are possible for some data elements. Schemas can further act as flags by telling how to read data.