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.