[Bioperl-l] Bio::Ontology

Chris Zmasek czmasek@gnf.org
Sat, 21 Sep 2002 18:38:27 -0700


Modified Ontology::TermI.pm, Term.pm and GOterm.pm were submitted.
(TermI is now a pure interface, from which Term inherits.)

See below for comments.

> The following lists the differences and my votes.
> 
> 1) Interface naming. My vote goes for the more general TermI, and 
> VocabTermI can add vocabulary-specific properties if there are any.

No change necessary.

 
> 2) Inheritance. My vote goes for largely if not completely 
> decoupling Ontologies and Graphs, disregarding that of course in 
> many practical cases you will want to execute graph-operations on 
> ontologies. I think this can be easily and more flexibly achieved by 
> composition rather than inheritance, which would mandate it. Hence, 
> my vote is TermI should not inherit from Graph::NodeI or any similar 
> interface.

No change so far.


> 3) identifier() vs ontology_id(). As I posted before, my vote is 
> identifier().

Done.


 
> 4) label(). I'm not sure what this would be and whether it is 
> crucial for a Term. ChrisM as the expert, could you comment?

Waiting for further comments.


> 5) definition()'s return value as an object or a string. ChrisM's 
> proposal suggests that if you're serious about ontologies, a 
> definition is much more than just a string. Adds to the complexity 
> though. Nonetheless, I tend to go with the ChrisM's call.

Currently type no checking enforced, will be done in the future (if desired).


> 6) each_synonym() vs each_alias(). Synonym sounds more like the 
> language of the field, so I'd vote for that. (Actually ChrisM named 
> it synonyms(), which is inconsistent with the each_XXX tradition 
> Ewan introduced.)

Done (changed each_alias() to each_synonym()).


> 7) each_dblink() vs each_reference. I vote for dblink because 
> reference is used in bioperl for literature references.

This in not in the basic TermI yet.
Does/must each term have references?



> 8) timestamp(). ChrisM, is this crucial to a Term, or does it only 
> pertain to those who created the ontology? Is it rather a version()?

Waiting.

> 9) category(). Isn't this in fact a relationship of the Term? Should 
> there or should there not be an each_relationship() method on Term?

Waiting.


-- CZ


> These are all the differences as far as I see.
> 
> RelationshipI makes a lot of sense to me, except that I think it 
> should not inherit from Graph::ArcI, and I'm also not sure why 
> Relationships shall have stable identifiers.
> 
> Comments/thoughts/votes more than welcome.
> 
> 	-hilmar
> 
> On Thursday, September 19, 2002, at 08:11 AM, Chris Mungall wrote:
> 
> > namespace Bio::Ontology
> >
> > typedef string Identifier
> >
> > interface VocabTermI extends Bio::Graph::NodeI
> >   attribute Identifier identifier
> >   attribute string label
> >   attribute VocabDefinition definition
> >   attribute string[] synonyms
> >   add_synonym(string synonym):
> >   attribute DBLink[] dblinks
> >   add_dblink(DBLink dblink):
> >   timestamp(): timestamp
> >   category(): VocabTerm
> >   is_obsolete(): boolean
> >
> > interface RelationshipI extends Bio::Graph::ArcI
> >   attribute Identifier identifier
> >   attribute TermI parent_term
> >   attribute TermI child_term
> >   attribute TermI relationship_type
> >
> > interface VocabDefinitionI extends Bio::Root::RootI
> >   attribute string definition
> >   attribute DBLink reference
> >   timestamp(): timestamp
> >
> >
> --
> -------------------------------------------------------------
> Hilmar Lapp                            email: lapp at gnf.org
> GNF, San Diego, Ca. 92121              phone: +1-858-812-1757
> -------------------------------------------------------------
> 
>