package org.hadatac.console.http; import java.io.ByteArrayOutputStream; import org.apache.jena.query.Query; import org.apache.jena.query.QueryExecution; import org.apache.jena.query.QueryExecutionFactory; import org.apache.jena.query.QueryFactory; import org.apache.jena.query.ResultSet; import org.apache.jena.query.ResultSetFormatter; import org.hadatac.utils.Collections; import org.hadatac.utils.NameSpaces; public class PermissionQueries { public static final String PERMISSION_BY_EMAIL = "PermissionByEmail"; public static final String PERMISSIONS_BY_URI = "PermissionsByURI"; public static String querySelector(String concept, String uri){ String q = "SELECT * WHERE { ?s ?p ?o } LIMIT 10"; switch (concept){ case PERMISSION_BY_EMAIL : q = "PREFIX prov: <http://www.w3.org/ns/prov#> " + "PREFIX foaf: <http://xmlns.com/foaf/0.1/> " + "SELECT * WHERE { " + " ?uri a foaf:Person . " + " ?uri foaf:mbox \"" + uri + "\" . " + "}"; break; case PERMISSIONS_BY_URI : q = "PREFIX rdfs:<http://www.w3.org/2000/01/rdf-schema#>" + "PREFIX owl: <http://www.w3.org/2002/07/owl#>" + "PREFIX prov: <http://www.w3.org/ns/prov#> " + "PREFIX vstoi: <http://hadatac.org/ont/vstoi#> " + "PREFIX hasneto: <http://hadatac.org/ont/hasneto#> " + "SELECT ?deturi ?detModel ?sp ?ec ?ecName WHERE { " + " <" + uri + "> a vstoi:Deployment . " + " <" + uri + "> hasneto:hasDetector ?deturi . " + " ?deturi a ?detModel . " + " ?sp vstoi:perspectiveOf ?detModel . " + " ?sp hasneto:hasPerspectiveCharacteristic ?ec ." + " ?ec rdfs:label ?ecName . " + "}"; break; default : q = ""; System.out.println("WARNING: no query for tab " + concept); } return q; } public static String exec(String concept, String uri) { ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); try { String queryString = NameSpaces.getInstance().printSparqlNameSpaceList() + querySelector(concept, uri); Query query = QueryFactory.create(queryString); QueryExecution qexec = QueryExecutionFactory.sparqlService( Collections.getCollectionsName(Collections.PERMISSIONS_SPARQL), query); ResultSet results = qexec.execSelect(); ResultSetFormatter.outputAsJSON(outputStream, results); qexec.close(); return outputStream.toString("UTF-8"); } catch (Exception e) { e.printStackTrace(); } return ""; } }