- From: Seaborne, Andy <andy.seaborne@hp.com>
- Date: Wed, 23 Aug 2006 16:10:30 +0100
- To: "Luke Steller" <Luke.Steller@infotech.monash.edu.au>
- Cc: <public-sparql-dev@w3.org>
-------- Original Message -------- > From: Steve Harris <> > Date: 23 August 2006 12:00 > > On Wed, Aug 23, 2006 at 08:46:29 +1000, Luke Steller wrote: > > > > Hi All, > > > > Is it possible to assign a value to a variable, apart from using > > pattern matching? More specifically, for instance is it possible to > > assign a literal - say a double returned by a function (custom > > function) to a variable, which in turn is returned by the query. For > > me it would be useful to have a query like: > > > > PREFIX myfn: <java:com.luke.distance.> PREFIX ps: <http://luke#> > > PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> > > PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> > > SELECT ?printer ?distance > > WHERE > > { > > ?printer rdf:type ps:InkJetPrinterOperational. > > ?distance = myfn:LatLongDistance("-38.15291", "145.135775", > > "-38.152197", "154.135783", "K") } > > > > which returns the printer individual URI and the distance (a double). > > > > > > Is anything like this possible? > > An alternative would be SELECT expressions, but those aren't in the spec > either: > > PREFIX myfn: <java:com.luke.distance.> > PREFIX ps: <http://luke#> > PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> > PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> > SELECT ?printer, myfn:LatLongDistance("-38.15291", "145.135775", > "-38.152197", "154.135783", "K") WHERE { ?printer rdf:type > ps:InkJetPrinterOperational. } SPARQL comment : it would be better with a name as well because results are serialized in XML (and JSON) using the variable name. A string such as "myfn:LatLongDistance(...)" could be used but it's rather hard to retrieve it again, being potentially space sensitive. Personally, I'd prefer to add a proper assignment. > > Some engines (including Jena I think) support predicate functions, ala: > > PREFIX myfn: <java:com.luke.distance.> > PREFIX ps: <http://luke#> > PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> > PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> > SELECT ?printer ?distance > WHERE > { > ?printer rdf:type ps:InkJetPrinterOperational. > ?distance myfn:LatLongDistance [ > myfn:lat1 -38.15291; > myfn:long1 145.135775; > myfn:lat2 -38.152197; > myfn:long2 154.135783; > myfn:thing "K"; > ] > } > > Or something similar. Property functions in ARQ now (ARQ 1.4) support lists for subject and/or object: ?distance myfn:LatLongDistance ( -38.15291 145.135775 -38.152197 154.135783 "K" ) [those numbers are xsd:decimals, not doubles by the way, add "e0" to make them doubles] Andy > > - Steve
Received on Wednesday, 23 August 2006 15:10:46 UTC