package org.openiot.gsn.dynamicSensorControl; import java.util.Collection; import org.apache.log4j.Logger; import org.openiot.gsn.metadata.LSM.LSMRepository; import org.openiot.gsn.utils.PropertiesReader; import org.openrdf.query.TupleQuery; import org.openrdf.query.TupleQueryResult; import org.openrdf.repository.RepositoryConnection; import org.openrdf.repository.RepositoryException; import org.openrdf.repository.sparql.SPARQLRepository; /** * * @author Christos Georgoulis email:cgeo@ait.edu.gr * */ public class SparqlClient { private static final Logger logger = Logger.getLogger(SparqlClient.class); private SPARQLRepository therepository = null; /** Default constructor connectos to predefined LSM Repository */ public SparqlClient() throws RepositoryException { String lsmEndPoint = PropertiesReader.readProperty( LSMRepository.LSM_CONFIG_PROPERTIES_FILE, "endPoint"); therepository = new SPARQLRepository(lsmEndPoint); try { therepository.initialize(); } catch (RepositoryException e) { logger.error( "init sparql repository -http://lsm.deri.ie/sparql- error", e); throw e; } } /** Constructor accepts Repository url String */ public SparqlClient(String url) throws RepositoryException { try { therepository.initialize(); } catch (RepositoryException e) { logger.error("init sparql repository -" + url + "- error", e); throw e; } } private TupleQueryResult sparqlToQResult(String queryString) { try { RepositoryConnection con = therepository.getConnection(); try { TupleQuery query = con.prepareTupleQuery( org.openrdf.query.QueryLanguage.SPARQL, queryString); TupleQueryResult qres = query.evaluate(); return qres; } finally { con.close(); } } catch (Exception e) { e.printStackTrace(); } return null; } /** * Accepts a string query and a Generic Parser and returns a Generic * Collection * * @param query * @param p * @return */ public <T> Collection<T> getQueryResults(String query, Parser<T> p) { TupleQueryResult tqr = sparqlToQResult(query); Collection<T> results = p.parse(tqr); return results; } }