From: <sk...@us...> - 2008-01-22 08:58:07
|
Revision: 408 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=408&view=rev Author: sknappe Date: 2008-01-22 00:58:01 -0800 (Tue, 22 Jan 2008) Log Message: ----------- sparql queries with jena api Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java trunk/src/dl-learner/org/dllearner/kb/sparql/configuration/SparqlEndpoint.java trunk/src/dl-learner/org/dllearner/kb/sparql/query/SparqlQuery.java trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-01-22 02:49:27 UTC (rev 407) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-01-22 08:58:01 UTC (rev 408) @@ -25,12 +25,17 @@ import java.net.URI; import java.net.URL; import java.util.Collection; +import java.util.HashMap; import java.util.HashSet; +import java.util.Iterator; import java.util.LinkedList; +import java.util.Map; +import java.util.Random; import java.util.Set; import java.util.Vector; import org.apache.log4j.Logger; +import org.dllearner.core.Component; import org.dllearner.core.KnowledgeSource; import org.dllearner.core.OntologyFormat; import org.dllearner.core.OntologyFormatUnsupportedException; @@ -61,8 +66,10 @@ */ public class SparqlKnowledgeSource extends KnowledgeSource { + private Map<Integer,SparqlQuery> queryIDs = new HashMap<Integer,SparqlQuery>(); + private Map<Integer, String[][]> queryResult=new HashMap<Integer,String[][]>(); // ConfigOptions - private URL url; + public URL url; // String host; private Set<String> instances = new HashSet<String>();; private URL dumpFile; @@ -124,6 +131,9 @@ private Thread triplesThread; private Thread conceptThread; + + private LinkedList<String> defaultGraphURIs=new LinkedList<String>(); + private LinkedList<String> namedGraphURIs=new LinkedList<String>(); // received ontology as array, used if format=Array(an element of the // array consists of the subject, predicate and object separated by '<' @@ -199,7 +209,9 @@ options.add(new BooleanConfigOption("closeAfterRecursion", "gets all classes for all instances")); options.add(CommonConfigOptions.getVerbosityOption()); - + + options.add(new StringSetConfigOption("defaultGraphURIs","a list of all default Graph URIs")); + options.add(new StringSetConfigOption("namedGraphURIs","a list of all named Graph URIs")); return options; } @@ -265,8 +277,19 @@ closeAfterRecursion = (Boolean) entry.getValue(); // } else if (option.equals("verbosity")) { // verbosity = (String) entry.getValue(); + } else if (option.equals("defaultGraphURIs")) { + Set<String> temp = (Set<String>) entry.getValue(); + Iterator iter=temp.iterator(); + while (iter.hasNext()){ + defaultGraphURIs.add((String)iter.next()); + } + } else if (option.equals("namedGraphURIs")) { + Set<String> temp = (Set<String>) entry.getValue(); + Iterator iter=temp.iterator(); + while (iter.hasNext()){ + namedGraphURIs.add((String)iter.next()); + } } - } /* @@ -577,7 +600,46 @@ return conceptSubjects; } - public SparqlQuery sparqlQuery(String query) { - return new SparqlQuery(query, sse); + public int sparqlQuery(String query) { + this.sse=new SparqlEndpoint(url,defaultGraphURIs,namedGraphURIs); + return this.generateQueryID(new SparqlQuery(query, sse)); } + + public void startSparqlQuery(int queryID){ + queryResult.put(queryID, queryIDs.get(queryID).getAsStringArray()); + } + + public SparqlQuery getSparqlQuery(int queryID){ + return queryIDs.get(queryID); + } + + public String[][] getSparqlResult(int queryID){ + return queryResult.get(queryID); + } + + private int generateQueryID(SparqlQuery query) { + int id; + Random rand=new Random(); + do { + id = rand.nextInt(); + } while(queryIDs.keySet().contains(id)); + queryIDs.put(id, query); + return id; + } + + public static void main(String[] args) throws MalformedURLException + { + String query="SELECT ?pred ?obj\n"+ + "WHERE {<http://dbpedia.org/resource/Leipzig> ?pred ?obj}"; + URL url=new URL("http://dbpedia.openlinksw.com:8890/sparql"); + SparqlEndpoint sse=new SparqlEndpoint(url); + SparqlQuery q=new SparqlQuery(query,sse); + String[][] array=q.getAsStringArray(); + for (int i=0;i<array.length;i++) + { + for (int j=0;j<array[0].length;j++) + System.out.print(array[i][j]+" "); + System.out.println(); + } + } } Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/configuration/SparqlEndpoint.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/configuration/SparqlEndpoint.java 2008-01-22 02:49:27 UTC (rev 407) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/configuration/SparqlEndpoint.java 2008-01-22 08:58:01 UTC (rev 408) @@ -32,8 +32,8 @@ */ public class SparqlEndpoint { URL url; - LinkedList<String> defaultGraphURIs; - LinkedList<String> namedGraphURIs; + List<String> defaultGraphURIs; + List<String> namedGraphURIs; //public HashMap<String, String> parameters = new HashMap<String, String>(); public SparqlEndpoint(URL u) { @@ -44,8 +44,8 @@ public SparqlEndpoint(URL u,List<String> defaultGraphURIs,List<String> namedGraphURIs) { this.url = u; - this.defaultGraphURIs=new LinkedList<String>(); - this.namedGraphURIs=new LinkedList<String>(); + this.defaultGraphURIs=defaultGraphURIs; + this.namedGraphURIs=namedGraphURIs; } @@ -53,11 +53,11 @@ return this.url; } - public LinkedList<String> getDefaultGraphURIs() { + public List<String> getDefaultGraphURIs() { return defaultGraphURIs; } - public LinkedList<String> getNamedGraphURIs() { + public List<String> getNamedGraphURIs() { return namedGraphURIs; } Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/query/SparqlQuery.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/query/SparqlQuery.java 2008-01-22 02:49:27 UTC (rev 407) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/query/SparqlQuery.java 2008-01-22 08:58:01 UTC (rev 408) @@ -20,6 +20,7 @@ package org.dllearner.kb.sparql.query; import java.net.URL; +import java.util.Iterator; import java.util.List; import java.util.Vector; @@ -49,6 +50,10 @@ private QueryExecution queryExecution; SparqlEndpoint endpoint; + public void setQueryExecutionRunning(boolean isRunning){ + this.isRunning=isRunning; + } + /** * simplest contructor, works only with some endpoints, * not with DBpedia @@ -76,8 +81,6 @@ * @return jena ResultSet */ protected ResultSet send() { - isRunning = true; - p(queryString); // create a query and parse it into Jena Query query = QueryFactory.create(queryString); @@ -91,7 +94,6 @@ p("query SPARQL server"); ResultSet rs = queryExecution.execSelect(); - isRunning = false; return rs; } @@ -103,7 +105,31 @@ public boolean isRunning() { return isRunning; } - + + public String[][] getAsStringArray(){ + System.out.println("Starting Query"); + ResultSet rs=send(); + System.out.println("getResults"); + List<ResultBinding> l = ResultSetFormatter.toList(rs); + List resultVars=rs.getResultVars(); + String[][] array=new String[l.size()][resultVars.size()]; + Iterator iter=resultVars.iterator(); + int i=0,j=0; + + for (ResultBinding resultBinding : l) { + while (iter.hasNext()){ + String varName=(String)iter.next(); + array[i][j]=resultBinding.get(varName).toString(); + j++; + } + iter=resultVars.iterator(); + i++; + j=0; + } + System.out.println("Query complete"); + return array; + } + /** * sends a query and returns XML * Modified: trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java =================================================================== --- trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java 2008-01-22 02:49:27 UTC (rev 407) +++ trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java 2008-01-22 08:58:01 UTC (rev 408) @@ -55,6 +55,7 @@ import org.dllearner.reasoning.DIGReasoner; import org.dllearner.utilities.Datastructures; import org.dllearner.utilities.Helper; +import org.dllearner.kb.sparql.query.SparqlQuery; /** * DL-Learner web service interface. @@ -486,7 +487,7 @@ //////////////////////////////////////// // SPARQL component methods // //////////////////////////////////////// - + /* @WebMethod public void startThread(int id, int componentID, String[] options) throws ClientNotKnownException { @@ -572,8 +573,51 @@ return ((SparqlKnowledgeSource)component).getConceptSubjects(); return new String[0]; } + */ @WebMethod + public String[][] sparqlQuery(int sessionID, int componentID, int queryID) throws ClientNotKnownException + { + ClientState state = getState(sessionID); + Component component = state.getComponent(componentID); + return ((SparqlKnowledgeSource)component).getSparqlResult(queryID); + } + + @WebMethod + public int sparqlQueryThreaded(int sessionID, int componentID, final String query) throws ClientNotKnownException + { + final ClientState state = getState(sessionID); + final Component component = state.getComponent(componentID); + final int ID=((SparqlKnowledgeSource)component).sparqlQuery(query); + Thread sparqlThread = new Thread() { + @Override + public void run() { + ((SparqlKnowledgeSource)component).getSparqlQuery(ID).setQueryExecutionRunning(true); + ((SparqlKnowledgeSource)component).startSparqlQuery(ID); + ((SparqlKnowledgeSource)component).getSparqlQuery(ID).setQueryExecutionRunning(false); + } + }; + sparqlThread.start(); + return ID; + } + + @WebMethod + public boolean isSparqlQueryRunning(int sessionID, int componentID, int queryID) throws ClientNotKnownException + { + ClientState state = getState(sessionID); + Component component = state.getComponent(componentID); + return ((SparqlKnowledgeSource)component).getSparqlQuery(queryID).isRunning(); + } + + @WebMethod + public void stopSparqlThread(int sessionID, int componentID, int queryID) throws ClientNotKnownException + { + ClientState state = getState(sessionID); + Component component = state.getComponent(componentID); + ((SparqlKnowledgeSource)component).getSparqlQuery(queryID).stop(); + } + + @WebMethod public String debug(String deb) { return "Test"; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |