EarthLifeConsortium / elc_api

EarthLife Consortium API
http://earthlifeconsortium.org
Apache License 2.0
12 stars 2 forks source link

Discussion about the sites. #14

Closed SimonGoring closed 6 years ago

SimonGoring commented 7 years ago

This is the the current thinking, based on issue #2:

[
  [
    {
      "sites": {
        "lat": 0,
        "lon": 0,
        "site_id": "string",
        "site_name": "string",
        "collections":[{
          "id":"string",
          "name":"string"
        }],
        "occurrences": []  # This is optional, if `occ_id` is passed in.
      }
    }
  ]
]
SimonGoring commented 7 years ago

So site_id means something for Neotoma, but doesn't for PBDB. Is it worth adding a table in to PBDB that is basically a join, linking collections to a common spatial location, and adding a site parameter. So this goes beyond linking duplicate lat/long pairs.

The other challenge is, with paleocoordinates, do we need matches for both modern geography and paleogeography? Is the site concept with modern coordinates valid through time?

jpjenk commented 7 years ago

Hypothetical: 1 Neotoma Site = 4 datasets where 2 are in one age and 2 are in another age. The ones in same age are different because they could be pollen, diatoms, fossil fauna and what other dataset "types"?

SimonGoring commented 7 years ago

Yes this is the case (m is modern):

This is all one site, with (five) datasets:

m---  -- pollen
m    --   Faunmap
m------- diatom
m------- plant macrofossil
m  -  - - Geochronological (14C dates)

---time-->
SimonGoring commented 7 years ago

Maybe we can call the site a locale, skipping over the sites in Neotoma.

User does a bounding box search:

[
  [
    {
      "locale": {
        "lat": 0,
        "lon": 0,
        "site_name": "string",  // collection name or site name
        "dataset_type": "string",  // for pbdb, "fossil fauna"; for Neotoma: dataset type
        "age_range": [0,0],  // minimum, maximum
        "locale_id": [{
          "id":"string",
          "type":"string" // would be either 'dataset' or 'collection', to be able to pass between pbdb & neotoma.
        }],
        "occurrences": []  # This is optional, if `occ_id` is passed in.
      }
    }
  ]
]
SimonGoring commented 7 years ago

So, with a search, you might get a response that looks like this:

[
  "locale": {
    "lat": 41,
    "lon": 35,
    "site_name": "Banana City Lake",
    "dataset_type": "pollen",
    "age_range": [-50,10000],
    "age_basis": "radiocarbon years",
    "age_units": "years",
    "locale_id": "neot_1324",
    "occurrences": []
  },
  "locale": {
    "lat": 41,
    "lon": 35,
    "site_name": "Banana City Lake",
    "dataset_type": "faunal",
    "age_range": [9000,10000],
    "age_basis": "calibrated radiocarbon years",
    "age_units": "years",
    "locale_id": "neot_6575",
    "occurrences": []
  },
  "locale": {
    "lat": 41,
    "lon": 35,
    "site_name": "Banana City Fossil Site",
    "dataset_type": "faunal",
    "age_range": [1000000000,1000000000],
    "age_basis": "radiocarbon years",
    "age_units": "years",
    "locale_id": "pbdb_6575",
    "occurrences": []
  }
]
jpjenk commented 6 years ago

api_v1 implementation is complete and fully addresses this issue