30 String url =
"https://query.wikidata.org/bigdata/namespace/wdq/sparql";
31 String sparql =
"PREFIX schema: <http://schema.org/> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> "
32 +
"SELECT DISTINCT ?Subject ?item ?prefLabel ?desc { "
33 +
"?Subject rdfs:label ?prefLabel . "
34 +
"?Subject schema:description ?desc . "
35 +
"FILTER(CONTAINS(LCASE(?prefLabel),'" + searchword +
"')) "
36 +
"FILTER(langMatches(lang(?prefLabel), \"EN\")) "
37 +
"FILTER(langMatches(lang(?desc), \"EN\")) "
39 URL obj =
new URL(url);
40 HttpURLConnection con = (HttpURLConnection) obj.openConnection();
41 con.setRequestMethod(
"POST");
42 con.setRequestProperty(
"Accept",
"application/sparql-results+json");
43 String urlParameters =
"query=" + sparql;
44 con.setDoOutput(
true);
45 DataOutputStream wr =
new DataOutputStream(con.getOutputStream());
46 BufferedWriter writer =
new BufferedWriter(
new OutputStreamWriter(wr,
"UTF-8"));
47 writer.write(urlParameters);
50 BufferedReader in =
new BufferedReader(
new InputStreamReader(con.getInputStream(),
"UTF8"));
52 StringBuilder response =
new StringBuilder();
53 while ((inputLine = in.readLine()) !=
null) {
54 response.append(inputLine);
58 JSONObject jsonObject = (JSONObject)
new JSONParser().parse(response.toString());
59 JSONObject resultsObject = (JSONObject) jsonObject.get(
"results");
60 JSONArray bindingsArray = (JSONArray) resultsObject.get(
"bindings");
62 HashSet<String> uris =
new HashSet<String>();
63 for (Object element : bindingsArray) {
64 JSONObject tmpElement = (JSONObject) element;
65 JSONObject subject = (JSONObject) tmpElement.get(
"Subject");
66 String subjectValue = (String) subject.get(
"value");
67 uris.add(subjectValue);
70 Map<String, SuggestionItem> autosuggests =
new HashMap<String, SuggestionItem>();
71 for (String element : uris) {
72 autosuggests.put(element,
new SuggestionItem(element));
75 for (Object element : bindingsArray) {
76 JSONObject tmpElement = (JSONObject) element;
78 JSONObject subject = (JSONObject) tmpElement.get(
"Subject");
79 String subjectValue = (String) subject.get(
"value");
81 SuggestionItem tmpAutosuggest = autosuggests.get(subjectValue);
83 JSONObject labelObject = (JSONObject) tmpElement.get(
"prefLabel");
84 String labelValue = (String) labelObject.get(
"value");
85 String labelLang = (String) labelObject.get(
"xml:lang");
86 tmpAutosuggest.setLabel(labelValue);
87 tmpAutosuggest.setLanguage(labelLang);
89 JSONObject descriptionObject = (JSONObject) tmpElement.get(
"desc");
90 if (descriptionObject !=
null) {
91 String descriptionValue = (String) descriptionObject.get(
"value");
92 tmpAutosuggest.setDescription(descriptionValue);
95 tmpAutosuggest.setSchemeTitle(
"wikidata");
97 String type =
"wikidata";
100 for (RetcatItem item : LocalRetcatItems.getLocalCatalogue()) {
101 if (item.getType().equals(type)) {
102 quality = item.getQuality();
103 group = item.getGroup();
106 tmpAutosuggest.setType(type);
107 tmpAutosuggest.setQuality(quality);
108 tmpAutosuggest.setGroup(group);