Database Resources for MIRIAM Compliant Annotations in SBML

In older version of semanticSBML we used our "own version" of the MIRIAM database. This resouce file still exists and can be edited to fit your needs (read below). However in the current version we are using the XML export of the MIRIAM database. If your favourite database is missing or you want something else changed we would advise you to contact the maintainers of the MIRIAM database.

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/" urn="ec"
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
uri MIRIAM resource uri part (old)
urn MIRIAM resource urn
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 offline version of the Miriam WebServices.

libSBML Resource

The file 'libsbmlresources.xml' 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 pseudocode 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.