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 lsm.schema.LSMSchema; import lsm.server.LSMTripleStore; 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 com.lsm.testschema.model.Widget.Type; public class WidgetAttributes { public static class Queries { public static ArrayList<WidgetAttributes> parseService(TupleQueryResult qres) { ArrayList<WidgetAttributes> widgetAttrList = new ArrayList<WidgetAttributes>(); try { while (qres.hasNext()) { BindingSet b = qres.next(); Set names = b.getBindingNames(); WidgetAttributes widgetAttr = new WidgetAttributes(); for (Object n : names) { if(((String) n).equalsIgnoreCase("widgetAttrID")) { String str = (b.getValue((String) n)==null) ? null : b.getValue((String) n).stringValue(); widgetAttr.setId(str); System.out.print("widgetattr id: "+widgetAttr.getId()+" "); } else if(((String) n).equalsIgnoreCase("widgetAttrName")) { String str = (b.getValue((String) n)==null) ? null : b.getValue((String) n).stringValue(); widgetAttr.setName(str); System.out.print("widgetAttrName: "+widgetAttr.getName()+" "); } else if(((String) n).equalsIgnoreCase("widgetAttrDesc")) { String str = (b.getValue((String) n)==null) ? null : b.getValue((String) n).stringValue(); widgetAttr.setDescription(str); System.out.print("widgetAttrDesc: "+widgetAttr.getDescription()+" "); } else if(((String) n).equalsIgnoreCase("widgetAttrOf")) { String str = (b.getValue((String) n)==null) ? null : b.getValue((String) n).stringValue(); WidgetPresentation wPre = new WidgetPresentation(); wPre.setId(str); widgetAttr.setWidgetPre(wPre); System.out.print("widgetAttrDesc: "+wPre.getId()+" "); } } widgetAttrList.add(widgetAttr); }//while return widgetAttrList; } 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 selectWidgetAttrAll() { StringBuilder update = new StringBuilder(); update.append(getNamespaceDeclarations()); String str=("SELECT ?widgetAttrID ?widgetAttrName ?widgetAttrDesc ?widgetAttrOf from <"+graph+"> " +"WHERE " +"{" +"?widgetAttrID <http://openiot.eu/ontology/ns/widgetAttrOf> ?widgetAttrOf . " +"?widgetAttrID <http://openiot.eu/ontology/ns/widgeAttrDescription> ?widgetAttrDesc . " +"?widgetAttrID <http://openiot.eu/ontology/ns/widgetAttrName> ?widgetAttrName . " +"?widgetAttrID rdf:type <http://openiot.eu/ontology/ns/WidgetAttr> ." +"}"); update.append(str); return update.toString(); } public static String selectWidgetAttrByName(String widgetAttrName) { StringBuilder update = new StringBuilder(); update.append(getNamespaceDeclarations()); String str=("SELECT ?widgetAttrID ?widgetAttrName ?widgetAttrDesc ?widgetAttrOf from <"+graph+"> " +"WHERE " +"{" +"?widgetAttrID <http://openiot.eu/ontology/ns/widgetAttrOf> ?widgetAttrOf . " +"?widgetAttrID <http://openiot.eu/ontology/ns/widgeAttrDescription> ?widgetAttrDesc . " +"?widgetAttrID <http://openiot.eu/ontology/ns/widgetAttrName> ?name FILTER regex(?name, \"" +widgetAttrName+ "\" ) . " +"?widgetAttrID rdf:type <http://openiot.eu/ontology/ns/WidgetAttr> ." +"}"); update.append(str); return update.toString(); } public static String selectWidgetAttrByDescription(String desc) { StringBuilder update = new StringBuilder(); update.append(getNamespaceDeclarations()); String str=("SELECT ?widgetAttrID ?widgetAttrName ?widgetAttrDesc ?widgetAttrOf from <"+graph+"> " +"WHERE " +"{" +"?widgetAttrID <http://openiot.eu/ontology/ns/widgetAttrOf> ?widgetAttrOf . " +"?widgetAttrID <http://openiot.eu/ontology/ns/widgetAttrName> ?widgetAttrName . " +"?widgetAttrID <http://openiot.eu/ontology/ns/widgeAttrDescription> ?desc FILTER regex(?desc, \"" +desc+ "\" ) . " +"?widgetAttrID rdf:type <http://openiot.eu/ontology/ns/WidgetAttr> ." +"}"); update.append(str); return update.toString(); } public static String selectWidgetAttrByWidgetPre(WidgetPresentation widgetPre)//query returns list of widgets { StringBuilder update = new StringBuilder(); update.append(getNamespaceDeclarations()); String str=("SELECT ?widgetAttrID ?widgetAttrName ?widgetAttrDesc ?widgetAttrOf from <"+graph+"> " +"WHERE " +"{" +"?widgetAttrID <http://openiot.eu/ontology/ns/widgetAttrOf> ?widgetAttrOf . " +"?widgetAttrID <http://openiot.eu/ontology/ns/widgeAttrDescription> ?widgetAttrDesc . " +"?widgetAttrID <http://openiot.eu/ontology/ns/widgetAttrName> ?widgetAttrName . " +"?widgetAttrID <http://openiot.eu/ontology/ns/widgetAttrOf> <"+widgetPre.getId()+"> . " +"}"); update.append(str); return update.toString(); } }//class private LSMSchema myOnt; private LSMSchema ontInstance; private String graph; private LSMTripleStore lsmStore; private Individual widgetAttrClassIdv; private OntClass ontClsWidgetAttrClass; private OntProperty ontPwidgetAttrName; private OntProperty ontPwidgetAttrDescription; private OntProperty ontPwidgetAttrOf; private String id; private String description; private String name; private WidgetPresentation widgetPres; //constructor public WidgetAttributes() {} public WidgetAttributes(LSMSchema myOnt,LSMSchema ontInstance,String graph,LSMTripleStore lsmStore) { this.myOnt=myOnt; this.ontInstance=ontInstance; this.graph = graph; this.lsmStore=lsmStore; initOnt_WidgetAttr(); //createClassIdv(); } public WidgetAttributes(String classIdvURL,LSMSchema myOnt,LSMSchema ontInstance,String graph,LSMTripleStore lsmStore) { this.myOnt=myOnt; this.ontInstance=ontInstance; this.graph = graph; this.lsmStore=lsmStore; id=classIdvURL; initOnt_WidgetAttr(); // createClassIdv(); } private void initOnt_WidgetAttr() { ontClsWidgetAttrClass = myOnt.createClass("http://openiot.eu/ontology/ns/WidgetAttr"); ontPwidgetAttrDescription = myOnt.createProperty("http://openiot.eu/ontology/ns/widgeAttrDescription"); ontPwidgetAttrName = myOnt.createProperty("http://openiot.eu/ontology/ns/widgetAttrName"); ontPwidgetAttrOf= myOnt.createProperty("http://openiot.eu/ontology/ns/widgetAttrOf"); } public void createClassIdv() { if(id==null) widgetAttrClassIdv = ontInstance.createIndividual(ontClsWidgetAttrClass); else widgetAttrClassIdv = ontInstance.createIndividual(id,ontClsWidgetAttrClass); } // public void createOnt_Widget() // { // if(description!=null) // widgetAttrClassIdv.setPropertyValue(ontPwidgetAttrDescription, ontInstance.getBase().createTypedLiteral(description)); // if(name!=null) // widgetAttrClassIdv.setPropertyValue(ontPwidgetAttrName, ontInstance.getBase().createTypedLiteral(name)); // // widgetAttrClassIdv.addProperty(ontPwidgetAttrOf, widgetPres.getClassIndividual()); // } public void createPdesc() throws NullPointerException { if(description!=null) widgetAttrClassIdv.setPropertyValue(ontPwidgetAttrDescription, ontInstance.getBase().createTypedLiteral(description)); else throw new NullPointerException("mandatory attribute:description is null"); } public void createPname() throws NullPointerException { if(name!=null) widgetAttrClassIdv.setPropertyValue(ontPwidgetAttrName, ontInstance.getBase().createTypedLiteral(name)); else throw new NullPointerException("mandatory attribute:name is null"); } public void createPWidgetAttrOf() throws NullPointerException { if(widgetPres!=null) widgetAttrClassIdv.addProperty(ontPwidgetAttrOf, widgetPres.getClassIndividual()); else throw new NullPointerException("Cannot create Widget Presentation attribute: null reference"); } //// public LSMSchema getOnt() { return myOnt; } public LSMSchema getOntInstance() { return ontInstance; } public Individual getClassIndividual() { return widgetAttrClassIdv; } //// 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 String getName() { return name; } public void setName(String name) { this.name = name; } public WidgetPresentation getWidgetPres() { return widgetPres; } public void setWidgetPre(WidgetPresentation widgetPres) { this.widgetPres = widgetPres; } }//class