组合任意 属性 路径、不同的和计数
Combining arbitrary property path, distinct, and count
我有下面的 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>.
您不能直接 select 表达式,您必须 select 它们作为变量。即,您需要做:
SELECT ?z (SUM(xsd:int(?myInt)) as ?sum)
这是一个常见的错误,因为某些端点(例如 public DBpedia 端点,即 运行 Virtuoso)do 允许您的原始形式,尽管它不是合法的 SPARQL。
如评论中所述,您应该按 ?zero 分组,而不是按 distinct(?z) 分组。
我有下面的 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>.
您不能直接 select 表达式,您必须 select 它们作为变量。即,您需要做:
SELECT ?z (SUM(xsd:int(?myInt)) as ?sum)
这是一个常见的错误,因为某些端点(例如 public DBpedia 端点,即 运行 Virtuoso)do 允许您的原始形式,尽管它不是合法的 SPARQL。
如评论中所述,您应该按 ?zero 分组,而不是按 distinct(?z) 分组。