[Bioperl-l] Re: [BioSQL-l] Ontology category

Matthew Pocock matthew_pocock@yahoo.co.uk
Mon, 11 Nov 2002 23:47:26 +0000


I've been thinking about this. One solution is to have a tri-join table 
that equates to the data blob:

Relationship {
   OntologyTerm source,
   OntologyTerm target,
   OntologyTerm relationship
}

These would all be foreign keys into the table that reprents 
OntologyTerm. You could add the pair-wise keys on this table to make it 
quick to pull out everything with a given relationship or all 
source/target pairs for a given source or whatever.

We would need to seed the OntologyTerm table with a few entries that 
give us the ground-rules:
   relation
   equivalent
   one of ( isa : subset )
   one of ( instance_of : member_of )
   one of ( partof : composed_from )
   and, or, not ?
   transiative, reflexive, partial_order, total_order

Once this is set up, we could add a few basic terms for commonly 
encountered collections of terms:
   FeatureType
   cds _instance_of_ FeatureType
   exon _instance_of_ FeatureType
   ...

   FeatureQualifiers

   cds_qualifiers _isa_ FeatureQualifiers

I know basic SQL doesn't give us the transiative closures we need to do 
in-db reasoning over these things, but with these few basic built in 
relations, a spartan basic set of terms and this 3-way join table, we at 
least can represent everything cleanly and provide means for 
domain-specific extentions. I'm sure we can write stoored procedures 
that do the transative closures for us.

Matthew

Hilmar Lapp wrote:
> It appears the Biosql schema is settling down. Among the open spots is 
> what to eventually do with the category of an ontology term.
> 
> The current solution I implemented is ontology terms having a nullable 
> foreign key to themselves that denotes the category.
> 
> There are several things worth mentioning about this.
> 
> 1) First off, it works for us (tm), which means it is fully supported in 
> the TermI adaptor in bioperl-db.
> 
> 2) It is simply modeled after the bioperl object model, where ChrisM and 
> subsequently we had the category slot of Ontology::TermI be another 
> TermI object.
> 
> 3) It has been pointed out by several people that this approach is 
> deficient in that it mixes different entities into one object and 
> potentially cannot capture information one would like to capture about 
> Ontologies (not terms), like namespace, authority, cardinality, type, 
> and whatnot. I agree with basically all of this.
> 
> If the current solution is to be changed, my suggestion is to change the 
> object model first, because otherwise the object model is wrong (worse 
> than the rel. model being wrong), and mapping the same class to two 
> different relational entities is just unnecessary and unjustified 
> complexity.
> 
> Given the fact that it works for us, I'm somewhat lazy to drive that 
> change myself. So I'm trying to solicit concrete proposals here from 
> people who are dissatisfied with the present design. I'm willing to help 
> implementing the winning proposal. To lower your activation energy if 
> the current design puts you off, note that if you don't speak up the 
> current design may end up unmodified in 1.2, which will make it stick 
> for a while.
> 
>     -hilmar
> -- 
> -------------------------------------------------------------
> Hilmar Lapp                            email: lapp at gnf.org
> GNF, San Diego, Ca. 92121              phone: +1-858-812-1757
> -------------------------------------------------------------
> 
> _______________________________________________
> BioSQL-l mailing list
> BioSQL-l@open-bio.org
> http://open-bio.org/mailman/listinfo/biosql-l
> 


-- 
BioJava Consulting LTD - Support and training for BioJava
http://www.biojava.co.uk

__________________________________________________
Do You Yahoo!?
Everything you'll ever need on one web page
from News and Sport to Email and Music Charts
http://uk.my.yahoo.com