[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
> -------------------------------------------------------------
>
>