30 String url =
"http://archwort.dainst.org/de/vocab/sparql.php";
31 String sparql =
"PREFIX skos: <http://www.w3.org/2004/02/skos/core#> PREFIX dc: <http://purl.org/dc/elements/1.1/> "
32 +
"SELECT ?Subject ?prefLabel ?BroaderPreferredTerm ?BroaderPreferred ?NarrowerPreferredTerm ?NarrowerPreferred ?schemeTitle WHERE { "
33 +
"?Subject skos:inScheme ?scheme . "
34 +
"?Subject skos:prefLabel ?prefLabel . "
35 +
"?scheme dc:title ?schemeTitle . "
36 +
"OPTIONAL {?Subject skos:broader ?BroaderPreferred . ?BroaderPreferred skos:prefLabel ?BroaderPreferredTerm. } "
37 +
"OPTIONAL {?Subject skos:narrower ?NarrowerPreferred . ?NarrowerPreferred skos:prefLabel ?NarrowerPreferredTerm . } "
38 +
"FILTER(regex(?prefLabel, '" + searchword +
"', 'i')) "
40 URL obj =
new URL(url);
41 HttpURLConnection con = (HttpURLConnection) obj.openConnection();
42 con.setRequestMethod(
"POST");
43 con.setRequestProperty(
"Accept",
"application/sparql-results+json");
44 String urlParameters =
"query=" + sparql;
45 con.setDoOutput(
true);
46 DataOutputStream wr =
new DataOutputStream(con.getOutputStream());
47 BufferedWriter writer =
new BufferedWriter(
new OutputStreamWriter(wr,
"UTF-8"));
48 writer.write(urlParameters);
51 BufferedReader in =
new BufferedReader(
new InputStreamReader(con.getInputStream(),
"UTF8"));
53 StringBuilder response =
new StringBuilder();
54 while ((inputLine = in.readLine()) !=
null) {
55 response.append(inputLine);
59 JSONObject jsonObject = (JSONObject)
new JSONParser().parse(response.toString());
60 JSONObject resultsObject = (JSONObject) jsonObject.get(
"results");
61 JSONArray bindingsArray = (JSONArray) resultsObject.get(
"bindings");
63 HashSet<String> uris =
new HashSet<String>();
64 for (Object element : bindingsArray) {
65 JSONObject tmpElement = (JSONObject) element;
66 JSONObject subject = (JSONObject) tmpElement.get(
"Subject");
67 String subjectValue = (String) subject.get(
"value");
68 subjectValue = subjectValue.replace(
"http://archwort.dainst.org/thesaurus/de/vocab/?tema=",
"http://archwort.dainst.org/de/term/");
69 uris.add(subjectValue);
72 Map<String, SuggestionItem> autosuggests =
new HashMap<String, SuggestionItem>();
73 for (String element : uris) {
74 autosuggests.put(element,
new SuggestionItem(element));
78 for (Object element : bindingsArray) {
79 JSONObject tmpElement = (JSONObject) element;
81 JSONObject subject = (JSONObject) tmpElement.get(
"Subject");
82 String subjectValue = (String) subject.get(
"value");
83 subjectValue = subjectValue.replace(
"http://archwort.dainst.org/thesaurus/de/vocab/?tema=",
"http://archwort.dainst.org/de/term/");
85 SuggestionItem tmpAutosuggest = autosuggests.get(subjectValue);
87 JSONObject labelObject = (JSONObject) tmpElement.get(
"prefLabel");
88 String labelValue = (String) labelObject.get(
"value");
89 String labelLang = (String) labelObject.get(
"xml:lang");
90 tmpAutosuggest.setLabel(labelValue);
91 tmpAutosuggest.setLanguage(labelLang);
93 JSONObject schemeObject = (JSONObject) tmpElement.get(
"schemeTitle");
94 String schemeValue = (String) schemeObject.get(
"value");
95 tmpAutosuggest.setSchemeTitle(schemeValue);
97 String broaderVL =
"";
98 String broaderURI =
"";
99 String broaderLang =
"";
100 JSONObject broaderObject = (JSONObject) tmpElement.get(
"BroaderPreferredTerm");
101 if (broaderObject !=
null) {
102 String broaderValue = (String) broaderObject.get(
"value");
103 broaderLang = (String) broaderObject.get(
"xml:lang");
104 broaderVL = broaderValue.replace(
"<",
"").replace(
">",
"");
106 JSONObject broaderURIObject = (JSONObject) tmpElement.get(
"BroaderPreferred");
107 if (broaderURIObject !=
null) {
108 broaderURI = (String) broaderURIObject.get(
"value");
110 if (!broaderURI.equals(
"")) {
111 HashMap<String, String> hstmpBroader =
new HashMap<String, String>();
112 broaderURI = broaderURI.replace(
"http://archwort.dainst.org/thesaurus/de/vocab/?tema=",
"http://archwort.dainst.org/de/term/");
113 hstmpBroader.put(broaderURI, broaderVL);
114 tmpAutosuggest.setBroaderTerm(hstmpBroader);
117 String narrowerVL =
"";
118 String narrowerURI =
"";
119 String narrowerLang =
"";
120 JSONObject narrowerObject = (JSONObject) tmpElement.get(
"NarrowerPreferredTerm");
121 if (narrowerObject !=
null) {
122 String narrowerValue = (String) narrowerObject.get(
"value");
123 narrowerLang = (String) narrowerObject.get(
"xml:lang");
124 narrowerVL = narrowerValue.replace(
"<",
"").replace(
">",
"");
126 JSONObject narrowerURIObject = (JSONObject) tmpElement.get(
"NarrowerPreferred");
127 if (narrowerURIObject !=
null) {
128 narrowerURI = (String) narrowerURIObject.get(
"value");
130 if (!narrowerURI.equals(
"")) {
131 HashMap<String, String> hstmpNarrower =
new HashMap<String, String>();
132 narrowerURI = narrowerURI.replace(
"http://archwort.dainst.org/thesaurus/de/vocab/?tema=",
"http://archwort.dainst.org/de/term/");
133 hstmpNarrower.put(narrowerURI, narrowerVL);
134 tmpAutosuggest.setNarrowerTerm(hstmpNarrower);
137 String type =
"archwort";
140 for (RetcatItem item : LocalRetcatItems.getLocalCatalogue()) {
141 if (item.getType().equals(type)) {
142 quality = item.getQuality();
143 group = item.getGroup();
146 tmpAutosuggest.setType(type);
147 tmpAutosuggest.setQuality(quality);
148 tmpAutosuggest.setGroup(group);