Re: [thredds] nco as a web service

Hi Dennis:

I am old and slow, but suppose I am in OpeNDAP, are you proposing to separate 
say constraint expressions and server-side function requests basically the same 
 (ie I just scan what is after each comma) or do you propose some method that 
signifies in the URL that what follows is an expression?  In F-TDS and GDS the 
form of the URL is:

http://machine:port/thredds/dodsC/dataset_expr_{dataset2,dataset3,...}{expression1;expression2;...}.URLsuffix?constraint

so it is clear in parsing the URL that there is an expressions.  (I am neither 
for nor against this, just trying to lay out what has been done).  This still 
leaves open what the form of the expression itself  (F-TDS and GDS use their 
own syntax, which opens a can of worms).

I know several people on the list have implemented WPS or WCPS, can we get a 
brief idea of how the request are implemented there, and whether other than the 
general commands for process control, is there any agreement on how to request 
functions.

BTW, the reason I have asked about the experience of people who are using F-TDS 
and GDS on whether synchronous requests can cover the large majority of cases, 
is because I am very partial to systems where the URL completely defines the 
request, and hence essentially use GET as the verb.  The reason for this is 
long experience.  where client code has broken with change sin operating system 
and/or application, fixes were slow in coming, so many users were left with 
nothing working.  In a system where the URL completely defined the request, say 
ERDDAP, in Matlab:

> link='http://coastwatch.pfeg.noaa.gov/erddap/griddap/erdBAsstamday.mat?sst[(2010-01-16T12:00:00Z):1:(2010-01-16T12:00:00Z)][(0.0):1:(0.0)][(30):1:(50.0)][(220):1:(240.0)]';
> F=urlwrite(link,'cwatch.mat');
> 


will get the related file, and the entire command is in Matlab, no extra code 
required.  The same in R is:

> download.file(url="http://coastwatch.pfeg.noaa.gov/erddap/griddap/erdBAsstamday.nc?sst[(2010-01-16T12:00:00Z):1:(2010-01-16T12:00:00Z)][(0.0):1:(0.0)][(30):1:(50.0)][(220):1:(240.0)]",
>  destfile="AGssta.nc",mode='wb')
> 

again, "download.file" is an R command.  I would prefer to maintain this 
simplicity and cover 80% of the cases if possible, than cover the rest but 
where more complex, application specific code would have to be developed and 
maintained.

-Roy



On Jun 28, 2012, at 12:31 PM, Dennis Heimbigner wrote:

> In my more extended version of this proposal, I allow
> for namespaces so that server-specific, and even
> user-specific functions can be defined. I also
> propose to allow for the uploading of new functions.
> 
> =Dennis Heimbigner
> Unidata
> 
> John Caron wrote:
>> On 6/28/2012 1:12 PM, Dennis Heimbigner wrote:
>>> Server-Side Expression Proposal
>>> -------------------------------
>>> 
>>> A semantically nonsensical, but syntactically correct, example might
>>> look something like this.
>>> 
>>>    $x=f("string17",g(h(12))),f2($x,p[0:3:10])
>>> 
>>> The idea is that a URL would contain in its query section
>>> (the part after the '?') a set of comma separated expressions.
>>> An expression would be either
>>> 1. a function invocation, or
>>> 2. an assignment of a function invocation to
>>>   a single-assignment variable.
>>> 
>>> A function invocation is your typical one of the form
>>>   f(arg1,arg2,...,argn)
>>> where the arguments can be any of the following.
>>> 1. another, nested, function invocation
>>> 2. a constant (string, number, etc)
>>> 3. a dataset
>>> 4. a variable.
>>> 
>>> The value of a function is a dataset (see below) so that
>>> functions can be nested/composed.
>>> 
>>> The term "dataset" is intended to cover all of the following
>>> possibilities.
>>> 1. whole dataset (e.g. a DAP Dataset or a netcdf dataset)
>>> 2. a variable within a dataset (variable here is not be confused
>>>   with a single-assignment variable.
>>> 3. a range expression applied to a variable within a dataset
>>>   p[0:1:30], for example.
>>> 
>>> The term "single-assignment" means that a variable can have
>>> a value assigned to it exactly once.  The reason for using
>>> single-assignment is that allows for the representation of
>>> any possible data-flow without introducting the notion of
>>> mutable state.
>>> 
>>> The above is just a sketch, and there are many details
>>> I am ignoring (such as typing and namespaces).
>>> 
>>> =Dennis Heimbigner
>>> Unidata 
>> Interesting. could you give as many examples as you can?
>> are the functions all predefined, or can a user define them?
>> _______________________________________________
>> thredds mailing list
>> thredds@xxxxxxxxxxxxxxxx
>> For list information or to unsubscribe,  visit: 
>> http://www.unidata.ucar.edu/mailing_lists/
> 
> _______________________________________________
> thredds mailing list
> thredds@xxxxxxxxxxxxxxxx
> For list information or to unsubscribe,  visit: 
> http://www.unidata.ucar.edu/mailing_lists/ 

**********************
"The contents of this message do not reflect any position of the U.S. 
Government or NOAA."
**********************
Roy Mendelssohn
Supervisory Operations Research Analyst
NOAA/NMFS
Environmental Research Division
Southwest Fisheries Science Center
1352 Lighthouse Avenue
Pacific Grove, CA 93950-2097

e-mail: Roy.Mendelssohn@xxxxxxxx (Note new e-mail address)
voice: (831)-648-9029
fax: (831)-648-8440
www: http://www.pfeg.noaa.gov/

"Old age and treachery will overcome youth and skill."
"From those who have been given much, much will be expected" 
"the arc of the moral universe is long, but it bends toward justice" -MLK Jr.



  • 2012 messages navigation, sorted by:
    1. Thread
    2. Subject
    3. Author
    4. Date
    5. ↑ Table Of Contents
  • Search the thredds archives: