我有下面的SPARQL查询,想得到所有唯一?z值的?myInt的总和。是否可以在SPARQL 1.1中表达这样的查询?
SELECT ?z SUM(xsd:int(?myInt))
where{
?x property1+ ?y
?x property2 ?k
?k property3 ?z
?x property4 ?myInt
} group by distinct(?z)
我在Jena ARQ中运行此操作并收到以下错误:
Exception in thread "main" com.hp.hpl.jena.query.QueryParseException: Encountered " "sum" "SUM "" at line 1, column 11.
这里还有一个示例数据:
<http://a.com/6> <http://aq.com/p> <http://e.com/c5>.
<http://a.com/6> <http://aq.com/q> <http://a.com/5>.
<http://e.com/c5> <http://aq.com/a> <http://eoq.com/u1>.
<http://a.com/6> <http://aq.com/num> "10"^^<http://www.w3.org/2001/XMLSchema#integer> .
<http://a.com/5> <http://aq.com/p> <http://e.com/c4>.
<http://a.com/5> <http://aq.com/q> <http://a.com/4>.
<http://e.com/c4> <http://aq.com/a> <http://eoq.com/u1>.
<http://a.com/5> <http://aq.com/num> "10"^^<http://www.w3.org/2001/XMLSchema#integer>.
答案 0 :(得分:3)
您无法直接选择表达式,您必须将它们选为变量。即,你需要这样做:
SELECT ?z (SUM(xsd:int(?myInt)) as ?sum)
这是一个常见的错误,因为某些端点(例如,正在运行Virtuoso的公共DBpedia端点)做允许您的原始表单,即使它不合法的SPARQL。
正如评论中所提到的,你应该按?零分组,而不是分开(?z)。