All TAPIR operations can alternatively be invoked with a http GET URL. The operation name itself is specified in a parameter called "op". If not specified the default operation is metadata.
---+++ Global parameters (valid for all operations)
* op=[ping,metadata,capabilities,inventory,search]
* default=metadata
* cardinality=1..1
* xslt=[URI]
* default=null
* cardinality=0..1
* xslt-apply=[true,false,1,0]
* default=false
* cardinality=0..1
* log-only=[true,false,1,0]
* default=false
* cardinality=0..1
---+++ The accepted list of parameters for each operation
---+++++ ping
* op=[ping,p]
---+++++ metadata
* op=[metadata,m]
---+++++ capabilities
* op=[capabilities,c]
---+++++ inventory
* op=[inventory,i]
* count=[true,false,1,0]
* default=false
* cardinality=0..1
* start=[[integer][>= 1]]
* default=1
* cardinality=0..1
* limit=[[integer][>=0, NONE]]
* default=NONE
* cardinality=0..1
Then either a "template" parameter must be present:
* template=[URI]
* default=null
* cardinality=0..1
Or one or more concepts with an optional filter:
* concept=[[fully][qualified or alias]]
* default=(UNDEFINED which must be interpreted by implementation to mean no concepts and therefore empty response)
* cardinality=0..n
* filter=[expression]
* default=null
* cardinality=0..1
Parameter "template" takes precedence over "concept". So if both are present, "concept" (and the optional "filter") should be ignored.
---+++++ search
* op=[search,s]
* count=[true,false,1,0]
* default=false
* cardinality=0..1
* start=[[integer][>= 1]]
* default=1
* cardinality=0..1
* limit=[[integer][>=0, NONE]]
* default=NONE
* cardinality=0..1
Then either a "template" parameter must be present:
* template=[URI]
* default=null
* cardinality=0..1
Or a "model" parameter with optional "partial", "filter" and "orderby":
* model=[URI]
* default=null
* cardinality=0..1
* partial=[XPath]
* default=null
* cardinality=0..n
* filter=[expression]
* default=null
* cardinality=0..1
* orderby=[[fully][qualified or alias]]
* default=null
* cardinality=0..n
Parameter "template" takes precedence over "model". So if both are are present, "model" (and the optionals "partial", "filter" and "orderby") should be ignored.
* envelope=[true,false,1,0]
* default=true
* cardinality=0..1
---+++ Filter encoding
Filter expressions in GET requests will be infix equivalents to their XML counterparts
---++++ Order of Operations
The precedence of operators follows these rules:
E: AOP, COP, LOP
AOP: Mul, Div, Add, Sub
COP: Equals
LOP: Not, And, Or
Blocks can be formed by using simple parenthesis ( )
---++++ BNF Grammar For GET Filter expressions
WikiPedia:Backus-Naur_form
::= |
::= |
|
::= |
::= '"' '"'
::= |
::= "@"
::=
::=
::=
::= |
|
::=
::=
::=
::= {}
::=
::=
::= "isNull"
::= "Equals" |
"Like" |
"GreaterThan" |
"LessThan" |
"GreaterThanOrEquals" |
"LessThanOrEquals"
::= "In"
::= "Not"
::= "And" |
"Or"
::= |
|
|
::= "+"
::= "-"
::= "*"
::= "/"
::= { }
---+++++ Filter example
isnull country@dwc2 or FullScientificName@abcd206 like "Abies*" and country@dwc2 equals "Spain"
would be more explicit:
((isnull country@dwc2) or((FullScientificName@abcd206 like "Abies*") and(country@dwc2 equals "Spain")))