<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">
Hi Scott,
<div class=""><br class="">
</div>
<div class="">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:</div>
<div class=""><br class="">
</div>
<div class="">
<div class="">"predicate": {</div>
<div class="">        "type": "and",</div>
<div class="">        "predicates": [</div>
<div class="">            {</div>
<div class="">                "type": "or",</div>
<div class="">                "predicates": [</div>
<div class="">                    {</div>
<div class="">                        "type": "equals",</div>
<div class="">                        "key": "TAXON_KEY",</div>
<div class="">                        "value": "2475470"</div>
<div class="">                    },</div>
<div class="">                    {</div>
<div class="">                        "type": "equals",</div>
<div class="">                        "key": "TAXON_KEY",</div>
<div class="">                        "value": "2475471"</div>
<div class="">                    },</div>
<div class="">                    {</div>
<div class="">                        "type": "equals",</div>
<div class="">                        "key": "TAXON_KEY",</div>
<div class="">                        "value": "2475472"</div>
<div class="">                    }</div>
<div class="">                ]</div>
<div class="">            },</div>
<div class="">            {</div>
<div class="">                "type": "or",</div>
<div class="">                "predicates": [</div>
<div class="">                    {</div>
<div class="">                        "type": "equals",</div>
<div class="">                        "key": "BASIS_OF_RECORD",</div>
<div class="">                        "value": "PRESERVED_SPECIMEN"</div>
<div class="">                    },</div>
<div class="">                    {</div>
<div class="">                        "type": "equals",</div>
<div class="">                        "key": "FOSSIL_SPECIMEN",</div>
<div class="">                        "value": "2475471"</div>
<div class="">                    }</div>
<div class="">                ]</div>
<div class="">            },</div>
<div class="">            {</div>
<div class="">                "type": "equals",</div>
<div class="">                "key": "HAS_COORDINATE",</div>
<div class="">                "value": "true"</div>
<div class="">            },</div>
<div class="">            {</div>
<div class="">                "type": "equals",</div>
<div class="">                "key": "HAS_GEOSPATIAL_ISSUE",</div>
<div class="">                "value": "false"</div>
<div class="">            },</div>
<div class="">            {</div>
<div class="">                "type": "greaterThanOrEquals",</div>
<div class="">                "key": "YEAR",</div>
<div class="">                "value": "1949"</div>
<div class="">            },</div>
<div class="">            {</div>
<div class="">                "type": "lessThanOrEquals",</div>
<div class="">                "key": "YEAR",</div>
<div class="">                "value": "2011"</div>
<div class="">            },</div>
<div class="">            {</div>
<div class="">                "type": "greaterThanOrEquals",</div>
<div class="">                "key": "MONTH",</div>
<div class="">                "value": "3"</div>
<div class="">            },</div>
<div class="">            {</div>
<div class="">                "type": "lessThanOrEquals",</div>
<div class="">                "key": "MONTH",</div>
<div class="">                "value": "8"</div>
<div class="">            }</div>
<div class="">        ]</div>
<div class="">    }</div>
<div class=""><br class="">
</div>
<div class="">Best,</div>
<div class="">Markus</div>
<div class=""><br class="">
</div>
<div class=""><br class="">
</div>
<div>
<blockquote type="cite" class="">
<div class="">On 13 Jan 2017, at 21:35, Scott Chamberlain <<a href="mailto:myrmecocystus@gmail.com" class="">myrmecocystus@gmail.com</a>> wrote:</div>
<br class="Apple-interchange-newline">
<div class="">
<div dir="ltr" class="">Hi! 
<div class=""><br class="">
</div>
<div class="">A rgbif user is asking me about a particular download query, see <a href="https://github.com/ropensci/rgbif/issues/245" class="">https://github.com/ropensci/rgbif/issues/245</a> </div>
<div class=""><br class="">
</div>
<div class="">TLDR: AFAICT this can't work as the API is set up right now. Or am I wrong?  </div>
<div class=""><br class="">
</div>
<div class="">That is, he wants to get data for records that match</div>
<div class=""><br class="">
</div>
<div class="">- 10 taxa with their taxonKey value</div>
<div class="">- 3 different basisofrecord values</div>
<div class="">- country = US </div>
<div class="">- hasCoordinate = TRUE</div>
<div class="">- hasGeospatialIssue = FALSE</div>
<div class="">- year range between 1949 and 2011</div>
<div class="">- month range between 3 and 8</div>
<div class=""><br class="">
</div>
<div class="">For the taxonKey values, I think he needs to combine those with <b class="">
OR</b> operator:</div>
<div class=""><br class="">
</div>
<div class="">
<div class="">"predicate": {</div>
<div class="">        "type": "or",</div>
<div class="">        "predicates": [</div>
<div class="">            {</div>
<div class="">                "type": "equals",</div>
<div class="">                "key": "TAXON_KEY",</div>
<div class="">                "value": "2475470"</div>
<div class="">            },</div>
<div class="">            {</div>
<div class="">                "type": "equals",</div>
<div class="">                "key": "TAXON_KEY",</div>
<div class="">                "value": "2475470"</div>
<div class="">            }</div>
<div class="">        ]</div>
<div class="">    }</div>
</div>
<div class=""><br class="">
</div>
<div class="">However, he should combine the other parameters (basisofrecord, hasCoordinate, year, month, etc) using
<b class="">AND</b> AFAICT. </div>
<div class=""><br class="">
</div>
<div class=""><b class="">BUT</b>, AFAICT the API only allows one <b class="">predicate</b> 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.)</div>
<div class=""><br class="">
</div>
<div class="">I tried sending two <b class="">predicate</b> keys in the API and only the second goes through. </div>
<div class=""><br class="">
</div>
<div class="">Any guidance much appreciated :)</div>
<div class=""><br class="">
</div>
<div class="">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?</div>
<div class=""><br class="">
</div>
<div class="">Best, Scott<br class="">
</div>
</div>
_______________________________________________<br class="">
API-users mailing list<br class="">
<a href="mailto:API-users@lists.gbif.org" class="">API-users@lists.gbif.org</a><br class="">
http://lists.gbif.org/mailman/listinfo/api-users<br class="">
</div>
</blockquote>
</div>
<br class="">
</div>
</body>
</html>