Mercurial > repos > mahtabm > ensembl
comparison variant_effect_predictor/Bio/DB/BiblioI.pm @ 0:1f6dce3d34e0
Uploaded
| author | mahtabm |
|---|---|
| date | Thu, 11 Apr 2013 02:01:53 -0400 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| -1:000000000000 | 0:1f6dce3d34e0 |
|---|---|
| 1 # $Id: BiblioI.pm,v 1.5 2002/10/22 07:45:13 lapp Exp $ | |
| 2 # | |
| 3 # BioPerl module for Bio::DB::BiblioI | |
| 4 # | |
| 5 # Cared for by Martin Senger <senger@ebi.ac.uk> | |
| 6 # For copyright and disclaimer see below. | |
| 7 # | |
| 8 | |
| 9 # POD documentation - main docs before the code | |
| 10 | |
| 11 =head1 NAME | |
| 12 | |
| 13 Bio::DB::BiblioI - An interface to a Bibliographic Query Service | |
| 14 | |
| 15 =head1 SYNOPSIS | |
| 16 | |
| 17 This is an interface module - you do not instantiate it. | |
| 18 Use I<Bio::Biblio> module: | |
| 19 | |
| 20 use Bio::Biblio; | |
| 21 my $biblio = new Bio::Biblio (@args); | |
| 22 | |
| 23 =head1 DESCRIPTION | |
| 24 | |
| 25 This interface describes the methods for accessing a bibliographic | |
| 26 repository, for quering it and for retrieving citations from it. The | |
| 27 retrieved citations are in XML format and can be converted to perl | |
| 28 objects using I<Bio::Biblio::IO>. | |
| 29 | |
| 30 The interface complies (with some simplifications) with the | |
| 31 specification described in the B<OpenBQS> project. Its home page is at | |
| 32 http://industry.ebi.ac.uk/openBQS | |
| 33 | |
| 34 =head1 FEEDBACK | |
| 35 | |
| 36 =head2 Mailing Lists | |
| 37 | |
| 38 User feedback is an integral part of the evolution of this and other | |
| 39 Bioperl modules. Send your comments and suggestions preferably to | |
| 40 the Bioperl mailing list. Your participation is much appreciated. | |
| 41 | |
| 42 bioperl-l@bioperl.org - General discussion | |
| 43 http://bioperl.org/MailList.shtml - About the mailing lists | |
| 44 | |
| 45 =head2 Reporting Bugs | |
| 46 | |
| 47 Report bugs to the Bioperl bug tracking system to help us keep track | |
| 48 of the bugs and their resolution. Bug reports can be submitted via | |
| 49 email or the web: | |
| 50 | |
| 51 bioperl-bugs@bioperl.org | |
| 52 http://bugzilla.bioperl.org/ | |
| 53 | |
| 54 =head1 AUTHOR | |
| 55 | |
| 56 Martin Senger (senger@ebi.ac.uk) | |
| 57 | |
| 58 =head1 COPYRIGHT | |
| 59 | |
| 60 Copyright (c) 2002 European Bioinformatics Institute. All Rights Reserved. | |
| 61 | |
| 62 This module is free software; you can redistribute it and/or modify | |
| 63 it under the same terms as Perl itself. | |
| 64 | |
| 65 =head1 DISCLAIMER | |
| 66 | |
| 67 This software is provided "as is" without warranty of any kind. | |
| 68 | |
| 69 =head1 APPENDIX | |
| 70 | |
| 71 This is actually the main documentation... | |
| 72 | |
| 73 If you try to call any of these methods directly on this | |
| 74 Bio::DB::BiblioI object you will get a I<not implemented> error | |
| 75 message. You need to call them on a Bio::Biblio object. | |
| 76 | |
| 77 =cut | |
| 78 | |
| 79 | |
| 80 # Let the code begin... | |
| 81 | |
| 82 package Bio::DB::BiblioI; | |
| 83 use vars qw(@ISA $VERSION $Revision); | |
| 84 use strict; | |
| 85 use Bio::Root::RootI; | |
| 86 | |
| 87 @ISA = qw(Bio::Root::RootI); | |
| 88 | |
| 89 BEGIN { | |
| 90 $VERSION = do { my @r = (q$Revision: 1.5 $ =~ /\d+/g); sprintf "%d.%-02d", @r }; | |
| 91 $Revision = q$Id: BiblioI.pm,v 1.5 2002/10/22 07:45:13 lapp Exp $; | |
| 92 } | |
| 93 | |
| 94 # ----------------------------------------------------------------------------- | |
| 95 | |
| 96 =head2 get_collection_id | |
| 97 | |
| 98 Usage : my $collection_id = $biblio->get_collection_id; | |
| 99 Returns : string identifying a query collection | |
| 100 represented by the $biblio object | |
| 101 Args : none | |
| 102 | |
| 103 Every query collection is uniquely identify-able by its collection | |
| 104 ID. The returned value can be used to populate another $biblio object | |
| 105 and then to access that collection. | |
| 106 | |
| 107 =cut | |
| 108 | |
| 109 sub get_collection_id { | |
| 110 my ($self,@args) = @_; | |
| 111 $self->throw_not_implemented(); | |
| 112 } | |
| 113 | |
| 114 | |
| 115 # ----------------------------------------------------------------------------- | |
| 116 | |
| 117 =head2 get_count | |
| 118 | |
| 119 Usage : my $count = $biblio->get_count; | |
| 120 Returns : integer | |
| 121 Args : none, or a string identifying a query collection | |
| 122 | |
| 123 It returns a number of citations in the query collection represented | |
| 124 by the calling $biblio object, or in the collection whose ID is given | |
| 125 as an argument. | |
| 126 | |
| 127 =cut | |
| 128 | |
| 129 sub get_count { shift->throw_not_implemented(); } | |
| 130 | |
| 131 # ----------------------------------------------------------------------------- | |
| 132 | |
| 133 =head2 find | |
| 134 | |
| 135 Usage : my $new_biblio = $biblio->find ($keywords, $attrs); | |
| 136 my $new_biblio = $biblio->find ('perl', 'abstract'); | |
| 137 my $new_biblio = $biblio->find ( [ 'perl', 'Java' ] ); | |
| 138 Returns : new Bio::Biblio object representing a new query | |
| 139 collection | |
| 140 Args : $keywords - what to look for (mandatory) | |
| 141 - a comma-delimited list of keywords, or | |
| 142 - an array reference with keywords as elements | |
| 143 $attrs - where to look in (optional) | |
| 144 - a comma-delimited list of attribute names, or | |
| 145 - an array reference with attribute names as elements | |
| 146 | |
| 147 This is the main query method. It looks for the $keywords in a default | |
| 148 set of attributes, or - if $attrs given - only in the given | |
| 149 attributes. | |
| 150 | |
| 151 Because it returns a new Bio::Biblio object which can be again queried | |
| 152 it is possible to chain together several invocations: | |
| 153 | |
| 154 $biblio->find ('Brazma')->find ('Robinson')->get_collection_id; | |
| 155 | |
| 156 =cut | |
| 157 | |
| 158 sub find { shift->throw_not_implemented; } | |
| 159 | |
| 160 # ----------------------------------------------------------------------------- | |
| 161 | |
| 162 # TBD: AFAIK this method is not implemented on the server side. | |
| 163 # Let's comment it out for the time being... | |
| 164 #sub query { shift->throw_not_implemented(); } | |
| 165 | |
| 166 # ----------------------------------------------------------------------------- | |
| 167 | |
| 168 =head2 reset_retrieval | |
| 169 | |
| 170 Usage : $biblio->reset_retrieval; | |
| 171 Returns : nothing | |
| 172 Args : none | |
| 173 | |
| 174 It sets an iterator stored in the $biblio object back to its | |
| 175 beginning. After this, the retrieval methods I<has_next>, I<get_next> | |
| 176 and I<get_more> start to iterate the underlying query collection | |
| 177 again from its start. | |
| 178 | |
| 179 It throws an exception if this object does not represent any query | |
| 180 result (e.i. it does not contain a collection ID). Note that a | |
| 181 collection ID is created automatically when this object was returned | |
| 182 by a I<find> method, or it can be assigned in a constructor using | |
| 183 argument I<-collection_id>. | |
| 184 | |
| 185 =cut | |
| 186 | |
| 187 sub reset_retrieval { shift->throw_not_implemented; } | |
| 188 | |
| 189 # ----------------------------------------------------------------------------- | |
| 190 | |
| 191 =head2 get_next | |
| 192 | |
| 193 Usage : my $citation = $biblio->get_next; | |
| 194 Returns : a citation in an XML format | |
| 195 Args : none | |
| 196 | |
| 197 It returns the next available citation from the underlying query | |
| 198 collection. It throws an exception if there are no more citations. In | |
| 199 order to avoid this use it together with the I<has_next> method: | |
| 200 | |
| 201 my $result = $biblio->find ('brazma', 'authors'); | |
| 202 while ( $result->has_next ) { | |
| 203 print $result->get_next; | |
| 204 } | |
| 205 | |
| 206 It also throws an exception if this object does not represent any | |
| 207 query result - see explanation in the I<reset_retrieval> elsewhere in | |
| 208 this document. | |
| 209 | |
| 210 =cut | |
| 211 | |
| 212 sub get_next { shift->throw_not_implemented; } | |
| 213 | |
| 214 # ----------------------------------------------------------------------------- | |
| 215 | |
| 216 =head2 get_more | |
| 217 | |
| 218 Usage : my $r_citations = $biblio->get_more (5); | |
| 219 Returns : an array reference - each element has a citation | |
| 220 in an XML format | |
| 221 Args : an integer 'how_many' citations to return; | |
| 222 default is 1 - but it is assigned with warning | |
| 223 | |
| 224 It returns the next I<how_many> available citations from the | |
| 225 underlying query collection. It does not throw any exception if | |
| 226 'how_many' is more than currently available - it simply returns | |
| 227 less. However, it throws an exception if used again without calling | |
| 228 first I<reset_retrieval>. | |
| 229 | |
| 230 It also throws an exception if this object does not represent any | |
| 231 query result - see explanation in method I<reset_retrieval> elsewhere | |
| 232 in this document. | |
| 233 | |
| 234 =cut | |
| 235 | |
| 236 sub get_more { shift->throw_not_implemented; } | |
| 237 | |
| 238 # ----------------------------------------------------------------------------- | |
| 239 | |
| 240 =head2 has_next | |
| 241 | |
| 242 Usage : my $is = $biblio->has_next; | |
| 243 Returns : 1 or undef | |
| 244 Args : none | |
| 245 | |
| 246 It returns 1 if there is a next citation available in the underlying | |
| 247 query collection. Otherwise it returns undef. | |
| 248 | |
| 249 It throws an exception if this object does not represent any query | |
| 250 result - see explanation in method I<reset_retrieval> elsewhere in | |
| 251 this document. | |
| 252 | |
| 253 =cut | |
| 254 | |
| 255 sub has_next { shift->throw_not_implemented; } | |
| 256 | |
| 257 # ----------------------------------------------------------------------------- | |
| 258 | |
| 259 =head2 get_all_ids | |
| 260 | |
| 261 Usage : my $r_ids = $biblio->get_all_ids; | |
| 262 Returns : an array reference - each element has | |
| 263 a citation identifier | |
| 264 Args : none | |
| 265 | |
| 266 The identifiers of all citations in the underlying query collection | |
| 267 are returned. A usual pattern is to use them then in the I<get_by_id> | |
| 268 method: | |
| 269 | |
| 270 my $biblio = $repository->find ('brazma')->find ('robinson'); | |
| 271 foreach my $id ( @{ $biblio->get_all_ids } ) { | |
| 272 print $biblio->get_by_id ($id); | |
| 273 } | |
| 274 | |
| 275 It throws an exception if this object does not represent any query | |
| 276 result - see explanation in method I<reset_retrieval> elsewhere in | |
| 277 this document. | |
| 278 | |
| 279 =cut | |
| 280 | |
| 281 sub get_all_ids { shift->throw_not_implemented; } | |
| 282 | |
| 283 # ----------------------------------------------------------------------------- | |
| 284 | |
| 285 =head2 get_by_id | |
| 286 | |
| 287 Usage : my $citation = $biblio->get_by_id ('94033980'); | |
| 288 Returns : a citation in an XML format | |
| 289 Args : a citation identifier | |
| 290 (e.g. for MEDLINE it is a MedlineID | |
| 291 - at least for the time being) | |
| 292 | |
| 293 It returns a citation - disregarding if the citation is or is not in | |
| 294 the underlying query collection (of course, it must be in the | |
| 295 repository). | |
| 296 | |
| 297 =cut | |
| 298 | |
| 299 sub get_by_id { shift->throw_not_implemented; } | |
| 300 | |
| 301 # ----------------------------------------------------------------------------- | |
| 302 | |
| 303 =head2 get_all | |
| 304 | |
| 305 Usage : my $all = $biblio->get_all; | |
| 306 Returns : a (big) string with all citations in an XML format | |
| 307 Args : none | |
| 308 | |
| 309 It returns an XML valid string (which means that individual citations | |
| 310 are also surrounded by a "set" XML tag) representing all citations | |
| 311 from the underlying query collection. | |
| 312 | |
| 313 Note that some servers may limit the number of citations which can be | |
| 314 returned by this method. In such case you need either to refine | |
| 315 further your query collection (using I<find> method) or to retrieve | |
| 316 results by iteration (methods I<has_next>, I<get_next>, I<get_more>). | |
| 317 | |
| 318 It throws an exception if this object does not represent any query | |
| 319 result - see explanation in method I<reset_retrieval> elsewhere in | |
| 320 this document. | |
| 321 | |
| 322 =cut | |
| 323 | |
| 324 sub get_all { shift->throw_not_implemented; } | |
| 325 | |
| 326 # ----------------------------------------------------------------------------- | |
| 327 | |
| 328 =head2 exists | |
| 329 | |
| 330 Usage : my $exists = $biblio->exists; | |
| 331 Returns : 1 or undef | |
| 332 Args : none | |
| 333 | |
| 334 It returns 1 if the underlying query collection represented by the | |
| 335 $biblio object still exists (on the server side). | |
| 336 | |
| 337 If you have a collection ID (e.g. stored or printed in a previous | |
| 338 session) but you do not have anymore a C<Bio::Biblio> object representing | |
| 339 it this is how you can check the collection existence: | |
| 340 | |
| 341 use Bio::Biblio; | |
| 342 print | |
| 343 new Bio::Biblio (-collection_id => '1014324148861')->exists; | |
| 344 | |
| 345 It throws an exception if this object does not represent any query | |
| 346 result - see explanation in method I<reset_retrieval> elsewhere in | |
| 347 this document. | |
| 348 | |
| 349 =cut | |
| 350 | |
| 351 sub exists { shift->throw_not_implemented; } | |
| 352 | |
| 353 # ----------------------------------------------------------------------------- | |
| 354 | |
| 355 =head2 destroy | |
| 356 | |
| 357 Usage : $biblio->destroy; | |
| 358 Returns : nothing | |
| 359 Args : none | |
| 360 | |
| 361 It sends a message to the remote server to forget (or free, or destroy | |
| 362 - whatever server choose to do) the query collection represented by | |
| 363 this object. | |
| 364 | |
| 365 It throws an exception if this object does not represent any query | |
| 366 collection. | |
| 367 | |
| 368 =cut | |
| 369 | |
| 370 sub destroy { shift->throw_not_implemented; } | |
| 371 | |
| 372 # ----------------------------------------------------------------------------- | |
| 373 | |
| 374 =head2 get_vocabulary_names | |
| 375 | |
| 376 Usage : print join ("\n", @{ $biblio->get_vocabulary_names }); | |
| 377 Returns : an array reference - each element has a name | |
| 378 of a controlled vocabulary | |
| 379 Args : none | |
| 380 | |
| 381 The controlled vocabularies allow to introspect bibliographic | |
| 382 repositories and to find what citation resource types (such as journal | |
| 383 and book articles, patents or technical reports) are provided by the | |
| 384 repository, what attributes they have, eventually what attribute | |
| 385 values are allowed. | |
| 386 | |
| 387 This method returns names of all available controlled | |
| 388 vocabularies. The names can than be used in other methods dealing with | |
| 389 vocabularies: I<contains>, I<get_entry_description>, | |
| 390 I<get_all_values>, and I<get_all_entries>. | |
| 391 | |
| 392 =cut | |
| 393 | |
| 394 sub get_vocabulary_names { shift->throw_not_implemented; } | |
| 395 | |
| 396 # ----------------------------------------------------------------------------- | |
| 397 | |
| 398 =head2 contains | |
| 399 | |
| 400 Usage : my $yes = $biblio->contains ($vocabulary_name, $value); | |
| 401 Returns : 1 or undef | |
| 402 Args : $vocabulary_name defines a vocabulary where to look, | |
| 403 and a $value defines what to look for | |
| 404 | |
| 405 It returns 1 if the given controlled vocabulary contains the given | |
| 406 value. | |
| 407 | |
| 408 For example, when you know, that a vocabulary | |
| 409 C<MEDLINE/JournalArticle/properties> contains value C<COUNTRY> you can | |
| 410 use it in the I<find> method: | |
| 411 | |
| 412 $biblio->find ('United States', 'COUNTRY'); | |
| 413 | |
| 414 =cut | |
| 415 | |
| 416 sub contains { shift->throw_not_implemented; } | |
| 417 | |
| 418 # ----------------------------------------------------------------------------- | |
| 419 | |
| 420 =head2 get_entry_description | |
| 421 | |
| 422 Usage : $biblio->get_entry_description ($voc_name, $value); | |
| 423 Returns : a string with a desciption | |
| 424 Args : $voc_name defines a vocabulary where to look, | |
| 425 and a $value defines whose description to return | |
| 426 | |
| 427 Each vocabulary entry has its value (mandatory attribute), and can | |
| 428 have a description (optional attribute). The description may be just a | |
| 429 human readable explanation of an attribute, or it can have more exact | |
| 430 meaning. For example, the server implementation of the bibliographic | |
| 431 query service provided by the EBI puts into attribute descriptions | |
| 432 words I<queryable> and/or I<retrievable> to distinguish the role of | |
| 433 the attributes. | |
| 434 | |
| 435 It throws an exception if either vocabulary or value do not exist. | |
| 436 | |
| 437 =cut | |
| 438 | |
| 439 sub get_entry_description { shift->throw_not_implemented; } | |
| 440 | |
| 441 # ----------------------------------------------------------------------------- | |
| 442 | |
| 443 =head2 get_all_values | |
| 444 | |
| 445 Usage : $biblio->get_all_values ($vocabulary_name); | |
| 446 Returns : an array reference - each element has a value (scalar) | |
| 447 from the given controlled vocabulary | |
| 448 Args : $vocabulary_name defines a vocabulary whose values | |
| 449 are being returned | |
| 450 | |
| 451 It returns all values of the given vocabulary. It throws an exception | |
| 452 if the vocabulary does not exist. | |
| 453 | |
| 454 =cut | |
| 455 | |
| 456 sub get_all_values { shift->throw_not_implemented; } | |
| 457 | |
| 458 # ----------------------------------------------------------------------------- | |
| 459 | |
| 460 =head2 get_all_entries | |
| 461 | |
| 462 Usage : $biblio->get_all_entries ($vocabulary_name); | |
| 463 Returns : a hash reference - keys are vocabulary values | |
| 464 and values are their descriptions | |
| 465 Args : $vocabulary_name defines a vocabulary whose entries | |
| 466 are being returned | |
| 467 | |
| 468 It returns pairs of values and their descriptions of the whole | |
| 469 vocabulary. It throws an exception if the vocabulary does not exist. | |
| 470 | |
| 471 This is one way how to get it and print it: | |
| 472 | |
| 473 my $name = 'MEDLINE2002/JournalArticle/properties'; | |
| 474 use Data::Dumper; | |
| 475 print Data::Dumper->Dump ( [$biblio->get_all_entries ($name)], | |
| 476 ['All entries']); | |
| 477 | |
| 478 =cut | |
| 479 | |
| 480 sub get_all_entries { shift->throw_not_implemented; } | |
| 481 | |
| 482 # ----------------------------------------------------------------------------- | |
| 483 | |
| 484 =head2 VERSION and Revision | |
| 485 | |
| 486 Usage : print $Bio::DB::BiblioI::VERSION; | |
| 487 print $Bio::DB::BiblioI::Revision; | |
| 488 | |
| 489 =cut | |
| 490 | |
| 491 1; | |
| 492 __END__ | |
| 493 |
