GOBO::Doc::FAQ - Frequently Asked Questions
A perl library for dealing with ontologies and annotations, geared towards the Gene Ontology (GO) and OBO ontologies.
http://geneontology.org
It is a rewrite of go-perl using the perl MOOSE framework
It is currently in the early stages of development
MOOSE
go-perl (::GO::Parser) and go-db-perl (GO::AppHandle) are the predecessors of GOBO. They are nearly 10 years old and due for an overhaul.
GOBO will gradually replace these projects
There is currently an experimental overhaul of bioperl called Bio::Moose. GOBO is intended to slot in to this project, as a replacement for Bio::Ontology
The plan is to use DBIx::Class to connect to a variety of databases.
GOBO::DBIC::GODBModel
This will use the Chado DBIx layer when it becomes standardized
The inference engine will take as input a graph (typically consisting of asserted statements) and compute inferred statements.
A statement that has been explicitly asserted by an ontology editor
A statement that follows logically from other statement (based on logical axioms in the ontology), and that has been computed by a reasoner/inference engine
See GOBO::ClassExpression
* L<GOBO::Node> ** L<GOBO::ClassNode> *** L<GOBO::TermNode> *** L<GOBO::ClassExpression> **** L<GOBO::ClassExpression::Intersection> **** L<GOBO::ClassExpression::Union> **** L<GOBO::ClassExpression::RelationalExpression> ** L<GOBO::RelationNode> ** L<GOBO::InstanceNode>
If we have an ontology that contains the logical definition:
blue_car = car AND <has_color blue>
the LHS is a GOBO::Term, the RHS is a GOBO::ClassExpression (specifically, a GOBO::ClassExpression::Intersection)
This would be represented in OBO as
id: blue_car intersection_of: car intersection_of: has_color blue
The logical definition can be extracted as follows:
$class_expr = $my_class->logical_definition;
(See GOBO::Definable)
This is equivalent to 2 intersection statements
blue_car is_a car blue_car has_color blue
Sometimes you want to treat your ontology as a graph rather than as a collection of logical axioms relation named entities and expressions. It's much simpler, and makes sense, e.g. for visualization of so-xp.
GOBO allows both.
* Each intersection_of tag is treated as a GOBO::LinkStatement, with the specified relationship (is_a for genus), with the is_intersection boolean set
* There are methods in the graph object to collapse these links into ClassExpressions (and to go back) using the semantics:
$term->logical_definition($ce) iff $ce = Intersection([@args]) where @args = grep { $_->is_intersection } @{$graph->get_outgoing_links($term)}
(that's an approximation, we need to use the class itself for is_a and a RelationalExpression for the differentia)
See
GOBO:::Graph#convert_intersection_links_to_logical_definitions
Current applications in production:
See GOBO::bin::go-gaf-inference
See GOBO::bin::go-slimdown
Planned future applications
* L<GOBO> * L<GOBO::Graph>
To install GOBO, copy and paste the appropriate command in to your terminal.
cpanm
cpanm GOBO
CPAN shell
perl -MCPAN -e shell install GOBO
For more information on module installation, please visit the detailed CPAN module installation guide.