The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

GOBO::Doc::FAQ - Frequently Asked Questions

BASIC

What is this?

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

What is MOOSE?

MOOSE

RELATIONSHIP TO OTHER PROJECTS

What is the relationship between this and go-perl?

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

What is the relationship between this and bioperl?

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

What is the relationship between this and onto-perl?

What is the relationship between this and RDF libraries?

What is the relationship between this and OWL?

OBJECT MODEL

What is an instance?

What is an ontology graph?

DATABASE CONNECTIVITY

Is there an object-relational mapping layer?

The plan is to use DBIx::Class to connect to a variety of databases.

Can I use this in combination with the GO database?

GOBO::DBIC::GODBModel

Can I use this in combination with the Chado database?

This will use the Chado DBIx layer when it becomes standardized

ADVANCED

What does the InferenceEngine do?

The inference engine will take as input a graph (typically consisting of asserted statements) and compute inferred statements.

What is an asserted statement?

A statement that has been explicitly asserted by an ontology editor

What is an inferred statement?

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

What is a ClassExpression?

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>

What is a logical definition?

What is the connection between logical definitions and intersection links?

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

APPLICATIONS

What is this used for?

Current applications in production:

Inference of GO biological process from GO molecular function using part_of

See GOBO::bin::go-gaf-inference

Inference of GO biological process from GO molecular function using part_of

See GOBO::bin::go-gaf-inference

Slimming

See GOBO::bin::go-slimdown

Planned future applications

SEE ALSO

 * L<GOBO>
 * L<GOBO::Graph>