libSBOL  2.3.3
Public Attributes | Public Member Functions | Protected Member Functions | List of all members
ComponentDefinition Class Reference

Detailed Description

The ComponentDefinition class represents the structural entities of a biological design.

The primary usage of this class is to represent structural entities with designed sequences, such as DNA, RNA, and proteins, but it can also be used to represent any other entity that is part of a design, such as small molecules, proteins, and complexes

Public Attributes

URIProperty types
 The types property is a REQUIRED set of URIs that specifies the category of biochemical or physical entity (for example DNA, protein, or small molecule) that a ComponentDefinition object abstracts for the purpose of engineering design. More...
 
URIProperty roles
 The roles property is an OPTIONAL set of URIs that clarifies the potential function of the entity represented by a ComponentDefinition in a biochemical or physical context. More...
 
OwnedObject< Componentcomponents
 The components property is OPTIONAL and MAY specify a set of Component objects that are contained by the ComponentDefinition. The components properties of ComponentDefinition objects can be used to construct a hierarchy of Component and ComponentDefinition objects. If a ComponentDefinition in such a hierarchy refers to one or more Sequence objects, and there exist ComponentDefinition objects lower in the hierarchy that refer to Sequence objects with the same encoding, then the elements properties of these Sequence objects SHOULD be consistent with each other, such that well-defined mappings exist from the “lower level” elements to the “higher level” elements. This mapping is also subject to any restrictions on the positions of the Component objects in the hierarchy that are imposed by the SequenceAnnotation or SequenceConstraint objects contained by the ComponentDefinition objects in the hierarchy. The set of relations between Component and ComponentDefinition objects is strictly acyclic.
 
ReferencedObject sequences
 The sequences property is OPTIONAL and MAY include a URI that refer to a Sequence object. The referenced object defines the primary structure of the ComponentDefinition.
 
OwnedObject< SequenceAnnotationsequenceAnnotations
 The sequenceAnnotations property is OPTIONAL and MAY contain a set of SequenceAnnotation objects. Each SequenceAnnotation specifies and describes a potentially discontiguous region on the Sequence objects referred to by the ComponentDefinition.
 
OwnedObject< SequenceConstraintsequenceConstraints
 The sequenceConstraints property is OPTIONAL and MAY contain a set of SequenceConstraint objects. These objects describe any restrictions on the relative, sequence-based positions and/or orientations of the Component objects contained by the ComponentDefinition. For example, the ComponentDefinition of a gene might specify that the position of its promoter Component precedes that of its CDS Component. This is particularly useful when a ComponentDefinition lacks a Sequence and therefore cannot specify the precise, sequence-based positions of its Component objects using SequenceAnnotation objects.
 
URIProperty persistentIdentity
 The persistentIdentity property is OPTIONAL and has a data type of URI. This URI serves to uniquely refer to a set of SBOL objects that are different versions of each other. An Identified object MUST be referred to using either its identity URI or its persistentIdentity URI.
 
TextProperty displayId
 The displayId property is an OPTIONAL identifier with a data type of String. This property is intended to be an intermediate between name and identity that is machine-readable, but more human-readable than the full URI of an identity. If the displayId property is used, then its String value SHOULD be locally unique (global uniqueness is not necessary) and MUST be composed of only alphanumeric or underscore characters and MUST NOT begin with a digit.
 
VersionProperty version
 If the version property is used, then it is RECOMMENDED that version numbering follow the conventions of semantic versioning, particularly as implemented by Maven. This convention represents versions as sequences of numbers and qualifiers that are separated by the characters “.” and “-” and are compared in lexicographical order (for example, 1 < 1.3.1 < 2.0-beta). For a full explanation, see the linked resources.
 
URIProperty wasDerivedFrom
 The wasDerivedFrom property is OPTIONAL and has a data type of URI. An SBOL object with this property refers to another SBOL object or non-SBOL resource from which this object was derived. If the wasDerivedFrom property of an SBOL object A that refers to an SBOL object B has an identical persistentIdentity, and both A and B have a version, then the version of B MUST precede that of A. In addition, an SBOL object MUST NOT refer to itself via its own wasDerivedFrom property or form a cyclical chain of references via its wasDerivedFrom property and those of other SBOL objects. For example, the reference chain “ A was derived from B and B was derived from A” is cyclical.
 
ReferencedObject wasGeneratedBy
 An Activity which generated this ComponentDefinition, eg., a design process like codon-optimization or a construction process like Gibson Assembly.
 
TextProperty name
 The name property is OPTIONAL and has a data type of String. This property is intended to be displayed to a human when visualizing an Identified object. If an Identified object lacks a name, then software tools SHOULD instead display the object’s displayId or identity. It is RECOMMENDED that software tools give users the ability to switch perspectives between name properties that are human-readable and displayId properties that are less human-readable, but are more likely to be unique.
 
TextProperty description
 The description property is OPTIONAL and has a data type of String. This property is intended to contain a more thorough text description of an Identified object.
 
URIProperty identity
 The identity property is REQUIRED by all Identified objects and has a data type of URI. A given Identified object’s identity URI MUST be globally unique among all other identity URIs. The identity of a compliant SBOL object MUST begin with a URI prefix that maps to a domain over which the user has control. Namely, the user can guarantee uniqueness of identities within this domain. For other best practices regarding URIs see Section 11.2 of the SBOL specification doucment.
 

Public Member Functions

 ComponentDefinition (std::string uri="example", std::string type=BIOPAX_DNA, std::string version=VERSION_STRING)
 Construct a ComponentDefinition. More...
 
 ComponentDefinition (rdf_type type, std::string uri, std::string component_type, std::string version)
 Constructor used for defining extension classes. More...
 
void assemble (std::vector< ComponentDefinition *> &list_of_components, std::string assembly_standard="")
 Assembles ComponentDefinitions into an abstraction hierarchy. More...
 
void assemble (std::vector< ComponentDefinition *> &list_of_components, Document &doc, std::string assembly_standard="")
 Assembles ComponentDefinitions into an abstraction hierarchy. More...
 
void assemblePrimaryStructure (std::vector< std::string > &primary_structure, std::string assembly_standard="")
 Assembles ComponentDefinition into a linear primary structure. More...
 
void assemblePrimaryStructure (std::vector< ComponentDefinition *> &primary_structure, std::string assembly_standard="")
 Assembles ComponentDefinition into a linear primary structure. More...
 
void assemblePrimaryStructure (std::vector< ComponentDefinition *> &primary_structure, Document &doc, std::string assembly_standard="")
 Assembles ComponentDefinition into a linear primary structure. More...
 
void assemble (std::vector< std::string > &list_of_uris, std::string assembly_standard="")
 Assembles ComponentDefinitions into an abstraction hierarchy. More...
 
std::string compile ()
 Compiles an abstraction hierarchy of ComponentDefinitions into a nucleotide sequence. If no Sequence object is associated with this ComponentDefinition, one will be automatically instantiated.
 
std::string updateSequence (std::string composite_sequence="")
 Assemble a parent ComponentDefinition's Sequence from its subcomponent Sequences. More...
 
std::vector< Component * > getInSequentialOrder ()
 Orders this ComponentDefinition's member Components into a linear arrangement based on Sequence Constraints. More...
 
int hasUpstreamComponent (Component &current_component)
 Checks if the specified Component has a Component upstream in linear arrangement on the DNA strand. More...
 
ComponentgetUpstreamComponent (Component &current_component)
 Get the upstream Component. More...
 
int hasDownstreamComponent (Component &current_component)
 Checks if the specified Component has a Component downstream in linear arrangement on the DNA strand. More...
 
ComponentgetDownstreamComponent (Component &current_component)
 Get the downstream Component. More...
 
ComponentgetFirstComponent ()
 Gets the first Component in a linear sequence. More...
 
ComponentgetLastComponent ()
 Gets the last Component in a linear sequence. More...
 
std::vector< ComponentDefinition * > applyToComponentHierarchy (void(*callback_fn)(ComponentDefinition *, void *)=NULL, void *user_data=NULL)
 Perform an operation on every Component in a structurally-linked hierarchy of Components by applying a callback function. More...
 
std::vector< ComponentDefinition * > getPrimaryStructure ()
 Get the primary sequence of a design in terms of its sequentially ordered Components.
 
void insertDownstreamComponent (Component &target, ComponentDefinition &insert)
 Insert a Component downstream of another in a primary sequence, shifting any adjacent Components dowstream as well. More...
 
void insertUpstreamComponent (Component &target, ComponentDefinition &insert)
 Insert a Component upstream of another in a primary sequence, shifting any adjacent Components upstream as well. More...
 
void addUpstreamFlank (Component &target, std::string elements)
 This may be a useful method when building up SBOL representations of natural DNA sequences. More...
 
void addDownstreamFlank (Component &target, std::string elements)
 This may be a useful method when building up SBOL representations of natural DNA sequences. More...
 
bool isRegular (std::string &msg)
 Use this diagnose an irregular design. More...
 
bool isRegular ()
 Recursively checks if this ComponentDefinition defines a SequenceAnnotation and Range for every Sequence. More...
 
bool isComplete (std::string &msg)
 Use this diagnose an incomplete design. More...
 
bool isComplete ()
 Recursively verifies that the parent Document contains a ComponentDefinition and Sequence for each and every ComponentDefinition in the abstraction hierarchy. More...
 
void disassemble (int range_start=1)
 Instantiates a Component for every SequenceAnnotation. When converting from a flat GenBank file to a flat SBOL file, the result is a ComponentDefinition with SequenceAnnotations. This method will convert the flat SBOL file into hierarchical SBOL.
 
void participate (Participation &species)
 A convenience method that assigns a component to participate in a biochemical reaction. More...
 
template<class SBOLClass >
SBOLClass & copy (Document *target_doc=NULL, std::string ns="", std::string version="")
 Recursively copies an object. More...
 
template<class SBOLClass >
SBOLClass & simpleCopy (std::string uri)
 Copies an object. More...
 
template<class SBOLClass >
SBOLClass & generate (std::string uri)
 
template<class SBOLClass >
SBOLClass & generate (std::string uri, Agent &agent, Plan &plan, std::vector< Identified *> usages={})
 
virtual rdf_type getTypeURI ()
 
std::string getClassName (std::string type)
 
SBOLObjectfind (std::string uri)
 Search this object recursively to see if an object or any child object with URI already exists. More...
 
SBOLObjectfind_property (std::string uri)
 Search this object recursively to see if it contains a member property with the given RDF type. More...
 
std::vector< SBOLObject * > find_property_value (std::string uri, std::string value, std::vector< SBOLObject *> matches={})
 Search this object recursively to see if it contains a member property with the given RDF type and indicated property value. More...
 
std::vector< SBOLObject * > find_reference (std::string uri)
 Search this object recursively to see if it contains a member property with the given RDF type and indicated property value. More...
 
int compare (SBOLObject *comparand)
 Compare two SBOL objects or Documents. More...
 
std::string getPropertyValue (std::string property_uri)
 Get the value of a custom annotation property by its URI. More...
 
std::vector< std::string > getPropertyValues (std::string property_uri)
 Get all values of a custom annotation property by its URI. More...
 
std::vector< std::string > getProperties ()
 Gets URIs for all properties contained by this object. More...
 
void setPropertyValue (std::string property_uri, std::string val)
 Set and overwrite the value for a user-defined annotation property. More...
 
void addPropertyValue (std::string property_uri, std::string val)
 Append a value to a user-defined annotation property. More...
 
void setAnnotation (std::string property_uri, std::string val)
 Set the value for a user-defined annotation property. More...
 
std::string getAnnotation (std::string property_uri)
 Get the value of a custom annotation property by its URI. More...
 
virtual void close ()
 Use this method to destroy an SBOL object that is not contained by a parent Document. More...
 

Protected Member Functions

template<class ExtensionClass >
void register_extension_class (std::string ns, std::string ns_prefix, std::string class_name)
 Register an extension class and its namespace, so custom data can be embedded into and read from SBOL files. More...
 

Constructor & Destructor Documentation

◆ ComponentDefinition() [1/2]

ComponentDefinition ( std::string  uri = "example",
std::string  type = BIOPAX_DNA,
std::string  version = VERSION_STRING 
)
inline

Construct a ComponentDefinition.

Parameters
uriA full URI including a scheme, namespace, and identifier. If SBOLCompliance configuration is enabled, then this argument is simply the displayId for the new object and a full URI will automatically be constructed.
typeA BioPAX ontology term that indicates whether the ComponentDefinition is DNA, RNA, protein, or some other molecule type.
versionAn arbitrary version string. If SBOLCompliance is enabled, this should be a Maven version string of the form "major.minor.patch".

◆ ComponentDefinition() [2/2]

ComponentDefinition ( rdf_type  type,
std::string  uri,
std::string  component_type,
std::string  version 
)
inline

Constructor used for defining extension classes.

Parameters
typeThe RDF type for an extension class derived from this one

Member Function Documentation

◆ addDownstreamFlank()

void addDownstreamFlank ( Component target,
std::string  elements 
)

This may be a useful method when building up SBOL representations of natural DNA sequences.

For example it is often necessary to specify components that are assumed to have no meaningful role in the design, but are nevertheless important to fill in regions of sequence. This method autoconstructs a ComponentDefinition and Sequence object to create an arbitrary flanking sequence around design Components. The new ComponentDefinition will have Sequence Ontology type of flanking_sequence.

Parameters
targetThe new flanking sequence will be placed downstream of the target
elementsThe primary sequence elements will be assigned to the autoconstructed Sequence object. The encoding is inferred

◆ addPropertyValue()

void addPropertyValue ( std::string  property_uri,
std::string  val 
)
inherited

Append a value to a user-defined annotation property.

Either a literal or URI value

◆ addUpstreamFlank()

void addUpstreamFlank ( Component target,
std::string  elements 
)

This may be a useful method when building up SBOL representations of natural DNA sequences.

For example it is often necessary to specify components that are assumed to have no meaningful role in the design, but are nevertheless important to fill in regions of sequence. This method autoconstructs a ComponentDefinition and Sequence object to create an arbitrary flanking sequence around design Components. The new ComponentDefinition will have Sequence Ontology type of flanking_region or SO:0000239

Parameters
targetThe new flanking sequence will be placed upstream of the target
elementsThe primary sequence elements will be assigned to the autoconstructed Sequence object. The encoding is inferred

◆ applyToComponentHierarchy()

vector< ComponentDefinition * > applyToComponentHierarchy ( void(*)(ComponentDefinition *, void *)  callback_fn = NULL,
void *  user_data = NULL 
)

Perform an operation on every Component in a structurally-linked hierarchy of Components by applying a callback function.

If no callback is specified, the default behavior is to return a pointer list of each Component in the hierarchy.

Parameters
callback_funA pointer to a callback function with signature void callback_fn(ComponentDefinition *, void *).
user_dataArbitrary user data which can be passed in and out of the callback as an argument or return value.
Returns
Returns a flat list of pointers to all Components in the hierarchy.

◆ assemble() [1/3]

void assemble ( std::vector< ComponentDefinition *> &  list_of_components,
std::string  assembly_standard = "" 
)

Assembles ComponentDefinitions into an abstraction hierarchy.

The resulting data structure is a partial design, still lacking a primary structure or explicit sequence. To form a primary structure out of the ComponentDefinitions, call linearize after calling assemble. To fully realize the target sequence, use Sequence::assemble().

Parameters
list_of_componentsA list of subcomponents that will compose this ComponentDefinition
assembly_standardAn optional argument such as IGEM_STANDARD_ASSEMBLY that affects how components are composed and the final target sequence

◆ assemble() [2/3]

void assemble ( std::vector< ComponentDefinition *> &  list_of_components,
Document doc,
std::string  assembly_standard = "" 
)

Assembles ComponentDefinitions into an abstraction hierarchy.

The resulting data structure is a partial design, still lacking a primary structure or explicit sequence. To form a primary structure out of the ComponentDefinitions, call linearize after calling assemble. To fully realize the target sequence, use Sequence::assemble().

Parameters
list_of_componentsA list of subcomponents that will compose this ComponentDefinition
docThe Document to which the assembled ComponentDefinitions will be added
assembly_standardAn optional argument such as IGEM_STANDARD_ASSEMBLY that affects how components are composed and the final target sequence

◆ assemble() [3/3]

void assemble ( std::vector< std::string > &  list_of_uris,
std::string  assembly_standard = "" 
)

Assembles ComponentDefinitions into an abstraction hierarchy.

The resulting data structure is a partial design, still lacking a primary structure or explicit sequence. To form a primary structure out of the ComponentDefinitions, call linearize after calling assemble. To fully realize the target sequence, use Sequence::assemble().

Parameters
list_of_urisA list of URIs for the constituent ComponentDefinitions, or displayIds if using SBOL-compliant URIs
assembly_standardAn optional argument such as IGEM_STANDARD_ASSEMBLY that affects how components are composed and the final target sequence

◆ assemblePrimaryStructure() [1/3]

void assemblePrimaryStructure ( std::vector< std::string > &  primary_structure,
std::string  assembly_standard = "" 
)

Assembles ComponentDefinition into a linear primary structure.

The resulting data structure is a partial design, still lacking an explicit sequence. To fully realize the target sequence, use Sequence::assemble().

Parameters
primary_structureA list of URIs for the constituent ComponentDefinitions, or displayIds if using SBOL-compliant URIs
assembly_standardAn optional argument such as IGEM_STANDARD_ASSEMBLY that affects how components are composed and the final target sequence

◆ assemblePrimaryStructure() [2/3]

void assemblePrimaryStructure ( std::vector< ComponentDefinition *> &  primary_structure,
std::string  assembly_standard = "" 
)

Assembles ComponentDefinition into a linear primary structure.

The resulting data structure is a partial design, still lacking an explicit sequence. To fully realize the target sequence, use Sequence::assemble().

Parameters
list_of_componentsA list of subcomponents that will compose this ComponentDefinition
assembly_standardAn optional argument such as IGEM_STANDARD_ASSEMBLY that affects how components are composed and the final target sequence

◆ assemblePrimaryStructure() [3/3]

void assemblePrimaryStructure ( std::vector< ComponentDefinition *> &  primary_structure,
Document doc,
std::string  assembly_standard = "" 
)

Assembles ComponentDefinition into a linear primary structure.

The resulting data structure is a partial design, still lacking an explicit sequence. To fully realize the target sequence, use Sequence::assemble().

Parameters
list_of_componentsA list of subcomponents that will compose this ComponentDefinition
docThe Document to which the assembled ComponentDefinitions will be added
assembly_standardAn optional argument such as IGEM_STANDARD_ASSEMBLY that affects how components are composed and the final target sequence

◆ close()

void close ( )
virtualinherited

Use this method to destroy an SBOL object that is not contained by a parent Document.

If the object does have a parent Document, instead use doc.close() with the object's URI identity as an argument. Recurse through child objects and delete them.

◆ compare()

int compare ( SBOLObject comparand)
inherited

Compare two SBOL objects or Documents.

The behavior is currently undefined for objects with custom annotations or extension classes.

Parameters
comparandA pointer to the object being compared to this one.
Returns
1 if the objects are identical, 0 if they are different

◆ copy()

SBOLClass & copy ( Document target_doc = NULL,
std::string  ns = "",
std::string  version = "" 
)
inherited

Recursively copies an object.

Use this to copy an object to a new document, a new namespace, or to increment its version recursively. An object be recursively copied into a new document and a new namespace, assuming compliant URIs. If the optional version argument is specified, it will be used instead of incrementing the copied object's version (this can be used when using a custom versioning scheme other than libSBOL's default).

Template Parameters
SBOLClassThe type of SBOL object being copied
Parameters
new_docThe new copies will be attached to this Document. NULL by default.
nsThis namespace will be substituted for the current namespace (as configured by setHomespace) in all SBOL-compliant URIs.
versionA new version
Returns
The copied object.

◆ find()

SBOLObject * find ( std::string  uri)
inherited

Search this object recursively to see if an object or any child object with URI already exists.

Parameters
uriThe URI to search for.
Returns
A pointer to theobject with this URI if it exists, NULL otherwise

◆ find_property()

SBOLObject * find_property ( std::string  uri)
inherited

Search this object recursively to see if it contains a member property with the given RDF type.

Parameters
uriThe RDF type of the property to search for.
Returns
A pointer to the object that contains a member property with the specified RDF type, NULL otherwise

◆ find_property_value()

vector< SBOLObject * > find_property_value ( std::string  uri,
std::string  value,
std::vector< SBOLObject *>  matches = {} 
)
inherited

Search this object recursively to see if it contains a member property with the given RDF type and indicated property value.

Parameters
uriThe RDF type of the property to search for.
valueThe property value to match
Returns
A vector containing all objects found that contain a member property with the specified RDF type

◆ find_reference()

vector< SBOLObject * > find_reference ( std::string  uri)
inherited

Search this object recursively to see if it contains a member property with the given RDF type and indicated property value.

Parameters
uriA URI, either an ontology term or an object reference, to search for
Returns
A vector containing all objects found that contain the URI in a property value

◆ generate() [1/2]

SBOLClass & generate ( std::string  uri)
inherited
Parameters
uriA URI for the new object, or a displayId if operating in SBOLCompliant mode
Template Parameters
Thetype of SBOL object to generate

◆ generate() [2/2]

SBOLClass& generate ( std::string  uri,
Agent agent,
Plan plan,
std::vector< Identified *>  usages = {} 
)
inherited
Parameters
uriA URI for the new object, or a displayId if operating in SBOLCompliant mode
Template Parameters
Thetype of SBOL object to generate

◆ getAnnotation()

std::string getAnnotation ( std::string  property_uri)
inherited

Get the value of a custom annotation property by its URI.

Synonymous with getPropertyValue

Parameters
property_uriThe URI for the property
Returns
The value of the property or SBOL_ERROR_NOT_FOUND

◆ getClassName()

std::string getClassName ( std::string  type)
inherited
Returns
Parses a local class name from the RDF-type of this SBOL Object

◆ getDownstreamComponent()

Component & getDownstreamComponent ( Component current_component)

Get the downstream Component.

Returns
The downstream component

◆ getFirstComponent()

Component & getFirstComponent ( )

Gets the first Component in a linear sequence.

Returns
The first component in sequential order

◆ getInSequentialOrder()

vector< Component * > getInSequentialOrder ( )

Orders this ComponentDefinition's member Components into a linear arrangement based on Sequence Constraints.

Returns
Primary sequence structure

◆ getLastComponent()

Component & getLastComponent ( )

Gets the last Component in a linear sequence.

Returns
The last component in sequential order

◆ getProperties()

std::vector< std::string > getProperties ( )
inherited

Gets URIs for all properties contained by this object.

This includes SBOL core properties as well as custom annotations. Use this to find custom extension data in an SBOL file.

Returns
A vector of URIs that identify the properties contained in this object

◆ getPropertyValue()

std::string getPropertyValue ( std::string  property_uri)
inherited

Get the value of a custom annotation property by its URI.

Parameters
property_uriThe URI for the property
Returns
The value of the property or SBOL_ERROR_NOT_FOUND

◆ getPropertyValues()

std::vector< std::string > getPropertyValues ( std::string  property_uri)
inherited

Get all values of a custom annotation property by its URI.

Parameters
property_uriThe URI for the property
Returns
A vector of property values or SBOL_ERROR_NOT_FOUND

◆ getTypeURI()

rdf_type getTypeURI ( )
virtualinherited
Returns
The uniform resource identifier that describes the RDF-type of this SBOL Object

◆ getUpstreamComponent()

Component & getUpstreamComponent ( Component current_component)

Get the upstream Component.

Returns
The upstream component

◆ hasDownstreamComponent()

int hasDownstreamComponent ( Component current_component)

Checks if the specified Component has a Component downstream in linear arrangement on the DNA strand.

Checks that the appropriate SequenceConstraint exists.

Parameters
current_componentA Component in this ComponentDefinition
Returns
1 if found, 0 if not

◆ hasUpstreamComponent()

int hasUpstreamComponent ( Component current_component)

Checks if the specified Component has a Component upstream in linear arrangement on the DNA strand.

Checks that the appropriate SequenceConstraint exists.

Parameters
current_componentA Component in this ComponentDefinition
Returns
1 if found, 0 if not

◆ insertDownstreamComponent()

void insertDownstreamComponent ( Component target,
ComponentDefinition insert 
)

Insert a Component downstream of another in a primary sequence, shifting any adjacent Components dowstream as well.

Parameters
targetThe target Component will be upstream of the insert Component after this operation.
insertThe insert Component is inserted downstream of the target Component.

◆ insertUpstreamComponent()

void insertUpstreamComponent ( Component target,
ComponentDefinition insert 
)

Insert a Component upstream of another in a primary sequence, shifting any adjacent Components upstream as well.

Parameters
targetThe target Component will be downstream of the insert Component after this operation.
insertThe insert Component is inserted upstream of the target Component.

◆ isComplete() [1/2]

bool isComplete ( std::string &  msg)

Use this diagnose an incomplete design.

Recursively checks if this ComponentDefinition defines a SequenceAnnotation and Range for every Sequence. Completeness does not guarantee regularity

Parameters
msgA message for diagnosing the irregularity, if any is found. The message is returned through an argument of type std::string&
Returns
true if the abstraction hierarchy is regular, false otherwise.

◆ isComplete() [2/2]

bool isComplete ( )

Recursively verifies that the parent Document contains a ComponentDefinition and Sequence for each and every ComponentDefinition in the abstraction hierarchy.

If a ComponentDefinition is not complete, some objects are missing from the Document or externally linked. Diagnose with isComplete(std::string &msg)

Returns
true if the abstraction hierarchy is complete, false otherwise.

◆ isRegular() [1/2]

bool isRegular ( std::string &  msg)

Use this diagnose an irregular design.

Recursively checks if this ComponentDefinition defines a SequenceAnnotation and Range for every Sequence. Regularity is more stringent than completeness. A design must be complete to be regular.

Parameters
msgA message for diagnosing the irregularity, if any is found. The message is returned through an argument of type std::string&
Returns
true if the abstraction hierarchy is regular, false otherwise.

◆ isRegular() [2/2]

bool isRegular ( )

Recursively checks if this ComponentDefinition defines a SequenceAnnotation and Range for every Sequence.

Regularity is more stringent than completeness. A design must be complete to be regular. If the Component is irregular, diagnose with isRegular(std::string &msg)

Returns
true if the abstraction hierarchy is regular, false otherwise.

◆ participate()

void participate ( Participation species)

A convenience method that assigns a component to participate in a biochemical reaction.

Behind the scenes, it auto-constructs a FunctionalComponent for this ComponentDefinition and assigns it to a Participation

Parameters
speciesA Participation object (ie, participant species in a biochemical Interaction).

◆ register_extension_class()

void register_extension_class ( std::string  ns,
std::string  ns_prefix,
std::string  class_name 
)
protectedinherited

Register an extension class and its namespace, so custom data can be embedded into and read from SBOL files.

Template Parameters
ExtensionClassThe new class
Parameters
nsThe extension namespace, eg, http://myhome.org/my_extension#. It's important that the namespace ends in a forward-slash or hash
ns_prefixA shorthand symbol for the full namespace as it will appear in the output file, eg, my_extension

◆ setAnnotation()

void setAnnotation ( std::string  property_uri,
std::string  val 
)
inherited

Set the value for a user-defined annotation property.

Synonymous with setPropertyValue If the value is a URI, it should be surrounded by angle brackets, else it will be interpreted as a literal value

◆ setPropertyValue()

void setPropertyValue ( std::string  property_uri,
std::string  val 
)
inherited

Set and overwrite the value for a user-defined annotation property.

Either a literal or URI value

◆ simpleCopy()

SBOLClass & simpleCopy ( std::string  uri)
inherited

Copies an object.

No child objects are copied.

Parameters
uriA URI for the new object, or a displayId if operating in SBOLCompliant mode
Template Parameters
Usuallythe same type of SBOL object as this

◆ updateSequence()

std::string updateSequence ( std::string  composite_sequence = "")

Assemble a parent ComponentDefinition's Sequence from its subcomponent Sequences.

Parameters
composite_sequenceA recursive parameter, use default value
Returns
The assembled parent sequence

Member Data Documentation

◆ roles

URIProperty roles

The roles property is an OPTIONAL set of URIs that clarifies the potential function of the entity represented by a ComponentDefinition in a biochemical or physical context.

The roles property of a ComponentDefinition MAY contain one or more URIs that MUST identify terms from ontologies that are consistent with the types property of the ComponentDefinition. For example, the roles property of a DNA or RNA ComponentDefinition could contain URIs identifying terms from the Sequence Ontology (SO). See the table below for common examples

Role URI for Sequence Ontology Term LibSBOL symbol
Miscellaneous http://identifiers.org/so/SO:0000001 SO_MISC
Promoter http://identifiers.org/so/SO:0000167 SO_PROMOTER
RBS http://identifiers.org/so/SO:0000139 SO_RBS
CDS http://identifiers.org/so/SO:0000316 SO_CDS
Terminator http://identifiers.org/so/SO:0000141 SO_TERMINATOR
Gene http://identifiers.org/so/SO:0000704
Operator http://identifiers.org/so/SO:0000057
Engineered Gene http://identifiers.org/so/SO:0000280
mRNA http://identifiers.org/so/SO:0000234
Effector http://identifiers.org/chebi/CHEBI:35224

◆ types

URIProperty types

The types property is a REQUIRED set of URIs that specifies the category of biochemical or physical entity (for example DNA, protein, or small molecule) that a ComponentDefinition object abstracts for the purpose of engineering design.

The types property of every ComponentDefinition MUST contain one or more URIs that MUST identify terms from appropriate ontologies, such as the BioPAX ontology or the ontology of Chemical Entities of Biological Interest. See the table below for examples.

Type URI for BioPAX Term LibSBOL symbol
DNA http://www.biopax.org/release/biopax-level3.owl#DnaRegion BIOPAX_DNA
RNA http://www.biopax.org/release/biopax-level3.owl#RnaRegion BIOPAX_RNA
Protein http://www.biopax.org/release/biopax-level3.owl#Protein BIOPAX_PROTEIN
Small Molecule http://www.biopax.org/release/biopax-level3.owl#SmallMolecule BIOPAX_SMALL_MOLECULE
Complex http://www.biopax.org/release/biopax-level3.owl#Complex BIOPAX_COMPLEX

The documentation for this class was generated from the following files:
Inheritance diagram for ComponentDefinition:
Inheritance graph