package kr.ac.kaist.resl.lilliput.rest;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.UnknownHostException;
import java.util.GregorianCalendar;
import java.util.List;
import java.util.Map;
import kr.ac.kaist.resl.lilliput.util.Util;
import org.bson.types.ObjectId;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import org.restlet.ext.json.JsonRepresentation;
import org.restlet.resource.Get;
import org.restlet.resource.ServerResource;
import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBObject;
import com.mongodb.Mongo;
import com.mongodb.MongoException;
import edu.stanford.smi.protege.model.Project;
import edu.stanford.smi.protege.server.RemoteProjectManager;
import edu.stanford.smi.protegex.owl.model.OWLDatatypeProperty;
import edu.stanford.smi.protegex.owl.model.OWLModel;
import edu.stanford.smi.protegex.owl.model.OWLObjectProperty;
import edu.stanford.smi.protegex.owl.model.RDFIndividual;
import edu.stanford.smi.protegex.owl.model.query.QueryResults;
public class KDTest2 extends ServerResource {
@Get("json")
public JsonRepresentation toJson() {
try {
String epc = (String)getRequest().getAttributes().get("uid");
RemoteProjectManager rpm = RemoteProjectManager.getInstance();
Project p = rpm.getProject("localhost:5100", "Lilliput", "1234", "IoTSocialGraph", true);
OWLModel owlModel = (OWLModel)p.getKnowledgeBase();
JSONObject returnJson = getInformation(owlModel, epc);
JsonRepresentation representation = new JsonRepresentation(returnJson);
// Returns the XML representation of this document.
return representation;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
public static JSONObject getInformation(OWLModel owlModel, String epc ) throws JSONException
{
try
{
FileWriter fw = new FileWriter("KBRetrieve2.txt");
BufferedWriter bw = new BufferedWriter(fw);
PrintWriter outFile = new PrintWriter(bw);
JSONObject returnJson = new JSONObject();
//Save Space to Ontology if it is not saved
RDFIndividual humanInd;
RDFIndividual objectInd;
RDFIndividual spaceInd;
String[] epcSplit = epc.split(":");
OWLObjectProperty prop ;
RDFIndividual informInd = null;
String dbCollection = null;
String objectID = null;
for(int i = 0 ; i < 10000 ; i++ )
{
// 1.get information individual
long pretime1 = System.nanoTime();
humanInd = owlModel.getOWLIndividual(epc);
OWLDatatypeProperty fidd = owlModel.getOWLDatatypeProperty("fid");
OWLDatatypeProperty named = owlModel.getOWLDatatypeProperty("name");
OWLDatatypeProperty linkd = owlModel.getOWLDatatypeProperty("link");
OWLDatatypeProperty SyncTimed = owlModel.getOWLDatatypeProperty("SyncTime");
OWLDatatypeProperty genderd = owlModel.getOWLDatatypeProperty("gender");
OWLDatatypeProperty educationd = owlModel.getOWLDatatypeProperty("education");
OWLDatatypeProperty updatedTimed = owlModel.getOWLDatatypeProperty("updatedTime");
Object s1 = humanInd.getPropertyValue(fidd);
Object s2 = humanInd.getPropertyValue(named);
Object s3 = humanInd.getPropertyValue(linkd);
Object s4 = humanInd.getPropertyValue(SyncTimed);
Object s5 = humanInd.getPropertyValue(genderd);
Object s6 = humanInd.getPropertyValue(educationd);
Object s7 = humanInd.getPropertyValue(updatedTimed);
long posttime1 = System.nanoTime();
double time1 = posttime1-pretime1;
System.out.print(time1/1000000000+"\t");
outFile.print(time1/1000000000+"\t");
long pretime2 = System.nanoTime();
JSONObject returnObj = new JSONObject();
returnObj.put("s1", s1);
returnObj.put("s2", s2);
returnObj.put("s3", s3);
returnObj.put("s4", s4);
returnObj.put("s5", s5);
returnObj.put("s6", s6);
returnObj.put("s7", s7);
long posttime2 = System.nanoTime();
double time2 = posttime2-pretime2;
System.out.println( i + " : " + time2/1000000000+"\t");
outFile.println(time2/1000000000+"\t");
}
outFile.close();
return null;
}catch( MongoException e)
{
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
}