[API-users] Download API: support many predicates?

Scott Chamberlain myrmecocystus at gmail.com
Sat Jan 14 01:26:53 CET 2017


Markus,

Thanks, that's it!  I just wasn't providing for the ability to do that in
the R client.

Scott

On Fri, Jan 13, 2017 at 3:12 PM Markus Döring <mdoering at gbif.org> wrote:

> Hi Scott,
>
> if I understand you correctly you should be able to request a download
> with a filter like this one that uses a primary AND nested with some ORs:
>
> "predicate": {
>         "type": "and",
>         "predicates": [
>             {
>                 "type": "or",
>                 "predicates": [
>                     {
>                         "type": "equals",
>                         "key": "TAXON_KEY",
>                         "value": "2475470"
>                     },
>                     {
>                         "type": "equals",
>                         "key": "TAXON_KEY",
>                         "value": "2475471"
>                     },
>                     {
>                         "type": "equals",
>                         "key": "TAXON_KEY",
>                         "value": "2475472"
>                     }
>                 ]
>             },
>             {
>                 "type": "or",
>                 "predicates": [
>                     {
>                         "type": "equals",
>                         "key": "BASIS_OF_RECORD",
>                         "value": "PRESERVED_SPECIMEN"
>                     },
>                     {
>                         "type": "equals",
>                         "key": "FOSSIL_SPECIMEN",
>                         "value": "2475471"
>                     }
>                 ]
>             },
>             {
>                 "type": "equals",
>                 "key": "HAS_COORDINATE",
>                 "value": "true"
>             },
>             {
>                 "type": "equals",
>                 "key": "HAS_GEOSPATIAL_ISSUE",
>                 "value": "false"
>             },
>             {
>                 "type": "greaterThanOrEquals",
>                 "key": "YEAR",
>                 "value": "1949"
>             },
>             {
>                 "type": "lessThanOrEquals",
>                 "key": "YEAR",
>                 "value": "2011"
>             },
>             {
>                 "type": "greaterThanOrEquals",
>                 "key": "MONTH",
>                 "value": "3"
>             },
>             {
>                 "type": "lessThanOrEquals",
>                 "key": "MONTH",
>                 "value": "8"
>             }
>         ]
>     }
>
> Best,
> Markus
>
>
> On 13 Jan 2017, at 21:35, Scott Chamberlain <myrmecocystus at gmail.com>
> wrote:
>
> Hi!
>
> A rgbif user is asking me about a particular download query, see
> https://github.com/ropensci/rgbif/issues/245
>
> TLDR: AFAICT this can't work as the API is set up right now. Or am I
> wrong?
>
> That is, he wants to get data for records that match
>
> - 10 taxa with their taxonKey value
> - 3 different basisofrecord values
> - country = US
> - hasCoordinate = TRUE
> - hasGeospatialIssue = FALSE
> - year range between 1949 and 2011
> - month range between 3 and 8
>
> For the taxonKey values, I think he needs to combine those with * OR*
> operator:
>
> "predicate": {
>         "type": "or",
>         "predicates": [
>             {
>                 "type": "equals",
>                 "key": "TAXON_KEY",
>                 "value": "2475470"
>             },
>             {
>                 "type": "equals",
>                 "key": "TAXON_KEY",
>                 "value": "2475470"
>             }
>         ]
>     }
>
> However, he should combine the other parameters (basisofrecord,
> hasCoordinate, year, month, etc) using *AND* AFAICT.
>
> *BUT*, AFAICT the API only allows one *predicate* key so you can't do
> what I think is needed here. That is, to say (taxonkey = 1 OR 2 OR 3) +
> (country = US AND hasCoordinate = true, etc.)
>
> I tried sending two *predicate* keys in the API and only the second goes
> through.
>
> Any guidance much appreciated :)
>
> The best solution I can think of is to do the query he's doing, but do one
> for each taxon. Seem like a good solution?
>
> Best, Scott
>
> _______________________________________________
> API-users mailing list
> API-users at lists.gbif.org
> http://lists.gbif.org/mailman/listinfo/api-users
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.gbif.org/pipermail/api-users/attachments/20170114/c9f9d1b5/attachment-0001.html>


More information about the API-users mailing list