LET is an ARQ-extension and Fuseki is parsing with extensions enabled.
In this case, BIND does the same thing. BIND is SPARQL 1.1
So either tell the command line the query is ARQ-extended SPARQL 1.1
(one of file extension .arq, --format ARQ, use the comman arq.arq)
or use
BIND( fn:concat(?lat, ",", ?long) ) AS ?point)
You can also use a subquery:
CONSTRUCT {
?thing georss:point ?point
} WHERE {
{ SELECT ?thing ( fn:concat(?lat, ",", ?long) ) AS ?point)
{
?thing geo:lat ?lat .
?thing geo:long ?long .
} LIMIT 1
}
}
Andy
On 28/08/12 10:19, Rob Styles wrote:
Hi all,
I have a Sparql query converting lat/long into a georss point:
PREFIX georss: <http://www.georss.org/georss/>
PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>
PREFIX fn: <http://www.w3.org/2005/xpath-functions#>
CONSTRUCT {
?thing georss:point ?point
} WHERE {
?thing geo:lat ?lat .
?thing geo:long ?long .
LET ( ?point := fn:concat(?lat, ",", ?long) )
}
LIMIT 1
This works correctly when posting through the fuseki control panel. When I try
to run this using the command line tools in Jena, either bin/sparql or tdbquery
I get
Lexical error at line 10, column 6. Encountered: " " (32), after : "LET"
Messing with parentheses and whitespace makes not material difference. Would it
be that the Jena tools are working at 1.0 and fuseki at 1.1?
I need to run this on command line as without the limit 1 it will be a
long-running query.
Is there a way to run this, or other suggestions for equivalent functionality?
Some kind of inference rule?
rob