Some cleanup.
This commit is contained in:
parent
e5028dc668
commit
59b2d9431e
1 changed files with 54 additions and 44 deletions
|
@ -77,15 +77,62 @@ public class GrefineMqlreadServlet extends VitroHttpServlet {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// parse query
|
// parse query
|
||||||
|
ArrayList<String> subjectUriList = new ArrayList<String>();
|
||||||
|
Map<String, JSONArray> propertyUriMap = new HashMap<String, JSONArray>();
|
||||||
String query = vreq.getParameter("query");
|
String query = vreq.getParameter("query");
|
||||||
System.out.println("query: " + query);
|
parseQuery(query, subjectUriList, propertyUriMap);
|
||||||
|
|
||||||
|
// run SPARQL query to get the results
|
||||||
|
JSONArray resultAllJsonArr = new JSONArray();
|
||||||
|
DataPropertyStatementDao dpsDao = vreq.getWebappDaoFactory().getDataPropertyStatementDao();
|
||||||
|
for (String subjectUri: subjectUriList) {
|
||||||
|
JSONObject subjectPropertyResultJson = new JSONObject();
|
||||||
|
subjectPropertyResultJson.put("id", subjectUri);
|
||||||
|
for (Map.Entry<String, JSONArray> entry : propertyUriMap.entrySet()) {
|
||||||
|
int limit = 10; // default
|
||||||
|
String propertyUri = entry.getKey();
|
||||||
|
JSONArray propertyUriOptions = entry.getValue();
|
||||||
|
for (int i=0; i<propertyUriOptions.length(); i++) {
|
||||||
|
JSONObject propertyUriOption = (JSONObject)propertyUriOptions.get(i);
|
||||||
|
limit = ((Integer)propertyUriOption.get("limit")).intValue();
|
||||||
|
}
|
||||||
|
List<Literal> literals = dpsDao.getDataPropertyValuesForIndividualByProperty(subjectUri, propertyUri);
|
||||||
|
// Make sure the subject has a value for this property
|
||||||
|
if (literals.size() > 0) {
|
||||||
|
int counter = 0;
|
||||||
|
JSONArray valueJsonArr = new JSONArray();
|
||||||
|
for (Literal literal: literals) {
|
||||||
|
if (counter <= limit) {
|
||||||
|
String value = literal.getLexicalForm();
|
||||||
|
valueJsonArr.put(value);
|
||||||
|
}
|
||||||
|
counter++;
|
||||||
|
}
|
||||||
|
subjectPropertyResultJson.put(propertyUri, valueJsonArr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
resultAllJsonArr.put(subjectPropertyResultJson);
|
||||||
|
}
|
||||||
|
resultAllJson.put("result", resultAllJsonArr);
|
||||||
|
|
||||||
|
} catch (JSONException e) {
|
||||||
|
log.error("GrefineMqlreadServlet getResult JSONException: " + e);
|
||||||
|
}
|
||||||
|
|
||||||
|
// System.out.println(resultAllJson);
|
||||||
|
return resultAllJson;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Construct json from query String
|
||||||
|
* @param query
|
||||||
|
* @param subjectUriList
|
||||||
|
* @param propertyUriMap
|
||||||
|
*/
|
||||||
|
private void parseQuery(String query, ArrayList<String> subjectUriList, Map<String, JSONArray> propertyUriMap) {
|
||||||
|
try {
|
||||||
JSONObject rawJson = new JSONObject(query);
|
JSONObject rawJson = new JSONObject(query);
|
||||||
JSONArray qJsonArr = rawJson.getJSONArray("query");
|
JSONArray qJsonArr = rawJson.getJSONArray("query");
|
||||||
|
|
||||||
|
|
||||||
ArrayList<String> subjectUriList = new ArrayList();
|
|
||||||
Map<String, JSONArray> propertyUriMap = new HashMap();
|
|
||||||
for (int i=0; i<qJsonArr.length(); i++) {
|
for (int i=0; i<qJsonArr.length(); i++) {
|
||||||
Object obj = qJsonArr.get(i);
|
Object obj = qJsonArr.get(i);
|
||||||
|
|
||||||
|
@ -118,46 +165,9 @@ public class GrefineMqlreadServlet extends VitroHttpServlet {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// run SPARQL query to get the results
|
|
||||||
JSONArray resultAllJsonArr = new JSONArray();
|
|
||||||
DataPropertyStatementDao dpsDao = vreq.getWebappDaoFactory().getDataPropertyStatementDao();
|
|
||||||
for (String subjectUri: subjectUriList) {
|
|
||||||
JSONObject subjectPropertyResultJson = new JSONObject();
|
|
||||||
subjectPropertyResultJson.put("id", subjectUri);
|
|
||||||
for (Map.Entry<String, JSONArray> entry : propertyUriMap.entrySet()) {
|
|
||||||
int limit = 10; // default
|
|
||||||
String propertyUri = entry.getKey();
|
|
||||||
JSONArray propertyUriOptions = entry.getValue();
|
|
||||||
for (int i=0; i<propertyUriOptions.length(); i++) {
|
|
||||||
JSONObject propertyUriOption = (JSONObject)propertyUriOptions.get(i);
|
|
||||||
limit = ((Integer)propertyUriOption.get("limit")).intValue();
|
|
||||||
}
|
|
||||||
List<Literal> literals = dpsDao.getDataPropertyValuesForIndividualByProperty(subjectUri, propertyUri);
|
|
||||||
// Make sure the subject has a value for this property
|
|
||||||
if (literals.size() > 0) {
|
|
||||||
int counter = 0;
|
|
||||||
JSONArray valueJsonArr = new JSONArray();
|
|
||||||
for (Literal literal: literals) {
|
|
||||||
if (counter <= limit) {
|
|
||||||
String value = literal.getLexicalForm();
|
|
||||||
valueJsonArr.put(value);
|
|
||||||
}
|
|
||||||
counter++;
|
|
||||||
}
|
|
||||||
subjectPropertyResultJson.put(propertyUri, valueJsonArr);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
resultAllJsonArr.put(subjectPropertyResultJson);
|
|
||||||
}
|
|
||||||
resultAllJson.put("result", resultAllJsonArr);
|
|
||||||
|
|
||||||
} catch (JSONException e) {
|
} catch (JSONException e) {
|
||||||
log.error("JSONException: " + e);
|
log.error("GrefineMqlreadServlet parseQuery JSONException: " + e);
|
||||||
throw new ServletException("GrefineMqlreadServlet JSONException: " + e);
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// System.out.println(resultAllJson);
|
|
||||||
return resultAllJson;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue