Проблема, как указывает сообщение об ошибке, заключается в том, что префикс пространства имен org:
не определен в вашем запросе.
Обратите внимание, что в запросе, который вы пробовали в интерфейсе Workbench, это первая строка:
PREFIX org: <http://www.w3.org/ns/org#>
Но эта строка отсутствует в запросе, который вы делаете через вызов REST API. Чтобы исправить, запустите запрос SPARQL с этой строки, когда вы выполняете вызов REST:
http://23.101.230.37:7200/repositories/CSIRO?query=PREFIX org: <http://www.w3.org/ns/org#> SELECT (?s AS ?Organization) (COUNT(?o) AS ?Count) WHERE{ ?s org:hasUnit ?o . } GROUP BY ?s
Edit обратите внимание, что фактический запрос SPARQL должен быть в форме urlencoded , когда вы помещаете его в URL в качестве параметра, подобного этому - хотя некоторые клиентские инструменты могут обрабатывать это для вас , Я оставил его незакодированным для удобства чтения.
Кстати, причина, по которой вы не получаете эту ошибку во втором запросе, заключается в том, что в этом втором запросе вы не используете предикат с префиксом org:
.
Каждый ресурс в RDF и SPARQL идентифицируется IRI. Например, в своем запросе вы используете идентификатор свойства http://www.w3.org/ns/org#hasUnit
. Префикс пространства имен - это способ ввести сокращение, чтобы вы не каждый раз записывали полный IRI. В этом примере org:
становится сокращением для http://www.w3.org/ns/org#
, поэтому идентификатор свойства можно записать сокращенно (как префиксное имя ) как org:hasUnit
.