use of org.openrdf.query.impl.DatasetImpl in project qi4j-sdk by Qi4j.
the class SPARQLResource method getQuery.
private Query getQuery(Repository repository, RepositoryConnection repositoryCon, String queryStr) throws ResourceException {
Form form = getRequest().getResourceRef().getQueryAsForm();
Query result;
// default query language is SPARQL
QueryLanguage queryLn = QueryLanguage.SPARQL;
// determine if inferred triples should be included in query evaluation
boolean includeInferred = true;
// build a dataset, if specified
String[] defaultGraphURIs = form.getValuesArray(DEFAULT_GRAPH_PARAM_NAME);
String[] namedGraphURIs = form.getValuesArray(NAMED_GRAPH_PARAM_NAME);
DatasetImpl dataset = null;
if (defaultGraphURIs.length > 0 || namedGraphURIs.length > 0) {
dataset = new DatasetImpl();
if (defaultGraphURIs.length > 0) {
for (String defaultGraphURI : defaultGraphURIs) {
try {
URI uri = repository.getValueFactory().createURI(defaultGraphURI);
dataset.addDefaultGraph(uri);
} catch (IllegalArgumentException e) {
throw new ResourceException(Status.CLIENT_ERROR_BAD_REQUEST, "Illegal URI for default graph: " + defaultGraphURI);
}
}
}
if (namedGraphURIs.length > 0) {
for (String namedGraphURI : namedGraphURIs) {
try {
URI uri = repository.getValueFactory().createURI(namedGraphURI);
dataset.addNamedGraph(uri);
} catch (IllegalArgumentException e) {
throw new ResourceException(Status.CLIENT_ERROR_BAD_REQUEST, "Illegal URI for named graph: " + namedGraphURI);
}
}
}
}
try {
result = repositoryCon.prepareQuery(queryLn, queryStr);
result.setIncludeInferred(includeInferred);
if (dataset != null) {
result.setDataset(dataset);
}
// determine if any variable bindings have been set on this query.
@SuppressWarnings("unchecked") Enumeration<String> parameterNames = Collections.enumeration(form.getValuesMap().keySet());
while (parameterNames.hasMoreElements()) {
String parameterName = parameterNames.nextElement();
if (parameterName.startsWith(BINDING_PREFIX) && parameterName.length() > BINDING_PREFIX.length()) {
String bindingName = parameterName.substring(BINDING_PREFIX.length());
Value bindingValue = parseValueParam(repository, form, parameterName);
result.setBinding(bindingName, bindingValue);
}
}
} catch (UnsupportedQueryLanguageException e) {
throw new ResourceException(Status.CLIENT_ERROR_BAD_REQUEST, e.getMessage());
} catch (MalformedQueryException e) {
throw new ResourceException(Status.CLIENT_ERROR_BAD_REQUEST, e.getMessage());
} catch (RepositoryException e) {
throw new ResourceException(Status.SERVER_ERROR_INTERNAL, e.getMessage());
}
return result;
}
Aggregations