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