package com.lsm.testschema.model;
import java.util.ArrayList;
import java.util.Set;
import org.openrdf.query.BindingSet;
import org.openrdf.query.QueryEvaluationException;
import org.openrdf.query.TupleQueryResult;
import com.hp.hpl.jena.ontology.Individual;
import com.hp.hpl.jena.ontology.OntClass;
import com.hp.hpl.jena.ontology.OntProperty;
import com.hp.hpl.jena.vocabulary.RDF;
import com.hp.hpl.jena.vocabulary.RDFS;
import com.hp.hpl.jena.vocabulary.XSD;
import lsm.schema.LSMSchema;
import lsm.server.LSMTripleStore;
public class WidgetPresentation
{
public static class Queries
{
public static ArrayList<WidgetPresentation> parseService(TupleQueryResult qres)
{
ArrayList<WidgetPresentation> widgetPreList = new ArrayList<WidgetPresentation>();
try
{
while (qres.hasNext())
{
BindingSet b = qres.next();
Set names = b.getBindingNames();
WidgetPresentation widgetPre = new WidgetPresentation();
for (Object n : names)
{
if(((String) n).equalsIgnoreCase("widgetPreID"))
{
String str = (b.getValue((String) n)==null) ? null : b.getValue((String) n).stringValue();
widgetPre.setId(str);
System.out.print("widget attr id: "+widgetPre.getId()+" ");
}
// else if(((String) n).equalsIgnoreCase("widgetPreDesc"))
// {
// String str = (b.getValue((String) n)==null) ? null : b.getValue((String) n).stringValue();
// widgetPre.setDescription(str);
// System.out.print("widgetPreDesc: "+widgetPre.getDescription()+" ");
// }
else if(((String) n).equalsIgnoreCase("widgetPreOf"))
{
String str = (b.getValue((String) n)==null) ? null : b.getValue((String) n).stringValue();
Service srvc = new Service();
srvc.setId(str);
widgetPre.setService(srvc);
System.out.print("widgetPreOf: "+widgetPre.getService().getId()+" ");
}
else if(((String) n).equalsIgnoreCase("widget"))
{
String str = (b.getValue((String) n)==null) ? null : b.getValue((String) n).stringValue();
WidgetAvailable widget = new WidgetAvailable();
widget.setId(str);
widgetPre.setWidgetAvailable(widget);
System.out.print("widget: "+widgetPre.getWidgetAvailable().getId()+" ");
}
else if(((String) n).equalsIgnoreCase("widgetAttr"))
{
String str = (b.getValue((String) n)==null) ? null : b.getValue((String) n).stringValue();
WidgetAttributes wAttr = new WidgetAttributes();
wAttr.setId(str);
widgetPre.addWidgetAttr(wAttr);
System.out.print("widgetAttr: "+widgetPre.getWidgetAttrList().get(0).getId()+" ");
}
}
widgetPreList.add(widgetPre);
}//while
return widgetPreList;
}
catch (QueryEvaluationException e)
{
e.printStackTrace();
return null;
}
catch (Exception e)
{
e.printStackTrace();
return null;
}
}
private static String graph = "http://lsm.deri.ie/OpenIoT/testSchema#";
private static String getNamespaceDeclarations()
{
StringBuilder declarations = new StringBuilder();
declarations.append("PREFIX : <" + "http://openiot.eu/ontology/ns/" + "> \n");
//declarations.append("PREFIX spt: <" + "http://spitfire-project.eu/ontology/ns/" + "> \n");
declarations.append("PREFIX rdf: <" + RDF.getURI() + "> \n");//http://www.w3.org/1999/02/22-rdf-syntax-ns#
declarations.append("PREFIX rdfs: <" + RDFS.getURI() + "> \n");//http://www.w3.org/2000/01/rdf-schema#
declarations.append("PREFIX xsd: <" + XSD.getURI() + "> \n");
//declarations.append("PREFIX owl: <" + OWL.getURI() + "> \n");
//declarations.append("PREFIX ssn: <" + "http://purl.oclc.org/NET/ssnx/ssn#" + "> \n");
//declarations.append("PREFIX dul: <" + "http://www.ontologydesignpatterns.org/ont/dul/DUL.owl#" + "> \n");
//declarations.append("PREFIX oiot: <" + "http://openiot.eu/ontology/ns/" + "> \n");
//declarations.append("base oiot: <" + "http://openiot.eu/ontology/ns/clouddb" + "> \n");
declarations.append("\n");
return declarations.toString();
}
public static String selectWidgetPreAll()
{
StringBuilder update = new StringBuilder();
update.append(getNamespaceDeclarations());
String str=("SELECT ?widgetPreID ?widgetPreOf ?widget ?widgetAttr from <"+graph+"> "
+"WHERE "
+"{"
+"?widgetPreID <http://openiot.eu/ontology/ns/widgetAttribute> ?widgetAttr . "
+"?widgetPreID <http://openiot.eu/ontology/ns/widget> ?widget . "
+"?widgetPreID <http://openiot.eu/ontology/ns/widgetPresOf> ?widgetPreOf . "
//+"?widgetPreID <http://openiot.eu/ontology/ns/widgetPresDescription> ?widgetPreDesc . "
+"?widgetPreID rdf:type <http://openiot.eu/ontology/ns/WidgetPresentation> ."
+"}");
update.append(str);
return update.toString();
}
public static String selectWidgetPreByService(Service srvc)
{
StringBuilder update = new StringBuilder();
update.append(getNamespaceDeclarations());
String str=("SELECT ?widgetPreID ?widgetPreOf ?widget ?widgetAttr from <"+graph+"> "
+"WHERE "
+"{"
+"?widgetPreID <http://openiot.eu/ontology/ns/widgetAttribute> ?widgetAttr . "
+"?widgetPreID <http://openiot.eu/ontology/ns/widget> ?widget . "
+"?widgetPreID <http://openiot.eu/ontology/ns/widgetPresOf> ?widgetPreOf . "
//+"?widgetPreID <http://openiot.eu/ontology/ns/widgetPresDescription> ?widgetPreDesc . "
+"?widgetPreID <http://openiot.eu/ontology/ns/widgetPresOf> <"+srvc.getId()+"> . "
+"?widgetPreID rdf:type <http://openiot.eu/ontology/ns/WidgetPresentation> ."
+"}");
update.append(str);
return update.toString();
}
}//class
private LSMSchema myOnt;
private LSMSchema ontInstance;
private String graph;
private LSMTripleStore lsmStore;
private Individual widgetPresClassIdv;
private OntClass ontClsWidgetPresClass;
private OntProperty ontPwidgetPresDescription;
private OntProperty ontPwidgetPresOf;
private OntProperty ontPwidget;
private OntProperty ontPwidgetAttr;
////
////
private String id;
private String description;
private Service service;
//private ArrayList<WidgetAvailable> widgetList = new ArrayList<WidgetAvailable>();
private WidgetAvailable wAvailable = new WidgetAvailable();
private ArrayList<WidgetAttributes> widgetAttrList = new ArrayList<WidgetAttributes>();
public WidgetPresentation()
{
}
public WidgetPresentation(LSMSchema myOnt,LSMSchema ontInstance,String graph,LSMTripleStore lsmStore)
{
this.myOnt=myOnt;
this.ontInstance=ontInstance;
this.graph = graph;
this.lsmStore=lsmStore;
initOnt_WidgetPres();
}
public WidgetPresentation(String classIdvURL,LSMSchema myOnt,LSMSchema ontInstance,String graph,LSMTripleStore lsmStore)//,String type)//Type type)
{
this.myOnt=myOnt;
this.ontInstance=ontInstance;
this.graph = graph;
this.lsmStore=lsmStore;
id=classIdvURL;
initOnt_WidgetPres();
}
private void initOnt_WidgetPres()
{
ontClsWidgetPresClass = myOnt.createClass("http://openiot.eu/ontology/ns/WidgetPresentation");
ontPwidgetPresDescription = myOnt.createProperty("http://openiot.eu/ontology/ns/widgetPresDescription");
ontPwidgetPresOf = myOnt.createProperty("http://openiot.eu/ontology/ns/widgetPresOf");
ontPwidget= myOnt.createProperty("http://openiot.eu/ontology/ns/widget");
ontPwidgetAttr= myOnt.createProperty("http://openiot.eu/ontology/ns/widgetAttribute");
}
public void createClassIdv()
{
if(id==null)
widgetPresClassIdv = ontInstance.createIndividual(ontClsWidgetPresClass);
else
widgetPresClassIdv = ontInstance.createIndividual(id,ontClsWidgetPresClass);
}
public void createPdescription()
{
if(description!=null)
widgetPresClassIdv.setPropertyValue(ontPwidgetPresDescription, ontInstance.getBase().createTypedLiteral(description));
}
public void createPwidgetPresOf()
{
if(service!=null)
widgetPresClassIdv.addProperty(ontPwidgetPresOf, service.getClassIndividual());
}
public void createPwidget()
{
widgetPresClassIdv.addProperty(ontPwidget, wAvailable.getClassIndividual());
}
public void createPwidgetAttr()
{
for(int i=0; i<widgetAttrList.size(); i++)
{
widgetPresClassIdv.addProperty(ontPwidgetAttr, widgetAttrList.get(i).getClassIndividual());
}
}
////
public LSMSchema getOnt()
{
return myOnt;
}
public LSMSchema getOntInstance()
{
return ontInstance;
}
public Individual getClassIndividual()
{
return widgetPresClassIdv;
}
////
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public Service getService() {
return service;
}
public void setService(Service service) {
this.service = service;
}
public WidgetAvailable getWidgetAvailable() {
return this.wAvailable;
}
public void setWidgetAvailable(WidgetAvailable widgetAvailable) {
this.wAvailable = widgetAvailable;
}
// public ArrayList<WidgetAvailable> getWidgetList() {
// return widgetList;
// }
// public void setWidgetList(ArrayList<WidgetAvailable> widgetList) {
// this.widgetList = widgetList;
// }
// public void addWidget(WidgetAvailable widget) {
// this.widgetList.add(widget);
// }
public ArrayList<WidgetAttributes> getWidgetAttrList() {
return widgetAttrList;
}
public void setWidgetAttrList(ArrayList<WidgetAttributes> widgetAttrList) {
this.widgetAttrList = widgetAttrList;
}
public void addWidgetAttr(WidgetAttributes widgetAttr) {
this.widgetAttrList.add(widgetAttr);
}
}//class