У меня есть следующий запрос SPARQL и хотелось бы получить сумму? MyInt для всех уникальных значений z. Можно ли выразить такой запрос в 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>.
'GROUP BY DISTINCT (? Z)' не имеет смысла. Вы должны указать переменные, по которым будет сгруппирован результат. – AKSW
И нужно обернуть класс 'SUM' таким образом, чтобы имя переменной было известно, например. '(SUM (...) AS? Sum)'. Кстати, в следующий раз было бы неплохо иметь запрос SPARQL с правильным синтаксисом (отсутствующие префиксы и точки, среди прочего), чтобы люди могли его протестировать, например. здесь: http://sparql.org/query-validator.html – AKSW
И какова идея первого тройного шаблона? Я имею в виду, что '? Y' нигде не используется, поэтому достаточно использовать'? X property1? Y'. – AKSW