DAP4: Possible Notation for Server Commands: Difference between revisions
No edit summary |
|||
Line 5: | Line 5: | ||
# Server-side processing. | # Server-side processing. | ||
I want to propose a notation for everything in the URL after the "?". I think this notation has 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. | ||
The notation is basically nested functions combined with single assignment variables. A semantically | The notation is basically nested functions combined with single assignment variables. A semantically nonsensical, but grammatical example would look something like this. | ||
?_x=f( | ?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 [http://dl.dropbox.com/u/53929684/query.y syntax document] and [http://dl.dropbox.com/u/53929684/query.lex lexical document] for the ideas presented here. | |||
== Notes == | == Notes == | ||
My hypothesis is that this notation should also be able to handle most kinds of server side processing by defining and composing functions. | # 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 | # 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. | |||
#: <nowiki>http://.../thredds/dodsC/hfrnet/agg/6km_expr_{}{let deq1ubar=u[d=1,l=1:24@ave]}</nowiki> | |||
# An important issue involves the construction of a DDX from a constraint. I have begun this discussion [[DAP4: Constructing a DDX from a Query | here ]] | |||
''-Dennis Heimbigner'' | ''-Dennis Heimbigner'' |
Revision as of 19:13, 12 April 2012
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.
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