From: <lor...@us...> - 2011-01-19 09:15:09
|
Revision: 2625 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=2625&view=rev Author: lorenz_b Date: 2011-01-19 09:15:03 +0000 (Wed, 19 Jan 2011) Log Message: ----------- Added method to limit equal edges to leaf nodes with same edge and where leaf node is '?'. 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/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-18 21:04:16 UTC (rev 2624) +++ trunk/autosparql/src/main/java/org/dllearner/autosparql/server/NBR.java 2011-01-19 09:15:03 UTC (rev 2625) @@ -9,6 +9,7 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; +import java.util.Set; import java.util.SortedMap; import java.util.SortedSet; import java.util.TreeMap; @@ -40,7 +41,7 @@ private volatile boolean stop = false; private boolean isRunning; - private int maxExecutionTimeInSeconds = 10; + private int maxExecutionTimeInSeconds = 1000; private long startTime; private ExtractionDBCache selectCache; @@ -334,7 +335,6 @@ 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); @@ -750,9 +750,8 @@ private SortedSet<String> getResources(QueryTree<N> tree, int limit, int offset){ SortedSet<String> resources = new TreeSet<String>(); - + limitEqualEdgesToLeafs(tree, 1); query = tree.toSPARQLQueryString(); -// logger.info(QueryTreeConverter.getSPARQLQuery(tree, endpoint.getBaseURI(), endpoint.getPrefixes())); query = getDistinctQuery(query); if(logger.isDebugEnabled()){ logger.debug("Testing query\n" + getLimitedQuery(query, limit, offset)); @@ -973,6 +972,31 @@ } + private void limitEqualEdgesToLeafs(QueryTree<N> tree, int maxEqualEdgeCount){ + Set<QueryTree<N>> parents = new HashSet<QueryTree<N>>(); + for(QueryTree<N> leaf : tree.getLeafs()){ + if(leaf.getUserObject().equals("?")){ + parents.add(leaf.getParent()); + } + } + for(QueryTree<N> parent : parents){ + for(Object edge : parent.getEdges()){ + int cnt = 0; + for(QueryTree<N> child : parent.getChildren(edge)){ + if(child.getUserObject().equals("?")){ + if(child.isLeaf()){ + cnt++; + if(cnt>maxEqualEdgeCount){ + parent.removeChild((QueryTreeImpl<N>) child); + } + } + } + } + } + } + + } + public void stop(){ stop = true; } 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-18 21:04:16 UTC (rev 2624) +++ trunk/autosparql/src/test/java/org/dllearner/autosparql/server/NBRTest.java 2011-01-19 09:15:03 UTC (rev 2625) @@ -447,6 +447,49 @@ } } + @Test + public void testLGG(){ + try { + ExtractionDBCache constructCache = new ExtractionDBCache(CONSTRUCT_CACHE_DIR); + List<String> predicateFilters = new ArrayList<String>(); + SPARQLEndpointEx endpoint = new SPARQLEndpointEx(new URL("http://db0.aksw.org:8999/sparql"), + Collections.singletonList("http://dbpedia.org"), Collections.<String>emptyList(), null, null, predicateFilters); + predicateFilters.add("http://dbpedia.org/ontology/wikiPageWikiLink"); + predicateFilters.add("http://dbpedia.org/property/wikiPageUsesTemplate"); + + ModelGenerator modelGen = new ModelGenerator(endpoint, new HashSet<String>(predicateFilters), constructCache); + QueryTreeFactory<String> treeFactory = new QueryTreeFactoryImpl(); + LGGGenerator<String> lggGen = new LGGGeneratorImpl<String>(); + + List<QueryTree<String>> posTrees = new ArrayList<QueryTree<String>>(); + + String uri = "http://dbpedia.org/resource/%C3%80_double_tour"; + Model model = modelGen.createModel(uri, Strategy.CHUNKS, 2); + QueryTree<String> tree = treeFactory.getQueryTree(uri, model); + tree = getFilteredTree(tree); + posTrees.add(tree); + + uri = "http://dbpedia.org/resource/%C3%80_la_folie"; + model = modelGen.createModel(uri, Strategy.CHUNKS, 2); + tree = treeFactory.getQueryTree(uri, model); + tree = getFilteredTree(tree); + posTrees.add(tree); + + uri = "http://dbpedia.org/resource/%C3%80_nos_amours"; + model = modelGen.createModel(uri, Strategy.CHUNKS, 2); + tree = treeFactory.getQueryTree(uri, model); + tree = getFilteredTree(tree); + posTrees.add(tree); + + QueryTree<String> lgg = lggGen.getLGG(posTrees); + System.out.println(lgg.getStringRepresentation()); + } catch (MalformedURLException e) { + e.printStackTrace(); + } + + + } + private QueryTree<String> getFilteredTree(QueryTree<String> tree){ nodeId = 0; QueryTree<String> filteredTree = createFilteredTree(tree); 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-18 21:04:16 UTC (rev 2624) +++ trunk/sparql-query-generator/src/main/java/org/dllearner/sparqlquerygenerator/datastructures/impl/QueryTreeImpl.java 2011-01-19 09:15:03 UTC (rev 2625) @@ -203,6 +203,7 @@ public int removeChild(QueryTreeImpl<N> child) { int pos = children.indexOf(child); children.remove(child); + edge2ChildrenMap.get(child2EdgeMap.get(child)).remove(child); child.parent = null; return pos; } @@ -257,7 +258,7 @@ if(children == null){ children = new ArrayList<QueryTree<N>>(); } - return children; + return new ArrayList<QueryTree<N>>(children); } public int getChildCount() { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |