[BioSQL-l] query problem

Marc Logghe Marc.Logghe at devgen.com
Sat Nov 8 19:18:06 EST 2003


I have another question related to my previous post.
The returned persistent feature objects seem not to know about their parent; I mean, the display_name is undef. What should I change to the query in order to fill that slot ?
Many thanks in advance,
Marc

> -----Original Message-----
> From: Marc Logghe 
> Sent: Sunday, November 09, 2003 12:13 AM
> To: OBDA BioSQL (E-mail)
> Subject: [BioSQL-l] query problem
> 
> 
> Hi,
> I'm having some problems in creating a correct query. What I 
> am trying to do is fetching a persistent feature object with 
> primary_tag 'source' of a seq object with accesssion 'ABC' 
> belonging to namespace 'test'. I have tried this using the 
> following code snippet:
> my $adp    = $db->get_object_adaptor('Bio::SeqFeatureI');
> $adp->verbose(1);
> my $query  = Bio::DB::Query::BioQuery->new();
> my $mapper = 
> Bio::DB::BioSQL::Oracle::BasePersistenceAdaptorDriver->new();
> 
> $query->datacollections(
>                          [
>                            "Bio::SeqFeatureI f",
>                            "Bio::SeqI=>Bio::SeqFeatureI s",
>                        #    
> "Bio::Ontology::TermI=>Bio::SeqFeatureI t",
>                            "BioNamespace=>Bio::PrimarySeqI db",
>                          ]
> );
> 
> $query->where( [ "db.namespace = 'test'", "f.primary_tag = 
> 'source'", "s.accession_number = 'ABC'"] );
> 
> This did not work as I expected however. Seems like 
> f.primary_tag is mapped to type_trm_id, so I had to pass it 
> the value 11 instead.
> So, I guessed "Bio::Ontology::TermI=>Bio::SeqFeatureI t" had 
> to be added to the datacollections in order to get to the 
> value 'source' with the where clause:
> $query->where( [ "db.namespace = 'test'", "t.name = 
> 'source'", "s.accession_number = 'ABC'"] );
> This did not work neither, because the generated sql was not OK:
> SELECT f.oid, f.display_name, f.rank, f.ent_oid, 
> f.type_trm_oid, f.source_trm_oid FROM seqfeature f, bioentry 
> s, term t, biodatabase db WHERE f.ent_oid = s.oid AND 
> f.trm_oid = t.oid AND s.db_oid = db.oid AND (db.name = 'test' 
> AND t.name = 'source' AND s.accession = 'ABC')''])
> As far as I can see 'f.trm_oid = t.oid' should read 
> 'f.type_trm_oid = t.oid' ?
> I am pretty new to the API and schema, so I guess it is more 
> probable that I am missing something here.
> 
> Regards,
> Marc
> 
> 
> _______________________________________________
> BioSQL-l mailing list
> BioSQL-l at open-bio.org
> http://open-bio.org/mailman/listinfo/biosql-l
> 



More information about the BioSQL-l mailing list