DAP4: Possible Notation for Server Commands: Difference between revisions
No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
[[Category:Development|Development]][[Category:DAP4|DAP4]] | |||
[[OPULS_Development| << Back to OPULS Development]] | |||
==Background== | |||
Looking to the future, it is clear that eventually | Looking to the future, it is clear that eventually | ||
our query language, or more generically our [[DAP4: URL Annotations | server commands ]] must encompass three classes of computations. | our query language, or more generically our [[DAP4: URL Annotations | server commands ]] must encompass three classes of computations. | ||
Line 7: | Line 11: | ||
I want to propose a notation for everything in the URL after the "?". I think this notation has the ability to represent a wide variety of features without, I hope, being too generic. | I want to propose a notation for everything in the URL after the "?". I think this notation has the ability to represent a wide variety of features without, I hope, being too generic. | ||
== Proposal == | |||
The notation is basically nested functions combined with single assignment variables. A semantically nonsensical, but grammatical example would look something like this. | The notation is basically nested functions combined with single assignment variables. A semantically nonsensical, but grammatical example would look something like this. | ||
?svc("cmd");_x=f("string17",g(h(12))),f2(_x,[0:3:10]) | ?svc("cmd");_x=f("string17",g(h(12))),f2(_x,[0:3:10]) |
Revision as of 19:33, 12 April 2012
Background
Looking to the future, it is clear that eventually our query language, or more generically our server commands must encompass three classes of computations.
- Queries in the DAP2 sense,
- Commands to control the processing of requests on the server (i.e. thing like caching),
- Server-side processing.
I want to propose a notation for everything in the URL after the "?". I think this notation has the ability to represent a wide variety of features without, I hope, being too generic.
Proposal
The notation is basically nested functions combined with single assignment variables. A semantically nonsensical, but grammatical example would look something like this.
?svc("cmd");_x=f("string17",g(h(12))),f2(_x,[0:3:10])
Everything past the "?" is in the form of a semi-colon separated list of expression lists. An expression list is a comma separated list of nested function invocations, possibly assigned to a variable. Anything that begins with an underscore is considered a local, temporary, variable, anything that does not look like a function call (i.e. name followed immediately by left paren) is assume to what I will call a non-quoted string constant; standard quoted string constants are also allowed. Each function has an arbitrary number of argument expressions separated by commas.
BTW, the term "single assignment" means that a variable may only be assigned to once, but may be referenced as many times as desired after that.
Syntactic and Lexical Structure
I have defined a preliminary syntax document and lexical document for the ideas presented here.
Notes
- The purpose of providing multiple expression lists separated by semi-colons is to support the a visible notation for specififying server commands separate from constraint evaluation.
- My hypothesis is that this notation should also be able to handle most kinds of server side processing by defining and composing functions.
- The standard projection+selection constraints of DAP2 can be represented using a special constraint() function whose argument is the standard DAP2 constraint. Alternatively, one could define a collection of nested functions to do the same thing.
- I hypothesize that Ferret notations could be represented in my proposed function notation without having to clutter up the URL format. E.g.
- http://.../thredds/dodsC/hfrnet/agg/6km_expr_{}{let deq1ubar=u[d=1,l=1:24@ave]}
- An important issue involves the construction of a DDX from a constraint. I have begun this discussion here
-Dennis Heimbigner