public class SBO extends java.lang.Object
This class of objects is defined by libSBML only and has no direct equivalent in terms of SBML components. This class is not prescribed by the SBML specifications, although it is used to implement features defined in SBML.
The values of 'id' attributes on SBML components allow the components to
be cross-referenced within a model. The values of 'name' attributes on
SBML components provide the opportunity to assign them meaningful labels
suitable for display to humans. The specific identifiers and labels
used in a model necessarily must be unrestricted by SBML, so that
software and users are free to pick whatever they need. However, this
freedom makes it more difficult for software tools to determine, without
additional human intervention, the semantics of models more precisely
than the semantics provided by the SBML object classes defined in other
sections of this document. For example, there is nothing inherent in a
parameter with identifier k
that would indicate to a
software tool it is a first-order rate constant (if that's what
k
happened to be in some given model). However, one may
need to convert a model between different representations (e.g.,
Henri-Michaelis-Menten versus elementary steps), or to use it with
different modeling approaches (discrete or continuous). One may also
need to relate the model components with other description formats such
as SBGN (http://www.sbgn.org/) using deeper
semantics. Although an advanced software tool might be able to
deduce the semantics of some model components through detailed analysis
of the kinetic rate expressions and other parts of the model, this
quickly becomes infeasible for any but the simplest of models.
An approach to solving this problem is to associate model components
with terms from carefully curated controlled vocabularies (CVs). This
is the purpose of the optional 'sboTerm' attribute provided on the SBML
class SBase
. The 'sboTerm' attribute always refers to terms belonging
to the Systems Biology Ontology (SBO).
SBO
Labeling model components with terms from shared controlled vocabularies allows a software tool to identify each component using identifiers that are not tool-specific. An example of where this is useful is the desire by many software developers to provide users with meaningful names for reaction rate equations. Software tools with editing interfaces frequently provide these names in menus or lists of choices for users. However, without a standardized set of names or identifiers shared between developers, a given software package cannot reliably interpret the names or identifiers of reactions used in models written by other tools.
The first solution that might come to mind is to stipulate that certain common reactions always have the same name (e.g., 'Michaelis-Menten'), but this is simply impossible to do: not only do humans often disagree on the names themselves, but it would not allow for correction of errors or updates to the list of predefined names except by issuing new releases of the SBML specification&mdashto say nothing of many other limitations with this approach. Moreover, the parameters and variables that appear in rate expressions also need to be identified in a way that software tools can interpret mechanically, implying that the names of these entities would also need to be regulated.
The Systems Biology Ontology (SBO) provides terms for identifying most
elements of SBML. The relationship implied by an 'sboTerm' on an SBML
model component is is-a between the characteristic of the
component meant to be described by SBO on this element and the SBO
term identified by the value of the 'sboTerm'. By adding SBO term
references on the components of a model, a software tool can provide
additional details using independent, shared vocabularies that can
enable other software tools to recognize precisely what the
component is meant to be. Those tools can then act on that information.
For example, if the SBO identifier 'SBO:0000049'
is assigned
to the concept of 'first-order irreversible mass-action kinetics,
continuous framework', and a given KineticLaw
object in a model has an
'sboTerm' attribute with this value, then regardless of the identifier
and name given to the reaction itself, a software tool could use this to
inform users that the reaction is a first-order irreversible mass-action
reaction. This kind of reverse engineering of the meaning of reactions
in a model would be difficult to do otherwise, especially for more
complex reaction types.
The presence of SBO labels on Compartment
, Species
, and Reaction
objects in SBML can help map those entities to equivalent concepts in
other standards, such as (but not limited to) BioPAX (http://www.biopax.org/), PSI-MI (http://www.psidev.info),
or the Systems Biology Graphical Notation (SBGN, http://www.sbgn.org/). Such mappings
can be used in conversion procedures, or to build interfaces, with SBO
becoming a kind of 'glue' between standards of representation.
The presence of the label on a kinetic expression can also allow
software tools to make more intelligent decisions about reaction rate
expressions. For example, an application could recognize certain types
of reaction formulas as being ones it knows how to solve with optimized
procedures. The application could then use internal, optimized code
implementing the rate formula indexed by identifiers such as
'SBO:0000049'
appearing in SBML models.
Finally, SBO labels may be very valuable when it comes to model integration, by helping identify interfaces, convert mathematical expressions and parameters etc.
Although the use of SBO can be beneficial, it is critical to keep in mind that the presence of an 'sboTerm' value on an object must not change the fundamental mathematical meaning of the model. An SBML model must be defined such that it stands on its own and does not depend on additional information added by SBO terms for a correct mathematical interpretation. SBO term definitions will not imply any alternative mathematical semantics for any SBML object labeled with that term. Two important reasons motivate this principle. First, it would be too limiting to require all software tools to be able to understand the SBO vocabularies in addition to understanding SBML. Supporting SBO is not only additional work for the software developer for some kinds of applications, it may not make sense. If SBO terms on a model are optional, it follows that the SBML model must remain unambiguous and fully interpretable without them, because an application reading the model may ignore the terms. Second, we believe allowing the use of 'sboTerm' to alter the mathematical meaning of a model would allow too much leeway to shoehorn inconsistent concepts into SBML objects, ultimately reducing the interoperability of the models.
SBO
and SBMLThe goal of SBO labeling for SBML is to clarify to the fullest extent possible the nature of each element in a model. The approach taken in SBO begins with a hierarchically-structured set of controlled vocabularies with six main divisions: (1) entity, (2) participant role, (3) quantitative parameter, (4) modeling framework, (5) mathematical expression, and (6) interaction. The web site for SBO (http://biomodels.net) should be consulted for the current version of the ontology.
The Systems Biology Ontology (SBO) is not part of SBML it is being developed separately, to allow the modeling community to evolve the ontology independently of SBML. However, the terms in the ontology are being designed keeping SBML components in mind, and are classified into subsets that can be directly related with SBML components such as reaction rate expressions, parameters, and others. The use of 'sboTerm' attributes is optional, and the presence of 'sboTerm' on an element does not change the way the model is interpreted. Annotating SBML elements with SBO terms adds additional semantic information that may be used to convert the model into another model, or another format. Although SBO support provides an important source of information to understand the meaning of a model, software does not need to support 'sboTerm' to be considered SBML-compliant.
Constructor and Description |
---|
SBO()   |
Modifier and Type | Method and Description |
---|---|
static boolean |
checkTerm(int sboTerm)
Checks the format of the given SBO identifier, given in the form of
the integer portion alone.
|
static boolean |
checkTerm(java.lang.String sboTerm)
Checks the format of the given SBO identifier string.
|
void |
delete()
Explicitly deletes the underlying native object.
|
static java.lang.String |
intToString(int sboTerm)
Returns the integer as a correctly formatted SBO identifier string.
|
static boolean |
isConservationLaw(long term)
Returns
true if the given term identifier comes from the stated branch of SBO. |
static boolean |
isContinuousFramework(long term)
Returns
true if the given term identifier comes from the stated branch of SBO. |
static boolean |
isDiscreteFramework(long term)
Returns
true if the given term identifier comes from the stated branch of SBO. |
static boolean |
isEntity(long term)
Returns
true if the given term identifier comes from the stated branch of SBO. |
static boolean |
isEvent(long term)
Returns
true if the given term identifier comes from the stated branch of SBO. |
static boolean |
isFunctionalCompartment(long term)
Returns
true if the given term identifier comes from the stated branch of SBO. |
static boolean |
isFunctionalEntity(long term)
Returns
true if the given term identifier comes from the stated branch of SBO. |
static boolean |
isInteraction(long term)
Returns
true if the given term identifier comes from the stated branch of SBO. |
static boolean |
isKineticConstant(long term)
Returns
true if the given term identifier comes from the stated branch of SBO. |
static boolean |
isLogicalFramework(long term)
Returns
true if the given term identifier comes from the stated branch of SBO. |
static boolean |
isMaterialEntity(long term)
Returns
true if the given term identifier comes from the stated branch of SBO. |
static boolean |
isMathematicalExpression(long term)
Returns
true if the given term identifier comes from the stated branch of SBO. |
static boolean |
isMetadataRepresentation(long term)
Returns
true if the given term identifier comes from the stated branch of SBO. |
static boolean |
isModellingFramework(long term)
Returns
true if the given term identifier comes from the stated branch of SBO. |
static boolean |
isModifier(long term)
Returns
true if the given term identifier comes from the stated branch of SBO. |
static boolean |
isObselete(long term)
Predicate for checking whether the given term is obsolete.
|
static boolean |
isOccurringEntityRepresentation(long term)
Returns
true if the given term identifier comes from the stated branch of SBO. |
static boolean |
isParticipant(long term)
Returns
true if the given term identifier comes from the stated branch of SBO. |
static boolean |
isParticipantRole(long term)
Returns
true if the given term identifier comes from the stated branch of SBO. |
static boolean |
isPhysicalEntityRepresentation(long term)
Returns
true if the given term identifier comes from the stated branch of SBO. |
static boolean |
isPhysicalParticipant(long term)
Returns
true if the given term identifier comes from the stated branch of SBO. |
static boolean |
isProduct(long term)
Returns
true if the given term identifier comes from the stated branch of SBO. |
static boolean |
isQuantitativeParameter(long term)
Returns
true if the given term identifier comes from the stated branch of SBO. |
static boolean |
isQuantitativeSystemsDescriptionParameter(long term)
Returns
true if the given term identifier comes from the stated branch of SBO. |
static boolean |
isRateLaw(long term)
Returns
true if the given term identifier comes from the stated branch of SBO. |
static boolean |
isReactant(long term)
Returns
true if the given term identifier comes from the stated branch of SBO. |
static boolean |
isSteadyStateExpression(long term)
Returns
true if the given term identifier comes from the stated branch of SBO. |
static boolean |
isSystemsDescriptionParameter(long term)
Returns
true if the given term identifier comes from the stated branch of SBO. |
static int |
stringToInt(java.lang.String sboTerm)
Returns the string as a correctly formatted SBO integer portion.
|
public SBO()
public void delete()
In general, application software will not need to call this method directly. The Java language binding for libSBML is implemented as a language wrapper that provides a Java interface to libSBML's underlying C++/C code. Some of the Java methods return objects that are linked to objects created not by Java code, but by C++ code. The Java objects wrapped around them will be deleted when the garbage collector invokes the corresponding C++ finalize()
methods for the objects. The finalize()
methods in turn call the SBO.delete()
method on the libSBML object.
This method is exposed in case calling programs want to ensure that the underlying object is freed immediately, and not at some arbitrary time determined by the Java garbage collector. In normal usage, callers do not need to invoke SBO.delete()
themselves.
public static boolean isQuantitativeParameter(long term)
true
if the given term identifier comes from the stated branch of SBO.
true
if term
is-a SBO 'quantiative parameter', false
otherwise.
public static boolean isParticipantRole(long term)
true
if the given term identifier comes from the stated branch of SBO.
true
if term
is-a SBO 'participant role', false
otherwise.
public static boolean isModellingFramework(long term)
true
if the given term identifier comes from the stated branch of SBO.
true
if term
is-a SBO 'modeling framework', false
otherwise.
public static boolean isMathematicalExpression(long term)
true
if the given term identifier comes from the stated branch of SBO.
true
if term
is-a SBO 'mathematical expression', false
otherwise.
public static boolean isKineticConstant(long term)
true
if the given term identifier comes from the stated branch of SBO.
true
if term
is-a SBO 'kinetic constant', false
otherwise.
public static boolean isReactant(long term)
true
if the given term identifier comes from the stated branch of SBO.
true
if term
is-a SBO 'reactant', false
otherwise.
public static boolean isProduct(long term)
true
if the given term identifier comes from the stated branch of SBO.
true
if term
is-a SBO 'product', false
otherwise.
public static boolean isModifier(long term)
true
if the given term identifier comes from the stated branch of SBO.
true
if term
is-a SBO 'modifier', false
otherwise.
public static boolean isRateLaw(long term)
true
if the given term identifier comes from the stated branch of SBO.
true
if term
is-a SBO 'rate law', false
otherwise.
public static boolean isEvent(long term)
true
if the given term identifier comes from the stated branch of SBO.
true
if term
is-a SBO 'event', false
otherwise.
public static boolean isPhysicalParticipant(long term)
true
if the given term identifier comes from the stated branch of SBO.
true
if term
is-a SBO 'physical participant, false
otherwise.
public static boolean isParticipant(long term)
true
if the given term identifier comes from the stated branch of SBO.
true
if term
is-a SBO 'participant', false
otherwise.
public static boolean isInteraction(long term)
true
if the given term identifier comes from the stated branch of SBO.
true
if term
is-a SBO 'interaction', false
otherwise.
public static boolean isEntity(long term)
true
if the given term identifier comes from the stated branch of SBO.
true
if term
is-a SBO 'entity', false
otherwise.
public static boolean isFunctionalEntity(long term)
true
if the given term identifier comes from the stated branch of SBO.
true
if term
is-a SBO 'functional entity', false
otherwise.
public static boolean isMaterialEntity(long term)
true
if the given term identifier comes from the stated branch of SBO.
true
if term
is-a SBO 'material entity', false
otherwise.
public static boolean isConservationLaw(long term)
true
if the given term identifier comes from the stated branch of SBO.
true
if term
is-a SBO 'conservation law', false
otherwise.
public static boolean isSteadyStateExpression(long term)
true
if the given term identifier comes from the stated branch of SBO.
true
if term
is-a SBO 'steady state expression', false
otherwise.
public static boolean isFunctionalCompartment(long term)
true
if the given term identifier comes from the stated branch of SBO.
true
if term
is-a SBO 'functional compartment', false
otherwise.
public static boolean isContinuousFramework(long term)
true
if the given term identifier comes from the stated branch of SBO.
true
if term
is-a SBO 'continuous framework', false
otherwise.
public static boolean isDiscreteFramework(long term)
true
if the given term identifier comes from the stated branch of SBO.
true
if term
is-a SBO 'discrete framework', false
otherwise.
public static boolean isLogicalFramework(long term)
true
if the given term identifier comes from the stated branch of SBO.
true
if term
is-a SBO 'logical framework', false
otherwise.
public static boolean isMetadataRepresentation(long term)
true
if the given term identifier comes from the stated branch of SBO.
true
if term
is-a SBO 'metadata representation', false
otherwise.
public static boolean isOccurringEntityRepresentation(long term)
true
if the given term identifier comes from the stated branch of SBO.
true
if term
is-a SBO 'occurring entity representation', false
otherwise.
public static boolean isPhysicalEntityRepresentation(long term)
true
if the given term identifier comes from the stated branch of SBO.
true
if term
is-a SBO 'physical entity representation', false
otherwise.
public static boolean isSystemsDescriptionParameter(long term)
true
if the given term identifier comes from the stated branch of SBO.
true
if term
is-a SBO 'systems description parameter', false
otherwise.
public static boolean isQuantitativeSystemsDescriptionParameter(long term)
true
if the given term identifier comes from the stated branch of SBO.
true
if term
is-a SBO 'quantiative systems description parameter', false
otherwise.
public static boolean isObselete(long term)
true
if term
is-a SBO 'obsolete' term, false
otherwise.
public static java.lang.String intToString(int sboTerm)
public static int stringToInt(java.lang.String sboTerm)
-1
is
returned.
public static boolean checkTerm(java.lang.String sboTerm)
true
if sboTerm is in the correct format (a zero-padded, seven
digit string), false
otherwise.
public static boolean checkTerm(int sboTerm)
true
if sboTerm is in the range (0000000&ndash9999999), false
otherwise.