From: <ku...@us...> - 2008-08-18 20:36:05
|
Revision: 1097 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1097&view=rev Author: kurzum Date: 2008-08-18 20:35:55 +0000 (Mon, 18 Aug 2008) Log Message: ----------- improved sparql aquisition almost there Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitorImproved.java trunk/src/dl-learner/org/dllearner/kb/extraction/Manager.java Modified: trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitorImproved.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitorImproved.java 2008-08-18 15:42:55 UTC (rev 1096) +++ trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitorImproved.java 2008-08-18 20:35:55 UTC (rev 1097) @@ -19,13 +19,22 @@ */ package org.dllearner.kb.aquisitors; +import java.util.HashMap; +import java.util.List; +import java.util.Map; import java.util.SortedSet; +import java.util.TreeSet; import org.apache.log4j.Logger; import org.dllearner.kb.sparql.SPARQLTasks; import org.dllearner.kb.sparql.SparqlQueryMaker; import org.dllearner.utilities.datastructures.RDFNodeTuple; +import com.hp.hpl.jena.query.ResultSetFormatter; +import com.hp.hpl.jena.rdf.model.RDFNode; +import com.hp.hpl.jena.sparql.core.ResultBinding; +import com.hp.hpl.jena.sparql.resultset.ResultSetRewindable; + /** * Can execute different queries. * @@ -36,23 +45,81 @@ @SuppressWarnings("unused") private static Logger logger = Logger.getLogger(SparqlTupelAquisitorImproved.class); + private Map<String,SortedSet<RDFNodeTuple>> resources = new HashMap<String, SortedSet<RDFNodeTuple>>(); + int recursionDepth; - public SparqlTupelAquisitorImproved(SparqlQueryMaker sparqlQueryMaker, SPARQLTasks sparqlTasks) { + public SparqlTupelAquisitorImproved(SparqlQueryMaker sparqlQueryMaker, SPARQLTasks sparqlTasks, int recursionDepth) { super(sparqlQueryMaker, sparqlTasks); + this.recursionDepth = recursionDepth; } // standard query get a tupels (p,o) for subject s +// standard query get a tupels (p,o) for subject s @Override public SortedSet<RDFNodeTuple> getTupelForResource(String uri) { + checkURIforValidity(uri); + String sparqlQueryString = ""; + String pred = "predicate"; + String obj = "object"; - throw new RuntimeException("not implemented yet"); - + // getQuery + if (classMode) { + + + sparqlQueryString = sparqlQueryMaker.makeClassQueryUsingFilters(uri); + return sparqlTasks.queryAsRDFNodeTuple(sparqlQueryString, pred, obj); + } + + SortedSet<RDFNodeTuple> cachedSet = resources.get(uri); + if(cachedSet!=null) { + return cachedSet; + } + + //SortedSet<RDFNodeTuple> tmp = new TreeSet<RDFNodeTuple>(); + sparqlQueryString = sparqlQueryMaker.makeSubjectQueryLevel(uri, recursionDepth); + ResultSetRewindable rsw= sparqlTasks.queryAsResultSet(sparqlQueryString); + @SuppressWarnings("unchecked") + List<ResultBinding> l = ResultSetFormatter.toList(rsw); + rsw.reset(); + + int resultsetcount = 0; + int i = 0; + for (ResultBinding binding : l) { + i=0; + RDFNode nextURI = binding.get(obj+i); + add(uri, new RDFNodeTuple(binding.get(pred+i), nextURI )); + + for (i=1; i < recursionDepth; i++) { + RDFNode tmpURI = binding.get(obj+i); + add(nextURI.toString(), new RDFNodeTuple(binding.get(pred+i),tmpURI)); + logger.trace("For: "+nextURI.toString()+ " added :"+resources.get(nextURI.toString())); + nextURI = tmpURI; + } + + resultsetcount++; + } + + if(resultsetcount>999) { + logger.warn("SparqlTupelAquisitor retrieved more than 1000 results, there might some be missing"); + } + return resources.get(uri); + + //return sparqlTasks.queryAsRDFNodeTuple(sparqlQueryString, pred, obj); } - - + private void add(String uri, RDFNodeTuple tuple){ + SortedSet<RDFNodeTuple> set = resources.get(uri); + if(set==null){ + set = new TreeSet<RDFNodeTuple>(); + set.add(tuple); + resources.put(uri, set ); + }else { + set.add(tuple); + } + } + } Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/Manager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/extraction/Manager.java 2008-08-18 15:42:55 UTC (rev 1096) +++ trunk/src/dl-learner/org/dllearner/kb/extraction/Manager.java 2008-08-18 20:35:55 UTC (rev 1097) @@ -59,7 +59,7 @@ for (String str : s) { nt.append(str + "\n"); } - System.out.println("sizeofStringBuffer"+nt.length()); + logger.info("sizeofStringBuffer"+nt.length()); return nt.toString(); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |