Upload
chris-mungall
View
286
Download
1
Tags:
Embed Size (px)
DESCRIPTION
Two tools to assist in rapid ontology generation
Citation preview
Ontology Generation ToolsChris Mungall
Tuesday, May 8, 2012
Exploiting modularity for ontology generation• Biology is modular
• Same ‘innovation’ repeated in multiple contexts, with variation
• E.g. phalanx, arthropod segments
• Repetition = RSI for poor ontology creators
• Logical definitions and reasoning help automate classification
• Reasoners will not generate terms for you
Tuesday, May 8, 2012
Some tools
• OBI QuickTerm Templates
• Populous and OPPL
• POPL
• TermGenie
• instant compositional terms for curators
• Shoge
• generate an entire ontology from core rules
Tuesday, May 8, 2012
TermGenie
• Web based wrapper onto an ontology managed in a VCS
• Administrator defines templates
• User (curator or ontology editor) fills in templates
• TG generates a stable ID and logical axioms plus textual metadata according to template pattern
• Reasoner checks and places term
• Gatekeeper approves or obsoletes terms
Tuesday, May 8, 2012
History and implementation
• TermGenie prototype: released 2010
• prolog implementation
• working prototype: used 2010-2011 for GO
• now retired
• TermGenie v1: released Q4 2011
• Programmer: Heiko Dietze
• java OWLAPI based
• any reasoner (Elk is default)
• jQuery on front-end
• Currently used heavily in GO
Tuesday, May 8, 2012
TermGenie walk-through
• This example uses the GO TermGenie config
• http://go.termgenie.org
• GO pre-coordinates a lot of process terms
• e.g. epithelial cell differentiation in kidney development
• TermGenie can be configured for any compositional pattern; e.g
• EQ
• Repeated anatomical structures
• {mucosa,submucosa,...} x {jejunem, iluem,..}
• spatial qualifiers
Tuesday, May 8, 2012
Tuesday, May 8, 2012
Tuesday, May 8, 2012
Tuesday, May 8, 2012
Tuesday, May 8, 2012
(we recommend Elk here)Tuesday, May 8, 2012
(this inference is fairly trivial, more complex cases are easily accommodated)
Tuesday, May 8, 2012
(you can get this far without even logging in)
Tuesday, May 8, 2012
(only authorized GO users can get this far)
The term is not committed to cvs/svnyet, but the ID is reserved
Tuesday, May 8, 2012
(only authorized GO gatekeepers can access this)
Tuesday, May 8, 2012
Tuesday, May 8, 2012
Another example: what happens whenwe try to add a term that exists already?
Tuesday, May 8, 2012
Tuesday, May 8, 2012
Bulk entry
Tuesday, May 8, 2012
Tuesday, May 8, 2012
Discussion• TermGenie currently only allows terms conforming to rigid pre-defined templates
• In our experience this is a good thing
• Ontology engineering roles and phases
• High level design
• relations
• core repeated terms
• patterns
• small number of domain experts and ontologists
• Implementing the design
• filling in templates
• curators
• lots of users, need not be trained in ontologies
Tuesday, May 8, 2012
• TermGenie allows you to selectively “flesh out” an ontology
• What if you want to seed an ontology from some basic rules?
Tuesday, May 8, 2012
Shoge
• Serial Homology Ontology Generation Engine
• Uses anatomy grammars to generate
• labels
• logical axioms
Tuesday, May 8, 2012
Repetition in anatomy
• Simple example:
• limb segments:
• stylopod, zeugopod, autopod
• Each is repeated 4 times
• anterior/posterior
• fore/hind
Tuesday, May 8, 2012
limbs.shg grammar(limbs_simple).
limb_segment *--> stylopod | zeugopod | autopod. stylopod *--> in_limb, @stylopod. zeugopod *--> in_limb, @zeugopod. autopod *--> in_limb, @autopod. in_limb *--> part_of some limb. limb *--> laterality, anterioposterior, @limb. laterality *--> @left. laterality *--> @right. anterioposterior *--> @anterior. anterioposterior *--> @posterior.
Tuesday, May 8, 2012
Generated ontology
Tuesday, May 8, 2012
Naming rules
'hand' is_name_of anterior limb autopod. 'foot' is_name_of posterior limb autopod.
Tuesday, May 8, 2012
Digits (human)
:- include(ordinal_series). anatomical_digit *--> part_of some limb, @anatomical_digit, in_ordinal_series(1-5).
Together with previous grammar,this generates 20 digits, such as:
Class: ‘left forelimb digit 1’EquivalentTo: digit and part_of some ‘left forelimb’ and has_order value 1
Tuesday, May 8, 2012
Phalanges and repetition with
variation phalanx *--> ?proximality,@phalanx,[of],part_of some anatomical_digit. proximality *--> @proximal. proximality *--> @distal. proximality *--> @medial. exclude(phalanx and medial and part_of some (anatomical_digit and has_order value 1)).
Generates 52 leaf node classes
Tuesday, May 8, 2012
a more complex example
EHDAA2
Tuesday, May 8, 2012
:- if(in_context('Homo sapiens')).
somite_number *--> in_ordinal_series(1-39).
:- endif.:- if(in_context('Mus')).
somite_number *--> in_ordinal_series(1-65).
:- endif.:- if(in_context('chick')).
somite_number *--> in_ordinal_series(1-50).
:- endif.:- if(in_context('snake')).
somite_number *--> in_ordinal_series(1-500).
:- endif.
Somites
Tuesday, May 8, 2012
somitic_element *--> somite.somitic_element *--> sclerotome.somitic_element *--> myotome.somitic_element *--> dermatome.somitic_element *--> dermomyotome.
somite *--> @somite,somite_number.sclerotome *--> @sclerotome,somite_number.dermatome *--> @dermatome,somite_number.myotome *--> @myotome,somite_number.dermomyotome *--> @dermomyotome,somite_number.
about *--> {develops_from(S1,S2)}, % RULE somitic_element(S1 and X),[develops,from],somitic_element(S2 and X) % PHRASE :: S1 and X < develops_from some S2 and X. % AXIOM
% GENERIC RULESdevelops_from(dermatome,dermomyotome).develops_from(myotome,dermomyotome).develops_from(dermomyotome,somite).develops_from(sclerotome,somite).
Tuesday, May 8, 2012
Pre vs post coordination
• Some people are uncomfortable with excessive pre-coordination
• Shoge can be used to create a ‘background’ super-pre-coordinated ontology
• align with existing ontologies to check
• curators can mireot in the subsets they
Tuesday, May 8, 2012
Conclusions• TermGenie
• extending an ontology and filling in gaps
• in production use for GO
• easy to make your own templates
• Shoge
• generating an entire ontology module
• powerful but difficult to use (prolog helps)
• in development
Tuesday, May 8, 2012