SemanticSBML

Database Resources for MIRIAM Compliant Annotations in SBML

An XML file was created that contains all known databases that can be used for MIRIAM annotations. The XML file is based on an XML file created by the BioModels Database team of Nicolas Le Novère. This is an example entry

<resource name="EC code"
uri="http://www.ebi.ac.uk/IntEnz/"
alternateUris='http://www.ec-code.org/'
location="http://www.ebi.ac.uk/IntEnz/"
action="http://www.ebi.ac.uk/intenz/query?cmd=SearchEC&amp;ec="
elements="assignmentRule rateRule algebraicRule reaction event"
idInputHelper=""
idPattern="^(\d+|\d+\.(-|\d+)|\d+\.\d+\.(-|\d+)|\d+\.\d+\.\d+\.(-|\d+))$"
/>
Meaning of the variables
nameDatabase Name
uriMIRIAM resource uri part
alternateUrisalternate Uris of MIRIAM resources that have been found
locationWorld Wide Web location
actionURL that can be called in combination with the Database Identifier that will show a web page with the biological object
elementsspace separated list of libSBML elements that can be annotated with this database
idPatternregular expression pattern that the database id must match

The file can be downloaded from the SVN repository. The file can be regarded as an off line version of the Miriam WebServices.

libSBML Resource

The XML file libSBML resources contains the default unit definitions as specified in the libSBML specifications, all known units, as well as the current BioModels.net qualifiers, with descriptions and mappings to the Ids used in libSBML. The file can be downloaded from the SVN repository.

Element Scoring Matrix

The automatic matching of libSBML elements in the merging process is done with the help of a rather simple algorithm. The algorithm in pseudo code can be seen below

function compare_SBMLelements(entity1,entity2):
score=0
for (an1=MIRIAM annotation) in entity1:
for (an2=MIRIAM annotation) in entity2:
if is_equal(an1, an2):
score+=score_matrix[an1.qualifier][ an2.qualifier]
return score

function is_equal(an1,an2):
if an1==an2: return True
elseif database.is_equal(an1,an2) : return True
else:  

The score matrix (score_matrix[an1.qualifier][ an2.qualifier]) which is also located in the .semanticSBML directory currently looks as follows.

              is            hasPart       isPartOf      isVersionOf   hasVersion    isHomologTo   isDescribedBy unknown       
is 10 1 1 1 1 1 1 1
hasPart 1 1 1 1 1 1 1
isPartOf 1 1 1 1 1 1
isVersionOf 1 1 1 1 1
hasVersion 1 1 1 1
isHomologTo 1 1 1
isDescribedBy 1 1
unknown 1  

Even though the algorithm is very naive the largest problem is to improve the function is_equal(). The matching of elements that have e.g. a parent-child relationship (e.g. Glucose and α-D-glucose) is currently not possible.

UML Class Diagram

uml class diagram of the annotation algorithm