package kr.ac.kaist.resl.lilliput.core; import java.io.IOException; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import kr.ac.kaist.resl.lilliput.util.JSONHelper; import kr.ac.kaist.resl.lilliput.util.MongoHelper; import org.json.JSONObject; import com.restfb.DefaultFacebookClient; import com.restfb.FacebookClient; import com.restfb.types.Page; import com.restfb.types.User; import edu.stanford.smi.protege.model.Project; import edu.stanford.smi.protege.server.RemoteProjectManager; 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; /** * Servlet implementation class ObjectRegistration */ public class ObjectRegistration extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public ObjectRegistration() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub //It's done String accessToken = (String)request.getParameter("accessToken"); String password = (String)request.getParameter("password"); String pageURL = (String)request.getParameter("pageURL"); ObjectEnroll(accessToken, password, pageURL); RequestDispatcher dispatcher = request.getRequestDispatcher("registration.jsp"); dispatcher.forward(request, response); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub } public void ObjectEnroll(String accessToken, String password, String pageURL) { //making facebookClient FacebookClient facebookClient = new DefaultFacebookClient(accessToken); //getting object page Page objectPage = facebookClient.fetchObject(pageURL, Page.class); if( objectPage == null ) { return; } //getting object EPC String objectEPC = objectPage.getProducts(); //Ontology�� �ҷ��� RemoteProjectManager rpm = RemoteProjectManager.getInstance(); Project p = rpm.getProject("localhost:5100", "Lilliput", "1234", "IoTSocialGraph", true); OWLModel owlModel = (OWLModel)p.getKnowledgeBase(); //identify whethere object is in or not RDFIndividual objectInd = owlModel.getRDFIndividual(objectEPC); OWLNamedClass objectClass = owlModel.getOWLNamedClass("Object"); if( objectInd != null ) { return; } else { objectInd = objectClass.createRDFIndividual(objectEPC); } //fetch user User user = facebookClient.fetchObject("me", User.class); String ownerFID = user.getId(); //getting ownerEPC from DB //identify owner is registrated or not //getting ownerEPC from DB MongoHelper mHelper = new MongoHelper(); String ownerEPC = mHelper.isHumanSavedInDB(ownerFID); RDFIndividual ownerInd = owlModel.getRDFIndividual(ownerEPC); if( ownerInd == null ) { return; } //giving hasOwnership relationship between owner and object OWLObjectProperty hasOwnership = owlModel.getOWLObjectProperty("hasOwnership"); ownerInd.addPropertyValue(hasOwnership, objectInd); //saving object information to the database JSONHelper jhelper = new JSONHelper(); JSONObject jsonObject = jhelper.getJSONFromObject(objectPage); String objectInformID = mHelper.saveToDB("ObjectInformation", jsonObject, "epc", objectPage.getProducts()); //save to Ontology : Information OWLNamedClass informClass = owlModel.getOWLNamedClass("ObjectInformation"); RDFIndividual informInd = informClass.createRDFIndividual(objectInformID); //making relationship : Human - Information OWLObjectProperty hasInform = owlModel.getOWLObjectProperty("hasObjectInformation"); objectInd.addPropertyValue(hasInform, informInd); p.dispose(); System.out.println("Object Registration is finished"); } }