SELECT (count(?s) as ?c)
WHERE {
?s ?p <http://purl.org/ontology/po/Version> .
}
а второй ...
SELECT (count(?s) as ?c)
WHERE {
?s ?p <http://purl.org/ontology/po/Version> .
} order by ?s
... дает тот же результат.
На самом деле подсчет + упорядочивание здесь не имеет большого смысла, потому что ?s не выбран для извлечения. Но, как вы сказали, вы попробовали это случайно, и ... это действительно похоже на ошибку.
У нас (= OpenLink) проблемы. Этот ORDER BY? S формально является ошибкой в запросе: агрегирование без группировки означает «агрегирование по всему», не должно быть переменных вне агрегатов на выходе запроса. Однако сейчас об этой ошибке не сообщается: нарушения этого правила настолько многочисленны, что компилятор SQL выполняет автоматическую группировку, а наш препроцессор SPARQL-to-SQL также игнорирует эту ошибку, если это возможно.
Мы, вероятно, сохраним текущее поведение как есть. Если добавлен «строгий» режим компиляции, в таких случаях будет срабатывать отчет об ошибке.
Это может быть ошибка Virtuoso, похоже, что запросы с агрегатами и предложением ORDER BY обрабатываются как неявные предложения GROUP BY. Я заметил это на других конечных точках Virtuoso, кроме DBPedia.
ИМО, это ошибка, и вы должны сообщить об этом в список рассылки пользователей Virutoso, как предлагает msalvadores.