2016-07-15 65 views
0

我正在尝试使用CSPARQL进行流处理。我想使用round()函数。查询与SPARQL一起运行良好,但是当我在CSPARQL中运行它时,round()函数不起作用。round()函数在CSPARQL中不起作用

的SPARQL代码:

SELECT ?roundlat (COUNT(?x) AS ?counter) 
WHERE { 
    ?x pos:location ?point. 
    ?point pos:lat ?lat; 
     pos:long ?long. 
    BIND (fn:round(?lat * 1000) AS ?roundlat) 
    BIND (fn:round(?long * 1000) AS ?roundlong) 
    } 
GROUP BY ?roundlat ?roundlong 
HAVING (?counter > 10) 

的CSPARQL码几乎与上述相同的,除了FROM

SELECT ?roundlat (COUNT(?x) AS ?counter) 
FROM <MY STREAM> 
WHERE ... 

CSPARQL的运行结果表明x的总计数结果,如?如果它根本没有分组,并且?roundlat值是空白的。它不能像SPARQL那样执行fn:round()。任何人都可以告诉我如何在CSPARQL中使用round()函数?非常感谢你。

+1

尝试使用SPARQL 1.1关键字:ROUND(...) – AndyS

+0

非常感谢。 ROUND()在SPARQL中运行得非常好,但是我想在C-SPARQL中使用它,它是具有流处理功能的SPARQL高级版的Continuous SPARQL。但它不能在C-SPARQL中工作。 –

回答

0

已经发现与SPARQL相比,C-SPARQL支持的功能非常有限。它不支持ROUND()等数学函数。