labelingsystem-server  Version 0.1.0.0
Retcat_Fao Class Reference

Static Public Member Functions

static Map< String, SuggestionItem > query (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
124  {
125  try {
126  String outputUrl = url;
127  url = GeneralFunctions.encodeURIComponent(url);
128  url = "http://oek1.fao.org/skosmos/rest/v1/agrovoc/label?lang=en&uri=" + url;
129  URL obj = new URL(url);
130  HttpURLConnection con = (HttpURLConnection) obj.openConnection();
131  con.setRequestMethod("GET");
132  BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream(), "UTF8"));
133  String inputLine;
134  StringBuilder response = new StringBuilder();
135  while ((inputLine = in.readLine()) != null) {
136  response.append(inputLine);
137  }
138  in.close();
139  // parse json
140  JSONObject jsonObject = (JSONObject) new JSONParser().parse(response.toString());
141  String labelValue = (String) jsonObject.get("prefLabel");
142  // output
143  JSONObject jsonOut = new JSONObject();
144  jsonOut.put("label", labelValue);
145  jsonOut.put("lang", "");
146  // get retcat info
147  String type = "fao";
148  String quality = "en";
149  String group = "";
150  for (RetcatItem item : LocalRetcatItems.getLocalCatalogue()) {
151  if (item.getType().equals(type)) {
152  quality = item.getQuality();
153  group = item.getGroup();
154  }
155  }
156  jsonOut.put("type", type);
157  jsonOut.put("quality", quality);
158  jsonOut.put("group", group);
159  jsonOut.put("description", "");
160  jsonOut.put("uri", outputUrl);
161  jsonOut.put("scheme", "agrovoc");
162  // broader and narrower
163  JSONArray broaderTerms = new JSONArray();
164  JSONArray narrowerTerms = new JSONArray();
165  // broader
166  String urlB = "http://oek1.fao.org/skosmos/rest/v1/agrovoc/broader?lang=en&uri=" + url;
167  URL objB = new URL(urlB);
168  HttpURLConnection conB = (HttpURLConnection) objB.openConnection();
169  conB.setRequestMethod("GET");
170  BufferedReader inB = new BufferedReader(new InputStreamReader(conB.getInputStream(), "UTF8"));
171  String inputLineB;
172  StringBuilder responseB = new StringBuilder();
173  while ((inputLineB = inB.readLine()) != null) {
174  responseB.append(inputLineB);
175  }
176  inB.close();
177  // parse json
178  JSONObject jsonObjectB = (JSONObject) new JSONParser().parse(responseB.toString());
179  JSONArray broaderArray = (JSONArray) jsonObjectB.get("broader");
180  for (Object bo : broaderArray) {
181  JSONObject tmp = (JSONObject) bo;
182  JSONObject tmpObject = new JSONObject();
183  String broaderURI = (String) tmp.get("uri");
184  String broaderLabel = (String) tmp.get("prefLabel");
185  tmpObject.put("label", broaderLabel);
186  tmpObject.put("uri", broaderURI);
187  broaderTerms.add(tmpObject);
188  }
189  // narrower
190  String urlN = "http://oek1.fao.org/skosmos/rest/v1/agrovoc/narrower?lang=en&uri==" + url;
191  URL objN = new URL(urlN);
192  HttpURLConnection conN = (HttpURLConnection) objN.openConnection();
193  conN.setRequestMethod("GET");
194  BufferedReader inN = new BufferedReader(new InputStreamReader(conN.getInputStream(), "UTF8"));
195  String inputLineN;
196  StringBuilder responseN = new StringBuilder();
197  while ((inputLineN = inN.readLine()) != null) {
198  responseN.append(inputLineN);
199  }
200  inN.close();
201  // parse json
202  JSONObject jsonObjectN = (JSONObject) new JSONParser().parse(responseN.toString());
203  JSONArray narrowerArray = (JSONArray) jsonObjectN.get("narrower");
204  for (Object no : narrowerArray) {
205  JSONObject tmp = (JSONObject) no;
206  JSONObject tmpObject = new JSONObject();
207  String narrowerURI = (String) tmp.get("uri");
208  String narrowerLabel = (String) tmp.get("prefLabel");
209  tmpObject.put("label", narrowerLabel);
210  tmpObject.put("uri", narrowerURI);
211  narrowerTerms.add(tmpObject);
212  }
213  jsonOut.put("broaderTerms", broaderTerms);
214  jsonOut.put("narrowerTerms", narrowerTerms);
215  if (jsonOut.get("label") != null && !jsonOut.get("label").equals("")) {
216  return jsonOut;
217  } else {
218  throw new RetcatException("no label for this uri available");
219  }
220  } catch (Exception e) {
221  return new JSONObject();
222  }
223  }

References GeneralFunctions.encodeURIComponent(), and LocalRetcatItems.getLocalCatalogue().

Referenced by RetcatResource.getInfoSkosmosFao(), and RetcatResource.getQueryResultsSkosmosFAO().

◆ query()

static Map<String, SuggestionItem> query ( String  searchword) throws IOException, RepositoryException, MalformedQueryException, QueryEvaluationException, SesameSparqlException, ResourceNotAvailableException, ParseException, link.labeling.retcat.exceptions.ResourceNotAvailableException
static
27  {
28  searchword = GeneralFunctions.encodeURIComponent(searchword);
29  String url_string = "http://oek1.fao.org/skosmos/rest/v1/search?query=*" + searchword + "*&lang=en&type=skos:Concept&fields=narrower%20broader&limit=" + RetcatResource.getLimit();
30  URL url = new URL(url_string);
31  HttpURLConnection conn = (HttpURLConnection) url.openConnection();
32  BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
33  String inputLine;
34  StringBuilder response = new StringBuilder();
35  while ((inputLine = br.readLine()) != null) {
36  response.append(inputLine);
37  }
38  br.close();
39  // fill objects
40  JSONObject jsonObject = (JSONObject) new JSONParser().parse(response.toString());
41  JSONArray resultsArray = (JSONArray) jsonObject.get("results");
42  Map<String, SuggestionItem> autosuggests = new HashMap<String, SuggestionItem>();
43  for (Object element : resultsArray) {
44  JSONObject tmpElement = (JSONObject) element;
45  String uriValue = (String) tmpElement.get("uri");
46  autosuggests.put(uriValue, new SuggestionItem(uriValue));
47  SuggestionItem tmpAutosuggest = autosuggests.get(uriValue);
48  String labelValue = (String) tmpElement.get("prefLabel");
49  tmpAutosuggest.setLabel(labelValue);
50  String vocabValue = (String) tmpElement.get("vocab");
51  tmpAutosuggest.setSchemeTitle(vocabValue);
52  JSONArray boraderArray = (JSONArray) tmpElement.get("broader");
53  JSONArray narrowerArray = (JSONArray) tmpElement.get("narrower");
54  tmpAutosuggest.setLanguage("en");
55  // query for broader
56  if (boraderArray != null) {
57  for (Object item : boraderArray) {
58  JSONObject tmpObject = (JSONObject) item;
59  HashMap<String, String> hstmp = new HashMap();
60  String uriValueTmp = (String) tmpObject.get("uri");
61  //query for label
62  String broaderUrl = GeneralFunctions.encodeURIComponent(uriValueTmp);
63  broaderUrl = "http://oek1.fao.org/skosmos/rest/v1/agrovoc/label?lang=en&uri=" + broaderUrl;
64  URL obj = new URL(broaderUrl);
65  HttpURLConnection con = (HttpURLConnection) obj.openConnection();
66  con.setRequestMethod("GET");
67  BufferedReader broaderIn = new BufferedReader(new InputStreamReader(con.getInputStream(), "UTF8"));
68  String broaderInputLine;
69  StringBuilder broaderResponse = new StringBuilder();
70  while ((broaderInputLine = broaderIn.readLine()) != null) {
71  broaderResponse.append(broaderInputLine);
72  }
73  broaderIn.close();
74  // parse json
75  JSONObject broaderJsonObject = (JSONObject) new JSONParser().parse(broaderResponse.toString());
76  String broaderLabelValue = (String) broaderJsonObject.get("prefLabel");
77  hstmp.put(uriValueTmp, broaderLabelValue);
78  tmpAutosuggest.setBroaderTerm(hstmp);
79  }
80  }
81  // query for narrower
82  if (narrowerArray != null) {
83  for (Object item : boraderArray) {
84  JSONObject tmpObject = (JSONObject) item;
85  HashMap<String, String> hstmp = new HashMap();
86  String uriValueTmp = (String) tmpObject.get("uri");
87  //query for label
88  String narrowerUrl = GeneralFunctions.encodeURIComponent(uriValueTmp);
89  narrowerUrl = "http://oek1.fao.org/skosmos/rest/v1/agrovoc/label?lang=en&uri=" + narrowerUrl;
90  URL obj = new URL(narrowerUrl);
91  HttpURLConnection con = (HttpURLConnection) obj.openConnection();
92  con.setRequestMethod("GET");
93  BufferedReader narrowerIn = new BufferedReader(new InputStreamReader(con.getInputStream(), "UTF8"));
94  String narrowerInputLine;
95  StringBuilder narrowerResponse = new StringBuilder();
96  while ((narrowerInputLine = narrowerIn.readLine()) != null) {
97  narrowerResponse.append(narrowerInputLine);
98  }
99  narrowerIn.close();
100  // parse json
101  JSONObject broaderJsonObject = (JSONObject) new JSONParser().parse(narrowerResponse.toString());
102  String narrowerLabelValue = (String) broaderJsonObject.get("prefLabel");
103  hstmp.put(uriValueTmp, narrowerLabelValue);
104  tmpAutosuggest.setNarrowerTerm(hstmp);
105  }
106  }
107  // get retcat info
108  String type = "fao";
109  String quality = "";
110  String group = "";
111  for (RetcatItem item : LocalRetcatItems.getLocalCatalogue()) {
112  if (item.getType().equals(type)) {
113  quality = item.getQuality();
114  group = item.getGroup();
115  }
116  }
117  tmpAutosuggest.setType(type);
118  tmpAutosuggest.setQuality(quality);
119  tmpAutosuggest.setGroup(group);
120  }
121  return autosuggests;
122  }

References GeneralFunctions.encodeURIComponent(), RetcatResource.getLimit(), and LocalRetcatItems.getLocalCatalogue().

Referenced by RetcatResource.getQueryResultsSkosmosFAO().

Exception