134 String substing = requestquery.toLowerCase();
135 substing = URLDecoder.decode(substing,
"UTF-8");
136 int suggestions = 10;
138 if (substing.length() <= minLength) {
139 throw new AutocompleteLengthException();
142 String query =
rdf.getPREFIXSPARQL();
143 query +=
"SELECT * WHERE { "
145 +
"?s dc:identifier ?acquery . "
146 +
"FILTER(regex(?acquery, '" + substing +
"', 'i'))";
148 +
"ORDER BY ASC(?acquery) "
149 +
"LIMIT " + suggestions;
150 List<BindingSet> result = RDF4J_20.SPARQLquery(ConfigProperties.getPropertyParam(
"repository"), ConfigProperties.getPropertyParam(
"ts_server"), query);
151 List<String> suggestion_uri = RDF4J_20.getValuesFromBindingSet_ORDEREDLIST(result,
"s");
152 List<String> suggestion_string = RDF4J_20.getValuesFromBindingSet_ORDEREDLIST(result,
"acquery");
153 JSONObject jsonobj_query =
new JSONObject();
154 JSONArray jsonarray_suggestions =
new JSONArray();
155 for (
int i = 0; i < suggestion_uri.size(); i++) {
156 JSONObject jsonobj_suggestion =
new JSONObject();
157 String[] sugstr = suggestion_string.get(i).split(
"@");
158 if (sugstr.length > 1) {
159 jsonobj_suggestion.put(
"value", sugstr[0].replace(
"\"",
""));
160 jsonobj_suggestion.put(
"lang", sugstr[1].replace(
"\"",
""));
162 jsonobj_suggestion.put(
"value", suggestion_string.get(i));
164 jsonobj_suggestion.put(
"data", suggestion_uri.get(i));
165 jsonarray_suggestions.add(jsonobj_suggestion);
167 jsonobj_query.put(
"suggestions", jsonarray_suggestions);
168 jsonobj_query.put(
"query", substing);
169 return Response.ok(jsonobj_query).header(
"Content-Type",
"application/json;charset=UTF-8").build();
172 return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(Logging.getMessageJSON(e,
"v1.rest.AutocompleteResource"))
173 .header(
"Content-Type",
"application/json;charset=UTF-8").build();