Если вы просто хотите ограничить переменную определенным значением для локальных запросов, вы можете сделать это с перегрузкой метода QueryFactory.create()
, который принимает QuerySolutionMap
для установки ограничения значения. Обратите внимание, что это не меняет ваш запрос, а только ограничивает конечные результаты, так что на самом деле это не параметризация.
Если вы действительно хотите иметь истинно параметризованные запросы (то есть заменять переменные константами), то есть несколько способов сделать это в зависимости от вашей версии ARQ.
Используя любой текущий выпуск (до версии 2.9.0), единственный способ сделать это - конкатенация строк, то есть вместо того, чтобы иметь? Name в вашем запросе, вы просто вставите желаемое значение, например. "Боб"
Используя новейшую транк (начиная с 2.9.1-SNAPSHOT), существует новый класс ParameterizedSparqlString, который делает этот интерфейс более удобным для пользователя, например,
ParameterizedSparqlString queryStr = new ParameterizedSparqlString(comNameQuery);
queryStr.setLiteral("name", "Bob");
Query query = QueryFactory.create(queryStr.toString());
И на самом деле вы можете еще больше упростить свой код, поскольку ParameterizedSparqlString имеет интерфейс в стиле StringBuffer и может использоваться для построения вашего запроса по крупицам и включает полезные функции, такие как добавление префиксов к вашему запросу.
Преимущество этого нового метода заключается в том, что он предоставляет более общий способ выполнения параметризованных запросов, который также может использоваться с обновлениями и может использоваться для подготовки удаленных запросов, которые не охватываются существующими методами.