head 1.45; access; symbols; locks; strict; comment @# @; 1.45 date 2007.01.09.00.00.00; author MoinMoin; state Exp; branches; next 1.44; 1.44 date 2007.01.09.00.00.00; author MoinMoin; state Exp; branches; next 1.43; 1.43 date 2007.01.09.00.00.00; author MoinMoin; state Exp; branches; next 1.42; 1.42 date 2007.01.09.00.00.00; author MoinMoin; state Exp; branches; next 1.41; 1.41 date 2007.01.09.00.00.00; author MoinMoin; state Exp; branches; next 1.40; 1.40 date 2007.01.09.00.00.00; author MoinMoin; state Exp; branches; next 1.39; 1.39 date 2007.01.09.00.00.00; author MoinMoin; state Exp; branches; next 1.38; 1.38 date 2007.01.09.00.00.00; author MoinMoin; state Exp; branches; next 1.37; 1.37 date 2007.01.09.00.00.00; author MoinMoin; state Exp; branches; next 1.36; 1.36 date 2007.01.09.00.00.00; author MoinMoin; state Exp; branches; next 1.35; 1.35 date 2007.01.09.00.00.00; author MoinMoin; state Exp; branches; next 1.34; 1.34 date 2007.01.09.00.00.00; author MoinMoin; state Exp; branches; next 1.33; 1.33 date 2007.01.09.00.00.00; author MoinMoin; state Exp; branches; next 1.32; 1.32 date 2007.01.09.00.00.00; author MoinMoin; state Exp; branches; next 1.31; 1.31 date 2007.01.09.00.00.00; author MoinMoin; state Exp; branches; next 1.30; 1.30 date 2007.01.09.00.00.00; author MoinMoin; state Exp; branches; next 1.29; 1.29 date 2007.01.09.00.00.00; author MoinMoin; state Exp; branches; next 1.28; 1.28 date 2007.01.09.00.00.00; author MoinMoin; state Exp; branches; next 1.27; 1.27 date 2007.01.09.00.00.00; author MoinMoin; state Exp; branches; next 1.26; 1.26 date 2007.01.09.00.00.00; author MoinMoin; state Exp; branches; next 1.25; 1.25 date 2007.01.09.00.00.00; author MoinMoin; state Exp; branches; next 1.24; 1.24 date 2007.01.09.00.00.00; author MoinMoin; state Exp; branches; next 1.23; 1.23 date 2007.01.09.00.00.00; author MoinMoin; state Exp; branches; next 1.22; 1.22 date 2007.01.09.00.00.00; author MoinMoin; state Exp; branches; next 1.21; 1.21 date 2007.01.09.00.00.00; author MoinMoin; state Exp; branches; next 1.20; 1.20 date 2007.01.09.00.00.00; author MoinMoin; state Exp; branches; next 1.19; 1.19 date 2007.01.09.00.00.00; author MoinMoin; state Exp; branches; next 1.18; 1.18 date 2007.01.09.00.00.00; author MoinMoin; state Exp; branches; next 1.17; 1.17 date 2007.01.09.00.00.00; author MoinMoin; state Exp; branches; next 1.16; 1.16 date 2007.01.09.00.00.00; author MoinMoin; state Exp; branches; next 1.15; 1.15 date 2007.01.09.00.00.00; author MoinMoin; state Exp; branches; next 1.14; 1.14 date 2007.01.09.00.00.00; author MoinMoin; state Exp; branches; next 1.13; 1.13 date 2007.01.09.00.00.00; author MoinMoin; state Exp; branches; next 1.12; 1.12 date 2007.01.09.00.00.00; author MoinMoin; state Exp; branches; next 1.11; 1.11 date 2007.01.09.00.00.00; author MoinMoin; state Exp; branches; next 1.10; 1.10 date 2007.01.09.00.00.00; author MoinMoin; state Exp; branches; next 1.9; 1.9 date 2007.01.09.00.00.00; author MoinMoin; state Exp; branches; next 1.8; 1.8 date 2007.01.09.00.00.00; author MoinMoin; state Exp; branches; next 1.7; 1.7 date 2007.01.09.00.00.00; author MoinMoin; state Exp; branches; next 1.6; 1.6 date 2007.01.09.00.00.00; author MoinMoin; state Exp; branches; next 1.5; 1.5 date 2007.01.09.00.00.00; author MoinMoin; state Exp; branches; next 1.4; 1.4 date 2007.01.09.00.00.00; author MoinMoin; state Exp; branches; next 1.3; 1.3 date 2007.01.09.00.00.00; author MoinMoin; state Exp; branches; next 1.2; 1.2 date 2007.01.09.00.00.00; author MoinMoin; state Exp; branches; next 1.1; 1.1 date 2007.01.09.00.00.00; author MoinMoin; state Exp; branches; next ; desc @Initial revision @ 1.45 log @Revision 45 @ text @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"))) @ 1.44 log @Revision 44 @ text @d125 1 d127 65 a191 42 S := E "Start symbol" E := LOP | COP "Expression" COP := UCE | BCE | MCE "Comparative operator" LOP := ULE | BLE "Logical operator" L := "literal" "Literal" C := ALIAS | QCONCEPT "Concept" ALIAS := IdAlias@@NsAlias "Concept alias" QCONCEPT := String "Qualified concept" VAL := L | C | AE "Value" AE := VAL AOP VAL "Arithmetic expression" UCE := UCOP C "Unary comparison expression" BCE := VAL BCOP VAL "Binary comparison expression" MCE := MCOP E* "Multiple comparison expression" ULE := ULOP E "Unary logical expression" BLE := E BLOP E "Binary logical expression" UCOP := isNull "Unary comparison operators" BCOP := Equals | Like | GreaterThan | LessThan | GreaterThanOrEquals | LessThanOrEquals "Binary comparison operators" MCOP := In "Multiple comparison operators" ULOP := Not "Unary logical operators" BLOP := And | Or "Binary logical operators" AOP := ADD | DIV | MUL | SUB "Arithmetic operators" @ 1.43 log @Revision 43 @ text @d140 1 a140 1 QCONCEPT := FullNamespace::ConceptId d151 1 a151 1 "Multiple comparison expression" example: IN ("1","2","3") @ 1.42 log @Revision 42 @ text @a108 12 ---+++++ view * op=[view,v] * view=[URI] * default=null * cardinality=1..1 * envelope=[true,false,1,0] * default=false * cardinality=0..1 @ 1.41 log @Revision 41 @ text @d46 1 a46 1 Then either a template parameter must be present: d62 1 a62 1 Parameter "template" takes precedence over "concept" and "filter". So if all of them are present, "concept" and "filter" should be ignored. d79 8 d89 1 a89 1 * cardinality=1..1 d103 2 a108 1 @ 1.40 log @Revision 40 @ text @d46 8 d56 1 a56 1 * cardinality=1..n d62 2 @ 1.39 log @Revision 39 @ text @a53 5 * orderby=[[fully][qualified or alias]] * default=null * cardinality=0..n @ 1.38 log @Revision 38 @ text @d1 1 a1 3 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. d16 4 @ 1.37 log @Revision 37 @ text @d134 1 a134 1 ALIAS := NsAlias@@IdAlias @ 1.36 log @Revision 36 @ text @d7 1 a7 1 * default=capabilities a9 4 * envelope=[true,false,1,0] * default=false * cardinality=0..1 a25 1 d74 1 a74 1 * cardinality=0..1 d88 5 d96 8 @ 1.35 log @Revision 35 @ text @d3 1 a3 1 If not specified the default operation is capabilities. @ 1.34 log @Revision 34 @ text @d160 1 a160 1 isnull country@@dwc or FullScientificName@@abcd206 like "Abies*" and country@@dwc equals "Spain" d164 1 a164 1 ((isnull country@@dwc) or((FullScientificName@@abcd206 like "Abies*") and(country@@dwc equals "Spain"))) @ 1.33 log @Revision 33 @ text @d3 1 a3 1 If not specified the default operation is capabilities/metadata (TBD). @ 1.32 log @Revision 32 @ text @d160 1 a160 1 isnull*myConcept and*freak like "Carlos*" or*country equals "Spain" d164 1 a164 1 (((isnull*myConcept) and (*freak like "Carlos*")) or (*country equals "Spain")) @ 1.31 log @Revision 31 @ text @d124 1 a124 1 C := *concept d126 4 @ 1.30 log @Revision 30 @ text @d93 1 a93 1 ===== view===== @ 1.29 log @Revision 29 @ text @d25 1 a25 1 * op=ping d28 1 a28 1 * op=metadata d32 1 a32 1 * op=capabilities d35 1 a35 1 * op=inventory d63 1 a63 1 * op=search d93 2 @ 1.28 log @Revision 28 @ text @d79 1 a79 1 * cardinality=0..1 GetInvokedOperations!\ When template and model are present model is ignored GetInvokedOperations!\ @ 1.27 log @Revision 27 @ text @d57 1 a57 1 * orderby=[XPath] d89 1 a89 1 * orderby=[XPath] @ 1.26 log @Revision 26 @ text @d57 1 a57 1 * template=[URI] GetInvokedOperations!\ When a template is present concept&filter are ignored GetInvokedOperations!\ d59 1 a59 1 * cardinality=0..1 a80 4 * template=[URI] * default=null * cardinality=0..1 d89 4 @ 1.25 log @Revision 25 @ text @d49 1 a49 1 * concept=[[*however][we decide to represent them]] d53 9 @ 1.24 log @Revision 24 @ text @d2 1 a2 1 The operation name itself is specified in a parameter called "operation". @ 1.23 log @Revision 23 @ text @d14 1 a14 1 * xsl=[URI] d18 1 a18 1 * xsl-apply=[true,false,1,0] @ 1.22 log @Revision 22 @ text @d10 9 a18 1 * envelope=[true,false] d37 1 a37 1 * count=[true,false] d56 1 a56 1 * count=[true,false] @ 1.21 log @Revision 21 @ text @d60 6 a65 2 * view=[[however][we decide to represent them]] * default=??? d68 3 a70 1 * partial=[] @ 1.20 log @Revision 20 @ text @d132 1 d134 1 @ 1.19 log @Revision 19 @ text @d95 1 a95 1 LOP := ULE | MLE d113 2 a114 2 MLE := "Multiple logical expression" d123 2 a124 2 MLOP := And | Or "Multiple logical operators" @ 1.18 log @Revision 18 @ text @d77 1 d85 2 d109 2 a110 2 MCE := "Multiple comparison expression" d132 2 @ 1.17 log @Revision 17 @ text @d125 5 @ 1.16 log @Revision 16 @ text @d87 1 d89 1 d91 1 d93 1 d95 1 d97 1 d99 1 d101 1 d103 1 d105 1 d107 1 d109 1 d111 1 d113 1 d115 1 d117 1 d119 1 d121 1 d123 1 @ 1.15 log @Revision 15 @ text @d86 7 a92 7 S := E E := LOP | COP COP := UCE | BCE | MCE LOP := ULE | MLE L := "literal" C := *concept VAL := L | C | AE @ 1.14 log @Revision 14 @ text @d77 1 a77 1 d82 1 a82 1 d85 1 a85 1 d105 1 @ 1.13 log @Revision 13 @ text @d74 31 a104 1 Filter expressions in GET requests will be infix equivalents to their XML counterparts Where grouping cannot be implied by normal order of operations @ 1.12 log @Revision 12 @ text @d41 1 a41 1 * concept=[[however][we decide to represent them]] d65 10 @ 1.11 log @Revision 11 @ text @d1 1 a1 1 All (?) TAPIR operations can alternatively be invoked with a http GET URL. @ 1.10 log @Revision 10 @ text @d61 4 a64 2 * default=(UNDEFINED which must be interpreted by implementation to mean no concepts and therefore empty response) * cardinality=1..n @ 1.9 log @Revision 9 @ text @d6 1 a6 1 * op=[ping,metadata,capabilities,inventory,earch] d47 16 a62 4 * view: The URI of a view or the alias specified by the local provider (not globally unique) * start: * limit: * @ 1.8 log @Revision 8 @ text @d5 1 a5 1 === Global parameters (valid for all operations) @ 1.7 log @Revision 7 @ text @d5 9 d17 1 a17 1 * operation=ping d20 2 a21 1 * operation=metadata d24 1 a24 1 * operation=capabilities d27 1 a27 1 * operation=inventory d46 1 a46 1 * operation=search @ 1.6 log @Revision 6 @ text @d21 1 a21 1 * cardinality=1 d23 3 a25 3 * start=[[integer][>= 0]] * default=0 * cardinality=1 d27 3 a29 3 * limit=[[integer][>=0]] * default=1 * cardinality=1 d31 3 a33 3 * concept=[[any][string (if URL, must be URL encoded)]] * default=null * cardinality=n @ 1.5 log @Revision 5 @ text @d24 1 a24 1 * default=1 @ 1.4 log @Revision 4 @ text @d23 1 a23 1 * start=[[integer][> 1]] @ 1.3 log @Revision 3 @ text @d20 3 a22 2 default=false cardinality=1 d24 3 a26 2 default=1 cardinality=1 d28 3 a30 2 default=1 cardinality=1 d32 2 a33 2 default=null cardinality=n @ 1.2 log @Revision 2 @ text @d19 13 a37 1 @ 1.1 log @Initial revision @ text @d5 3 a7 2 The accepted list of parameters for each operation: ---+++ ping d10 1 a10 1 ---+++ metadata d13 1 a13 1 ---+++ capabilities d16 1 a16 1 ---+++ inventory d19 1 a19 1 ---+++ search a25 2 @