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.Collection;
import java.util.Iterator;
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.OWLNamedClass;
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 KDTest1 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("KBRetrieve1.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;
humanInd = owlModel.getOWLIndividual(epc);
Mongo m = new Mongo("143.248.106.26", 27017);
DB db = m.getDB("Lilliput");
dbCollection = "HumanInformation";
DBCollection collection = db.getCollection(dbCollection);
prop = owlModel.getOWLObjectProperty("hasHumanInformation");
for(int i = 0 ; i < 10000 ; i++ )
{
// 1.get information individual
long pretime1 = System.nanoTime();
informInd = (RDFIndividual)humanInd.getPropertyValue(prop);
//
long posttime1 = System.nanoTime();
double time1 = posttime1-pretime1;
System.out.print(time1/1000000000+"\t");
outFile.print(time1/1000000000+"\t");
objectID = Util.individualToBrowserText(informInd.getBrowserText());
DBObject query = new BasicDBObject();
query.put("_id",new ObjectId("5072a7f01a9ec478e865dcb1"));
long pretime2 = System.nanoTime();
// 2. get information from db
DBObject queriedObject = collection.findOne(query);
//
long posttime2 = System.nanoTime();
double time2 = posttime2-pretime2;
System.out.print(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;
}
}