- From: Rob Vesse <rav08r@ecs.soton.ac.uk>
- Date: Wed, 31 Jul 2013 09:51:51 -0700
- To: <public-rdf-dawg-comments@w3.org>
dotNetRDF already has a large range of functions in this area - see https://bitbucket.org/dotnetrdf/dotnetrdf/wiki/DeveloperGuide/SPARQL/Leviat han%20Functions - this includes a ton of numeric and trig functions. It doesn't include constants because ARQ already has those so we use their URIs for some of those for portability - http://jena.apache.org/documentation/query/library-function.html I've been meaning to port all the dotNetRDF stuff to ARQ at some point but just haven't had chance. Rob On 7/31/13 2:23 AM, "Steve Harris" <steve.harris@garlik.com> wrote: >On 31 Jul 2013, at 10:06, Andy Seaborne <andy@apache.org> wrote: > >> On 30/07/13 15:05, Jerven Bolleman wrote: >> ... >>> The second is an expansion of the basic math operators to include at >>> least (square)root. (square)root is very hard to implement using the >>> current SPARQL constructs yet is a very useful function. (even if not >>> exact) >> >> The SPARQL 1.1 library was decided mainly by taking the non-sequence >>related functions from XQuery/XPath Functions and Operators (F&O), >>sorting out a few details of RDF/SPARQL evaluation, and adding some >>SPARQL specific functions (e.g. STRDT). >> >> F&O is an excellent resource because it defines exactly what all the >>operations do. It is (oddly?) lacking on numeric operations like sqrt >>and similar but there may be a good reason for that. >> >> I agree it would be good to have sqrt. Let's hope that implementations >>add it as an URI-callable function. >> >> If we implementers decide on the URI, then queries will be portable. >> >> http://www.w3.org/ns/sparql is supposed to be populated with URIs for >>every function with a keyword in SPARQL. That action (389) got lost. >> >> So ... >> >> prefix http://www.w3.org/ns/sparql# >> >> sfn:sqrt(numeric) -> double. >> >> What else (within reason!)? > >If we're winning the pain of sqrt() corner cases, might as well have >exp() and pow() as well: > >sfn:exp(numeric) → double (exp(x) = e^x) >sfn:pow(numeric, numeric) → double (pow(x, y) = x^y) > >Occasionally I've found myself wanting trig functions, but I suspect >every time the right answer was geoSPARQL, or something like it. > >Some constants might be useful, Inf, pi, e - and/or isinf(), isnan() >functions. > >- Steve
Received on Wednesday, 31 July 2013 16:52:33 UTC