<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Transforming the Axiomisation of Ontologies: The Ontology Pre-Processor Language</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Mikel Egan~a</string-name>
          <email>mikel.eganaaranguren@cs.man.ac.uk</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Robert Stevens</string-name>
          <email>robert.stevens@manchester.ac.uk</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Erick Antezana</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Computer Science, University of Manchester</institution>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Department of Molecular Genetics, Ghent University</institution>
          ,
          <addr-line>Gent</addr-line>
          ,
          <country country="BE">Belgium</country>
        </aff>
        <aff id="aff2">
          <label>2</label>
          <institution>Department of Plant Systems Biology</institution>
          ,
          <addr-line>VIB, Gent</addr-line>
          ,
          <country country="BE">Belgium</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>As ontologies are developed there is a common need to transform them, especially from those that are axiomatically lean to those that are axiomatically rich. Such transformations often require large numbers of axioms to be generated that a ect many di erent parts of the ontology. This paper describes the Ontology Pre-Processor Language (OPPL), a domain-speci c macro language, based in the Manchester OWL Syntax, for manipulating ontologies written in OWL. OPPL instructions can add/remove entities, and add/remove axioms (semantics or annotations) to/from entities in an OWL ontology. OPPL is suitable for applying the same change to di erent ontologies or at di erent development stages, and for keeping track of the changes made (e.g. in pipelines). It is also suitable for de ning independent modelling macros (e.g. Ontology Design Patterns) that can be applied at will and systematically across an ontology. The presented OPPL Instruction Manager is a Java library that processes OPPL instructions making the changes to an OWL ontology. A reference implementation that uses the OPPL Instruction Manager is also presented. The use of OPPL has been demonstrated in the Cell Cycle Ontology.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>The use of OWL ontologies is rapidly increasing, especially in areas such as
bioinformatics. As ontologies are more widely used, more tools are needed to
ful ll the requirements of new users. One of those requirements is an abstract,
straight-forward, high-level language for manipulating ontologies in a re-usable
and e cient way.</p>
      <p>
        This is particularly necessary when many of the ontologies currently written
in OWL are axiomatically lean and increased computational inference will only
arise with increased axiomatisation. For example, in many bio-ontologies, much
of the ontology's semantics are bound up in the term names (rdfs:label)
and these need to be made explicit so that reasoners can use those
semantics. The Gene Ontology (GO) [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ], one of the most used bio-ontologies, is a
good example of such a problem. In GO, we can nd classes with labels like
alanine:sodium symporter activity but with only some is-a and
part-of relationships that can hardly be exploited by a reasoner. However,
we can add new axioms based in the label; we can add, for example, the
axiom transports only (alanine or sodium) and exploit that axiom in
querying and structural maintenance4. The large size and repetitive nature of
much of this axiomatic enrichment (for example, many term names share a
similar syntactic structure [
        <xref ref-type="bibr" rid="ref2 ref3">2, 3</xref>
        ]) mandates the use of some form of transformation
language that can be used to de ne reusable transformations.
      </p>
      <p>
        Another justi cation for such a language comes from the fact that there
are bio-ontologies that are built using automatic procedures (e.g. pipelines).
For example, the Cell Cycle Ontology5 (CCO) [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] is generated as a result of
gathering data from existing ontologies and databases using a pipeline. Each
version of CCO is generated automatically; any extra axioms that need to be
added to enrich the existing knowledge can not be added by hand (they would
be overwritten). Therefore, an OPPL implementation has been integrated into
the CCO pipeline (see section 4), so the needed enrichment is de ned as a set
of OPPL instructions that are automatically applied in CCO.
      </p>
      <p>A general justi cation for a high level language is based in how OWL
ontologies are currently manipulated by the user. OWL ontologies can be manipulated
in di erent ways. The most obvious and common method is via editors such as
Protege6, but such manipulations are not reusable: a user makes changes through
a graphical interface, and if another user wants to recreate the changes, they will
need to be applied step-by-step (Swoop7 allows for change sets to be reused by
di erent users, but the ontology needs to be loaded and changes applied each
time). Another method is to manipulate the ontology programmatically via APIs
such as the OWL API8. When interacting with the ontology programmatically,
the manipulations are reusable, but such access can only be performed by an
API-familiar programmer, and each change of the ontology can represent a large
amount of programming e ort. The Protege script tab9 o ers some level of
abstraction but still full programming knowledge is required. Therefore a high level
language for de ning reusable actions is required.</p>
      <p>The Ontology Pre-Processor Language10 (OPPL) ful lls the requirements
cited above. OPPL o ers an abstract and straight-forward syntax that can be
used to manipulate OWL ontologies. The OPPL manipulation actions can be
easily re-used in di erent OWL ontologies, at di erent stages and by di erent
users, o ering most of the expressivity and re-usability of an API-level access
to the ontology, with minimal notions of programming required. The intended
4 The Gene Ontology Next Generation (GONG) work ow does precisely that:
http://www.gong.manchester.ac.uk/
5 http://www.cellcycleontology.org
6 http://protege.stanford.edu/
7 http://code.google.com/p/swoop/
8 http://owlapi.sourceforge.net/
9 http://www.med.univ-rennes1.fr/~dameron/protegeScript/
10 http://oppl.sourceforge.net/
audience of OPPL is formed by ontology curators who need to do exible and
automatic ontology building but without necessarily having a strong
computational background.
2</p>
    </sec>
    <sec id="sec-2">
      <title>OPPL syntax</title>
      <p>
        The OPPL syntax is based in the Manchester OWL Syntax [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ], with some
extensions: mainly the keywords ADD, REMOVE and SELECT. The OPPL syntax is
case sensitive.
      </p>
      <p>The central unit of the OPPL syntax is the so-called OPPL instruction.
It describes one or more actions to be performed upon an entity or groups of
entities11: each action, or OPPL statement, is delimited by a semicolon (;).
See Fig. 1 for details.</p>
      <p>SELECT Class: admin;ADD label "office admin";</p>
      <sec id="sec-2-1">
        <title>OPPL statement</title>
      </sec>
      <sec id="sec-2-2">
        <title>OPPL statement</title>
      </sec>
      <sec id="sec-2-3">
        <title>OPPL instruction</title>
        <p>There are two types of OPPL instructions which are explained in detail in
subsections 2.1 and 2.2.
This OPPL instruction is formed by only one OPPL statement that adds/removes
an entity to/from an ontology. For example, if we want to add a class named
undergraduate to the ontology, we would use the following instruction:</p>
        <sec id="sec-2-3-1">
          <title>ADD Class: undergraduate;</title>
        </sec>
        <sec id="sec-2-3-2">
          <title>REMOVE Class: undergraduate;</title>
          <p>To remove a class from the ontology, we would use, for example, the following
instruction:</p>
          <p>The OWL API (which is used by OPPL to access the ontology, see
section 3) only allows the addition of axioms, in conformance to OWL semantics.
As a result, it is not possible to add a class per se, instead, only an axiom
11 An entity is assumed to be a named class, a named individual, or an object property.</p>
          <p>Currently OPPL does not support data properties nor datatypes.
that references the class can be added. Therefore the cited OPPL statement
(ADD Class: undergraduate;), when processed, adds an axiom stating
that the class undergraduate is a subclass of owl:Thing. This assumption
is made to make the OPPL syntax more simple. A REMOVE statement deletes
the axioms that reference entities, not the entities as such.
2.2</p>
          <p>Multiple statements OPPL instructions
This type of OPPL instruction is composed of at least two OPPL statements.
The rst statement is always a SELECT/ADD statement, followed by one or more
ADD/REMOVE statements.</p>
          <p>In the case that the rst statement is a SELECT statement, it selects entities
from the ontology and the following ADD/REMOVE statements add/remove
axioms (semantic axioms such as restrictions or annotations) to/from the selected
entities. The selection is made according to a condition, which can be a
semantic axiom (e.g. having a concrete restriction like part-of some nucleus as
a necessary condition) or an annotation value. Any entity that matches the
condition will be selected and the next ADD/REMOVE statements will be applied to
it. For example:</p>
        </sec>
        <sec id="sec-2-3-3">
          <title>SELECT equivalentTo participates_in</title>
          <p>only (intellectual_dinner and party);</p>
        </sec>
        <sec id="sec-2-3-4">
          <title>ADD label "professor";</title>
        </sec>
        <sec id="sec-2-3-5">
          <title>REMOVE subClassOf lives_on only (not campus);</title>
          <p>This instruction does the following: selects any class that has the necessary
and su cient restriction participates_in only (intelectual_dinner
and party). Then, adds the rdfs:label \professor" to it. Finally, removes
the necessary restriction lives_on only (not campus) from it.</p>
          <p>Annotation values can be used to select entities, and regular expressions
support for annotation values12 is included for this purpose. In the following
example, any class in which the rdfs:label matches the regular expression
\(.+) (development)" (e.g. \cell development") will be selected. The selected
class(es) will become subclass(es) of development, and the necessary
restriction acts_on some cell will be added (&lt;1&gt; refers to the rst group of the
matching string):</p>
        </sec>
        <sec id="sec-2-3-6">
          <title>SELECT label "(.+) (development)";</title>
        </sec>
        <sec id="sec-2-3-7">
          <title>ADD subClassOf development;</title>
        </sec>
        <sec id="sec-2-3-8">
          <title>ADD subClassOf acts_on some &lt;1&gt;;</title>
          <p>The SELECT statement need not be a condition to ful ll; a single entity can
be selected:
12 The regular expressions are Java style:
http://java.sun.com/j2se/1.4.2/docs/api/java/util/regex/Pattern.html</p>
        </sec>
        <sec id="sec-2-3-9">
          <title>SELECT Class: admin;</title>
        </sec>
        <sec id="sec-2-3-10">
          <title>ADD label "administrator";</title>
          <p>Conditions can also be de ned to select object properties:</p>
        </sec>
        <sec id="sec-2-3-11">
          <title>SELECT inverse participates_in;ADD range student;</title>
          <p>In the case that the rst statement is an ADD statement (instead of SELECT),
an entity will be added and the next ADD/REMOVE statements will be applied
to it. For example:</p>
        </sec>
        <sec id="sec-2-3-12">
          <title>ADD Class: professor;</title>
        </sec>
        <sec id="sec-2-3-13">
          <title>ADD label "staff";</title>
        </sec>
        <sec id="sec-2-3-14">
          <title>ADD equivalentTo participates_in only (intellectual_dinner and party);</title>
          <p>This OPPL instruction adds a class professor rst. Then, it adds the
rdfs:label \sta " to it. Finally, it adds the necessary and su cient restriction
participates_in only (intelectual_dinner and party).
2.3</p>
          <p>OPPL syntax design
The development of the OPPL syntax has been driven by the authors' daily needs
while working with bio-ontologies (mainly enrichment of the Gene Ontology in
the GONG work ow and enrichment of CCO), and therefore some features that
would make the OPPL syntax more complete have been left aside as they did
not provide an immediate bene t. However, there are pointers that OPPL could
follow to provide a more complete syntax. For example, more
programminglike features (loops, conditional control, subroutines, etc.) would be desirable. A
SET statement that simply changes axioms (instead of only removing or adding
them) will probably also be part of the future OPPL syntax. Some segmentation
capability is also needed: for example, the ability to extract parts of an ontology
to introduce them in a new ontology.</p>
          <p>For the same reason, there has also been an equilibrium between the needs
of the authors to introduce more and more tailored instructions and the aim to
keep OPPL simple and clean. Some examples of tailored instructions include the
ability to distinguish between primitive/de ned classes:</p>
        </sec>
        <sec id="sec-2-3-15">
          <title>SELECT_PRIMITIVE descendantOf domain;</title>
        </sec>
        <sec id="sec-2-3-16">
          <title>ADD label "primitive";</title>
        </sec>
        <sec id="sec-2-3-17">
          <title>SELECT_DEFINED descendantOf domain;</title>
        </sec>
        <sec id="sec-2-3-18">
          <title>ADD label "defined";</title>
          <p>Another example of such tailored instructions is the disjointWithSiblings
statement, that can be used, for example, to make all the classes of a subtree
disjoint with their siblings:</p>
        </sec>
        <sec id="sec-2-3-19">
          <title>SELECT descendantOf person;ADD disjointWithSiblings;</title>
          <p>There are also two instructions (assertedSubClassOf and
assertedSuperClassOf) that allow to query for super/subclasses without
using the reasoner, which means that, for example, inconsistent classes can be
selected:</p>
        </sec>
        <sec id="sec-2-3-20">
          <title>SELECT assertedSubClassOf participates_in some sport;</title>
        </sec>
        <sec id="sec-2-3-21">
          <title>ADD label "is this a student?";</title>
          <p>The complete OPPL syntax can be learned by following the examples
provided in the OPPL web site13. Other instructions not reviewed in this paper
include disjointWith, differentFrom, sameAs, type, descendantOf,
ancestorOf, subPropertyOf, etc.
3</p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>OPPL design and implementation</title>
      <p>The core OPPL is provided as an stand-alone Java library
(OPPLInstructionManager) that can be used to write applications (Fig. 2). The
OPPLInstructionManager processes each OPPL instruction that is provided to it and performs
the changes in an OWL ontology chosen by the user. The changes to the ontology
are made by the OPPLOWLManager class, a wrapper for the OWL API, when
prompted to do so by the OPPLInstructionManager. The OPPLOWLManager
performs all the actions related to OWL: accessing the model, querying the
model via reasoners, changing the model, and loading or writing ontologies.</p>
      <p>Each OPPL instruction is executed independently, therefore, if, for example,
an OPPL instruction adds an axiom the following OPPL instruction can safely
remove it. For the same reason, if an OPPL instruction removes an entity and
a later OPPL statement of an OPPL instruction needs to operate upon it, the
execution will fail, but the execution will continue with the next OPPL
statements of that OPPL instruction. Similarly, if a SELECT statement is unable to
select an entity, the rest of the OPPL statements in that OPPL instruction will
not be executed.</p>
      <p>The parsing of the Manchester OWL Syntax expressions is made by the parser
provided by the OWL API, through the OPPLOWLManager, which returns an
OWLDescription object (from the OWL API) that is used to query the reasoner.
The user can choose which reasoner to use: Pellet14, FaCT++15 or any reasoner
via the DIG interface16. Errors are agged at di erent levels: OPPL syntax,
reasoning, Manchester OWL syntax, OWL model changes, etc.</p>
      <p>The OPPLInstructionManager is independent of the OPPL instructions provider,
which is anything that implements the OPPLInstructionsProvider interface. In
13 http://oppl.sourceforge.net/test.oppl
14 http://pellet.owldl.com/
15 http://owl.man.ac.uk/factplusplus/
16 http://dig.sourceforge.net/
the provided reference implementation the OPPL instructions provider is a at
le parser (by convention, les with the su x .oppl are used), but it would
be simple to program any other OPPL instructions provider (e.g. to include the
OPPLInstructionManager in another program). In the reference implementation,
.oppl at les allow comments starting with hash (#) and the OPPL
instructions are divided by white lines (the OPPL instructions can be multi-line). See
Fig. 3 for an example OPPL le.</p>
      <p>OPPL file
# Create object properties inmediately_precedes and inmediately_preceded_by
ADD ObjectProperty: inmediately_preceded_by;ADD functional;ADD
subPropertyOf preceded_by;
ADD domain CCO_U0000002;ADD range CCO_U0000002;
ADD ObjectProperty: inmediately_precedes;ADD functional;ADD
subPropertyOf precedes;ADD inverse inmediately_preceded_by;ADD domain
CCO_U0000002;ADD range CCO_U0000002;
# Meiotic cel cycle: G1 -&gt; S -&gt; G2 -&gt; M
SELECT Class: CCO_P0000327;ADD subClassOf inmediately_preceded_by some
CCO_P0000325;ADD subClassOf inmediately_precedes some CCO_P0000326;</p>
      <p>OWL file
&lt;owl:Class rdf:about="ht p:/ www.cel cycleontology.org/ontology/owl
CCO#CCO_B0000000"&gt;
&lt;rdfs:label xml:lang="en"&gt;core cel cycle protein&lt;/rdfs:label&gt;
&lt;oboInOwl:hasDefinition&gt;
&lt;oboInOwl:Definition&gt;
&lt;rdfs:label xml:lang="en"&gt;A protein &lt;/rdfs:label&gt;
&lt;rdfs:subClassOf rdf:resource="ht p:/ www.cel cycleontology.org/ontology/owl/
CCO#CCO_U0000005"/&gt;
&lt;/owl:Class&gt;
OPPL APPLIC</p>
      <p>ATION
OPPL Instructions Provider
(flat file parser)</p>
      <p>Reasoner
Instruction 1
Instruction 2
Instruction 3
Instruction 4
Instruction n</p>
      <p>In the reference implementation, the OPPL application is executed
command line: the path to the at le with the OPPL instructions
to the OWL ontology are passed as arguments.</p>
    </sec>
    <sec id="sec-4">
      <title>Application on the Cell Cycle Ontology</title>
      <p>The cell cycle is the process by which a new cell comes into existence and divides
into two cells, and all the steps in the middle. The cell cycle is a very important
research eld of life sciences, as its malfunction is the cause of diseases such
as cancer. The Cell Cycle Ontology gathers the current scienti c knowledge
about the cell cycle. This system composes ve ontologies: an ontology for each
considered model organism (H. sapiens, S. cerevisiae, S. pombe and A. thaliana)
and a central ontology that includes the four ontologies plus relationships across
proteins from the di erent model organisms. An automatic pipeline retrieves and
manipulates data from di erent ontologies and databases that is nally included
into the ontologies, thus, the ve ontologies are created anew each time the
pipeline is executed.</p>
      <p>OPPL is used to add new axioms to the CCO ontologies. OPPL has been
chosen because it is very ine cient to manually add the axioms to ve newly
created ontologies each time the pipeline is executed (they would be overwritten in
the next execution) and may also be error prone. Therefore, OPPL at les have
been devised with some new enriching axioms17 and the OPPL reference
implementation is executed as part of the pipeline, adding the axioms to each newly
created ontology (Fig. 3). The de ned axioms can be regarded as independent
\modelling modules" or \modelling libraries" (e.g. Ontology Design Patterns18)
to be applied or re-used.</p>
      <p>Using OPPL in CCO also means that the design decisions become explicit
(the rationale behind each added axiom is documented in the at les via
comments) and exible (OPPL instructions with very complex semantics can be
17 ftp://ftp.psb.ugent.be/pub/cco/oppl/cco.oppl
18 http://odps.sourceforge.net
tested and rejected/accepted by simply commenting/uncommenting lines on the
OPPL at les). OPPL can also be used for querying; sample queries against
CCO are stored in OPPL at les19 and executed via the OPPL reference
implementation (Fig. 3).</p>
      <p>The fact that OPPL instructions could be applied on demand has eased the
development and maintenance of the Cell Cycle Ontology. CCO is automatically
built monthly which implies that a careful maintenance policy is needed, not only
for keeping suitable identi ers, but also for enriching the semantics via a
prede ned set of OWL axioms. The implementation of that set of axioms as part
of the CCO automatic building pipeline by means of OPPL has demonstrated
many features of OPPL such as re-usability, modularity, and maintainability
while dealing with huge and complex ontologies such as CCO. Currently, CCO
has more than 54000 classes (more than 30000 proteins) which are connected by
about 10 di erent types of properties resulting in a relatively highly connected
network of concepts. Moreover, the le size of CCO composite ontology in OWL
is over 90 MB which clearly suggests the need for a suitable tool like OPPL for
modifying it automatically.
5</p>
    </sec>
    <sec id="sec-5">
      <title>Conclusion</title>
      <p>OPPL o ers a straight-forward syntax for manipulating OWL ontologies. Using
OPPL ontologies can be manipulated in a repeatable manner (for example OPPL
complex instructions can be shared amongst users), and complex modelling can
be done in a one-step fashion (de ne the axioms once, apply many times); OPPL
increases the e ciency of ontology maintenance and makes development time
shorter. OPPL has been used in the development of the Cell Cycle Ontology
and has demonstrated its utility.</p>
      <p>In a near future, the development of a Protege plugin for enabling a
userfriendly development with OPPL is expected, with functionalities such as
autocomplete for writing OPPL instructions. In this way, the best of both paradigms
(normal access through graphical interface and access through OPPL
instructions) will be available in ontology development.</p>
      <p>Regarding the syntax, role chains, data types and dataproperty support will
be added. Regular expressions in class URIs will also be supported in the short
term. In a longer term, a BNF grammar (once the syntax has become stable)
and SWRL support are expected.</p>
      <p>The provided OPPL Instruction Manager and reference implementation are
licensed under the LGPL20.
19 ftp://ftp.psb.ugent.be/pub/cco/oppl/cco.query.oppl
20 http://www.gnu.org/licenses/lgpl.html</p>
    </sec>
    <sec id="sec-6">
      <title>Acknowledgements</title>
      <p>Mikel Egan~a is funded by the University of Manchester and EPSRC. Erick
Antezana is funded by the European Science Foundation (ESF) for the activity
entitled \Frontiers of Functional Genomics".</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Ashburner</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ball</surname>
            ,
            <given-names>C.A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Blake</surname>
            ,
            <given-names>J.A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Botstein</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Butler</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Cherry</surname>
            ,
            <given-names>J.M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Davis</surname>
            ,
            <given-names>A.P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Dolinski</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Dwight</surname>
            ,
            <given-names>S.S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Eppig</surname>
            ,
            <given-names>J.T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Harris</surname>
            ,
            <given-names>M.A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hill</surname>
            ,
            <given-names>D.P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Issel-Tarver</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kasarskis</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lewis</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Matese</surname>
            ,
            <given-names>J.C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Richardson</surname>
            ,
            <given-names>J.E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ringwald</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Rubin</surname>
            ,
            <given-names>G.M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sherlock</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          :
          <article-title>Gene ontology: tool for the uni cation of biology</article-title>
          .
          <source>The Gene Ontology Consortium. Nat Genet</source>
          <volume>25</volume>
          (
          <issue>1</issue>
          ) (May
          <year>2000</year>
          )
          <volume>25</volume>
          {
          <fpage>29</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Ogren</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Cohen</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Acquaah-Mensah</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Eberlein</surname>
          </string-name>
          ,
          <string-name>
            <surname>L.H.</surname>
          </string-name>
          :
          <article-title>The Compositional Structure of Gene Ontology Terms</article-title>
          .
          <source>In: Paci c Symposium on Biocomputing. Volume</source>
          <volume>9</volume>
          . (
          <year>2004</year>
          )
          <volume>214</volume>
          {
          <fpage>225</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Egana</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wroe</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Goble</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Stevens</surname>
            ,
            <given-names>R.:</given-names>
          </string-name>
          <article-title>In situ migration of handcrafted ontologies to reason-able forms. Data and Knowledge Engineering</article-title>
          , in press
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Antezana</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Tsiporkova</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Mironov</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kuiper</surname>
            ,
            <given-names>M.:</given-names>
          </string-name>
          <article-title>A cell-cycle knowledge integration framework</article-title>
          . In Leser, U.,
          <string-name>
            <surname>Naumann</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Eckman</surname>
            ,
            <given-names>B.A</given-names>
          </string-name>
          ., eds.
          <source>: DILS</source>
          . Volume
          <volume>4075</volume>
          of Lecture Notes in Computer Science., Springer (
          <year>2006</year>
          )
          <volume>19</volume>
          {
          <fpage>34</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Horridge</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Drummond</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Goodwin</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Rector</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Stevens</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wang</surname>
            ,
            <given-names>H.H.</given-names>
          </string-name>
          :
          <article-title>The Manchester OWL Syntax</article-title>
          . In: OWL: Experiences and Directions 2006 Athens, Georgia, USA, November
          <volume>10</volume>
          -11
          <year>2006</year>
          . (
          <year>2006</year>
          )
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>