Given a reference-ontology, a “good” sub-ontology may be defined as the smallest self-explanatory excerpt containing concepts of interest. Given an initial set of concepts of interest, their relationships can generally not be explicit without adding some hyponyms and hyperonyms.
This problem is tackled by using an algorithmic approach based on the is-a relation and two common operators: least common ancestor (lca) and greatest common descendant (gcd).
Where the reference-ontology is represented by a direct acyclic graph (dag), the “good” sub-ontology will be a subgraph that is closed for the above mentioned operators. These operations and their closures are simple and well defined for a tree, but their extension to dag is not straightforward. Efficient algorithms are designed to identify relevant concepts, according to these closures, and relationships among them.

Download OntoFocus

To use OntoFocus_v0.1 on your computer: download.

ontoFocus v0.1
Please cite: Ranwez V, Ranwez S, Janaqi S:
Sub-Ontology Extraction Using Hyponym and Hypernym Closure on is-aDirected Acyclic Graphs.
IEEE Transactions on Knowledge and Data Engineering (TKDE) 2011, 99:1-14.

Here are some hints to use it

usage: java -jar OntoFocus.jar [args see below]
-onto ontology file (required)
-focus file containing id/uri of the concepts/terms to focus on, one per line (required)
-format format (optional, default:obo, values: [obo, owl])
-out output file (optional, default: stdout)
-addR add all directed relationships, only considering types explicitly defined by the ontology, to the final reduction (optional, default:false)
-root id/uri of the concept/term to consider as the root of the graph (optional, default: the entity with no outgoing IS-A/SubClassOf relationship, if multiple choices generate an error)
-incR id/uri of other relationships to consider during topological sort and graph extension. Is-a (obo) or rdfs:SubClassOf (owl) always considered. Useful to include other transitive relationship e.g part-of (obo) relationships. Multiple relationship id/URI can be specified using ‘,’ separator (optional, default: Is-a (obo) or rdfs:SubClassOf (owl))
-help print this message

Command line examples

*** Reduction of OBO Gene Ontology considering BRCA1 annotations ***
Ontology gene ontology go/gene_ontology_ext.obo gene ontology
Annotations: molecular function go/go_brca1/go_molecular_function
cellular_component go/go_brca1/go_cellular_component
Molecular funtion: Reduction: java -jar ontoFocus.jar -onto go/gene_ontology_ext.obo -focus go/go_brca1/go_molecular_function -root GO:0003674 -out go/results/r_brca1_mf.gv
Graph generation: dot -Tpdf go/results/r_brca1_mf.gv -o go/results/r_brca1_mf.pdf
see: go/results/r_brca1_mf.pdf
Cellular component: Reduction: java -jar ontoFocus.jar -onto go/gene_ontology_ext.obo -focus go/go_brca1/go_cellular_component -root GO:0005575 -out go/results/r_brca1_cc.gv
see: go/results/r_brca1_cc.pdf
Reduction + addition of all direct relationships between conserved vertices:
java -jar ontoFocus.jar -onto go/gene_ontology_ext.obo -focus go/go_brca1/go_cellular_component -root GO:0005575 -out go/results/r_brca1_cc_extended.gv -addR
see: go/results/r_brca1_cc_extended.pdf
*** Test example ***
Ontology test/toy.obo
is-a reduction
java -jar ontoFocus.jar -onto test/toy.obo -focus test/query -out test/toy_r.gv
see test/toy_r.pdfis-a reduction + addition of all direct edges
java -jar ontoFocus.jar -onto test/toy.obo -focus test/query -out test/toy_r_extended.gv -addR
see test/toy_r_extended.pdf
is-a/part_of reduction
java -jar ontoFocus.jar -onto test/toy.obo -focus test/query -out test/toy_r_IncPartOf.gv -addR -incR part_of
*** How to use OntoFocus ***
Concerning ontology upload, your ontology have to be defined in the OWL format, see the small ontology (LCA vs lca) example. You can export your ontology in this format using the “RDF/XML” save-format of the Protégé editor. This small ontology corresponds to the ontology presented in the figure bellow.
In this particular case, we select C1, C2 and C3 as concepts of interest. Among the 13 concepts contained in the base-ontology LCAvslca, OntoFocus proposes 8 concepts that may interest the user: A1, A2, B1, B2, B3, C1, C2, C3.

Another example deals with gene indexed by the Gene Ontology (GO). The syntax to list the concepts of interest is the following (you may copy/paste it).
Here there are some concepts from BRCA1 annotation.
Be carreful if you use the Gene Ontology, it is quite large and calculus may take a while.