Вам необходимо прочитать полное сообщение об ошибке из Викиданных.Ключевые строки здесь -
java.util.concurrent.ExecutionException: org.openrdf.query.MalformedQueryException: Bad aggregate
...
Caused by: org.openrdf.query.MalformedQueryException: Bad aggregate
...
Caused by: com.bigdata.rdf.sail.sparql.ast.VisitorException: Bad aggregate
...
Caused by: java.lang.IllegalArgumentException: Non-aggregate variable in select expression: incident
По сути, все неагрегированные переменные в вашем SELECT
также должны быть в вашем GROUP BY
.С некоторыми другими изменениями, которые, я думаю, принесут вам пользу, ваш запрос станет примерно таким:
SELECT DISTINCT ?incident
?incidentLabel
?target
?targetLabel
( GROUP_CONCAT ( DISTINCT ?participantLabel; separator="; " ) AS ?participants )
WHERE
{
?incident wdt:P31 wd:Q132821 .
?incident rdfs:label ?incidentLabel .
FILTER ( LANGMATCHES ( LANG ( ?incidentLabel ), "en" ) )
OPTIONAL { ?incident wdt:P710 ?participant .
?participant rdfs:label ?participantLabel
FILTER ( LANGMATCHES ( LANG ( ?participantLabel ), "en" ) )
}
OPTIONAL { ?incident wdt:P533 ?target .
?target rdfs:label ?targetLabel
FILTER ( LANGMATCHES ( LANG ( ?targetLabel ), "en" ) )
}
}
GROUP BY ?incident ?incidentLabel ?target ?targetLabel
ORDER BY ?incidentLabel ?targetLabel
Я не могу объяснить дублирующиеся строки, которые появляются в наборе результатов (прокрутите вниз до "1991 бомбардировка Вика"),Они должны были быть устранены одним или обоими SELECT DISTINCT
и GROUP BY
.