181 String url = ConfigProperties.getPropertyParam(
"api") +
"/v1/sparql";
182 String sparql =
"PREFIX skos: <http://www.w3.org/2004/02/skos/core#> PREFIX ls: <http://labeling.link/docs/ls/core#> PREFIX dc: <http://purl.org/dc/elements/1.1/> PREFIX dct: <http://purl.org/dc/terms/> PREFIX foaf: <http://xmlns.com/foaf/0.1/> "
183 +
"SELECT ?Subject ?prefLabel ?scopeNote ?BroaderPreferredTerm ?BroaderPreferred ?NarrowerPreferredTerm ?NarrowerPreferred ?schemeTitle ?firstName ?lastName ?orcid WHERE { "
184 +
"?Subject skos:inScheme ?scheme . "
185 +
"?scheme dc:title ?schemeTitle . "
186 +
"OPTIONAL { ?Subject dct:creator ?creator . ?creator foaf:firstName ?firstName . ?creator foaf:lastName ?lastName . ?creator dct:publisher ?orcid . }"
187 +
"?Subject ls:thumbnail ?prefLabel . "
188 +
"OPTIONAL {?Subject skos:prefLabel ?pl . } "
189 +
"OPTIONAL { ?Subject skos:scopeNote ?scopeNote . } "
190 +
"OPTIONAL {?Subject skos:broader ?BroaderPreferred . ?BroaderPreferred ls:thumbnail ?BroaderPreferredTerm.} "
191 +
"OPTIONAL {?Subject skos:narrower ?NarrowerPreferred . ?NarrowerPreferred ls:thumbnail ?NarrowerPreferredTerm .} "
192 +
"FILTER(regex(?pl, '" + searchword +
"', 'i') || regex(?scopeNote, '" + searchword +
"', 'i') || regex(?prefLabel, '" + searchword +
"', 'i')) "
193 +
"FILTER(?scheme=<http://" + ConfigProperties.getPropertyParam(
"host") +
"/item/vocabulary/" + vocabulary +
">) "
195 URL obj =
new URL(url);
196 HttpURLConnection con = (HttpURLConnection) obj.openConnection();
197 con.setRequestMethod(
"GET");
198 con.setRequestProperty(
"Accept",
"application/sparql-results+json");
199 String urlParameters =
"query=" + sparql;
200 byte[] bytes = urlParameters.getBytes(StandardCharsets.UTF_8);
201 urlParameters =
new String(bytes, StandardCharsets.ISO_8859_1);
202 con.setDoOutput(
true);
203 DataOutputStream wr =
new DataOutputStream(con.getOutputStream());
204 wr.writeBytes(urlParameters);
207 BufferedReader in =
new BufferedReader(
new InputStreamReader(con.getInputStream(),
"UTF8"));
209 StringBuilder response =
new StringBuilder();
210 while ((inputLine = in.readLine()) !=
null) {
211 response.append(inputLine);
215 JSONObject jsonOut =
new JSONObject();
216 JSONArray outArray =
new JSONArray();
218 JSONObject jsonObject = (JSONObject)
new JSONParser().parse(response.toString());
219 JSONObject resultsObject = (JSONObject) jsonObject.get(
"results");
220 JSONArray bindingsArray = (JSONArray) resultsObject.get(
"bindings");
222 HashSet<String> uris =
new HashSet<String>();
223 for (Object element : bindingsArray) {
224 JSONObject tmpElement = (JSONObject) element;
225 JSONObject subject = (JSONObject) tmpElement.get(
"Subject");
226 String subjectValue = (String) subject.get(
"value");
227 uris.add(subjectValue);
230 Map<String, SuggestionItem> autosuggests =
new HashMap<String, SuggestionItem>();
231 for (String element : uris) {
232 autosuggests.put(element,
new SuggestionItem(element));
235 for (Object element : bindingsArray) {
236 JSONObject tmpElement = (JSONObject) element;
238 JSONObject subject = (JSONObject) tmpElement.get(
"Subject");
239 String subjectValue = (String) subject.get(
"value");
241 SuggestionItem tmpAutosuggest = autosuggests.get(subjectValue);
243 JSONObject labelObject = (JSONObject) tmpElement.get(
"prefLabel");
244 String labelValue = (String) labelObject.get(
"value");
245 String labelLang = (String) labelObject.get(
"xml:lang");
246 tmpAutosuggest.setLabel(labelValue);
247 tmpAutosuggest.setLanguage(labelLang);
249 JSONObject schemeObject = (JSONObject) tmpElement.get(
"schemeTitle");
250 String schemeValue = (String) schemeObject.get(
"value");
251 String schemeLang = (String) schemeObject.get(
"xml:lang");
252 tmpAutosuggest.setSchemeTitle(schemeValue);
254 JSONObject oridObject = (JSONObject) tmpElement.get(
"orcid");
255 if (oridObject !=
null) {
256 String oridValue = (String) oridObject.get(
"value");
257 tmpAutosuggest.setOrcid(oridValue);
260 JSONObject firstNameObject = (JSONObject) tmpElement.get(
"firstName");
261 JSONObject lastNameObject = (JSONObject) tmpElement.get(
"lastName");
262 if (firstNameObject !=
null && lastNameObject !=
null) {
263 String firstNameValue = (String) firstNameObject.get(
"value");
264 String lastNameValue = (String) lastNameObject.get(
"value");
265 tmpAutosuggest.setCreator(firstNameValue +
" " + lastNameValue);
268 JSONObject scopeNoteObject = (JSONObject) tmpElement.get(
"scopeNote");
269 if (scopeNoteObject !=
null) {
270 String scopeNoteValue = (String) scopeNoteObject.get(
"value");
271 String scopeNoteLang = (String) scopeNoteObject.get(
"xml:lang");
272 tmpAutosuggest.setDescription(scopeNoteValue);
275 String broaderVL =
"";
276 String broaderURI =
"";
277 JSONObject broaderObject = (JSONObject) tmpElement.get(
"BroaderPreferredTerm");
278 if (broaderObject !=
null) {
279 String broaderValue = (String) broaderObject.get(
"value");
280 String broaderLang = (String) broaderObject.get(
"xml:lang");
281 broaderVL = broaderValue.replace(
"<",
"").replace(
">",
"");
283 JSONObject broaderURIObject = (JSONObject) tmpElement.get(
"BroaderPreferred");
284 if (broaderURIObject !=
null) {
285 broaderURI = (String) broaderURIObject.get(
"value");
287 if (!broaderURI.equals(
"")) {
288 HashMap<String, String> hstmpBroader =
new HashMap<String, String>();
289 hstmpBroader.put(broaderURI, broaderVL);
290 tmpAutosuggest.setBroaderTerm(hstmpBroader);
293 String narrowerVL =
"";
294 String narrowerURI =
"";
295 JSONObject narrowerObject = (JSONObject) tmpElement.get(
"NarrowerPreferredTerm");
296 if (narrowerObject !=
null) {
297 String narrowerValue = (String) narrowerObject.get(
"value");
298 String narrowerLang = (String) narrowerObject.get(
"xml:lang");
299 narrowerVL = narrowerValue.replace(
"<",
"").replace(
">",
"");
301 JSONObject narrowerURIObject = (JSONObject) tmpElement.get(
"NarrowerPreferred");
302 if (narrowerURIObject !=
null) {
303 narrowerURI = (String) narrowerURIObject.get(
"value");
305 if (!narrowerURI.equals(
"")) {
306 HashMap<String, String> hstmpNarrower =
new HashMap<String, String>();
307 hstmpNarrower.put(narrowerURI, narrowerVL);
308 tmpAutosuggest.setNarrowerTerm(hstmpNarrower);
314 for (RetcatItem item : LocalRetcatItems.getLocalCatalogue()) {
315 if (item.getType().equals(type)) {
316 quality = item.getQuality();
317 group = item.getGroup();
320 tmpAutosuggest.setType(type);
321 tmpAutosuggest.setQuality(quality);
322 tmpAutosuggest.setGroup(group);