[Bioperl-l] Bio::Ontology

Chris Mungall cjm@fruitfly.org
Sun, 22 Sep 2002 12:51:06 -0700 (PDT)


On Sat, 21 Sep 2002, Hilmar Lapp wrote:

> It appears that ideally and as one of the first steps of reconciling
> the two designs we should be able to merge ChrisM's VocabTermI and
> ChrisZ's TermI.
>
> 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.
>
> 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.
>
> 3) identifier() vs ontology_id(). As I posted before, my vote is
> identifier().
>
> 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?

label is just the name/phrase, eg 'transmembrane receptor'

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


> 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.)
>
> 7) each_dblink() vs each_reference. I vote for dblink because
> reference is used in bioperl for literature 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()?

it's not crucial - version would be fine

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

this can be viewed as another relationship, between the term, and the top
level/generic terms in the ontology

regarding making each_relationship() a method of Term - do you have an
implementation that doesn't introduce cyclical perl references?

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

i'm happy with all the other changes



> 	-hilmar