ShortBOL Documentation
This page is the documentation for the standard ShortBOL libary.
Because ShortBOL is based on the SBOL data model it may be useful to explore the
SBOL documentation
However, don't worry if this looks complicated this is why ShortBOL was created!
We try to implement and explain templates that abstract and remove much of this complicated behaviour.
For each Template and Family of Templates, this document explains:
1. What a Template does.
2. Why this template is needed.
3. Where and When to use a template.
4. Any hidden or otherwise unintuative features of details about a Template.
User Mode is essentially a more usable and simple version of the Developer Mode.
There is crossover between User and Developer mode but the Documentation below is standalone meaning you do not need to switch between User and Developer Documentation.
Developer Mode
The first layer implemented when ShortBOL was first created.
This layer is almost a direct relation with the SBOL data model.
This template can be used by users that understand and are happy with a precise but verbose language and that understand the SBOL Data Model well, specifically how different types interact.
MapsTo
Connects parts together that are the same but located in different ModuleDefinitions.
Usage: Given two Instances of ComponentDefinitions(FunctionalComponents) that are present in two different ModuleDefinitions and and a refinment, create MapsTo and add to property mapsTo in the Module.
Parameters
Name | Possible Values | Description |
---|---|---|
local |
- Template |
Local FunctionalComponent |
remote |
- Template |
Remote FunctionalComponent |
refinement |
- i_useRemote - i_useLocal - i_verifyIdentical - i_merge |
Relationship between local and remote. |
Specialised Components: - MapsUseRemote - MapsUseLocal - MapsIdentical - MapsMerge
Description:
When ComponentDefinition and ModuleDefinition objects are composed into structural and functional hierachies using ComponentInstance and Moduleobjects, it is of ten the case that some ComponentInstance objects are intended to represent the same entity in the overall design. The purpose of the MapsTo class is to make these identity relationships clear and explicit.
Usage Example:
ExperimentalData
Aggregate links to experimental data files.
Usage: Aggregates links to experimental data files using the hasAttachment property.
Parameters
Name | Possible Values | Description |
---|
Specialised Components:
Description:
An ExperimentalData is typically associated with a single sample, lab instrument, or experimental condition and can be used to describe the output of the test phase of a design-build-test-learn workflow.
Usage Example:
Participation
Participants to an Interaction.
Usage: Given a FunctionalComponent and a participant type add this to the participant property of a Interaction.
Parameters
Name | Possible Values | Description |
---|---|---|
functionalcomponent |
- Template |
Participating FunctionalComponent |
role |
- i_inhibitor - i_inhibited - i_stimulator - i_stimulated - i_modifier - i_modified - i_product - i_reactant - i_participation_promoter - i_template |
Describes the behavior of the Participation. |
Specialised Components: - Inhibitor - Inhibited - Reactant - Stimulator - Stimulated - Product - ParticipationPromoter - Modifier - Modified - Template
Description:
How a particular FunctionalComponent behaves in its parent Interaction.
Usage Example:
ComponentDefinition
The fundemental templates for creation of enitites in a biological design.
Usage: Use to represent parts in a design such as DNA or a Protein.
Parameters
Name | Possible Values | Description |
---|---|---|
type |
- i_DNA - i_DNARegion - i_RNA - i_RNARegion - i_protein - i_smallMolecule - i_complex |
Category of the ComponentDefinition such as DNA or Protein. |
Specialised Components: - DNAComponent - DNA - RNAComponent - RNA - ProteinComponent - Protein - SmallMoleculeComponent - SmallMolecule - ComplexComponent - Complex - Promoter - RBS - CDS - Terminator - Operator - Gene - EngineeredGene - EngineeredRegion - CDS_RNA - SGRNA - mRNA - TranscriptionFactor - Effector
Description:
These templates create a blueprint of a part, an instances of these are created using FunctionalComponents.
Usage Example:
Interaction
How FunctionalComponents interact with one another within a design.
Usage: Given participant templates assign to the interaction properties of ModuleDefinition.
Parameters
Name | Possible Values | Description |
---|---|---|
type |
- i_inhibition - i_stimulation - i_biochemical_reaction - i_noncovalent_bonding - i_degradation - i_genetic_production - i_control |
Describes the behavior represented by the Interaction. |
Specialised Components: - Inhibition - Stimulation - BiochemicalReaction - NoncovalentBonding - Degradation - GeneticProduction - Control
Description:
A description of how FunctionalComponents within a design interact/work together. Uses Participation objects as an intermediate template to describe the role of each input/output.
Usage Example:
Range
Regions of a Sequence.
Usage: Given a start and end value create Range and add to location property of a SequenceAnnotation.
Parameters
Name | Possible Values | Description |
---|---|---|
start |
- Integer |
integer value stating start of Range on the sequence. |
end |
- Integer |
integer value stating end of Range on the sequence. |
Specialised Components: - InlineRange - ReverseComplementRange
Description:
Specifies a region via discrete, inclusive start and end positions that correspond to indices for characters in the elements of a Sequence.
Usage Example:
Cut
Cut a Sequence.
Usage: Given at value create Cut and add to location property of a SequenceAnnotation.
Parameters
Name | Possible Values | Description |
---|---|---|
at |
- Integer |
integer value the location of cut on the sequence. |
Specialised Components: - InlineCut - ReverseComplementCut
Description:
Specifies a single point via discrete, integer value indices for characters in the elements of a Sequence.
Usage Example:
Experiment
Aggregate ExperimentalData.
Usage: Given one or more ExperimentalData objects reference inside this object.
Parameters
Name | Possible Values | Description |
---|---|---|
member |
- Template |
Reference to a ExperimentalData object. |
Specialised Components:
Description:
Aggregate ExperimentalData objects for subsequent analysis, usually in accordance with an experimental design.
Usage Example:
CombinatorialDerivation
Specify combinatorial biological designs.
Usage: Given an initial Component and one or more Variable components create the template.
Parameters
Name | Possible Values | Description |
---|---|---|
template |
- Template |
componeponentDefinition should has SubComponents that can be swapped. |
Specialised Components:
Description:
Specify combinatorial biological designs without having to specify every possible design variant. For example, a CombinatorialDerivation can be used to specify a library of reporter gene variants that include different promoters and RBSs without having to specify a Component for every possible combination of promoter, RBS, and CDS in the library.
Usage Example:
Implementation
Represents a realized instance of a ComponentDefinition.
Usage: Given zero or more ComponentDefinition reference them inside the Implementation.
Parameters
Name | Possible Values | Description |
---|
Specialised Components:
Description:
Implementation bridges the gap between the SBOL and the realised instance of a "thing". Some Examples DNA resulting from fabricating a genetic design, associated with a laboratory sample that was already built, or that is planned to be built in the future, represent virtual and simulated instances.
Usage Example:
FunctionalComponent
An instance of a ComponentDefinition being used as part of a ModuleDefinition.
Usage: Given a ComponentDefinition and a direction add this FunctionalComponent to the functionalcomponent property of a ModuleDefinition.
Parameters
Name | Possible Values | Description |
---|---|---|
componentDefinition |
- Template |
Blueprint ComponentDefinition |
direction |
- i_in - i_out - i_inout - i_none |
Encode how a designer thinks about the "purpose" of a connection in a system. |
Specialised Components: - PrivateFunctionalComponent - InputComponent - OutputComponent - InOutComponent - NoneComponent - InstanceOf
Description:
A FunctionalComponentis an instance of a ComponentDefinition being used as part of a ModuleDefinition. FunctionalComponents can also have directions such as input,output for connections.
Usage Example:
Collection
Group together TopLevel objects
Usage: Requires no parameters but can reference n number of TopLevel objects with the member property.
Parameters
Name | Possible Values | Description |
---|
Specialised Components:
Description:
Groups together a set of TopLevel objects that have something in common. For example A set of Component objects representing a library of genetic logic gates.
Usage Example:
Sequence
Structure in Sequence format of parts of a design.
Usage: Given a Sequence in the from of a string ("ATCG" for example") create a instance of a Sequence and add to the sequence property of a ComponentDefinition.
Parameters
Name | Possible Values | Description |
---|---|---|
elements |
- String |
Characters that represents the constituents of a biological or chemical molecule |
encoding |
- i_iupacDNA - i_iupacRNA - i_iupacProtein - i_opensmilesSMILES |
URI to indicate how the elements property of a Sequence MUST be formed and interpreted. |
Specialised Components: - DNASequence - DNASeq - RNASequence - ProteinSequence - ChemicalStructure - hasDNASeq
Description:
Represent the primary structure of a ComponentDefinition object and the manner in which it is encoded.
Usage Example:
SequenceAnnotation
Describes regions of interest on a Sequence.
Usage: Given a Location and optional Component create a SequenceAnnotation and add to a the sequenceAnnotation property of a ComponentDefinition..
Parameters
Name | Possible Values | Description |
---|---|---|
location |
- Template |
Location object to indicate which elements of a Sequence are described by the SequenceAnnotation. |
Specialised Components: - SA
Description:
A SequenceAnnotation allows the binding of a location to a Component. Uses Location objects as an intermediate template to describe physcial location. This object essentially binds the Sequence to Components
Usage Example:
SequenceConstraint
Assert restrictions on the relative, sequence-based positions of pairs ofComponent objects contained by the same parent ComponentDefinition.
Usage: Given a two Component objects and restriction type, create a SequenceConstraint and add to a the sequenceConstraint property of a ComponentDefinition.
Parameters
Name | Possible Values | Description |
---|---|---|
component |
- Template |
Subject Component of constraint |
component |
- Template |
Object Component of constraint |
restriction |
- i_precedes - i_sameOrientationAs - i_oppositeOrientationAs - i_differentFrom |
type of restriction places on the ComponentDefinition. |
Specialised Components: - Precedes - SameOrientationAs - OppositeOrientationAs - DifferentFrom
Description:
Uses Component objects as an intermediate object because constraints are on the specific instances of a part.
Usage Example:
Component
compose ComponentDefinition objects into a structural hierarchy.
Usage: Given a ComponentDefinition create Component and add it to component property of ComponentDefinitions, Components or as an input to SequenceAnnotations or SequenceConstraints.
Parameters
Name | Possible Values | Description |
---|---|---|
componentDefinition |
- Template |
ComponentDefinition pertaining to sub part. |
Specialised Components:
Description:
Example The ComponentDefinition of a gene could contain four Component objects a promoter, RBS, CDS, and terminator. In turn, the ComponentDefinition of the promoter Component could contain Component objects defined as various operator sites.
Usage Example:
Attachment
A general container for Data.
Usage: Given a source file reference the Attachment in any TopLevel template.
Parameters
Name | Possible Values | Description |
---|---|---|
source |
- URI |
a URI reference to the source file. |
Specialised Components:
Description:
Serve as a general container for data files, especially experimental data files. It provides a means for linking files and metadata to SBOL designs.
Usage Example:
VariableComponent
A variable that changes during a CombinatorialDerivation.
Usage: Given a Component of the ComponentDefinition that is referenced by the template property reference the VariableComponent by the hasVariableComponent of the Parent CombinatorialDerivation.
Parameters
Name | Possible Values | Description |
---|---|---|
variable |
- Template |
A Component to serve as the template for the derivation of the new Component Object |
cardinality |
- URI |
Specifies how many Component objects SHOULD be derived fromthe template Component during the derivation of a new ComponentDefinition. |
Specialised Components: - ZeroOrOneVariableComponent - OneVariableComponent - ZeroPlusVariableComponent - OnePlusVariableComponent
Description:
Specifies a variable and set of values that will replace one of the Component objects in the template of a CombinatorialDerivation.
Usage Example:
Module
Occurance of a ModuleDefinition.
Usage: Given a ModuleDefinition, create Module and add to module property of the higher level ModuleDefinition.
Parameters
Name | Possible Values | Description |
---|---|---|
moduleDefinition |
- Template |
Blueprint ModuleDefinition. |
Specialised Components:
Description:
Represents the usage or occurrence of a ModuleDefinition within a larger design (that is, another ModuleDefinition).
Usage Example:
ModuleDefinition
Group together entities.
Usage: No parameters required, properties are optional and can add any structural or functional enitites.
Parameters
Name | Possible Values | Description |
---|
Specialised Components:
Description:
The ModuleDefinition class represents a grouping of structural and functional entities in a biological design. The primary usage of this class is to assert the molecular interactions and abstract function of its child entities.
Usage Example:
Model
A template to hold external (non sbol_2 model).
Usage: Given a URI to a external model, definition of language and framework assign to the model property of the ModuleDefinition.
Parameters
Name | Possible Values | Description |
---|---|---|
source |
- URI |
URI of the external location of the model |
language |
- i_SBML - i_CellML - i_BioPAX |
URI that specifies the language in which the model is implemented |
framework |
- i_continuous - i_discrete |
URI that specifies the framework in which the modei is implemented. |
Specialised Components: - SBMLModel - CellMLModel - BioPAXModel
Description:
Provide additional meta-data to enable better reasoning about the contents of this model.
Usage Example:
User Mode
User Mode allows reduces the knowledge requirement of SBOL and allows quicker and more intuative development of SBOL designs.
This means that when you create an instance of these templates, behind the scenes more templates are created.
This means that user created ShortBOL should be smaller and more compact and also reduced most knowledge requirement of the SBOL data model.
This template is for users that want to utilise the full power of the SBOL data model but want a shorthand and/or simplified way of using the often cumbersome and unnecessarily complicated data model.
Note: it is advised to use only the specialised templates for this layer to further increase readability of designs.
mapsTo
Connects parts together that are the same but located in different ModuleDefinitions.
Usage: Given two Instances of ComponentDefinitions(FunctionalComponents) that are present in two different ModuleDefinitions and a refinment, define the mapsTo inside a Module.
Parameters
Name | Possible Values | Description |
---|---|---|
local |
- Template |
Local Instance of Compondent Definition |
remote |
- Template |
Remote Instance of Compondent Definition |
refinement |
- i_useRemote - i_useLocal - i_verifyIdentical - i_merge |
Relationship between local and remote. |
Specialised Components: - mapsUseRemote - mapsUseLocal - mapsIdentical - mapsMerge
Description:
This template handles the case when there is crossover between ModuleDefinitions. Imagine if two Instances of a ComponentDefinition are present part of two different ModuleDefinitions but they are actually the same things then they should be mapped together.
Usage Example:
ExperimentalData
Aggregate links to experimental data files.
Usage: Aggregates links to experimental data files using the hasAttachment property.
Parameters
Name | Possible Values | Description |
---|
Specialised Components:
Description:
An ExperimentalData is typically associated with a single sample, lab instrument, or experimental condition and can be used to describe the output of the test phase of a design-build-test-learn workflow.
Usage Example:
ComponentDefinition
The fundemental templates for creation of enitites in a biological design.
Usage: Use to represent parts in a design such as DNA or a Protein.
Parameters
Name | Possible Values | Description |
---|---|---|
type |
- i_DNA - i_DNARegion - i_RNA - i_RNARegion - i_protein - i_smallMolecule - i_complex |
Category of the ComponentDefinition such as DNA or Protein. |
Specialised Components: - DNAComponent - DNA - RNAComponent - RNA - ProteinComponent - Protein - SmallMoleculeComponent - SmallMolecule - ComplexComponent - Complex - Promoter - RBS - CDS - Terminator - Operator - Gene - EngineeredGene - EngineeredRegion - CDS_RNA - SGRNA - mRNA - TranscriptionFactor - Effector
Description:
These templates create a blueprint of a part, an instances of these are created using FunctionalComponents.
Usage Example:
interaction
How parts interact with one another within a design.
Usage: Given instances Of (functionalComponent) ComponentDefinitions define the interaction inside a ModuleDefinition.
Parameters
Name | Possible Values | Description |
---|---|---|
functionalComponent |
- Template |
Instance of the ComponentDefinition that are part of the interactions |
type |
- Unknown |
type of interaction. |
Specialised Components:
Description:
a Description of how Instances of parts(ComponentDefinitions) interact with one another within a design. It is espciaially advised to use Specialised Templates here if possible.
Usage Example:
Range
Regions of a Sequence.
Usage: Given a start and end value create Range and add to location property of a SequenceAnnotation.
Parameters
Name | Possible Values | Description |
---|---|---|
start |
- Integer |
integer value stating start of Range on the sequence. |
end |
- Integer |
integer value stating end of Range on the sequence. |
Specialised Components: - InlineRange - ReverseComplementRange
Description:
Specifies a region via discrete, inclusive start and end positions that correspond to indices for characters in the elements of a Sequence.
Usage Example:
Cut
Cut a Sequence.
Usage: Given at value create Cut and add to location property of a SequenceAnnotation.
Parameters
Name | Possible Values | Description |
---|---|---|
at |
- Integer |
integer value the location of cut on the sequence. |
Specialised Components: - InlineCut - ReverseComplementCut
Description:
Specifies a single point via discrete, integer value indices for characters in the elements of a Sequence.
Usage Example:
Experiment
Aggregate ExperimentalData.
Usage: Given one or more ExperimentalData objects reference inside this object.
Parameters
Name | Possible Values | Description |
---|---|---|
member |
- Template |
Reference to a ExperimentalData object. |
Specialised Components:
Description:
Aggregate ExperimentalData objects for subsequent analysis, usually in accordance with an experimental design.
Usage Example:
CombinatorialDerivation
Specify combinatorial biological designs.
Usage: Given an initial Component and one or more Variable components create the template.
Parameters
Name | Possible Values | Description |
---|---|---|
template |
- Template |
componeponentDefinition should has SubComponents that can be swapped. |
Specialised Components:
Description:
Specify combinatorial biological designs without having to specify every possible design variant. For example, a CombinatorialDerivation can be used to specify a library of reporter gene variants that include different promoters and RBSs without having to specify a Component for every possible combination of promoter, RBS, and CDS in the library.
Usage Example:
Implementation
Represents a realized instance of a ComponentDefinition.
Usage: Given zero or more ComponentDefinition reference them inside the Implementation.
Parameters
Name | Possible Values | Description |
---|
Specialised Components:
Description:
Implementation bridges the gap between the SBOL and the realised instance of a "thing". Some Examples DNA resulting from fabricating a genetic design, associated with a laboratory sample that was already built, or that is planned to be built in the future, represent virtual and simulated instances.
Usage Example:
InstanceOf
An instance of a ComponentDefinition being used as part of a ModuleDefinition.
Usage: Given a ComponentDefinition and a direction add this FunctionalComponent to the functionalcomponent property of a ModuleDefinition.
Parameters
Name | Possible Values | Description |
---|---|---|
componentDefinition |
- Template |
Blueprint ComponentDefinition |
direction |
- i_in - i_out - i_inout - i_none |
Encode how a designer thinks about the "purpose" of a connection in a system. |
Specialised Components: - hasFunctionalComponent - hasPrivateFunctionalComponent - hasInputComponent - hasOutputComponent - hasInOutComponent - hasNoneComponent - instanceOf
Description:
A ComponentDefinition can be thought as a blueprint or a design of a part, this template creates the physical implementation of the ComponentDefinition in the design. InstanceOf only needs to be used when ModuleDefinitions are used.
Usage Example:
Collection
Group together TopLevel objects
Usage: Requires no parameters but can reference n number of TopLevel objects with the member property.
Parameters
Name | Possible Values | Description |
---|
Specialised Components:
Description:
Groups together a set of TopLevel objects that have something in common. For example A set of Component objects representing a library of genetic logic gates.
Usage Example:
hasSequence
Structure in Sequence format of parts of a design.
Usage: Given a Sequence in the from of a string ("ATCG" for example") define the hasSequence inside a ModuleDefinition.
Parameters
Name | Possible Values | Description |
---|---|---|
elements |
- String |
Characters that represents the constituents of a biological or chemical molecule |
encoding |
- i_iupacDNA - i_iupacRNA - i_iupacProtein - i_opensmilesSMILES |
URI to indicate how theelements property of a Sequence MUST be formed and interpreted. |
Specialised Components: - hasDNASequence - hasRNASequence - hasProteinSequence - hasChemicalStructure
Description:
Represent the primary structure of a Physical Part. Represent the primary structure of a ComponentDefinition object and the manner in which it is encoded.
Usage Example:
sequenceAnnotation
Describes regions of interest on a Sequence.
Usage: Given a ComponentDefinition and Location define the sequenceAnnotation inside a ComponentDefinition.
Parameters
Name | Possible Values | Description |
---|---|---|
componentDefinition |
- Template |
The substructure of the sequenceAnnotation in question |
location |
- Template |
Location object toindicate which elements of a Sequence are described by the SequenceAnnotation. |
Specialised Components:
Description:
This object essentially binds the Sequence to ComponentDefinition and is one of the methods to create sub-structures in ComponentDefinitions.
Usage Example:
sequenceConstraint
Assert restrictions on the relative, sequence-based positions of pairs sub parts.
Usage: Given a two sub-parts and a restriction type, define the sequenceConstraint inside a ComponentDefinition.
Parameters
Name | Possible Values | Description |
---|---|---|
componentDefinition |
- Template |
Subject part of constraint |
componentDefinition |
- Template |
Object part of constraint |
restriction |
- i_precedes - i_sameOrientationAs - i_oppositeOrientationAs - i_differentFrom |
type of restriction places on the ComponentDefinition. |
Specialised Components: - precedes - sameOrientationAs - oppositeOrientationAs - differentFrom
Description:
Usage Example:
subComponent
compose ComponentDefinition objects into a structural hierarchy.
Usage: Given a ComponentDefinition define the subCompponent inside a ComponentDefinition.
Parameters
Name | Possible Values | Description |
---|---|---|
componentDefinition |
- Template |
ComponentDefinition pertaining to sub part. |
Specialised Components: - hasComponent - sequenceAnnotation - sequenceConstraint - precedes - sameOrientationAs - oppositeOrientationAs - differentFrom
Description:
Note This should only be used when you want to state a ComponentDefinition is a sub-component but it is not added to a sequenceConstraint or sequenceAnnotation.
Usage Example:
VariableComponent
A variable that changes during a CombinatorialDerivation.
Usage: Given a Component of the ComponentDefinition that is referenced by the template property reference the VariableComponent by the hasVariableComponent of the Parent CombinatorialDerivation.
Parameters
Name | Possible Values | Description |
---|---|---|
variable |
- Template |
A Component to serve as the template for the derivation of the new Component Object |
cardinality |
- URI |
Specifies how many Component objects SHOULD be derived fromthe template Component during the derivation of a new ComponentDefinition. |
Specialised Components: - ZeroOrOneVariableComponent - OneVariableComponent - ZeroPlusVariableComponent - OnePlusVariableComponent
Description:
Specifies a variable and set of values that will replace one of the Component objects in the template of a CombinatorialDerivation.
Usage Example:
Module
Occurance of a ModuleDefinition.
Usage: Given a ModuleDefinition, create Module and add to module property of the higher level ModuleDefinition.
Parameters
Name | Possible Values | Description |
---|---|---|
moduleDefinition |
- Template |
Blueprint ModuleDefinition. |
Specialised Components:
Description:
Represents the usage or occurrence of a ModuleDefinition within a larger design (that is, another ModuleDefinition).
Usage Example:
ModuleDefinition
Group together entities.
Usage: No parameters required, properties are optional and can add any structural or functional enitites.
Parameters
Name | Possible Values | Description |
---|
Specialised Components:
Description:
The ModuleDefinition class represents a grouping of structural and functional entities in a biological design. The primary usage of this class is to assert the molecular interactions and abstract function of its child entities.
Usage Example:
hasModel
A template to hold external (non sbol_2 model).
Usage: Given a URI to a external model, definition of language and framework define the hasModel inside a ModuleDefinition.
Parameters
Name | Possible Values | Description |
---|---|---|
source |
- URI |
source |
language |
- i_SBML - i_CellML - i_BioPAX |
URI that specifies the language in which the model is implemented |
framework |
- i_continuous - i_discrete |
URI that specifies the framework in which the modei is implemented. |
Specialised Components: - hasSBMLModel - hasCellMLModel - hasBioPAXModel
Description:
Provide additional meta-data to enable better reasoning about the contents of this model.
Usage Example:
FAQ
Q. User or Developer Mode?
A. We would advise using User Mode, however this is entirely your choice both have advantages and disadvantages.
Q. What is the difference between using ComponentDefinition(i_DNA) and a specialised component such as DNA()
A. Nothing! Behind the scenes a specialised component does the same as explicitly definiing the type. It is advised to
use the specialised components as it makes ShortBOL more readable.