001/* 002 * Licensed under the Apache License, Version 2.0 (the "License"); 003 * you may not use this file except in compliance with the License. 004 * You may obtain a copy of the License at 005 * 006 * http://www.apache.org/licenses/LICENSE-2.0 007 * 008 * Unless required by applicable law or agreed to in writing, software 009 * distributed under the License is distributed on an "AS IS" BASIS, 010 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 011 * See the License for the specific language governing permissions and 012 * limitations under the License. 013 */ 014package org.gbif.api.model.occurrence.search; 015 016import org.gbif.api.model.common.search.SearchParameter; 017import org.gbif.api.util.IsoDateInterval; 018import org.gbif.api.vocabulary.BasisOfRecord; 019import org.gbif.api.vocabulary.Continent; 020import org.gbif.api.vocabulary.Country; 021import org.gbif.api.vocabulary.EndpointType; 022import org.gbif.api.vocabulary.GbifRegion; 023import org.gbif.api.vocabulary.License; 024import org.gbif.api.vocabulary.MediaType; 025import org.gbif.api.vocabulary.OccurrenceIssue; 026import org.gbif.api.vocabulary.OccurrenceStatus; 027import org.gbif.api.vocabulary.Sex; 028import org.gbif.api.vocabulary.TaxonomicStatus; 029import org.gbif.api.vocabulary.TypeStatus; 030 031import java.util.Date; 032import java.util.UUID; 033 034/** 035 * Supported query parameters by the occurrence search and download service. 036 * For download predicates only the numerical types support comparisons other than equals. 037 */ 038public enum OccurrenceSearchParameter implements SearchParameter { 039 040 /** 041 * The dataset key as a UUID. 042 */ 043 DATASET_KEY(UUID.class), 044 045 /** 046 * The 4 digit year. A year of 98 will be 98 common era, not 1998. 047 * This parameter accepts comma separated range values, e.g.: 048 * <dl> 049 * <dt>*,1810</dt> 050 * <dd>Found before or equal to 1810</dd> 051 * <dt>1848,1933</dt> 052 * <dd>Year between 1848 and 1933</dd> 053 * </dl> 054 */ 055 YEAR(Integer.class), 056 057 /** 058 * The month of the year, starting with 1 for January. 059 * A month query can be used to retrieve seasonal records when used without a year or a year range. 060 * This parameter accepts comma separated range values, e.g.: 061 * <dl> 062 * <dt>4,8</dt> 063 * <dd>Month between April and August</dd> 064 * </dl> 065 */ 066 MONTH(Integer.class), 067 068 /** 069 * The earliest integer day of the year on which the event occurred (1 for January 1, 365 for December 31, except in a 070 * leap year, in which case it is 366). 071 */ 072 START_DAY_OF_YEAR(Integer.class), 073 074 /** 075 * The latest integer day of the year on which the event occurred (1 for January 1, 365 for December 31, except in a 076 * leap year, in which case it is 366). 077 */ 078 END_DAY_OF_YEAR(Integer.class), 079 080 /** 081 * Event date (date the occurrence was recorded) in ISO 8601 formats:yyyy, yyyy-MM, yyyy-MM-dd and MM-dd. 082 * This parameter accepts comma separated range values, examples of valid ranges are: 083 * <dl> 084 * <dt>2001-02-11,2010-01-10</dt> 085 * <dd>Dates between 2001-02-11 and 2010-01-10</dd> 086 * <dt>2001-02,2010-01</dt> 087 * <dd>Dates between first day of 2001-02 and last day of 2010-01</dd> 088 * <dt>2001,2010</dt> 089 * <dd>Dates between first day of 2001 and last day of 2010</dd> 090 * <dt>2001,2010-01</dt> 091 * <dd>Dates between first day of 2001 and last day of 2010-01</dd> 092 * <dt>2001-01-10,2010</dt> 093 * <dd>Dates between 2001-01-10 and last day of 2010</dd> 094 * <dt>2001-01-10,*</dt> 095 * <dd>Dates after 2001-01-10</dd> 096 * <dt>*,2001-01-10</dt> 097 * <dd>Dates before 2001-01-10</dd> 098 * <dt>*</dt> 099 * <dd>all dates</dd> 100 * </dl> 101 */ 102 EVENT_DATE(IsoDateInterval.class), 103 104 /** 105 * Lower limit for the range of the event date (date the occurrence was recorded). 106 * 107 * Included for backward compatibility as it mimicks the previous search behaviour: 108 * https://github.com/gbif/occurrence/issues/346 109 */ 110 @Deprecated 111 EVENT_DATE_GTE(Date.class), 112 113 /** 114 * An identifier for the set of information associated with an Event (something that occurs at a place and time). 115 * Maybe a global unique identifier or an identifier specific to the data set. 116 */ 117 EVENT_ID(String.class), 118 119 /** 120 * An identifier for the broader Event that groups this and potentially other Events. 121 */ 122 PARENT_EVENT_ID(String.class), 123 124 /** 125 * The name of, reference to, or description of the method or protocol used during an Event. 126 */ 127 SAMPLING_PROTOCOL(String.class), 128 129 /** 130 * A list (concatenated and separated) of previous assignments of names to the organism. 131 */ 132 PREVIOUS_IDENTIFICATIONS(String.class), 133 134 /** 135 * Last interpreted date in ISO 8601 formats:yyyy, yyyy-MM, yyyy-MM-dd and MM-dd. 136 * This parameter accepts comma separated range values, examples of valid ranges are: 137 * <dl> 138 * <dt>2001-02-11,2010-01-10</dt> 139 * <dd>Dates between 2001-02-11 and 2010-01-10</dd> 140 * <dt>2001-02,2010-01</dt> 141 * <dd>Dates between first day of 2001-02 and last day of 2010-01</dd> 142 * <dt>2001,2010</dt> 143 * <dd>Dates between first day of 2001 and last day of 2010</dd> 144 * <dt>2001,2010-01</dt> 145 * <dd>Dates between first day of 2001 and last day of 2010-01</dd> 146 * <dt>2001-01-10,2010</dt> 147 * <dd>Dates between 2001-01-10 and last day of 2010</dd> 148 * <dt>2001-01-10,*</dt> 149 * <dd>Dates after 2001-01-10</dd> 150 * <dt>*,2001-01-10</dt> 151 * <dd>Dates before 2001-01-10</dd> 152 * <dt>*</dt> 153 * <dd>all dates</dd> 154 * </dl> 155 */ 156 LAST_INTERPRETED(Date.class), 157 158 159 /** 160 * Modified date in ISO 8601 formats:yyyy, yyyy-MM, yyyy-MM-dd and MM-dd. 161 * This parameter accepts comma separated range values, examples of valid ranges are: 162 * <dl> 163 * <dt>2001-02-11,2010-01-10</dt> 164 * <dd>Dates between 2001-02-11 and 2010-01-10</dd> 165 * <dt>2001-02,2010-01</dt> 166 * <dd>Dates between first day of 2001-02 and last day of 2010-01</dd> 167 * <dt>2001,2010</dt> 168 * <dd>Dates between first day of 2001 and last day of 2010</dd> 169 * <dt>2001,2010-01</dt> 170 * <dd>Dates between first day of 2001 and last day of 2010-01</dd> 171 * <dt>2001-01-10,2010</dt> 172 * <dd>Dates between 2001-01-10 and last day of 2010</dd> 173 * <dt>2001-01-10,*</dt> 174 * <dd>Dates after 2001-01-10</dd> 175 * <dt>*,2001-01-10</dt> 176 * <dd>Dates before 2001-01-10</dd> 177 * <dt>*</dt> 178 * <dd>all dates</dd> 179 * </dl> 180 */ 181 MODIFIED(Date.class), 182 183 /** 184 * Latitude in decimals between -90 and 90 based on WGS 84. 185 */ 186 DECIMAL_LATITUDE(Double.class), 187 188 /** 189 * Longitude in decimals between -180 and 180 based on WGS 84. 190 */ 191 DECIMAL_LONGITUDE(Double.class), 192 193 /** 194 * The uncertainty of the coordinate in meters. 195 * This parameter accepts comma separated range values, e.g.: 196 * <dl> 197 * <dt>*,100</dt> 198 * <dd>Uncertainty below or equals 100m</dd> 199 * <dt>10000,*</dt> 200 * <dd>Uncertainty above or equals 10,000m</dd> 201 * <dt>1000,5000</dt> 202 * <dd>Uncertainty between or equals 1000m and 5000m 203 * </dd> 204 * </dl> 205 */ 206 COORDINATE_UNCERTAINTY_IN_METERS(Double.class), 207 208 /** 209 * Country the occurrence was recorded in. 210 */ 211 COUNTRY(Country.class), 212 213 /** 214 * GBIF region based on country 215 */ 216 GBIF_REGION(GbifRegion.class), 217 218 /** 219 * Continent the occurrence was recorded in. 220 */ 221 CONTINENT(Continent.class), 222 223 /** 224 * The country of the organization that publishes the dataset the occurrence belongs to. 225 */ 226 PUBLISHING_COUNTRY(Country.class), 227 228 /** 229 * GBIF region based on publishibg country 230 */ 231 PUBLISHED_BY_GBIF_REGION(GbifRegion.class), 232 233 /** 234 * Altitude/elevation in meters above sea level. 235 * This parameter accepts comma separated range values, e.g.: 236 * <dl> 237 * <dt>*,100</dt> 238 * <dd>Altitude below or equals 100m</dd> 239 * <dt>100,*</dt> 240 * <dd>Altitude above or equals 100m</dd> 241 * <dt>-2,8.8</dt> 242 * <dd>Altitude between or equals -2m and 8.8m</dd> 243 * </dl> 244 */ 245 ELEVATION(Double.class), 246 247 /** 248 * Depth in meters relative to altitude. For example 10 meters below a lake surface with given altitude. 249 * This parameter accepts comma separated range values, e.g.: 250 * <dl> 251 * <dt>*,10</dt> 252 * <dd>Depth below or equals 10m</dd> 253 * <dt>100,*</dt> 254 * <dd>Depth above or equals 100m</dd> 255 * <dt>12.1,28.8</dt> 256 * <dd>Depth between or equals 12.1m and 28.8m</dd> 257 * </dl> 258 */ 259 DEPTH(Double.class), 260 261 /** 262 * An identifier of any form assigned by the source to identify the institution 263 * the record belongs to. Not guaranteed to be unique. 264 */ 265 INSTITUTION_CODE(String.class), 266 267 /** 268 * An identifier of any form assigned by the source to identify the physical collection or digital dataset 269 * uniquely within the context of an institution. 270 */ 271 COLLECTION_CODE(String.class), 272 273 /** 274 * An identifier of any form assigned by the source within a physical collection or digital dataset for the record 275 * which may not be unique, but should be fairly unique in combination with the institution and collection code. 276 */ 277 CATALOG_NUMBER(String.class), 278 279 /** 280 * The person who recorded the occurrence. 281 */ 282 RECORDED_BY(String.class), 283 284 /** 285 * The person who identified the occurrence. 286 */ 287 IDENTIFIED_BY(String.class), 288 289 /** 290 * An identifier given to the Occurrence at the time it was recorded. 291 */ 292 RECORD_NUMBER(String.class), 293 294 /** 295 * A basis of record enumeration value. 296 */ 297 BASIS_OF_RECORD(BasisOfRecord.class), 298 299 /** 300 * The sex of the biological individual(s) represented in the occurrence. 301 */ 302 SEX(Sex.class), 303 304 /** 305 * Presents of associated sequences or an extension 306 */ 307 IS_SEQUENCED(Boolean.class), 308 309 /** 310 * A taxon key from the GBIF backbone. All included and synonym taxa are included in the search, so a search for 311 * aves with taxonKey=212 will match all birds, no matter which species. 312 */ 313 TAXON_KEY(Integer.class), 314 315 /** 316 * A taxon key from the GBIF backbone for the name usage of the currently valid or accepted taxon. 317 */ 318 ACCEPTED_TAXON_KEY(Integer.class), 319 320 /** 321 * A kingdom key from the GBIF backbone. 322 */ 323 KINGDOM_KEY(Integer.class), 324 325 /** 326 * A phylum key from the GBIF backbone. 327 */ 328 PHYLUM_KEY(Integer.class), 329 330 /** 331 * A class key from the GBIF backbone. 332 */ 333 CLASS_KEY(Integer.class), 334 335 /** 336 * A order key from the GBIF backbone. 337 */ 338 ORDER_KEY(Integer.class), 339 340 /** 341 * A family key from the GBIF backbone. 342 */ 343 FAMILY_KEY(Integer.class), 344 345 /** 346 * A genus key from the GBIF backbone. 347 */ 348 GENUS_KEY(Integer.class), 349 350 /** 351 * A subgenus key from the GBIF backbone. 352 */ 353 SUBGENUS_KEY(Integer.class), 354 355 /** 356 * A species key from the GBIF backbone. 357 */ 358 SPECIES_KEY(Integer.class), 359 360 /** 361 * Searches the interpreted, full scientific name of the occurrence. 362 */ 363 SCIENTIFIC_NAME(String.class), 364 365 /** 366 * Scientific name as provided byt the source. 367 */ 368 VERBATIM_SCIENTIFIC_NAME(String.class), 369 370 /** 371 * Verbatim identifier for the set of taxon information. Maybe a global unique identifier or an identifier specific to 372 * the data set. 373 */ 374 TAXON_ID(String.class), 375 376 /** 377 * An identifier for the taxonomic concept to which the record refers - not for the nomenclatural details of a taxon. 378 */ 379 TAXON_CONCEPT_ID(String.class), 380 381 /** 382 * The status of the use of the GBIF Backbone taxonKey. 383 */ 384 TAXONOMIC_STATUS(TaxonomicStatus.class), 385 386 /** 387 * Searches for occurrence records which contain a value on its coordinate fields (latitude and longitude). 388 * HAS_COORDINATE=true searches for occurrence records with a coordinate value. 389 * HAS_COORDINATE=false searches for occurrence records without a coordinate value. 390 */ 391 HAS_COORDINATE(Boolean.class), 392 393 /** 394 * Geometry in <a href="https://en.wikipedia.org/wiki/Well-known_text">Well Known Text</a> (WKT) format. 395 * E.g.: POLYGON ((30.0 10.0, 10.12 20.23, 20 40, 40 40, 30 10)). 396 * Multi geometries like MULTIPOLYGON are not supported and multiple parameters should be used instead. 397 * Valid geometries are: 398 * <ul> 399 * <li>POINT</li> 400 * <li>LINESTRING</li> 401 * <li>POLYGON</li> 402 * <li>LINEARRING</li> 403 * </ul> 404 */ 405 GEOMETRY(String.class), 406 407 /** 408 * Use in combination of LATITUDE and LONGITUDE parameters matches within a given distance. 409 * E.g.: geo_distance=100m,40,90 geo_distance=100km,40,90 geo_distance=100mi,40,90. 410 * See supported units in {@link org.gbif.api.model.occurrence.geo.DistanceUnit}. 411 */ 412 GEO_DISTANCE(String.class), 413 414 /** 415 * The distance from a known centroid, e.g. a country centroid. 416 */ 417 DISTANCE_FROM_CENTROID_IN_METERS(Double.class), 418 419 /** 420 * Includes/excludes occurrence records which contain geospatial issues for their coordinate. 421 * See {@link org.gbif.api.vocabulary.OccurrenceIssue#GEOSPATIAL_RULES} 422 * HAS_GEOSPATIAL_ISSUE=true include records with spatial issues. 423 * HAS_GEOSPATIAL_ISSUE=false exclude records with spatial issues. 424 * The absence of this parameter returns any record with or without spatial issues. 425 */ 426 HAS_GEOSPATIAL_ISSUE(Boolean.class), 427 428 /** 429 * Searches occurrence for those that have a specific issue. 430 */ 431 ISSUE(OccurrenceIssue.class), 432 433 /** 434 * Nomenclatural type (type status, typified scientific name, publication) applied to the subject. 435 */ 436 TYPE_STATUS(TypeStatus.class), 437 438 /** 439 * The kind of media object. 440 * Recommended terms from the DCMI Type Vocabulary are StillImage, Sound or MovingImage for GBIF to index and show the 441 * media files. 442 */ 443 MEDIA_TYPE(MediaType.class), 444 445 /** 446 * An identifier for the Occurrence (as opposed to a particular digital record of the occurrence). 447 * In the absence of a persistent global unique identifier, construct one from a combination of identifiers in the 448 * record that will most closely make the occurrenceID globally unique. 449 */ 450 OCCURRENCE_ID(String.class), 451 452 /** 453 * The process by which the biological individual(s) represented in the Occurrence became established at the location. 454 */ 455 ESTABLISHMENT_MEANS(String.class), 456 457 /** 458 * Provides the controlled vocabulary for information about degree to which an Organism survives, reproduces, and expands its range at the given place and time. 459 */ 460 DEGREE_OF_ESTABLISHMENT(String.class), 461 462 /** 463 * Provides the controlled vocabulary for information about the process by which an Organism came to be in a given place at a given time. 464 * The pathway of an organism or organisms have been introduced to a given place and time. 465 */ 466 PATHWAY(String.class), 467 468 /** 469 * Searches for records whose publishing country is different to the country where the record was recorded in. 470 */ 471 REPATRIATED(Boolean.class), 472 473 /** 474 * An identifier for the Organism instance (as opposed to a particular digital record of the Organism). 475 * May be a globally unique identifier or an identifier specific to the data set. 476 */ 477 ORGANISM_ID(String.class), 478 479 /** 480 * The name of the next smaller administrative region than country in which the Location occurs. 481 */ 482 STATE_PROVINCE(String.class), 483 484 /** 485 * The name of the water body in which the Location occurs. 486 */ 487 WATER_BODY(String.class), 488 489 /** 490 * The specific description of the place. 491 * It may contain information modified from the original to correct perceived errors or standardize the description. 492 */ 493 LOCALITY(String.class), 494 495 /** 496 * Protocol used to provide the occurrence record. 497 */ 498 PROTOCOL(EndpointType.class), 499 500 /** 501 * The license applied to the dataset. 502 */ 503 LICENSE(License.class), 504 505 /** 506 * The owning organizations uuid key. 507 */ 508 PUBLISHING_ORG(UUID.class), 509 510 /** 511 * The GBIF network that the publishing organisation belongs to. 512 */ 513 NETWORK_KEY(UUID.class), 514 515 /** 516 * The technical installation key that hosts/publishes this record. 517 */ 518 INSTALLATION_KEY(UUID.class), 519 520 /** 521 * The organization key of the installation that hosts this record. 522 */ 523 HOSTING_ORGANIZATION_KEY(UUID.class), 524 525 /** 526 * Crawl attempt that harvested this record. 527 */ 528 CRAWL_ID(Integer.class), 529 530 /** 531 * GBIF ProjectId. 532 */ 533 PROJECT_ID(String.class), 534 535 /** 536 * GBIF Programme Acronym. 537 */ 538 PROGRAMME(String.class), 539 540 /** 541 * A number or enumeration value for the quantity of organisms. 542 */ 543 ORGANISM_QUANTITY(Double.class), 544 545 /** 546 * The type of quantification system used for the quantity of organisms. 547 */ 548 ORGANISM_QUANTITY_TYPE(String.class), 549 550 /** 551 * The unit of measurement of the size (time duration, length, area, or volume) of a sample in a sampling event. 552 */ 553 SAMPLE_SIZE_UNIT(String.class), 554 555 /** 556 * A numeric value for a measurement of the size (time duration, length, area, or volume) of a sample in a sampling event. 557 */ 558 SAMPLE_SIZE_VALUE(Double.class), 559 560 /** 561 * Calculated organismQuantity relative to the sampleSizeValue i.e. -> organismQuantity / sampleSizeValue. 562 */ 563 RELATIVE_ORGANISM_QUANTITY(Double.class), 564 565 /** 566 * Collection key. It links to the collection to which this record belongs. 567 */ 568 COLLECTION_KEY(String.class), 569 570 /** 571 * Institution key. It links to the institution that maintains, recorded or digitized this record. 572 */ 573 INSTITUTION_KEY(String.class), 574 575 /** 576 * Agent identifiers from GbifTerm.recordedByID 577 */ 578 RECORDED_BY_ID(String.class), 579 580 /** 581 * Agent identifiers from GbifTerm.identifiedByID 582 */ 583 IDENTIFIED_BY_ID(String.class), 584 585 /** 586 * An occurrence status enumeration value. 587 */ 588 OCCURRENCE_STATUS(OccurrenceStatus.class), 589 590 /** 591 * A <a href="https://gadm.org">GADM</a> identifier at any level. 592 */ 593 GADM_GID(String.class), 594 595 /** 596 * A <a href="https://gadm.org">GADM</a> country, island or territory (level zero) identifier. 597 */ 598 GADM_LEVEL_0_GID(String.class), 599 600 /** 601 * A <a href="https://gadm.org">GADM</a> first-level identifier. 602 */ 603 GADM_LEVEL_1_GID(String.class), 604 605 /** 606 * A <a href="https://gadm.org">GADM</a> second-level identifier. 607 */ 608 GADM_LEVEL_2_GID(String.class), 609 610 /** 611 * A <a href="https://gadm.org">GADM</a> third-level identifier. 612 */ 613 GADM_LEVEL_3_GID(String.class), 614 615 /** 616 * The life stage of an occurrence. 617 */ 618 LIFE_STAGE(String.class), 619 620 /** 621 * Searches for occurrences that are clustered. 622 */ 623 IS_IN_CLUSTER(Boolean.class), 624 625 /** 626 * Searches for occurrences that have a particular DwC-A extension. 627 */ 628 DWCA_EXTENSION(String.class), 629 630 /** 631 * Searches for occurrences that have a IUCN Red List Category. 632 */ 633 IUCN_RED_LIST_CATEGORY(String.class), 634 635 /** 636 * The dwc dataset id. 637 */ 638 DATASET_ID(String.class), 639 640 /** 641 * The dwc dataset name. 642 */ 643 DATASET_NAME(String.class), 644 645 /** 646 * Other catalog numbers associated to an occurrence. 647 */ 648 OTHER_CATALOG_NUMBERS(String.class), 649 650 /** 651 * Preparations methods of an occurrence. 652 */ 653 PREPARATIONS(String.class), 654 655 /** 656 * The name of the island on or near which the location occurs. 657 */ 658 ISLAND(String.class), 659 660 /** 661 * The name of the island group in which the location occurs. 662 */ 663 ISLAND_GROUP(String.class), 664 665 /** 666 * A list (concatenated and separated) of names of people, groups, or organizations who determined the georeference 667 * (spatial representation) for the location. 668 */ 669 GEOREFERENCED_BY(String.class), 670 671 /** 672 * A list (concatenated and separated) of geographic names less specific than the information captured in the locality 673 * term. 674 */ 675 HIGHER_GEOGRAPHY(String.class), 676 677 /** 678 * An identifier given to the event in the field. Often serves as a link between field notes and the event. 679 */ 680 FIELD_NUMBER(String.class), 681 682 /** 683 * The full name of the earliest possible geochronologic eon or lowest chrono-stratigraphic eonothem or the informal 684 * name ("Precambrian") attributable to the stratigraphic horizon from which the MaterialEntity was collected. 685 */ 686 EARLIEST_EON_OR_LOWEST_EONOTHEM(String.class), 687 688 /** 689 * The full name of the latest possible geochronologic eon or highest chrono-stratigraphic eonothem or the informal 690 * name ("Precambrian") attributable to the stratigraphic horizon from which the MaterialEntity was collected. 691 */ 692 LATEST_EON_OR_HIGHEST_EONOTHEM(String.class), 693 694 /** 695 * The full name of the earliest possible geochronologic era or lowest chronostratigraphic erathem attributable to the 696 * stratigraphic horizon from which the MaterialEntity was collected. 697 */ 698 EARLIEST_ERA_OR_LOWEST_ERATHEM(String.class), 699 700 /** 701 * The full name of the latest possible geochronologic era or highest chronostratigraphic erathem attributable to the 702 * stratigraphic horizon from which the MaterialEntity was collected. 703 */ 704 LATEST_ERA_OR_HIGHEST_ERATHEM(String.class), 705 706 /** 707 * The full name of the earliest possible geochronologic period or lowest chronostratigraphic system attributable to 708 * the stratigraphic horizon from which the MaterialEntity was collected. 709 */ 710 EARLIEST_PERIOD_OR_LOWEST_SYSTEM(String.class), 711 712 /** 713 * The full name of the latest possible geochronologic period or highest chronostratigraphic system attributable to 714 * the stratigraphic horizon from which the MaterialEntity was collected. 715 */ 716 LATEST_PERIOD_OR_HIGHEST_SYSTEM(String.class), 717 718 /** 719 * The full name of the earliest possible geochronologic epoch or lowest chronostratigraphic series attributable to 720 * the stratigraphic horizon from which the MaterialEntity was collected. 721 */ 722 EARLIEST_EPOCH_OR_LOWEST_SERIES(String.class), 723 724 /** 725 * The full name of the latest possible geochronologic epoch or highest chronostratigraphic series attributable to the 726 * stratigraphic horizon from which the MaterialEntity was collected. 727 */ 728 LATEST_EPOCH_OR_HIGHEST_SERIES(String.class), 729 730 /** 731 * The full name of the earliest possible geochronologic age or lowest chronostratigraphic stage attributable to the 732 * stratigraphic horizon from which the MaterialEntity was collected. 733 */ 734 EARLIEST_AGE_OR_LOWEST_STAGE(String.class), 735 736 /** 737 * The full name of the latest possible geochronologic age or highest chronostratigraphic stage attributable to the 738 * stratigraphic horizon from which the MaterialEntity was collected. 739 */ 740 LATEST_AGE_OR_HIGHEST_STAGE(String.class), 741 742 /** 743 * The full name of the lowest possible geological biostratigraphic zone of the stratigraphic horizon from which the 744 * MaterialEntity was collected. 745 */ 746 LOWEST_BIOSTRATIGRAPHIC_ZONE(String.class), 747 748 /** 749 * The full name of the highest possible geological biostratigraphic zone of the stratigraphic horizon from which the 750 * MaterialEntity was collected. 751 */ 752 HIGHEST_BIOSTRATIGRAPHIC_ZONE(String.class), 753 754 /** 755 * The full name of the lithostratigraphic group from which the MaterialEntity was collected. 756 */ 757 GROUP(String.class), 758 759 /** 760 * The full name of the lithostratigraphic formation from which the MaterialEntity was collected. 761 */ 762 FORMATION(String.class), 763 764 /** 765 * The full name of the lithostratigraphic member from which the MaterialEntity was collected. 766 */ 767 MEMBER(String.class), 768 769 /** 770 * The full name of the lithostratigraphic bed from which the MaterialEntity was collected. 771 */ 772 BED(String.class), 773 774 /** 775 * A list (concatenated and separated) of identifiers (publication, global unique identifier, URI) of 776 * genetic sequence information associated with the material entity. 777 */ 778 ASSOCIATED_SEQUENCES(String.class), 779 780 /** 781 * Unique GBIF key for the occurrence. 782 */ 783 GBIF_ID(String.class); 784 785 private final Class<?> type; 786 787 OccurrenceSearchParameter(Class<?> type) { 788 this.type = type; 789 } 790 791 /** 792 * @return the data type expected for the value of the respective search parameter 793 */ 794 @Override 795 public Class<?> type() { 796 return type; 797 } 798}