Mercurial > repos > mahtabm > ensembl
diff variant_effect_predictor/Bio/DB/BiblioI.pm @ 0:1f6dce3d34e0
Uploaded
author | mahtabm |
---|---|
date | Thu, 11 Apr 2013 02:01:53 -0400 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/variant_effect_predictor/Bio/DB/BiblioI.pm Thu Apr 11 02:01:53 2013 -0400 @@ -0,0 +1,493 @@ +# $Id: BiblioI.pm,v 1.5 2002/10/22 07:45:13 lapp Exp $ +# +# BioPerl module for Bio::DB::BiblioI +# +# Cared for by Martin Senger <senger@ebi.ac.uk> +# For copyright and disclaimer see below. +# + +# POD documentation - main docs before the code + +=head1 NAME + +Bio::DB::BiblioI - An interface to a Bibliographic Query Service + +=head1 SYNOPSIS + +This is an interface module - you do not instantiate it. +Use I<Bio::Biblio> module: + + use Bio::Biblio; + my $biblio = new Bio::Biblio (@args); + +=head1 DESCRIPTION + +This interface describes the methods for accessing a bibliographic +repository, for quering it and for retrieving citations from it. The +retrieved citations are in XML format and can be converted to perl +objects using I<Bio::Biblio::IO>. + +The interface complies (with some simplifications) with the +specification described in the B<OpenBQS> project. Its home page is at +http://industry.ebi.ac.uk/openBQS + +=head1 FEEDBACK + +=head2 Mailing Lists + +User feedback is an integral part of the evolution of this and other +Bioperl modules. Send your comments and suggestions preferably to +the Bioperl mailing list. Your participation is much appreciated. + + bioperl-l@bioperl.org - General discussion + http://bioperl.org/MailList.shtml - About the mailing lists + +=head2 Reporting Bugs + +Report bugs to the Bioperl bug tracking system to help us keep track +of the bugs and their resolution. Bug reports can be submitted via +email or the web: + + bioperl-bugs@bioperl.org + http://bugzilla.bioperl.org/ + +=head1 AUTHOR + +Martin Senger (senger@ebi.ac.uk) + +=head1 COPYRIGHT + +Copyright (c) 2002 European Bioinformatics Institute. All Rights Reserved. + +This module is free software; you can redistribute it and/or modify +it under the same terms as Perl itself. + +=head1 DISCLAIMER + +This software is provided "as is" without warranty of any kind. + +=head1 APPENDIX + +This is actually the main documentation... + +If you try to call any of these methods directly on this +Bio::DB::BiblioI object you will get a I<not implemented> error +message. You need to call them on a Bio::Biblio object. + +=cut + + +# Let the code begin... + +package Bio::DB::BiblioI; +use vars qw(@ISA $VERSION $Revision); +use strict; +use Bio::Root::RootI; + +@ISA = qw(Bio::Root::RootI); + +BEGIN { + $VERSION = do { my @r = (q$Revision: 1.5 $ =~ /\d+/g); sprintf "%d.%-02d", @r }; + $Revision = q$Id: BiblioI.pm,v 1.5 2002/10/22 07:45:13 lapp Exp $; +} + +# ----------------------------------------------------------------------------- + +=head2 get_collection_id + + Usage : my $collection_id = $biblio->get_collection_id; + Returns : string identifying a query collection + represented by the $biblio object + Args : none + +Every query collection is uniquely identify-able by its collection +ID. The returned value can be used to populate another $biblio object +and then to access that collection. + +=cut + +sub get_collection_id { + my ($self,@args) = @_; + $self->throw_not_implemented(); +} + + +# ----------------------------------------------------------------------------- + +=head2 get_count + + Usage : my $count = $biblio->get_count; + Returns : integer + Args : none, or a string identifying a query collection + +It returns a number of citations in the query collection represented +by the calling $biblio object, or in the collection whose ID is given +as an argument. + +=cut + +sub get_count { shift->throw_not_implemented(); } + +# ----------------------------------------------------------------------------- + +=head2 find + + Usage : my $new_biblio = $biblio->find ($keywords, $attrs); + my $new_biblio = $biblio->find ('perl', 'abstract'); + my $new_biblio = $biblio->find ( [ 'perl', 'Java' ] ); + Returns : new Bio::Biblio object representing a new query + collection + Args : $keywords - what to look for (mandatory) + - a comma-delimited list of keywords, or + - an array reference with keywords as elements + $attrs - where to look in (optional) + - a comma-delimited list of attribute names, or + - an array reference with attribute names as elements + +This is the main query method. It looks for the $keywords in a default +set of attributes, or - if $attrs given - only in the given +attributes. + +Because it returns a new Bio::Biblio object which can be again queried +it is possible to chain together several invocations: + + $biblio->find ('Brazma')->find ('Robinson')->get_collection_id; + +=cut + +sub find { shift->throw_not_implemented; } + +# ----------------------------------------------------------------------------- + +# TBD: AFAIK this method is not implemented on the server side. +# Let's comment it out for the time being... +#sub query { shift->throw_not_implemented(); } + +# ----------------------------------------------------------------------------- + +=head2 reset_retrieval + + Usage : $biblio->reset_retrieval; + Returns : nothing + Args : none + +It sets an iterator stored in the $biblio object back to its +beginning. After this, the retrieval methods I<has_next>, I<get_next> +and I<get_more> start to iterate the underlying query collection +again from its start. + +It throws an exception if this object does not represent any query +result (e.i. it does not contain a collection ID). Note that a +collection ID is created automatically when this object was returned +by a I<find> method, or it can be assigned in a constructor using +argument I<-collection_id>. + +=cut + +sub reset_retrieval { shift->throw_not_implemented; } + +# ----------------------------------------------------------------------------- + +=head2 get_next + + Usage : my $citation = $biblio->get_next; + Returns : a citation in an XML format + Args : none + +It returns the next available citation from the underlying query +collection. It throws an exception if there are no more citations. In +order to avoid this use it together with the I<has_next> method: + + my $result = $biblio->find ('brazma', 'authors'); + while ( $result->has_next ) { + print $result->get_next; + } + +It also throws an exception if this object does not represent any +query result - see explanation in the I<reset_retrieval> elsewhere in +this document. + +=cut + +sub get_next { shift->throw_not_implemented; } + +# ----------------------------------------------------------------------------- + +=head2 get_more + + Usage : my $r_citations = $biblio->get_more (5); + Returns : an array reference - each element has a citation + in an XML format + Args : an integer 'how_many' citations to return; + default is 1 - but it is assigned with warning + +It returns the next I<how_many> available citations from the +underlying query collection. It does not throw any exception if +'how_many' is more than currently available - it simply returns +less. However, it throws an exception if used again without calling +first I<reset_retrieval>. + +It also throws an exception if this object does not represent any +query result - see explanation in method I<reset_retrieval> elsewhere +in this document. + +=cut + +sub get_more { shift->throw_not_implemented; } + +# ----------------------------------------------------------------------------- + +=head2 has_next + + Usage : my $is = $biblio->has_next; + Returns : 1 or undef + Args : none + +It returns 1 if there is a next citation available in the underlying +query collection. Otherwise it returns undef. + +It throws an exception if this object does not represent any query +result - see explanation in method I<reset_retrieval> elsewhere in +this document. + +=cut + +sub has_next { shift->throw_not_implemented; } + +# ----------------------------------------------------------------------------- + +=head2 get_all_ids + + Usage : my $r_ids = $biblio->get_all_ids; + Returns : an array reference - each element has + a citation identifier + Args : none + +The identifiers of all citations in the underlying query collection +are returned. A usual pattern is to use them then in the I<get_by_id> +method: + + my $biblio = $repository->find ('brazma')->find ('robinson'); + foreach my $id ( @{ $biblio->get_all_ids } ) { + print $biblio->get_by_id ($id); + } + +It throws an exception if this object does not represent any query +result - see explanation in method I<reset_retrieval> elsewhere in +this document. + +=cut + +sub get_all_ids { shift->throw_not_implemented; } + +# ----------------------------------------------------------------------------- + +=head2 get_by_id + + Usage : my $citation = $biblio->get_by_id ('94033980'); + Returns : a citation in an XML format + Args : a citation identifier + (e.g. for MEDLINE it is a MedlineID + - at least for the time being) + +It returns a citation - disregarding if the citation is or is not in +the underlying query collection (of course, it must be in the +repository). + +=cut + +sub get_by_id { shift->throw_not_implemented; } + +# ----------------------------------------------------------------------------- + +=head2 get_all + + Usage : my $all = $biblio->get_all; + Returns : a (big) string with all citations in an XML format + Args : none + +It returns an XML valid string (which means that individual citations +are also surrounded by a "set" XML tag) representing all citations +from the underlying query collection. + +Note that some servers may limit the number of citations which can be +returned by this method. In such case you need either to refine +further your query collection (using I<find> method) or to retrieve +results by iteration (methods I<has_next>, I<get_next>, I<get_more>). + +It throws an exception if this object does not represent any query +result - see explanation in method I<reset_retrieval> elsewhere in +this document. + +=cut + +sub get_all { shift->throw_not_implemented; } + +# ----------------------------------------------------------------------------- + +=head2 exists + + Usage : my $exists = $biblio->exists; + Returns : 1 or undef + Args : none + +It returns 1 if the underlying query collection represented by the +$biblio object still exists (on the server side). + +If you have a collection ID (e.g. stored or printed in a previous +session) but you do not have anymore a C<Bio::Biblio> object representing +it this is how you can check the collection existence: + + use Bio::Biblio; + print + new Bio::Biblio (-collection_id => '1014324148861')->exists; + +It throws an exception if this object does not represent any query +result - see explanation in method I<reset_retrieval> elsewhere in +this document. + +=cut + +sub exists { shift->throw_not_implemented; } + +# ----------------------------------------------------------------------------- + +=head2 destroy + + Usage : $biblio->destroy; + Returns : nothing + Args : none + +It sends a message to the remote server to forget (or free, or destroy +- whatever server choose to do) the query collection represented by +this object. + +It throws an exception if this object does not represent any query +collection. + +=cut + +sub destroy { shift->throw_not_implemented; } + +# ----------------------------------------------------------------------------- + +=head2 get_vocabulary_names + + Usage : print join ("\n", @{ $biblio->get_vocabulary_names }); + Returns : an array reference - each element has a name + of a controlled vocabulary + Args : none + +The controlled vocabularies allow to introspect bibliographic +repositories and to find what citation resource types (such as journal +and book articles, patents or technical reports) are provided by the +repository, what attributes they have, eventually what attribute +values are allowed. + +This method returns names of all available controlled +vocabularies. The names can than be used in other methods dealing with +vocabularies: I<contains>, I<get_entry_description>, +I<get_all_values>, and I<get_all_entries>. + +=cut + +sub get_vocabulary_names { shift->throw_not_implemented; } + +# ----------------------------------------------------------------------------- + +=head2 contains + + Usage : my $yes = $biblio->contains ($vocabulary_name, $value); + Returns : 1 or undef + Args : $vocabulary_name defines a vocabulary where to look, + and a $value defines what to look for + +It returns 1 if the given controlled vocabulary contains the given +value. + +For example, when you know, that a vocabulary +C<MEDLINE/JournalArticle/properties> contains value C<COUNTRY> you can +use it in the I<find> method: + + $biblio->find ('United States', 'COUNTRY'); + +=cut + +sub contains { shift->throw_not_implemented; } + +# ----------------------------------------------------------------------------- + +=head2 get_entry_description + + Usage : $biblio->get_entry_description ($voc_name, $value); + Returns : a string with a desciption + Args : $voc_name defines a vocabulary where to look, + and a $value defines whose description to return + +Each vocabulary entry has its value (mandatory attribute), and can +have a description (optional attribute). The description may be just a +human readable explanation of an attribute, or it can have more exact +meaning. For example, the server implementation of the bibliographic +query service provided by the EBI puts into attribute descriptions +words I<queryable> and/or I<retrievable> to distinguish the role of +the attributes. + +It throws an exception if either vocabulary or value do not exist. + +=cut + +sub get_entry_description { shift->throw_not_implemented; } + +# ----------------------------------------------------------------------------- + +=head2 get_all_values + + Usage : $biblio->get_all_values ($vocabulary_name); + Returns : an array reference - each element has a value (scalar) + from the given controlled vocabulary + Args : $vocabulary_name defines a vocabulary whose values + are being returned + +It returns all values of the given vocabulary. It throws an exception +if the vocabulary does not exist. + +=cut + +sub get_all_values { shift->throw_not_implemented; } + +# ----------------------------------------------------------------------------- + +=head2 get_all_entries + + Usage : $biblio->get_all_entries ($vocabulary_name); + Returns : a hash reference - keys are vocabulary values + and values are their descriptions + Args : $vocabulary_name defines a vocabulary whose entries + are being returned + +It returns pairs of values and their descriptions of the whole +vocabulary. It throws an exception if the vocabulary does not exist. + +This is one way how to get it and print it: + + my $name = 'MEDLINE2002/JournalArticle/properties'; + use Data::Dumper; + print Data::Dumper->Dump ( [$biblio->get_all_entries ($name)], + ['All entries']); + +=cut + +sub get_all_entries { shift->throw_not_implemented; } + +# ----------------------------------------------------------------------------- + +=head2 VERSION and Revision + + Usage : print $Bio::DB::BiblioI::VERSION; + print $Bio::DB::BiblioI::Revision; + +=cut + +1; +__END__ +