From: <lor...@us...> - 2011-01-18 16:27:00
|
Revision: 2622 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=2622&view=rev Author: lorenz_b Date: 2011-01-18 16:26:54 +0000 (Tue, 18 Jan 2011) Log Message: ----------- Finally implemented reverse POST-LGG. Added method to renumber the LGG. Modified Paths: -------------- trunk/autosparql/src/main/java/org/dllearner/autosparql/server/NBR.java trunk/sparql-query-generator/src/main/java/org/dllearner/sparqlquerygenerator/operations/lgg/LGGGeneratorImpl.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-18 13:31:35 UTC (rev 2621) +++ trunk/autosparql/src/main/java/org/dllearner/autosparql/server/NBR.java 2011-01-18 16:26:54 UTC (rev 2622) @@ -57,6 +57,7 @@ private QueryTree<N> lgg; private QueryTree<N> postLGG; private List<QueryTree<N>> negTrees; + private List<Integer> determiningNodeIds; @@ -153,6 +154,25 @@ return matrix; } + private List<Integer> getDeterminingNodeIds(QueryTree<N> lgg, List<QueryTree<N>> trees){ + List<Integer> nodeIds = new ArrayList<Integer>(); + + boolean parentIsResource = false; + boolean childIsResource = false; + for(QueryTree<N> child : lgg.getChildren()){ + parentIsResource = !child.getParent().getUserObject().equals("?"); + childIsResource = !child.getUserObject().equals("?"); + if(parentIsResource && childIsResource && hasAlwaysSameParent(child, trees)){ + nodeIds.add(child.getId()); + } + if(!child.isLeaf()){ + nodeIds.addAll(getDeterminingNodeIds(child, trees)); + } + } + + return nodeIds; + } + public String getQuery(){ return query; } @@ -311,8 +331,10 @@ startTime = System.currentTimeMillis(); this.lgg = lgg; this.negTrees = negTrees; - System.err.println(negTrees.get(0).getStringRepresentation()); + determiningNodeIds = getDeterminingNodeIds(lgg, negTrees); +// System.err.println(negTrees.get(0).getStringRepresentation()); logger.info("Computing next question..."); + logger.info("LGG:\n" + lgg.getStringRepresentation()); postLGG = getFilteredTree(lgg); PostLGG<N> postGen = new PostLGG<N>((SPARQLEndpointEx) endpoint); postGen.simplifyTree(postLGG, negTrees); @@ -414,7 +436,7 @@ // perform SPARQL query // QueryTree<N> t = getNewResource(trees.get(testIndex), knownResources); - String t = getNewResource(trees.get(testIndex), knownResources);; + String t = null; try { t = getNewResource(trees.get(testIndex), knownResources); } catch (HTTPException e) { @@ -599,10 +621,12 @@ gens.add(genTree); parent.addChild((QueryTreeImpl<N>) child, edge, pos); } else { - System.out.println("resource: " + label); + Map<Integer, N> node2Label = new HashMap<Integer, N>(); for(QueryTree<N> c : child.getChildren()){ - System.out.println("child: " + c.getUserObject()); - System.out.println(hasAlwaysSameParent(c, negTrees)); + if(determiningNodeIds.contains(c.getId())){ + node2Label.put(Integer.valueOf(c.getId()), c.getUserObject()); + c.setUserObject((N)"?"); + } } child.setUserObject((N) "?"); child.setVarNode(true); @@ -613,6 +637,12 @@ child.setUserObject(label); child.setLiteralNode(isLiteralNode); child.setResourceNode(!isLiteralNode); + for(QueryTree<N> c : child.getChildren()){ + N oldLabel = node2Label.get(c.getId()); + if(oldLabel != null){ + c.setUserObject(oldLabel); + } + } } // child.setUserObject((N) "?"); // child.setVarNode(true); Modified: trunk/sparql-query-generator/src/main/java/org/dllearner/sparqlquerygenerator/operations/lgg/LGGGeneratorImpl.java =================================================================== --- trunk/sparql-query-generator/src/main/java/org/dllearner/sparqlquerygenerator/operations/lgg/LGGGeneratorImpl.java 2011-01-18 13:31:35 UTC (rev 2621) +++ trunk/sparql-query-generator/src/main/java/org/dllearner/sparqlquerygenerator/operations/lgg/LGGGeneratorImpl.java 2011-01-18 16:26:54 UTC (rev 2622) @@ -40,6 +40,7 @@ public class LGGGeneratorImpl<N> implements LGGGenerator<N>{ private Logger logger = Logger.getLogger(LGGGeneratorImpl.class); + private int nodeId; @Override public QueryTree<N> getLGG(QueryTree<N> tree1, QueryTree<N> tree2) { @@ -49,10 +50,12 @@ @Override public QueryTree<N> getLGG(QueryTree<N> tree1, QueryTree<N> tree2, boolean learnFilters) { + nodeId = 0; Monitor mon = MonitorFactory.getTimeMonitor("LGG"); mon.start(); QueryTree<N> lgg = computeLGG(tree1, tree2, learnFilters); mon.stop(); + addNumbering(lgg); return lgg; } @@ -63,6 +66,7 @@ @Override public QueryTree<N> getLGG(List<QueryTree<N>> trees, boolean learnFilters) { + nodeId = 0; List<QueryTree<N>> treeList = new ArrayList<QueryTree<N>>(trees); if(logger.isInfoEnabled()){ @@ -103,7 +107,7 @@ logger.info(lgg.getStringRepresentation()); } mon.stop(); - + addNumbering(lgg); return lgg; } @@ -193,5 +197,12 @@ } return lgg; } + + private void addNumbering(QueryTree<N> tree){ + tree.setId(nodeId++); + for(QueryTree<N> child : tree.getChildren()){ + addNumbering(child); + } + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |