package kr.ac.kaist.resl.lilliput.util;
import java.util.ArrayList;
import java.util.List;
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.OWLObjectProperty;
import edu.stanford.smi.protegex.owl.model.RDFIndividual;
public class DisappearThread extends Thread{
public String source;
public List<String> dests;
public String property;
public int period;
public DisappearThread(String source, List<String> dests, String property, int period)
{
this.source = source;
this.dests = dests;
this.property = property;
this.period = period;
}
public void run()
{
try{
Thread.sleep(period*1000);
RemoteProjectManager rpm = RemoteProjectManager.getInstance();
Project p = rpm.getProject("localhost:5100", "Lilliput", "1234", "IoTSocialGraph", true);
OWLModel owlModel = (OWLModel)p.getKnowledgeBase();
OWLObjectProperty isIdentifying = owlModel.getOWLObjectProperty(property);
RDFIndividual spaceInd = owlModel.getRDFIndividual(source);
List<RDFIndividual> objectInds = new ArrayList<RDFIndividual>();
for(int i = 0 ; i < dests.size() ; i ++ )
{
String dest = dests.get(i);
RDFIndividual objectInd = owlModel.getRDFIndividual(dest);
if( objectInd != null )
{
objectInds.add(objectInd);
}
}
for(int i = 0 ; i < objectInds.size() ; i ++ )
{
spaceInd.removePropertyValue(isIdentifying, objectInds.get(i));
}
p.dispose();
System.out.println( source + " and " + dests.toString() + "'s near is disappeared");
}catch( InterruptedException e )
{
e.printStackTrace();
}
}
}