package kr.ac.kaist.resl.lilliput.core;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
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;
public class DeviceInformationAdapter {
RemoteProjectManager rpm ;
Project p;
OWLModel owlModel;
//Ontology�� �ҷ���
public DeviceInformationAdapter() {
// TODO Auto-generated constructor stub
rpm = RemoteProjectManager.getInstance();
p = rpm.getProject("localhost:5100", "Lilliput", "1234", "CPSGraph", true);
owlModel = (OWLModel)p.getKnowledgeBase();
}
public void latencyTest(JSONObject obj, int number)
{
try {
int DataCount = 0;
int RelationshipCount = 0;
int Room1Count =0;
int Room2Count =0;
int Room3Count =0;
int epc1 =0;
int epc2 =0;
int epc3 =0;
int epc4 =0;
int epc5 =0;
int epc6 =0;
int epc7 =0;
int epc8 =0;
int epc9 =0;
int epc10 = 0;
int epc11 =0;
int epc12 = 0;
int epc13 = 0;
int epc14 = 0;
int epc15 = 0;
String Room1Temp = "0";
String Room1Humid ="0";
String Room1Light = "0";
String Room2Temp = "0";
String Room2Humid = "0";
String Room2Light = "0";
String Room3Temp = "0";
String Room3Light = "0";
String Room3Humid ="0";
String curLoc = null;
OWLObjectProperty isIn = owlModel.getOWLObjectProperty("isIn");
OWLObjectProperty isColocated = owlModel.getOWLObjectProperty("isColocated");
OWLObjectProperty hasSameClass = owlModel.getOWLObjectProperty("hasSameClass");
OWLDatatypeProperty humidProp = owlModel.getOWLDatatypeProperty("humidity");
OWLDatatypeProperty lightProp = owlModel.getOWLDatatypeProperty("lightlevel");
OWLDatatypeProperty tempProp = owlModel.getOWLDatatypeProperty("temperature");
//System.out.println(obj.toString(1));
//System.out.println("Number : " + number );
List<RDFIndividual> room1EPC = new ArrayList<RDFIndividual>();
List<RDFIndividual> room2EPC = new ArrayList<RDFIndividual>();
List<RDFIndividual> room3EPC = new ArrayList<RDFIndividual>();
RDFIndividual room1RDF = owlModel.getRDFIndividual("urn:epc:id:sgln:00000000001.1.1");
RDFIndividual room2RDF = owlModel.getRDFIndividual("urn:epc:id:sgln:00000000001.1.2");
RDFIndividual room3RDF = owlModel.getRDFIndividual("urn:epc:id:sgln:00000000001.1.3");
Object dummy = obj.get("reports");
//System.out.println(dummy.toString());
if( dummy instanceof JSONArray)
{
FileOutputStream stream = new FileOutputStream("After.txt",true);
long posttime1 = System.nanoTime();
String message = number + "\t" + (double)posttime1/1000000000+ "\n";
System.out.println("After : " + message + "null report");
stream.write(message.getBytes());
stream.close();
return;
}
JSONObject reports = obj.getJSONObject("reports");
JSONObject report = reports.getJSONObject("report");
String reportName = report.getString("@reportName");
String locEPC = null;
if( reportName.equals("Room1"))
{
locEPC = "urn:epc:id:sgln:00000000001.1.1";
JSONObject group = report.getJSONObject("group");
if( !(group.get("groupList") instanceof JSONArray))
{ //1���� ��
// System.out.println("why");
JSONObject groupList = group.getJSONObject("groupList");
JSONObject member = groupList.getJSONObject("member");
String epc = member.getString("epc");
RDFIndividual epcRDF = owlModel.getRDFIndividual(epc);
room1EPC.add(epcRDF);
}
else
{
JSONArray groupList = group.getJSONArray("groupList");
for(int k = 0 ; k < groupList.length() ; k++)
{
JSONObject groupMember = groupList.getJSONObject(k);
String epc = groupMember.getString("epc");
RDFIndividual epcRDF = owlModel.getRDFIndividual(epc);
room1EPC.add(epcRDF);
}
}
}
else if( reportName.equals("Room2"))
{
locEPC = "urn:epc:id:sgln:00000000001.1.2";
JSONObject group = report.getJSONObject("group");
if( !(group.get("groupList") instanceof JSONArray))
{ //1���� ��
// System.out.println("why");
JSONObject groupList = group.getJSONObject("groupList");
JSONObject member = groupList.getJSONObject("member");
String epc = member.getString("epc");
RDFIndividual epcRDF = owlModel.getRDFIndividual(epc);
room2EPC.add(epcRDF);
}
else
{
JSONArray groupList = group.getJSONArray("groupList");
for(int k = 0 ; k < groupList.length() ; k++)
{
JSONObject groupMember = groupList.getJSONObject(k);
String epc = groupMember.getString("epc");
RDFIndividual epcRDF = owlModel.getRDFIndividual(epc);
room2EPC.add(epcRDF);
}
}
}
else if( reportName.equals("Room3"))
{
locEPC= "urn:epc:id:sgln:00000000001.1.3";
JSONObject group = report.getJSONObject("group");
if( !(group.get("groupList") instanceof JSONArray))
{ //1���� ��
// System.out.println("why");
JSONObject groupList = group.getJSONObject("groupList");
JSONObject member = groupList.getJSONObject("member");
String epc = member.getString("epc");
RDFIndividual epcRDF = owlModel.getRDFIndividual(epc);
room3EPC.add(epcRDF);
}
else
{
JSONArray groupList = group.getJSONArray("groupList");
for(int k = 0 ; k < groupList.length() ; k++)
{
JSONObject groupMember = groupList.getJSONObject(k);
String epc = groupMember.getString("epc");
RDFIndividual epcRDF = owlModel.getRDFIndividual(epc);
room3EPC.add(epcRDF);
}
}
}
else
{
JSONObject group = report.getJSONObject("group");
JSONArray groupList = group.getJSONArray("groupList");
for(int i = 0 ; i < groupList.length() ; i++ )
{
//8 <-- room1
//10 <-- room2
//12 <-- room3
JSONObject groupMember = groupList.getJSONObject(i);
String epc = groupMember.getString("epc");
RDFIndividual epcRDF = owlModel.getRDFIndividual(epc);
if( epc.equals("urn:epc:id:sgtin:1234567.000000.8"))
{
room1EPC.add(epcRDF);
locEPC = "urn:epc:id:sgln:00000000001.1.1";
JSONObject extension = groupMember.getJSONObject("extension");
JSONArray fieldList = extension.getJSONArray("fieldList");
for(int j = 0 ; j < fieldList.length() ; j++)
{
JSONObject fieldMember = fieldList.getJSONObject(j);
String name = fieldMember.getString("name");
String value = fieldMember.getString("value");
if( name.equals("temperature"))
{
String temperature = value;
epcRDF.setPropertyValue(tempProp, temperature);
Room1Temp =temperature;
DataCount++;
}
else if( name.equals("humidity"))
{
String humidity = value;
epcRDF.setPropertyValue(lightProp, humidity);
Room1Humid = humidity;
DataCount++;
}
else if( name.equals("light"))
{
String light = value;
epcRDF.setPropertyValue(humidProp, light);
Room1Light = light;
DataCount++;
}
}
}
else if( epc.equals("urn:epc:id:sgtin:1234567.000000.10"))
{
room2EPC.add(epcRDF);
locEPC = "urn:epc:id:sgln:00000000001.1.2";
JSONObject extension = groupMember.getJSONObject("extension");
JSONArray fieldList = extension.getJSONArray("fieldList");
for(int j = 0 ; j < fieldList.length() ; j++)
{
JSONObject fieldMember = fieldList.getJSONObject(j);
String name = fieldMember.getString("name");
String value = fieldMember.getString("value");
if( name.equals("temperature"))
{
String temperature = value;
epcRDF.setPropertyValue(tempProp, temperature);
Room2Temp =temperature;
DataCount++;
}
else if( name.equals("humidity"))
{
String humidity = value;
epcRDF.setPropertyValue(lightProp, humidity);
Room2Humid = humidity;
DataCount++;
}
else if( name.equals("light"))
{
String light = value;
epcRDF.setPropertyValue(humidProp, light);
Room2Light = light;
DataCount++;
}
}
}
else if( epc.equals("urn:epc:id:sgtin:1234567.000000.12"))
{
room3EPC.add(epcRDF);
locEPC= "urn:epc:id:sgln:00000000001.1.3";
JSONObject extension = groupMember.getJSONObject("extension");
JSONArray fieldList = extension.getJSONArray("fieldList");
for(int j = 0 ; j < fieldList.length() ; j++)
{
JSONObject fieldMember = fieldList.getJSONObject(j);
String name = fieldMember.getString("name");
String value = fieldMember.getString("value");
if( name.equals("temperature"))
{
String temperature = value;
epcRDF.setPropertyValue(tempProp, temperature);
Room3Temp =temperature;
DataCount++;
}
else if( name.equals("humidity"))
{
String humidity = value;
epcRDF.setPropertyValue(lightProp, humidity);
Room3Humid = humidity;
DataCount++;
}
else if( name.equals("light"))
{
String light = value;
epcRDF.setPropertyValue(humidProp, light);
Room3Light = light;
DataCount++;
}
}
}
}
}
////////////////////////////////////
if( reportName.equals("Room1"))
{
Room1Count = room1EPC.size();
for( int i = 0 ; i < room1EPC.size() ; i++ )
{
RDFIndividual room1epc = room1EPC.get(i);
room1epc.setPropertyValue(isIn, room1RDF);
RelationshipCount++;
String room1epcs = room1epc.getBrowserText();
if( room1epcs.equals("urn:epc:id:sgtin:0000001.000001.1"))
{
epc1 = 1;
}
else if( room1epcs.equals("urn:epc:id:sgtin:0000001.000001.2"))
{
epc2 = 1;
}
else if( room1epcs.equals("urn:epc:id:sgtin:0000001.000001.3"))
{
epc3 = 1;
}
else if( room1epcs.equals("urn:epc:id:sgtin:0000001.000001.4"))
{
epc4 = 1;
}
else if( room1epcs.equals("urn:epc:id:sgtin:0000001.000001.5"))
{
epc5 = 1;
}
else if( room1epcs.equals("urn:epc:id:sgtin:0000001.000001.6"))
{
epc6 = 1;
}
else if( room1epcs.equals("urn:epc:id:sgtin:0000001.000001.7"))
{
epc7 = 1;
}
else if( room1epcs.equals("urn:epc:id:sgtin:0000001.000001.8"))
{
epc8 = 1;
}
else if( room1epcs.equals("urn:epc:id:sgtin:0000001.000001.9"))
{
epc9 = 1;
}
else if( room1epcs.equals("urn:epc:id:sgtin:0000001.000001.10"))
{
epc10 = 1;
}
else if( room1epcs.equals("urn:epc:id:sgtin:0000001.000001.11"))
{
epc11 = 1;
}
else if( room1epcs.equals("urn:epc:id:sgtin:0000001.000001.12"))
{
epc12 = 1;
}
else if( room1epcs.equals("urn:epc:id:sgtin:0000001.000001.13"))
{
epc13 = 1;
}
else if( room1epcs.equals("urn:epc:id:sgtin:0000001.000001.14"))
{
epc14 = 1;
}
else if( room1epcs.equals("urn:epc:id:sgtin:0000001.000001.15"))
{
epc15 = 1;
}
}
for( int i = 0 ; i < room1EPC.size() -1 ;i ++ )
{
for( int j = i+1 ; j < room1EPC.size() ; j++ )
{
RDFIndividual one = room1EPC.get(i);
RDFIndividual two = room1EPC.get(j);
one.addPropertyValue(isColocated, two);
RelationshipCount++;
String oneText = one.getBrowserText();
String twoText = two.getBrowserText();
String[] segmentOne = oneText.split(":");
String[] segmentTwo = twoText.split(":");
if( segmentOne[0].equals(segmentTwo[0]))
{
if( segmentOne[1].equals(segmentTwo[1]))
{
if( segmentOne[2].equals(segmentTwo[2]))
{
if(segmentOne[3].equals(segmentTwo[3]))
{
String[] sOne = segmentOne[4].split("\\.");
String[] sTwo = segmentTwo[4].split("\\.");
if( sOne[0].equals(sTwo[0]))
{
if( sOne[1].equals(sTwo[1]))
{
one.addPropertyValue(hasSameClass, two);
RelationshipCount++;
}
}
}
}
}
}
}
}
}
else if( reportName.equals("Room2"))
{
Room2Count = room2EPC.size();
for( int i = 0 ; i < room2EPC.size() ; i++ )
{
RDFIndividual room2epc = room2EPC.get(i);
room2epc.setPropertyValue(isIn, room2RDF);
RelationshipCount++;
String room1epcs = room2epc.getBrowserText();
if( room1epcs.equals("urn:epc:id:sgtin:0000001.000001.1"))
{
epc1 = 2;
}
else if( room1epcs.equals("urn:epc:id:sgtin:0000001.000001.2"))
{
epc2 = 2;
}
else if( room1epcs.equals("urn:epc:id:sgtin:0000001.000001.3"))
{
epc3 = 2;
}
else if( room1epcs.equals("urn:epc:id:sgtin:0000001.000001.4"))
{
epc4 = 2;
}
else if( room1epcs.equals("urn:epc:id:sgtin:0000001.000001.5"))
{
epc5 = 2;
}
else if( room1epcs.equals("urn:epc:id:sgtin:0000001.000001.6"))
{
epc6 = 2;
}
else if( room1epcs.equals("urn:epc:id:sgtin:0000001.000001.7"))
{
epc7 = 2;
}
else if( room1epcs.equals("urn:epc:id:sgtin:0000001.000001.8"))
{
epc8 = 2;
}
else if( room1epcs.equals("urn:epc:id:sgtin:0000001.000001.9"))
{
epc9 = 2;
}
else if( room1epcs.equals("urn:epc:id:sgtin:0000001.000001.10"))
{
epc10 = 2;
}
else if( room1epcs.equals("urn:epc:id:sgtin:0000001.000001.11"))
{
epc11 = 2;
}
else if( room1epcs.equals("urn:epc:id:sgtin:0000001.000001.12"))
{
epc12 = 2;
}
else if( room1epcs.equals("urn:epc:id:sgtin:0000001.000001.13"))
{
epc13 = 2;
}
else if( room1epcs.equals("urn:epc:id:sgtin:0000001.000001.14"))
{
epc14 = 2;
}
else if( room1epcs.equals("urn:epc:id:sgtin:0000001.000001.15"))
{
epc15 = 2;
}
}
for( int i = 0 ; i < room2EPC.size() -1 ;i ++ )
{
for( int j = i+1 ; j < room2EPC.size() ; j++ )
{
RDFIndividual one = room2EPC.get(i);
RDFIndividual two = room2EPC.get(j);
one.addPropertyValue(isColocated, two);
RelationshipCount++;
String oneText = one.getBrowserText();
String twoText = two.getBrowserText();
String[] segmentOne = oneText.split(":");
String[] segmentTwo = twoText.split(":");
if( segmentOne[0].equals(segmentTwo[0]))
{
if( segmentOne[1].equals(segmentTwo[1]))
{
if( segmentOne[2].equals(segmentTwo[2]))
{
if(segmentOne[3].equals(segmentTwo[3]))
{
String[] sOne = segmentOne[4].split("\\.");
String[] sTwo = segmentTwo[4].split("\\.");
if( sOne[0].equals(sTwo[0]))
{
if( sOne[1].equals(sTwo[1]))
{
one.addPropertyValue(hasSameClass, two);
RelationshipCount++;
}
}
}
}
}
}
}
}
}
else if( reportName.equals("Room3"))
{
Room3Count = room3EPC.size();
for( int i = 0 ; i < room3EPC.size() ; i++ )
{
RDFIndividual room3epc = room3EPC.get(i);
room3epc.setPropertyValue(isIn, room3RDF);
RelationshipCount++;
String room1epcs = room3epc.getBrowserText();
if( room1epcs.equals("urn:epc:id:sgtin:0000001.000001.1"))
{
epc1 = 3;
}
else if( room1epcs.equals("urn:epc:id:sgtin:0000001.000001.2"))
{
epc2 = 3;
}
else if( room1epcs.equals("urn:epc:id:sgtin:0000001.000001.3"))
{
epc3 = 3;
}
else if( room1epcs.equals("urn:epc:id:sgtin:0000001.000001.4"))
{
epc4 = 3;
}
else if( room1epcs.equals("urn:epc:id:sgtin:0000001.000001.5"))
{
epc5 = 3;
}
else if( room1epcs.equals("urn:epc:id:sgtin:0000001.000001.6"))
{
epc6 = 3;
}
else if( room1epcs.equals("urn:epc:id:sgtin:0000001.000001.7"))
{
epc7 = 3;
}
else if( room1epcs.equals("urn:epc:id:sgtin:0000001.000001.8"))
{
epc8 = 3;
}
else if( room1epcs.equals("urn:epc:id:sgtin:0000001.000001.9"))
{
epc9 = 3;
}
else if( room1epcs.equals("urn:epc:id:sgtin:0000001.000001.10"))
{
epc10 = 3;
}
else if( room1epcs.equals("urn:epc:id:sgtin:0000001.000001.11"))
{
epc11 = 3;
}
else if( room1epcs.equals("urn:epc:id:sgtin:0000001.000001.12"))
{
epc12 = 3;
}
else if( room1epcs.equals("urn:epc:id:sgtin:0000001.000001.13"))
{
epc13 = 3;
}
else if( room1epcs.equals("urn:epc:id:sgtin:0000001.000001.14"))
{
epc14 = 3;
}
else if( room1epcs.equals("urn:epc:id:sgtin:0000001.000001.15"))
{
epc15 = 3;
}
}
for( int i = 0 ; i < room3EPC.size() -1 ;i ++ )
{
for( int j = i+1 ; j < room3EPC.size() ; j++ )
{
RDFIndividual one = room3EPC.get(i);
RDFIndividual two = room3EPC.get(j);
one.addPropertyValue(isColocated, two);
RelationshipCount++;
// String oneText = one.getBrowserText();
// String twoText = two.getBrowserText();
// String[] segmentOne = oneText.split(":");
// String[] segmentTwo = twoText.split(":");
// if( segmentOne[0].equals(segmentTwo[0]))
// {
// if( segmentOne[1].equals(segmentTwo[1]))
// {
// if( segmentOne[2].equals(segmentTwo[2]))
// {
// if(segmentOne[3].equals(segmentTwo[3]))
// {
// String[] sOne = segmentOne[4].split("\\.");
// String[] sTwo = segmentTwo[4].split("\\.");
// if( sOne[0].equals(sTwo[0]))
// {
// if( sOne[1].equals(sTwo[1]))
// {
// one.addPropertyValue(hasSameClass, two);
// RelationshipCount++;
// }
// }
// }
// }
// }
// }
}
}
}
FileOutputStream stream = new FileOutputStream("After.txt",true);
long posttime1 = System.nanoTime();
String message = number + "\t" + (double)posttime1/1000000000+ "\t" + DataCount + "\t"+ RelationshipCount + "\t" + Room1Count + "\t" + Room2Count + "\t" + Room3Count + "\t" + Room1Temp + "\t" + Room1Humid + "\t" + Room1Light + "\t" + Room2Temp + "\t" + Room2Humid + "\t" + Room2Light + "\t" + Room3Temp + "\t" + Room3Humid + "\t" + Room3Light + "\t" + epc1 + "\t"+ epc2 + "\t"+ epc3 + "\t"+ epc4 + "\t"+ epc5 + "\t"+ epc6 + "\t"+ epc7 + "\t"+ epc8 + "\t"+ epc9 + "\t"+ epc10 + "\t"+ epc11 + "\t"+ epc12 + "\t"+ epc13 + "\t"+ epc14 + "\t"+ epc15 + "\n";
System.out.println("After : " + message );
stream.write(message.getBytes());
stream.close();
p.dispose();
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//System.out.println(obj.toString());
}
public void objectInformationAdapter(JSONObject obj, String epc)
{
try {
System.out.println(obj.toString(1));
JSONArray eventsbody = obj.getJSONArray("resultsBody");
if( eventsbody.length() == 0 )
{
p.dispose();
return;
}
JSONArray events = eventsbody.getJSONArray(0);
JSONObject event = events.getJSONObject(0);
if( event == null )
{
p.dispose();
return;
}
String location = event.getJSONArray("bizLocation").getString(0);
JSONArray epcJs = event.getJSONArray("epcList");
//Extract
List<RDFIndividual> epcInds = new ArrayList<RDFIndividual>();
for( int i = 0 ; i < epcJs.length() ;i++)
{
String e = epcJs.getString(i);
RDFIndividual ind = owlModel.getRDFIndividual(e);
if( ind != null )
{
epcInds.add(ind);
}
}
//�ش�Ǵ� EPC���� isIn���� , isCollocated���� , hasSameClass ���踦 �����
OWLObjectProperty isIn = owlModel.getOWLObjectProperty("isIn");
OWLObjectProperty isCollocated = owlModel.getOWLObjectProperty("isCollocated");
OWLObjectProperty hasSameClass = owlModel.getOWLObjectProperty("hasSameClass");
for(int i = 0 ; i < epcInds.size() ; i++ )
{
RDFIndividual temp = epcInds.get(i);
if( temp.getPropertyValue(isIn) != null )
{
RDFIndividual preLoc = (RDFIndividual)temp.getPropertyValue(isIn);
temp.removePropertyValue(isIn, preLoc);
}
Collection isColCol = temp.getPropertyValues(isCollocated);
Iterator isColIter = isColCol.iterator();
while( isColIter.hasNext())
{
RDFIndividual isColRDF = (RDFIndividual)isColIter.next();
temp.removePropertyValue(isCollocated, isColRDF);
}
Collection hasSameCol = temp.getPropertyValues(hasSameClass);
Iterator hasSameIter = hasSameCol.iterator();
while( hasSameIter.hasNext())
{
RDFIndividual hasSameRDF = (RDFIndividual)hasSameIter.next();
temp.removePropertyValue(hasSameClass, hasSameRDF);
}
}
//isIn ó��
RDFIndividual locRDF = owlModel.getRDFIndividual(location);
if( locRDF != null )
{
for( int i = 0 ; i < epcInds.size() ; i++ )
{
RDFIndividual tempRDF = epcInds.get(i);
tempRDF.setPropertyValue(isIn, locRDF);
}
}
for( int i = 0 ; i < epcInds.size() -1 ;i ++ )
{
for( int j = i+1 ; j < epcInds.size() ; j++ )
{
RDFIndividual one = epcInds.get(i);
RDFIndividual two = epcInds.get(j);
one.addPropertyValue(isCollocated, two);
String oneText = one.getBrowserText();
String twoText = two.getBrowserText();
String[] segmentOne = oneText.split(":");
String[] segmentTwo = twoText.split(":");
if( segmentOne[0].equals(segmentTwo[0]))
{
if( segmentOne[1].equals(segmentTwo[1]))
{
if( segmentOne[2].equals(segmentTwo[2]))
{
if(segmentOne[3].equals(segmentTwo[3]))
{
String[] sOne = segmentOne[4].split("\\.");
String[] sTwo = segmentTwo[4].split("\\.");
if( sOne[0].equals(sTwo[0]))
{
if( sOne[1].equals(sTwo[1]))
{
one.addPropertyValue(hasSameClass, two);
}
}
}
}
}
}
}
}
p.dispose();
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void sensingInformationAdapter(JSONObject obj,String epc)
{
try {
System.out.println(obj.toString(1));
float temperature = 0;
int tc = 0;
float humidity = 0;
int hc = 0;
float lightness = 0 ;
int lc = 0;
JSONArray eventsbody = obj.getJSONArray("resultsBody");
if( eventsbody.getJSONArray(0).length() == 0 )
{
p.dispose();
return;
}
JSONArray events = eventsbody.getJSONArray(0);
for( int i = 0 ; i < events.length() ; i++ )
{
JSONObject event = events.getJSONObject(i);
if( !event.isNull("sensingValueType"))
{
if( event.getString("sensingValueType").equals("humidity"))
{
humidity += Float.parseFloat(event.getString("sensingValue"));
hc ++;
}
else if( event.getString("sensingValueType").equals("temperature"))
{
temperature += Float.parseFloat(event.getString("sensingValue"));
tc ++;
}
else if( event.getString("sensingValueType").equals("light"))
{
lightness += Float.parseFloat(event.getString("sensingValue"));
lc ++;
}
}
}
RDFIndividual ind = owlModel.getRDFIndividual(epc);
if( ind == null )
{
p.dispose();
return;
}
OWLDatatypeProperty td = owlModel.getOWLDatatypeProperty("temperature");
OWLDatatypeProperty hd = owlModel.getOWLDatatypeProperty("humidity");
OWLDatatypeProperty ld = owlModel.getOWLDatatypeProperty("lightness");
if( tc != 0 )
{
temperature = temperature/tc;
ind.setPropertyValue(td, temperature);
}
if( hc != 0)
{
humidity = humidity/hc;
ind.setPropertyValue(hd, humidity);
}
if( lc != 0 )
{
lightness = lightness/lc;
ind.setPropertyValue(ld, lightness);
}
p.dispose();
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void locationInformationAdapter(JSONObject obj, String epc)
{
try {
System.out.println(obj.toString(1));
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}