diff --git a/sep_024.md b/sep_024.md index 5bc9d73..65413e1 100644 --- a/sep_024.md +++ b/sep_024.md @@ -43,7 +43,7 @@ Table of Contents The design-build-test extensions of SBOL 2.2 support linking of genetic designs with experimental data. To fully specify the sample that data is connected to, however, also involves specification of host and environmental context, such as media, strain, inducers, etc. Otherwise one cannot distinguish between clearly different circumstances, such as data for the same construct grown in _E. coli_ with 1mM Arabinose in LB media versis in _B. subtilis_ with no Arabinose in M9 media. -The SBOL model is already flexible enough to encode such information, but there are a number of different ways in which this might be approached. We thus recommend a set of best practices for encoding. +The SBOL model is already flexible enough to encode such information, but there are a number of different ways in which this might be approached. We thus recommend a set of best practices for encoding this information. 2. Specification @@ -51,7 +51,15 @@ The SBOL model is already flexible enough to encode such information, but there ### 2.1 Measurements -Numerical measurements SHOULD be specified using the Measure and Unit classes from the [http://www.ontology-of-units-of-measure.org/resource/om-2](Ontology of Units of Measure (OM)). +Numerical measurements SHOULD be specified as instances of the `Measure` and `Unit` classes from the [Ontology of Units of Measure (OM)](http://www.ontology-of-units-of-measure.org/resource/om-2). As incorporated into the SBOL data model, `Measure` is a subclass of `Identified`, while `Unit` is a subclass of `TopLevel` (Figure 1). In addition, the `Unit` class has an abstract subclass `CompoundUnit`, which is further subclassed by `UnitMultiplication`, `UnitExponentiation`, and `UnitDivision`. + +![Diagram of the `Measure` and `Unit` classes and their associated properties.](images/sep_024_measure_unit.png "Experiment class UML diagram") + +The purpose of the `Measure` class is to link a numerical value to a unit of measure. Its `hasNumericalValue` property is REQUIRED and MUST contain a single xsd:float. Its `hasUnit` propery is also REQUIRED and MUST contain a single URI that refers to a member of the `Unit` class. Typically this URI will refer to a specific `Unit` that is already documented by OM, such as "gram per liter", but it can also refer to a custom `Unit` that is not covered by OM but is still useful for synthetic biology, such as "molecules of equivalent fluorescein", or "MEFL" for short. + +The purpose of the Unit class is to describe a particular unit of measure. The `symbol` property is REQUIRED and MUST contain a String. This String is commonly used to abbreviate the unit of measure's `name`. For example, the unit of measure named "gram per liter" is commonly abbreviated using the String "g/l". Finally, the `alternativeSymbol` property is OPTIONAL and MAY contain zero or more Strings. These Strings are additional abbreviations for the unit of measure's `name`. + +The `UnitMultiplication` class is used to describe a unit of measure that is the multiplication of two other units of measure. The `hasTerm1` and `hasTerm2` properties are both REQUIRED and MUST each contain a single URI that refers to a member of the `Unit` class. Next, the `UnitExponentiation` class is used to describe a unit of measure that is the exponentiation of one unit of measure by another. The `hasBase` and `hasExponent` properties are both REQUIRED and MUST each contain a single URI that refers to a member of the `Unit` class. Finally, the `UnitDivision` class is used to describe a unit of measure that is the division of one unit of measure by another. The `hasNumerator` and `hasDenominator` properties are both REQUIRED and MUST each contain a single URI that refers to a member of the `Unit` class. ### 2.2 Mixtures via ModuleDefinitions