labelingsystem-server  Version 0.1.0.0
Retcat_HeritageData Class Reference

Static Public Member Functions

static Map< String, SuggestionItem > queryHE (String searchword) throws IOException, RepositoryException, MalformedQueryException, QueryEvaluationException, SesameSparqlException, ResourceNotAvailableException, ParseException, link.labeling.retcat.exceptions.ResourceNotAvailableException
 
static Map< String, SuggestionItem > queryRCAHMS (String searchword) throws IOException, RepositoryException, MalformedQueryException, QueryEvaluationException, SesameSparqlException, ResourceNotAvailableException, ParseException, link.labeling.retcat.exceptions.ResourceNotAvailableException
 
static Map< String, SuggestionItem > queryRCAHMW (String searchword) throws IOException, RepositoryException, MalformedQueryException, QueryEvaluationException, SesameSparqlException, ResourceNotAvailableException, ParseException, link.labeling.retcat.exceptions.ResourceNotAvailableException
 
static JSONObject info (String url) throws IOException, RepositoryException, MalformedQueryException, QueryEvaluationException, SesameSparqlException, ResourceNotAvailableException, ParseException, RetcatException
 

Member Function Documentation

◆ info()

static JSONObject info ( String  url) throws IOException, RepositoryException, MalformedQueryException, QueryEvaluationException, SesameSparqlException, ResourceNotAvailableException, ParseException, RetcatException
static
445  {
446  try {
447  String sparqlendpoint = "http://heritagedata.org/live/sparql";
448  String sparql = "PREFIX skos: <http://www.w3.org/2004/02/skos/core#> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> "
449  + "SELECT * WHERE { "
450  + "<" + url + "> skos:prefLabel ?prefLabel. "
451  + "<" + url + "> skos:inScheme ?scheme . "
452  + "?scheme rdfs:label ?schemeTitle . "
453  + "OPTIONAL { <" + url + "> skos:scopeNote ?scopeNote . } "
454  + "OPTIONAL {<" + url + "> skos:broader ?BroaderPreferred . ?BroaderPreferred skos:prefLabel ?BroaderPreferredTerm. } "
455  + "OPTIONAL {<" + url + "> skos:narrower ?NarrowerPreferred . ?NarrowerPreferred skos:prefLabel ?NarrowerPreferredTerm . } "
456  + "}";
457  URL obj = new URL(sparqlendpoint);
458  HttpURLConnection con = (HttpURLConnection) obj.openConnection();
459  con.setRequestMethod("POST");
460  con.setRequestProperty("Accept", "application/sparql-results+json");
461  String urlParameters = "query=" + sparql;
462  con.setDoOutput(true);
463  DataOutputStream wr = new DataOutputStream(con.getOutputStream());
464  wr.writeBytes(urlParameters);
465  wr.flush();
466  wr.close();
467  BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream(), "UTF8"));
468  String inputLine;
469  StringBuilder response = new StringBuilder();
470  while ((inputLine = in.readLine()) != null) {
471  response.append(inputLine);
472  }
473  in.close();
474  // init output
475  JSONObject jsonOut = new JSONObject();
476  // parse SPARQL results json
477  JSONObject jsonObject = (JSONObject) new JSONParser().parse(response.toString());
478  JSONObject resultsObject = (JSONObject) jsonObject.get("results");
479  JSONArray bindingsArray = (JSONArray) resultsObject.get("bindings");
480  // create unique list of ids
481  for (Object element : bindingsArray) {
482  JSONObject tmpElement = (JSONObject) element;
483  JSONObject prefLabel = (JSONObject) tmpElement.get("prefLabel");
484  String labelValue = (String) prefLabel.get("value");
485  String labelLang = (String) prefLabel.get("xml:lang");
486  if (labelLang.equals("en")) {
487  jsonOut.put("label", labelValue);
488  jsonOut.put("lang", labelLang);
489  }
490  }
491  for (Object element : bindingsArray) {
492  JSONObject tmpElement = (JSONObject) element;
493  JSONObject scopeNote = (JSONObject) tmpElement.get("scopeNote");
494  String descValue = "";
495  String descLang = "";
496  if (scopeNote != null) {
497  descValue = (String) scopeNote.get("value");
498  descLang = (String) scopeNote.get("xml:lang");
499  }
500  if (descLang.equals("en")) {
501  jsonOut.put("description", descValue);
502  }
503  }
504  for (Object element : bindingsArray) {
505  JSONObject tmpElement = (JSONObject) element;
506  JSONObject scopeNote = (JSONObject) tmpElement.get("schemeTitle");
507  String descValue = (String) scopeNote.get("value");
508  jsonOut.put("scheme", descValue);
509  }
510  HashMap<String, String> hmBroader = new HashMap();
511  for (Object element : bindingsArray) {
512  JSONObject tmpElement = (JSONObject) element;
513  JSONObject bpObj = (JSONObject) tmpElement.get("BroaderPreferred");
514  JSONObject bptObj = (JSONObject) tmpElement.get("BroaderPreferredTerm");
515  if (bpObj != null) {
516  String bp = (String) bpObj.get("value");
517  String bpt = (String) bptObj.get("value");
518  String bptLang = (String) bptObj.get("xml:lang");
519  if (bptLang.equals("en")) {
520  hmBroader.put(bpt, bp);
521  }
522  }
523  }
524  JSONArray tmpArrayBroader = new JSONArray();
525  Iterator itB = hmBroader.entrySet().iterator();
526  while (itB.hasNext()) {
527  Map.Entry pair = (Map.Entry) itB.next();
528  JSONObject tmpObject = new JSONObject();
529  tmpObject.put("label", pair.getKey());
530  tmpObject.put("uri", pair.getValue());
531  tmpArrayBroader.add(tmpObject);
532  itB.remove();
533  }
534  jsonOut.put("broaderTerms", tmpArrayBroader);
535  HashMap<String, String> hmNarrower = new HashMap();
536  for (Object element : bindingsArray) {
537  JSONObject tmpElement = (JSONObject) element;
538  JSONObject npObj = (JSONObject) tmpElement.get("NarrowerPreferred");
539  JSONObject nptObj = (JSONObject) tmpElement.get("NarrowerPreferredTerm");
540  if (npObj != null) {
541  String np = (String) npObj.get("value");
542  String npt = (String) nptObj.get("value");
543  String nptLang = (String) nptObj.get("xml:lang");
544  if (nptLang.equals("en")) {
545  hmNarrower.put(npt, np);
546  }
547  }
548  }
549  JSONArray tmpArrayNarrower = new JSONArray();
550  Iterator itN = hmNarrower.entrySet().iterator();
551  while (itN.hasNext()) {
552  Map.Entry pair = (Map.Entry) itN.next();
553  JSONObject tmpObject = new JSONObject();
554  tmpObject.put("label", pair.getKey());
555  tmpObject.put("uri", pair.getValue());
556  tmpArrayNarrower.add(tmpObject);
557  itN.remove();
558  }
559  jsonOut.put("narrowerTerms", tmpArrayNarrower);
560  // get retcat info
561  String type = "heritagedata";
562  String quality = "";
563  String group = "";
564  for (RetcatItem item : LocalRetcatItems.getLocalCatalogue()) {
565  if (item.getType().equals(type)) {
566  quality = item.getQuality();
567  group = item.getGroup();
568  }
569  }
570  jsonOut.put("type", type);
571  jsonOut.put("quality", quality);
572  jsonOut.put("group", group);
573  jsonOut.put("uri", url);
574  if (jsonOut.get("label") != null && !jsonOut.get("label").equals("")) {
575  return jsonOut;
576  } else {
577  throw new RetcatException("no label for this uri available");
578  }
579  } catch (Exception e) {
580  return new JSONObject();
581  }
582  }

References LocalRetcatItems.getLocalCatalogue().

Referenced by RetcatResource.getInfoHeritageData(), RetcatResource.getQueryResultsHeritagedataHE(), RetcatResource.getQueryResultsHeritagedataRCAHMS(), and RetcatResource.getQueryResultsHeritagedataRCAHMW().

◆ queryHE()

static Map<String, SuggestionItem> queryHE ( String  searchword) throws IOException, RepositoryException, MalformedQueryException, QueryEvaluationException, SesameSparqlException, ResourceNotAvailableException, ParseException, link.labeling.retcat.exceptions.ResourceNotAvailableException
static
30  {
31  String url = "http://heritagedata.org/live/sparql";
32  String sparql = "PREFIX skos: <http://www.w3.org/2004/02/skos/core#> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> "
33  + "SELECT ?Subject ?prefLabel ?scopeNote ?BroaderPreferredTerm ?BroaderPreferred ?NarrowerPreferredTerm ?NarrowerPreferred ?schemeTitle WHERE { "
34  + "?Subject skos:inScheme ?scheme . "
35  + "?Subject skos:prefLabel ?prefLabel . "
36  + "?scheme rdfs:label ?schemeTitle . "
37  + "OPTIONAL { ?Subject skos:scopeNote ?scopeNote . } "
38  + "OPTIONAL {?Subject skos:broader ?BroaderPreferred . ?BroaderPreferred skos:prefLabel ?BroaderPreferredTerm. } "
39  + "OPTIONAL {?Subject skos:narrower ?NarrowerPreferred . ?NarrowerPreferred skos:prefLabel ?NarrowerPreferredTerm . } "
40  + "FILTER(regex(?prefLabel, '" + searchword + "', 'i') || regex(?scopeNote, '" + searchword + "', 'i')) "
41  + "FILTER(?scheme=<http://purl.org/heritagedata/schemes/mda_obj> || ?scheme=<http://purl.org/heritagedata/schemes/eh_period> || ?scheme=<http://purl.org/heritagedata/schemes/agl_et> || ?scheme=<http://purl.org/heritagedata/schemes/eh_tmt2> || ?scheme=<http://purl.org/heritagedata/schemes/560> || ?scheme=<http://purl.org/heritagedata/schemes/eh_tbm> || ?scheme=<http://purl.org/heritagedata/schemes/eh_com> || ?scheme=<http://purl.org/heritagedata/schemes/eh_evd> || ?scheme=<http://purl.org/heritagedata/schemes/eh_tmc>) "
42  + "}";
43  URL obj = new URL(url);
44  HttpURLConnection con = (HttpURLConnection) obj.openConnection();
45  con.setRequestMethod("POST");
46  con.setRequestProperty("Accept", "application/sparql-results+json");
47  String urlParameters = "query=" + sparql;
48  con.setDoOutput(true);
49  DataOutputStream wr = new DataOutputStream(con.getOutputStream());
50  BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(wr, "UTF-8"));
51  writer.write(urlParameters);
52  writer.close();
53  wr.close();
54  BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream(), "UTF8"));
55  String inputLine;
56  StringBuilder response = new StringBuilder();
57  while ((inputLine = in.readLine()) != null) {
58  response.append(inputLine);
59  }
60  in.close();
61  // init output
62  JSONArray outArray = new JSONArray();
63  // parse SPARQL results json
64  JSONObject jsonObject = (JSONObject) new JSONParser().parse(response.toString());
65  JSONObject resultsObject = (JSONObject) jsonObject.get("results");
66  JSONArray bindingsArray = (JSONArray) resultsObject.get("bindings");
67  // create unique list of ids
68  HashSet<String> uris = new HashSet<String>();
69  for (Object element : bindingsArray) {
70  JSONObject tmpElement = (JSONObject) element;
71  JSONObject subject = (JSONObject) tmpElement.get("Subject");
72  String subjectValue = (String) subject.get("value");
73  uris.add(subjectValue);
74  }
75  // create list of autosuggest objects
76  Map<String, SuggestionItem> autosuggests = new HashMap<String, SuggestionItem>();
77  for (String element : uris) {
78  autosuggests.put(element, new SuggestionItem(element));
79  }
80  // fill objects
81  for (Object element : bindingsArray) {
82  JSONObject tmpElement = (JSONObject) element;
83  // get Subject
84  JSONObject subject = (JSONObject) tmpElement.get("Subject");
85  String subjectValue = (String) subject.get("value");
86  // for every subject value get object from list and write values in it
87  SuggestionItem tmpAutosuggest = autosuggests.get(subjectValue);
88  // get Label
89  JSONObject labelObject = (JSONObject) tmpElement.get("prefLabel");
90  String labelValue = (String) labelObject.get("value");
91  String labelLang = (String) labelObject.get("xml:lang");
92  if (labelLang.equals("en")) {
93  tmpAutosuggest.setLabel(labelValue);
94  tmpAutosuggest.setLanguage(labelLang);
95  }
96  // get Scheme
97  JSONObject schemeObject = (JSONObject) tmpElement.get("schemeTitle");
98  String schemeValue = (String) schemeObject.get("value");
99  String schemeLang = (String) schemeObject.get("xml:lang");
100  tmpAutosuggest.setSchemeTitle(schemeValue);
101  // get scopeNote
102  JSONObject scopeNoteObject = (JSONObject) tmpElement.get("scopeNote");
103  if (scopeNoteObject != null) {
104  String scopeNoteValue = (String) scopeNoteObject.get("value");
105  String scopeNoteLang = (String) scopeNoteObject.get("xml:lang");
106  if (scopeNoteLang.equals("en")) {
107  tmpAutosuggest.setDescription(scopeNoteValue);
108  }
109  }
110  // get broader
111  String broaderVL = "";
112  String broaderURI = "";
113  String broaderLang = "";
114  JSONObject broaderObject = (JSONObject) tmpElement.get("BroaderPreferredTerm");
115  if (broaderObject != null) {
116  String broaderValue = (String) broaderObject.get("value");
117  broaderLang = (String) broaderObject.get("xml:lang");
118  broaderVL = broaderValue.replace("<", "").replace(">", "");
119  }
120  JSONObject broaderURIObject = (JSONObject) tmpElement.get("BroaderPreferred");
121  if (broaderURIObject != null) {
122  broaderURI = (String) broaderURIObject.get("value");
123  }
124  if (!broaderURI.equals("")) {
125  HashMap<String, String> hstmpBroader = new HashMap<String, String>();
126  if (broaderLang.equals("en")) {
127  hstmpBroader.put(broaderURI, broaderVL);
128  tmpAutosuggest.setBroaderTerm(hstmpBroader);
129  }
130  }
131  // get narrower
132  String narrowerVL = "";
133  String narrowerURI = "";
134  String narrowerLang = "";
135  JSONObject narrowerObject = (JSONObject) tmpElement.get("NarrowerPreferredTerm");
136  if (narrowerObject != null) {
137  String narrowerValue = (String) narrowerObject.get("value");
138  narrowerLang = (String) narrowerObject.get("xml:lang");
139  narrowerVL = narrowerValue.replace("<", "").replace(">", "");
140  }
141  JSONObject narrowerURIObject = (JSONObject) tmpElement.get("NarrowerPreferred");
142  if (narrowerURIObject != null) {
143  narrowerURI = (String) narrowerURIObject.get("value");
144  }
145  if (!narrowerURI.equals("")) {
146  HashMap<String, String> hstmpNarrower = new HashMap<String, String>();
147  if (narrowerLang.equals("en")) {
148  hstmpNarrower.put(narrowerURI, narrowerVL);
149  tmpAutosuggest.setNarrowerTerm(hstmpNarrower);
150  }
151  }
152  // get retcat info
153  String type = "heritagedata";
154  String quality = "";
155  String group = "";
156  for (RetcatItem item : LocalRetcatItems.getLocalCatalogue()) {
157  if (item.getType().equals(type)) {
158  quality = item.getQuality();
159  group = item.getGroup();
160  }
161  }
162  tmpAutosuggest.setType(type);
163  tmpAutosuggest.setQuality(quality);
164  tmpAutosuggest.setGroup(group);
165  }
166  return autosuggests;
167  }

References LocalRetcatItems.getLocalCatalogue().

Referenced by RetcatResource.getQueryResultsHeritagedataHE().

◆ queryRCAHMS()

static Map<String, SuggestionItem> queryRCAHMS ( String  searchword) throws IOException, RepositoryException, MalformedQueryException, QueryEvaluationException, SesameSparqlException, ResourceNotAvailableException, ParseException, link.labeling.retcat.exceptions.ResourceNotAvailableException
static
169  {
170  String url = "http://heritagedata.org/live/sparql";
171  String sparql = "PREFIX skos: <http://www.w3.org/2004/02/skos/core#> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> "
172  + "SELECT ?Subject ?prefLabel ?scopeNote ?BroaderPreferredTerm ?BroaderPreferred ?NarrowerPreferredTerm ?NarrowerPreferred ?schemeTitle WHERE { "
173  + "?Subject skos:inScheme ?scheme . "
174  + "?Subject skos:prefLabel ?prefLabel . "
175  + "?scheme rdfs:label ?schemeTitle . "
176  + "OPTIONAL { ?Subject skos:scopeNote ?scopeNote . } "
177  + "OPTIONAL {?Subject skos:broader ?BroaderPreferred . ?BroaderPreferred skos:prefLabel ?BroaderPreferredTerm. } "
178  + "OPTIONAL {?Subject skos:narrower ?NarrowerPreferred . ?NarrowerPreferred skos:prefLabel ?NarrowerPreferredTerm . } "
179  + "FILTER(regex(?prefLabel, '" + searchword + "', 'i') || regex(?scopeNote, '" + searchword + "', 'i')) "
180  + "FILTER(?scheme=<http://purl.org/heritagedata/schemes/2> || ?scheme=<http://purl.org/heritagedata/schemes/3> || ?scheme=<http://purl.org/heritagedata/schemes/1>) "
181  + "}";
182  URL obj = new URL(url);
183  HttpURLConnection con = (HttpURLConnection) obj.openConnection();
184  con.setRequestMethod("POST");
185  con.setRequestProperty("Accept", "application/sparql-results+json");
186  String urlParameters = "query=" + sparql;
187  con.setDoOutput(true);
188  DataOutputStream wr = new DataOutputStream(con.getOutputStream());
189  wr.writeBytes(urlParameters);
190  wr.flush();
191  wr.close();
192  BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream(), "UTF8"));
193  String inputLine;
194  StringBuilder response = new StringBuilder();
195  while ((inputLine = in.readLine()) != null) {
196  response.append(inputLine);
197  }
198  in.close();
199  // init output
200  JSONArray outArray = new JSONArray();
201  // parse SPARQL results json
202  JSONObject jsonObject = (JSONObject) new JSONParser().parse(response.toString());
203  JSONObject resultsObject = (JSONObject) jsonObject.get("results");
204  JSONArray bindingsArray = (JSONArray) resultsObject.get("bindings");
205  // create unique list of ids
206  HashSet<String> uris = new HashSet<String>();
207  for (Object element : bindingsArray) {
208  JSONObject tmpElement = (JSONObject) element;
209  JSONObject subject = (JSONObject) tmpElement.get("Subject");
210  String subjectValue = (String) subject.get("value");
211  uris.add(subjectValue);
212  }
213  // create list of autosuggest objects
214  Map<String, SuggestionItem> autosuggests = new HashMap<String, SuggestionItem>();
215  for (String element : uris) {
216  autosuggests.put(element, new SuggestionItem(element));
217  }
218  // fill objects
219  for (Object element : bindingsArray) {
220  JSONObject tmpElement = (JSONObject) element;
221  // get Subject
222  JSONObject subject = (JSONObject) tmpElement.get("Subject");
223  String subjectValue = (String) subject.get("value");
224  // for every subject value get object from list and write values in it
225  SuggestionItem tmpAutosuggest = autosuggests.get(subjectValue);
226  // get Label
227  JSONObject labelObject = (JSONObject) tmpElement.get("prefLabel");
228  String labelValue = (String) labelObject.get("value");
229  String labelLang = (String) labelObject.get("xml:lang");
230  if (labelLang.equals("en")) {
231  tmpAutosuggest.setLabel(labelValue);
232  tmpAutosuggest.setLanguage(labelLang);
233  }
234  // get Scheme
235  JSONObject schemeObject = (JSONObject) tmpElement.get("schemeTitle");
236  String schemeValue = (String) schemeObject.get("value");
237  String schemeLang = (String) schemeObject.get("xml:lang");
238  tmpAutosuggest.setSchemeTitle(schemeValue);
239  // get scopeNote
240  JSONObject scopeNoteObject = (JSONObject) tmpElement.get("scopeNote");
241  if (scopeNoteObject != null) {
242  String scopeNoteValue = (String) scopeNoteObject.get("value");
243  String scopeNoteLang = (String) scopeNoteObject.get("xml:lang");
244  if (scopeNoteLang.equals("en")) {
245  tmpAutosuggest.setDescription(scopeNoteValue);
246  }
247  }
248  // get broader
249  String broaderVL = "";
250  String broaderURI = "";
251  String broaderLang = "";
252  JSONObject broaderObject = (JSONObject) tmpElement.get("BroaderPreferredTerm");
253  if (broaderObject != null) {
254  String broaderValue = (String) broaderObject.get("value");
255  broaderLang = (String) broaderObject.get("xml:lang");
256  broaderVL = broaderValue.replace("<", "").replace(">", "");
257  }
258  JSONObject broaderURIObject = (JSONObject) tmpElement.get("BroaderPreferred");
259  if (broaderURIObject != null) {
260  broaderURI = (String) broaderURIObject.get("value");
261  }
262  if (!broaderURI.equals("")) {
263  HashMap<String, String> hstmpBroader = new HashMap<String, String>();
264  if (broaderLang.equals("en")) {
265  hstmpBroader.put(broaderURI, broaderVL);
266  tmpAutosuggest.setBroaderTerm(hstmpBroader);
267  }
268  }
269  // get narrower
270  String narrowerVL = "";
271  String narrowerURI = "";
272  String narrowerLang = "";
273  JSONObject narrowerObject = (JSONObject) tmpElement.get("NarrowerPreferredTerm");
274  if (narrowerObject != null) {
275  String narrowerValue = (String) narrowerObject.get("value");
276  narrowerLang = (String) narrowerObject.get("xml:lang");
277  narrowerVL = narrowerValue.replace("<", "").replace(">", "");
278  }
279  JSONObject narrowerURIObject = (JSONObject) tmpElement.get("NarrowerPreferred");
280  if (narrowerURIObject != null) {
281  narrowerURI = (String) narrowerURIObject.get("value");
282  }
283  if (!narrowerURI.equals("")) {
284  HashMap<String, String> hstmpNarrower = new HashMap<String, String>();
285  if (narrowerLang.equals("en")) {
286  hstmpNarrower.put(narrowerURI, narrowerVL);
287  tmpAutosuggest.setNarrowerTerm(hstmpNarrower);
288  }
289  }
290  // get retcat info
291  String type = "heritagedata";
292  String quality = "";
293  String group = "";
294  for (RetcatItem item : LocalRetcatItems.getLocalCatalogue()) {
295  if (item.getType().equals(type)) {
296  quality = item.getQuality();
297  group = item.getGroup();
298  }
299  }
300  tmpAutosuggest.setType(type);
301  tmpAutosuggest.setQuality(quality);
302  tmpAutosuggest.setGroup(group);
303  }
304  return autosuggests;
305  }

References LocalRetcatItems.getLocalCatalogue().

Referenced by RetcatResource.getQueryResultsHeritagedataRCAHMS().

◆ queryRCAHMW()

static Map<String, SuggestionItem> queryRCAHMW ( String  searchword) throws IOException, RepositoryException, MalformedQueryException, QueryEvaluationException, SesameSparqlException, ResourceNotAvailableException, ParseException, link.labeling.retcat.exceptions.ResourceNotAvailableException
static
307  {
308  String url = "http://heritagedata.org/live/sparql";
309  String sparql = "PREFIX skos: <http://www.w3.org/2004/02/skos/core#> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> "
310  + "SELECT ?Subject ?prefLabel ?scopeNote ?BroaderPreferredTerm ?BroaderPreferred ?NarrowerPreferredTerm ?NarrowerPreferred ?schemeTitle WHERE { "
311  + "?Subject skos:inScheme ?scheme . "
312  + "?Subject skos:prefLabel ?prefLabel . "
313  + "?scheme rdfs:label ?schemeTitle . "
314  + "OPTIONAL { ?Subject skos:scopeNote ?scopeNote . } "
315  + "OPTIONAL {?Subject skos:broader ?BroaderPreferred . ?BroaderPreferred skos:prefLabel ?BroaderPreferredTerm. } "
316  + "OPTIONAL {?Subject skos:narrower ?NarrowerPreferred . ?NarrowerPreferred skos:prefLabel ?NarrowerPreferredTerm . } "
317  + "FILTER(regex(?prefLabel, '" + searchword + "', 'i') || regex(?scopeNote, '" + searchword + "', 'i')) "
318  + "FILTER(?scheme=<http://purl.org/heritagedata/schemes/11> || ?scheme=<http://purl.org/heritagedata/schemes/10> || ?scheme=<http://purl.org/heritagedata/schemes/12> || ?scheme=<http://purl.org/heritagedata/schemes/17> || ?scheme=<http://purl.org/heritagedata/schemes/19> || ?scheme=<http://purl.org/heritagedata/schemes/14> || ?scheme=<http://purl.org/heritagedata/schemes/15> || ?scheme=<http://purl.org/heritagedata/schemes/18> || ?scheme=<http://purl.org/heritagedata/schemes/20> || ?scheme=<http://purl.org/heritagedata/schemes/13> || ?scheme=<http://purl.org/heritagedata/schemes/21> || ?scheme=<http://purl.org/heritagedata/schemes/22>) "
319  + "}";
320  URL obj = new URL(url);
321  HttpURLConnection con = (HttpURLConnection) obj.openConnection();
322  con.setRequestMethod("POST");
323  con.setRequestProperty("Accept", "application/sparql-results+json");
324  String urlParameters = "query=" + sparql;
325  con.setDoOutput(true);
326  DataOutputStream wr = new DataOutputStream(con.getOutputStream());
327  wr.writeBytes(urlParameters);
328  wr.flush();
329  wr.close();
330  BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream(), "UTF8"));
331  String inputLine;
332  StringBuilder response = new StringBuilder();
333  while ((inputLine = in.readLine()) != null) {
334  response.append(inputLine);
335  }
336  in.close();
337  // init output
338  JSONArray outArray = new JSONArray();
339  // parse SPARQL results json
340  JSONObject jsonObject = (JSONObject) new JSONParser().parse(response.toString());
341  JSONObject resultsObject = (JSONObject) jsonObject.get("results");
342  JSONArray bindingsArray = (JSONArray) resultsObject.get("bindings");
343  // create unique list of ids
344  HashSet<String> uris = new HashSet<String>();
345  for (Object element : bindingsArray) {
346  JSONObject tmpElement = (JSONObject) element;
347  JSONObject subject = (JSONObject) tmpElement.get("Subject");
348  String subjectValue = (String) subject.get("value");
349  uris.add(subjectValue);
350  }
351  // create list of autosuggest objects
352  Map<String, SuggestionItem> autosuggests = new HashMap<String, SuggestionItem>();
353  for (String element : uris) {
354  autosuggests.put(element, new SuggestionItem(element));
355  }
356  // fill objects
357  for (Object element : bindingsArray) {
358  JSONObject tmpElement = (JSONObject) element;
359  // get Subject
360  JSONObject subject = (JSONObject) tmpElement.get("Subject");
361  String subjectValue = (String) subject.get("value");
362  // for every subject value get object from list and write values in it
363  SuggestionItem tmpAutosuggest = autosuggests.get(subjectValue);
364  // get Label
365  JSONObject labelObject = (JSONObject) tmpElement.get("prefLabel");
366  String labelValue = (String) labelObject.get("value");
367  String labelLang = (String) labelObject.get("xml:lang");
368  if (labelLang.equals("en")) {
369  tmpAutosuggest.setLabel(labelValue);
370  tmpAutosuggest.setLanguage(labelLang);
371  }
372  // get Scheme
373  JSONObject schemeObject = (JSONObject) tmpElement.get("schemeTitle");
374  String schemeValue = (String) schemeObject.get("value");
375  String schemeLang = (String) schemeObject.get("xml:lang");
376  tmpAutosuggest.setSchemeTitle(schemeValue);
377  // get scopeNote
378  JSONObject scopeNoteObject = (JSONObject) tmpElement.get("scopeNote");
379  if (scopeNoteObject != null) {
380  String scopeNoteValue = (String) scopeNoteObject.get("value");
381  String scopeNoteLang = (String) scopeNoteObject.get("xml:lang");
382  if (scopeNoteLang.equals("en")) {
383  tmpAutosuggest.setDescription(scopeNoteValue);
384  }
385  }
386  // get broader
387  String broaderVL = "";
388  String broaderURI = "";
389  String broaderLang = "";
390  JSONObject broaderObject = (JSONObject) tmpElement.get("BroaderPreferredTerm");
391  if (broaderObject != null) {
392  String broaderValue = (String) broaderObject.get("value");
393  broaderLang = (String) broaderObject.get("xml:lang");
394  broaderVL = broaderValue.replace("<", "").replace(">", "");
395  }
396  JSONObject broaderURIObject = (JSONObject) tmpElement.get("BroaderPreferred");
397  if (broaderURIObject != null) {
398  broaderURI = (String) broaderURIObject.get("value");
399  }
400  if (!broaderURI.equals("")) {
401  HashMap<String, String> hstmpBroader = new HashMap<String, String>();
402  if (broaderLang.equals("en")) {
403  hstmpBroader.put(broaderURI, broaderVL);
404  tmpAutosuggest.setBroaderTerm(hstmpBroader);
405  }
406  }
407  // get narrower
408  String narrowerVL = "";
409  String narrowerURI = "";
410  String narrowerLang = "";
411  JSONObject narrowerObject = (JSONObject) tmpElement.get("NarrowerPreferredTerm");
412  if (narrowerObject != null) {
413  String narrowerValue = (String) narrowerObject.get("value");
414  narrowerLang = (String) narrowerObject.get("xml:lang");
415  narrowerVL = narrowerValue.replace("<", "").replace(">", "");
416  }
417  JSONObject narrowerURIObject = (JSONObject) tmpElement.get("NarrowerPreferred");
418  if (narrowerURIObject != null) {
419  narrowerURI = (String) narrowerURIObject.get("value");
420  }
421  if (!narrowerURI.equals("")) {
422  HashMap<String, String> hstmpNarrower = new HashMap<String, String>();
423  if (narrowerLang.equals("en")) {
424  hstmpNarrower.put(narrowerURI, narrowerVL);
425  tmpAutosuggest.setNarrowerTerm(hstmpNarrower);
426  }
427  }
428  // get retcat info
429  String type = "heritagedata";
430  String quality = "";
431  String group = "";
432  for (RetcatItem item : LocalRetcatItems.getLocalCatalogue()) {
433  if (item.getType().equals(type)) {
434  quality = item.getQuality();
435  group = item.getGroup();
436  }
437  }
438  tmpAutosuggest.setType(type);
439  tmpAutosuggest.setQuality(quality);
440  tmpAutosuggest.setGroup(group);
441  }
442  return autosuggests;
443  }

References LocalRetcatItems.getLocalCatalogue().

Referenced by RetcatResource.getQueryResultsHeritagedataRCAHMW().

Exception