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>) "
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);
192 BufferedReader in =
new BufferedReader(
new InputStreamReader(con.getInputStream(),
"UTF8"));
194 StringBuilder response =
new StringBuilder();
195 while ((inputLine = in.readLine()) !=
null) {
196 response.append(inputLine);
200 JSONArray outArray =
new JSONArray();
202 JSONObject jsonObject = (JSONObject)
new JSONParser().parse(response.toString());
203 JSONObject resultsObject = (JSONObject) jsonObject.get(
"results");
204 JSONArray bindingsArray = (JSONArray) resultsObject.get(
"bindings");
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);
214 Map<String, SuggestionItem> autosuggests =
new HashMap<String, SuggestionItem>();
215 for (String element : uris) {
216 autosuggests.put(element,
new SuggestionItem(element));
219 for (Object element : bindingsArray) {
220 JSONObject tmpElement = (JSONObject) element;
222 JSONObject subject = (JSONObject) tmpElement.get(
"Subject");
223 String subjectValue = (String) subject.get(
"value");
225 SuggestionItem tmpAutosuggest = autosuggests.get(subjectValue);
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);
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);
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);
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(
">",
"");
258 JSONObject broaderURIObject = (JSONObject) tmpElement.get(
"BroaderPreferred");
259 if (broaderURIObject !=
null) {
260 broaderURI = (String) broaderURIObject.get(
"value");
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);
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(
">",
"");
279 JSONObject narrowerURIObject = (JSONObject) tmpElement.get(
"NarrowerPreferred");
280 if (narrowerURIObject !=
null) {
281 narrowerURI = (String) narrowerURIObject.get(
"value");
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);
291 String type =
"heritagedata";
294 for (RetcatItem item : LocalRetcatItems.getLocalCatalogue()) {
295 if (item.getType().equals(type)) {
296 quality = item.getQuality();
297 group = item.getGroup();
300 tmpAutosuggest.setType(type);
301 tmpAutosuggest.setQuality(quality);
302 tmpAutosuggest.setGroup(group);