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

Detailed 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.

Public Attributes

URIProperty roles
 The roles property is an OPTIONAL set of URIs that clarifies the intended function of a ModuleDefinition. These URIs might identify descriptive biological roles, such as “metabolic pathway” and “signaling cascade,” but they can also identify identify “logical” roles, such as “inverter” or “AND gate”, or other abstract roles for describing the function of design. Interpretation of the meaning of such roles currently depends on the software tools that read and write them.
 
OwnedObject< Modulemodules
 The modules property is OPTIONAL and MAY specify a set of Module objects contained by the ModuleDefinition. While the ModuleDefinition class is analogous to a specification sheet for a system of interacting biological elements, the Module class represents the occurrence of a particular subsystem within the system. Hence, this class allows a system design to include multiple instances of a subsystem, all defined by reference to the same ModuleDefinition. For example, consider the ModuleDefinition for a network of two-input repressor devices in which the particular repressors have not been chosen yet. This ModuleDefinition could contain multiple Module objects that refer to the same ModuleDefinition of an abstract two-input repressor device. Note that the set of relations between Module and ModuleDefinition objects is strictly acyclic.
 
OwnedObject< Interactioninteractions
 The interactions property is OPTIONAL and MAY specify a set of Interaction objects within the ModuleDefinition. The Interaction class provides an abstract, machine-readable representation of entity behavior within a ModuleDefinition. Each Interaction contains Participation objects that indicate the roles of the FunctionalComponent objects involved in the Interaction.
 
OwnedObject< FunctionalComponentfunctionalComponents
 The functionalComponents property is OPTIONAL and MAY specify a set of FunctionalComponent objects contained by the ModuleDefinition. Just as a Module represents an instance of a subsystem in the overall system represented by a ModuleDefinition, a FunctionalComponent represents an instance of a structural entity (represented by a ComponentDefinition) in the system. This concept allows a ModuleDefinition to assert different interactions for separate copies of the same structural entity if needed. For example, a ModuleDefinition might contain multiple FunctionalComponent objects that refer to the same promoter ComponentDefinition, but assert different interactions for these promoter copies based on their separate positions in another ComponentDefinition that represents the structure of the entire system.
 
ReferencedObject models
 The models property is OPTIONAL and MAY specify a set of URI references to Model objects. Model objects are placeholders that link ModuleDefinition objects to computational models of any format. A ModuleDefinition object can link to more than one Model since each might encode system behavior in a different way or at a different level of detail.
 
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

 ModuleDefinition (std::string uri="example", std::string version=VERSION_STRING)
 Construct a ModuleDefinition. More...
 
 ModuleDefinition (rdf_type sbol_type_uri, std::string uri, std::string version)
 Constructor used for defining extension classes. More...
 
FunctionalComponentsetOutput (ComponentDefinition &output)
 Defines an output for a sub-Module. More...
 
FunctionalComponentsetInput (ComponentDefinition &input)
 Defines an input for a sub-Module. More...
 
void setOutput (FunctionalComponent &output)
 Configures a FunctionalComponent as an output for a Module. More...
 
void setInput (FunctionalComponent &input)
 Configures a FunctionalComponent as an input for a Module. More...
 
void connect (FunctionalComponent &output, FunctionalComponent &input)
 Connects the output of a sub-Module with the input of another sub-Module. More...
 
void override (FunctionalComponent &highlevel, FunctionalComponent &lowlevel)
 Overrides a low-level component in an abstract sub-Module with a high-level component in a parent ModuleDefinition, for example when overriding an abstract template Module with explicit components. More...
 
std::vector< ModuleDefinition * > applyToModuleHierarchy (void(*callback_fn)(ModuleDefinition *, void *)=NULL, void *user_data=NULL)
 Perform an operation on every ModuleDefinition in a structurally-linked hierarchy of ModuleDefinitions by applying a callback function. More...
 
void assemble (std::vector< ModuleDefinition * > list_of_modules)
 Assemble a high-level ModuleDefinition from lower-level submodules. 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

◆ ModuleDefinition() [1/2]

ModuleDefinition ( std::string  uri = "example",
std::string  version = VERSION_STRING 
)
inline

Construct a ModuleDefinition.

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.
versionAn arbitrary version string. If SBOLCompliance is enabled, this should be a valid Maven version string.

◆ ModuleDefinition() [2/2]

ModuleDefinition ( rdf_type  sbol_type_uri,
std::string  uri,
std::string  version 
)
inline

Constructor used for defining extension classes.

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

Member Function Documentation

◆ 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

◆ applyToModuleHierarchy()

vector< ModuleDefinition * > applyToModuleHierarchy ( void(*)(ModuleDefinition *, void *)  callback_fn = NULL,
void *  user_data = NULL 
)

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

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

Parameters
callback_funA pointer to a callback function with signature void callback_fn(ModuleDefinition *, 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 ModuleDefinitions in the hierarchy.

◆ assemble()

void assemble ( std::vector< ModuleDefinition * >  list_of_modules)

Assemble a high-level ModuleDefinition from lower-level submodules.

Autoconstructs Module objects in the process.

Parameters
list_of_modulesA list of pointers to the submodule ModuleDefinitions

◆ 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

◆ connect()

void connect ( FunctionalComponent output,
FunctionalComponent input 
)

Connects the output of a sub-Module with the input of another sub-Module.

Auto-constructs MapsTo objects.

Parameters
outputA FunctionalComponent configured as a Module output (see setOutput)
inputA FunctionalComponent configured as a Module input (see setInput)

◆ 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

◆ 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

◆ override()

void override ( FunctionalComponent highlevel,
FunctionalComponent lowlevel 
)

Overrides a low-level component in an abstract sub-Module with a high-level component in a parent ModuleDefinition, for example when overriding an abstract template Module with explicit components.

Parameters
highlevelA high-level FunctionalComponent
lowlevelA low-level FunctionalComponent in a nested sub-Module

◆ 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

◆ setInput() [1/2]

FunctionalComponent & setInput ( ComponentDefinition input)

Defines an input for a sub-Module.

Useful for top-down assembly of Modules and sub-Modules. If a FunctionalComponent with the given definition does not exist yet, one will be autoconstructed. Otherwise the FunctionalComponent with the given definition will be inferred. Be warned that this inference may fail if there is more than one FunctionalComponent with the same definition.

Parameters
inputA ComponentDefinition that defines the input
Returns
A FunctionalComponent that is derived from the argument ComponentDefinition and configured as this ModuleDefinition's input (it's direction property is set to SBOL_DIRECTION_IN)

◆ setInput() [2/2]

void setInput ( FunctionalComponent input)

Configures a FunctionalComponent as an input for a Module.

Useful for bottom-up assembly of Modules and sub-Modules

Parameters
inputThe FunctionalComponent that will be configured

◆ setOutput() [1/2]

FunctionalComponent & setOutput ( ComponentDefinition output)

Defines an output for a sub-Module.

Useful for top-down assembly of Modules and sub-Modules. If a FunctionalComponent with the given definition does not exist yet, one will be autoconstructed. Otherwise the FunctionalComponent with the given definition will be inferred. Be warned that this inference may fail if there is more than one FunctionalComponent with the same definition.

Parameters
outputA ComponentDefinition that defines the output
Returns
A FunctionalComponent that is derived from the argument ComponentDefinition and configured as this ModuleDefinition's output (it's direction property is set to SBOL_DIRECTION_OUT)

◆ setOutput() [2/2]

void setOutput ( FunctionalComponent output)

Configures a FunctionalComponent as an output for a Module.

Useful for bottom-up assembly of Modules and sub-Modules.

Parameters
outputThe FunctionalComponent that will be configured

◆ 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

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