From: <lor...@us...> - 2011-01-05 14:26:59
|
Revision: 2586 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=2586&view=rev Author: lorenz_b Date: 2011-01-05 14:26:53 +0000 (Wed, 05 Jan 2011) Log Message: ----------- Continued optimized NBR algorithm. Added method to querytree, for finding nodes by ID. Modified Paths: -------------- trunk/autosparql/src/main/java/org/dllearner/autosparql/server/NBR.java trunk/autosparql/src/test/java/org/dllearner/autosparql/server/NBRTest.java trunk/sparql-query-generator/src/main/java/org/dllearner/sparqlquerygenerator/datastructures/QueryTree.java trunk/sparql-query-generator/src/main/java/org/dllearner/sparqlquerygenerator/datastructures/impl/QueryTreeImpl.java Modified: trunk/autosparql/src/main/java/org/dllearner/autosparql/server/NBR.java =================================================================== --- trunk/autosparql/src/main/java/org/dllearner/autosparql/server/NBR.java 2011-01-05 14:02:45 UTC (rev 2585) +++ trunk/autosparql/src/main/java/org/dllearner/autosparql/server/NBR.java 2011-01-05 14:26:53 UTC (rev 2586) @@ -281,17 +281,24 @@ neededGeneralisations = new ArrayList<QueryTree<N>>(); tree1 = queue.remove(0); tmp = tree1; - logger.info("Changes: " + tmp.getChanges()); + if(logger.isInfoEnabled()){ + logger.info("Changes: " + tmp.getChanges()); + } queryTree = tmp.getQueryTree(); - if(!coversNegativeTree(tmp.getQueryTree(), negTrees)){ - while(!coversNegativeTree(tmp.getQueryTree(), negTrees)){ - gens = getAllowedGeneralisations(tmp); - tmp = gens.remove(0); - queue.addAll(0, gens); + boolean coversNegTree = coversNegativeTree(tmp.getQueryTree(), negTrees); + while(!coversNegTree){ + gens = getAllowedGeneralisations(tmp); + if(gens.isEmpty()){ + break; } + tmp = gens.remove(0); + queue.addAll(0, gens); + coversNegTree = coversNegativeTree(tmp.getQueryTree(), negTrees); } List<QueryTreeChange> sequence = genSequence(tree1, tmp); - sequence.remove(sequence.size()-1); + if(coversNegTree){ + sequence.remove(sequence.size()-1); + } tree2 = applyGen(tree1.getQueryTree(), sequence); SortedSet<String> foundResources = getResources(tree2); foundResources.removeAll(knownResources); @@ -304,6 +311,10 @@ foundResources.removeAll(knownResources); } while(!foundResources.isEmpty()); return example; + } else { + if(logger.isInfoEnabled()){ + logger.info("Query result contains no new resources. Trying next tree from queue..."); + } } } return null; @@ -428,7 +439,9 @@ query = getSPARQLQuery(tree);//tree.toSPARQLQueryString(); query = getLimitedQuery(query); - logger.info("Testing query\n" + query); + if(logger.isInfoEnabled()){ + logger.info("Testing query\n" + query); + } String result = cache.executeSelectQuery(endpoint, query); ResultSetRewindable rs = SparqlQuery.convertJSONtoResultSet(result); String uri; Modified: trunk/autosparql/src/test/java/org/dllearner/autosparql/server/NBRTest.java =================================================================== --- trunk/autosparql/src/test/java/org/dllearner/autosparql/server/NBRTest.java 2011-01-05 14:02:45 UTC (rev 2585) +++ trunk/autosparql/src/test/java/org/dllearner/autosparql/server/NBRTest.java 2011-01-05 14:26:53 UTC (rev 2586) @@ -258,6 +258,8 @@ public void testAllowedGeneralisationsGeneration(){ QueryTree<String> tree = DBpediaExample.getPosExampleTrees().get(0); NBR<String> nbrGen = new NBR<String>(null, null); + System.out.println(tree.getStringRepresentation()); + System.out.println(tree.getNodeById(5)); List<GeneralisedQueryTree<String>> gens = nbrGen.getAllowedGeneralisations(new GeneralisedQueryTree<String>(tree)); GeneralisedQueryTree<String> genTree; Modified: trunk/sparql-query-generator/src/main/java/org/dllearner/sparqlquerygenerator/datastructures/QueryTree.java =================================================================== --- trunk/sparql-query-generator/src/main/java/org/dllearner/sparqlquerygenerator/datastructures/QueryTree.java 2011-01-05 14:02:45 UTC (rev 2585) +++ trunk/sparql-query-generator/src/main/java/org/dllearner/sparqlquerygenerator/datastructures/QueryTree.java 2011-01-05 14:26:53 UTC (rev 2586) @@ -45,6 +45,8 @@ int getId(); + QueryTree<N> getNodeById(int nodeId); + boolean isLiteralNode(); void setLiteralNode(boolean isLiteralNode); Modified: trunk/sparql-query-generator/src/main/java/org/dllearner/sparqlquerygenerator/datastructures/impl/QueryTreeImpl.java =================================================================== --- trunk/sparql-query-generator/src/main/java/org/dllearner/sparqlquerygenerator/datastructures/impl/QueryTreeImpl.java 2011-01-05 14:02:45 UTC (rev 2585) +++ trunk/sparql-query-generator/src/main/java/org/dllearner/sparqlquerygenerator/datastructures/impl/QueryTreeImpl.java 2011-01-05 14:26:53 UTC (rev 2586) @@ -106,6 +106,21 @@ return id; } + public QueryTree<N> getNodeById(int nodeId){ + QueryTree<N> node = null; + if(this.id == nodeId){ + node = this; + } else { + for(QueryTree<N> child : children){ + node = child.getNodeById(nodeId); + if(node != null){ + return node; + } + } + } + return node; + } + @Override public boolean isLiteralNode() { return isLiteralNode; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |