From: <lor...@us...> - 2010-12-17 12:14:37
|
Revision: 2569 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=2569&view=rev Author: lorenz_b Date: 2010-12-17 12:14:30 +0000 (Fri, 17 Dec 2010) Log Message: ----------- Cleaned up logging. Modified Paths: -------------- trunk/autosparql/src/main/java/org/dllearner/autosparql/server/ExampleFinder.java trunk/autosparql/src/main/java/org/dllearner/autosparql/server/Generalisation.java trunk/autosparql/src/main/java/org/dllearner/autosparql/server/evaluation/SingleQueryEvaluationScript.java 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/nbr/strategy/GreedyNBRStrategy.java Modified: trunk/autosparql/src/main/java/org/dllearner/autosparql/server/ExampleFinder.java =================================================================== --- trunk/autosparql/src/main/java/org/dllearner/autosparql/server/ExampleFinder.java 2010-12-16 13:02:08 UTC (rev 2568) +++ trunk/autosparql/src/main/java/org/dllearner/autosparql/server/ExampleFinder.java 2010-12-17 12:14:30 UTC (rev 2569) @@ -68,6 +68,9 @@ public Example findSimilarExample(List<String> posExamples, List<String> negExamples) throws SPARQLQueryException{ + logger.info("Searching similiar example"); + logger.info("Positive examples: " + posExamples); + logger.info("Negative examples: " + negExamples); this.posExamples = posExamples; this.negExamples = negExamples; @@ -77,21 +80,24 @@ Model model; QueryTree<String> queryTree; for(String resource : posExamples){ - logger.info("Fetching model for resource: " + resource); +// logger.info("Fetching model for resource: " + resource); model = modelCache.getModel(resource); queryTree = queryTreeCache.getQueryTree(resource, model); posExampleTrees.add(queryTree); } for(String resource : negExamples){ - logger.info("Fetching model for resource: " + resource); +// logger.info("Fetching model for resource: " + resource); model = modelCache.getModel(resource); queryTree = queryTreeCache.getQueryTree(resource, model); negExampleTrees.add(queryTree); } if(posExamples.size() == 1 && negExamples.isEmpty()){ + logger.info("Up to now only 1 positive example is selected. Calling positive generalisation..."); return findExampleByGeneralisation(posExampleTrees.get(0)); } else { + logger.info("There are " + posExamples.size() + " positive examples and " + + negExamples.size() + "negative examples selected. Calling LGG/NBR..."); return findExampleByLGG(posExampleTrees, negExampleTrees); } @@ -138,8 +144,9 @@ private Example findExampleByGeneralisation(QueryTree<String> tree) throws SPARQLQueryException{ if(logger.isInfoEnabled()){ - logger.info("Using generalisation"); - logger.info("Query before generalisation: \n\n" + tree.toSPARQLQueryString(true)); + logger.info("Making positive generalisation..."); + logger.info("Tree before generalisation:\n" + tree.getStringRepresentation()); + logger.info("Query before generalisation:\n" + tree.toSPARQLQueryString(true)); } Generalisation<String> posGen = new Generalisation<String>(); @@ -149,7 +156,8 @@ currentQuery = genTree.toSPARQLQueryString(true); currentQueryTree = genTree; if(logger.isInfoEnabled()){ - logger.info("Query after generalisation: \n\n" + currentQuery); + logger.info("Tree after generalisation:\n" + tree.getStringRepresentation()); + logger.info("Query after generalisation:\n" + currentQuery); } @@ -160,6 +168,9 @@ String result = ""; try { if(testedQueries.contains(currentQuery) && !currentQueryTree.getChildren().isEmpty()){ + if(logger.isInfoEnabled()){ + logger.info("Query was already used before. Calling again positive generalisation..."); + } return findExampleByGeneralisation(currentQueryTree); } else { if(currentQueryTree.getChildren().isEmpty()){ @@ -178,6 +189,9 @@ ResultSetRewindable rs = SparqlQuery.convertJSONtoResultSet(result); String uri; QuerySolution qs; + if(logger.isInfoEnabled()){ + logger.info("Resources in resultset:"); + } while(rs.hasNext()){ qs = rs.next(); uri = qs.getResource("x0").getURI(); @@ -194,7 +208,7 @@ } } if(logger.isInfoEnabled()){ - logger.info("Found no new example. Trying again generalisation..."); + logger.info("The query resultset contains no new example. Calling again generalisation..."); } return findExampleByGeneralisation(genTree); @@ -242,15 +256,14 @@ private Example findExampleByLGG(List<QueryTree<String>> posExamplesTrees, List<QueryTree<String>> negExamplesTrees) throws SPARQLQueryException{ - if(logger.isInfoEnabled()){ - logger.info("USING LGG"); - } if(negExamplesTrees.isEmpty()){ + queryGen.getSPARQLQueries(posExamplesTrees); + QueryTree<String> lgg = queryGen.getLastLGG(); if(logger.isInfoEnabled()){ - logger.info("No negative examples given. Avoiding big queries by GENERALISATION"); + logger.info("No negative examples given."); + logger.info("Computed LGG:\n" + lgg.getStringRepresentation()); + logger.info("Avoiding big queries by calling positive generalisation..."); } - queryGen.getSPARQLQueries(posExamplesTrees); - QueryTree<String> lgg = queryGen.getLastLGG(); return findExampleByGeneralisation(lgg); } @@ -290,16 +303,17 @@ uri = qs.getResource("x0").getURI(); if(!posExamples.contains(uri) && !negExamples.contains(uri)){ currentQuery = queryGen.getCurrentQueryTree().toSPARQLQueryString(); + logger.info("Found new example: " + uri); return getExample(uri); } } if(logger.isInfoEnabled()){ - logger.info("Query result contains no new examples. Trying another query..."); + logger.info("Query resultset contains no new example. Trying another query..."); } } if(logger.isInfoEnabled()){ - logger.info("None of the queries contained a new example."); - logger.info("Making Generalisation..."); + logger.info("None of the tested queries which was not tested before contained a new example."); + logger.info("Making again NBR..."); } // return findExampleByGeneralisation(queryGen.getCurrentQueryTree()); return findExampleByLGG(Collections.singletonList(queryGen.getCurrentQueryTree()), negExamplesTrees); Modified: trunk/autosparql/src/main/java/org/dllearner/autosparql/server/Generalisation.java =================================================================== --- trunk/autosparql/src/main/java/org/dllearner/autosparql/server/Generalisation.java 2010-12-16 13:02:08 UTC (rev 2568) +++ trunk/autosparql/src/main/java/org/dllearner/autosparql/server/Generalisation.java 2010-12-17 12:14:30 UTC (rev 2569) @@ -83,7 +83,7 @@ if(logger.isInfoEnabled()){ logger.info("Pruning tree:"); // logger.info(tree.getStringRepresentation()); - logger.info("Number of triple pattern: " + ((QueryTreeImpl<N>)tree).getTriplePatternCount()); +// logger.info("Number of triple pattern: " + ((QueryTreeImpl<N>)tree).getTriplePatternCount()); // logger.info(((QueryTreeImpl<N>)tree).getSPARQLQueryTree().getStringRepresentation()); } @@ -137,9 +137,9 @@ } level--; } - if(logger.isInfoEnabled()){ - logger.info(tree.getStringRepresentation()); - } +// if(logger.isInfoEnabled()){ +// logger.info("Resulting tree:\n" + tree.getStringRepresentation()); +// } } private List<QueryTree<N>> getLeafsAtLevel(QueryTree<N> tree, int level){ Modified: trunk/autosparql/src/main/java/org/dllearner/autosparql/server/evaluation/SingleQueryEvaluationScript.java =================================================================== --- trunk/autosparql/src/main/java/org/dllearner/autosparql/server/evaluation/SingleQueryEvaluationScript.java 2010-12-16 13:02:08 UTC (rev 2568) +++ trunk/autosparql/src/main/java/org/dllearner/autosparql/server/evaluation/SingleQueryEvaluationScript.java 2010-12-17 12:14:30 UTC (rev 2569) @@ -21,9 +21,13 @@ import org.dllearner.kb.sparql.ExtractionDBCache; import org.dllearner.kb.sparql.SparqlEndpoint; import org.dllearner.kb.sparql.SparqlQuery; +import org.dllearner.sparqlquerygenerator.datastructures.QueryTree; +import org.dllearner.sparqlquerygenerator.datastructures.impl.QueryTreeImpl; +import org.dllearner.sparqlquerygenerator.impl.SPARQLQueryGeneratorCachedImpl; import org.dllearner.sparqlquerygenerator.impl.SPARQLQueryGeneratorImpl; import org.dllearner.sparqlquerygenerator.operations.lgg.LGGGeneratorImpl; import org.dllearner.sparqlquerygenerator.operations.nbr.NBRGeneratorImpl; +import org.dllearner.sparqlquerygenerator.operations.nbr.strategy.GreedyNBRStrategy; import org.dllearner.sparqlquerygenerator.util.ModelGenerator; import com.hp.hpl.jena.query.QuerySolution; @@ -52,15 +56,17 @@ logger.addAppender(fileAppender); logger.setLevel(Level.INFO); Logger.getLogger(ModelGenerator.class).setLevel(Level.OFF); - Logger.getLogger(SPARQLQueryGeneratorImpl.class).setLevel(Level.INFO); + Logger.getLogger(SPARQLQueryGeneratorCachedImpl.class).setLevel(Level.OFF); Logger.getLogger(LGGGeneratorImpl.class).setLevel(Level.OFF); Logger.getLogger(NBRGeneratorImpl.class).setLevel(Level.OFF); Logger.getLogger(Generalisation.class).setLevel(Level.INFO); + Logger.getLogger(GreedyNBRStrategy.class).setLevel(Level.INFO); + Logger.getLogger(ExampleFinder.class).setLevel(Level.INFO); SPARQLEndpointEx endpoint = new SPARQLEndpointEx( - new URL("http://dbpedia.org/sparql"), -// new URL("http://db0.aksw.org:8999/sparql"), +// new URL("http://dbpedia.org/sparql"), + new URL("http://db0.aksw.org:8999/sparql"), Collections.singletonList("http://dbpedia.org"), Collections.<String>emptyList(), null, null, @@ -68,8 +74,13 @@ ExtractionDBCache selectQueriesCache = new ExtractionDBCache("evaluation/select-cache"); ExtractionDBCache constructQueriesCache = new ExtractionDBCache("evaluation/construct-cache"); - String query = "PREFIX owl: <http://www.w3.org/2002/07/owl#> PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX foaf: <http://xmlns.com/foaf/0.1/> PREFIX dc: <http://purl.org/dc/elements/1.1/> PREFIX : <http://dbpedia.org/resource/> PREFIX dbpedia2: <http://dbpedia.org/property/> PREFIX dbpedia: <http://dbpedia.org/> PREFIX skos: <http://www.w3.org/2004/02/skos/core#> " + - "SELECT * WHERE { ?var0 owl:sameAs ?var1. ?var0 rdf:type <http://dbpedia.org/class/yago/State108654360> }"; + String query = ""+ +// "PREFIX owl: <http://www.w3.org/2002/07/owl#> PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX foaf: <http://xmlns.com/foaf/0.1/> PREFIX dc: <http://purl.org/dc/elements/1.1/> PREFIX : <http://dbpedia.org/resource/> PREFIX dbpedia2: <http://dbpedia.org/property/> PREFIX dbpedia: <http://dbpedia.org/> PREFIX skos: <http://www.w3.org/2004/02/skos/core#> " + +// "SELECT * WHERE { ?var0 owl:sameAs ?var1. ?var0 rdf:type <http://dbpedia.org/class/yago/State108654360> }"; +// "SELECT ?var0 WHERE { ?var0 skos:subject <http://dbpedia.org/resource/Category:French_films> }"; +// "PREFIX dbpedia2: <http://dbpedia.org/property/> PREFIX dbpo: <http://dbpedia.org/ontology/> SELECT DISTINCT ?var0 WHERE { ?var0 a dbpo:Band . ?var0 dbpedia2:genre <http://dbpedia.org/resource/Hard_rock> . ?var0 dbpedia2:genre <http://dbpedia.org/resource/Heavy_metal_music> . ?var0 dbpedia2:genre <http://dbpedia.org/resource/Blues-rock> . }"; + "PREFIX dbpedia: <http://dbpedia.org/resource/> PREFIX dbo: <http://dbpedia.org/ontology/> SELECT DISTINCT ?var0 ?label ?homepage ?genre WHERE {?var0 a dbo:Band .?band rdfs:label ?label .OPTIONAL { ?var0 foaf:homepage ?homepage } .?var0 dbo:genre ?genre .?genre dbo:instrument dbpedia:Electric_guitar .?genre dbo:stylisticOrigin dbpedia:Jazz .}"; + com.hp.hpl.jena.query.ResultSet rs; SortedSet<String> resources; QuerySolution qs; @@ -102,7 +113,8 @@ negExamples = new ArrayList<String>(); //we choose the first resource in the set as positive example - String posExample = resources.first(); +// String posExample = resources.first(); + String posExample = "http://dbpedia.org/resource/Foals"; logger.info("Selected " + posExample + " as first positive example."); posExamples.add(posExample); @@ -112,6 +124,13 @@ boolean equivalentQueries = false; do{ nextExample = exampleFinder.findSimilarExample(posExamples, negExamples).getURI(); + learnedQuery = exampleFinder.getCurrentQuery(); + logger.info("Learned query:\n" + learnedQuery); + equivalentQueries = isEquivalentQuery(resources, learnedQuery, endpoint); + logger.info("Original query and learned query are equivalent: " + equivalentQueries); + if(equivalentQueries){ + break; + } logger.info("Next suggested example is " + nextExample); //if the example is contained in the resultset of the query, we add it to the positive examples, //otherwise to the negatives @@ -122,19 +141,18 @@ negExamples.add(nextExample); logger.info("Suggested example is considered as negative example."); } - learnedQuery = exampleFinder.getCurrentQuery(); - logger.info("Learned query:\n" + learnedQuery); - equivalentQueries = isEquivalentQuery(resources, learnedQuery, endpoint); - logger.info("Original query and learned query are equivalent: " + equivalentQueries); + } while(!equivalentQueries); logger.info("Number of examples needed: " + (posExamples.size() + negExamples.size()) + "(+" + posExamples.size() + "/-" + negExamples.size() + ")"); + logger.info(((QueryTreeImpl<String>)exampleFinder.getCurrentQueryTree()).getTriplePatternCount()); } catch (Exception e) { logger.error("Error while learning query ", e); } - + logger.info(MonitorFactory.getTimeMonitor("LGG")); + logger.info(MonitorFactory.getTimeMonitor("Query")); logger.info("Time to compute LGG(total): " + MonitorFactory.getTimeMonitor("LGG").getTotal()); logger.info("Time to compute LGG(avg): " + MonitorFactory.getTimeMonitor("LGG").getAvg()); logger.info("Time to compute LGG(min): " + MonitorFactory.getTimeMonitor("LGG").getMin()); 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 2010-12-16 13:02:08 UTC (rev 2568) +++ trunk/sparql-query-generator/src/main/java/org/dllearner/sparqlquerygenerator/operations/lgg/LGGGeneratorImpl.java 2010-12-17 12:14:30 UTC (rev 2569) @@ -49,7 +49,11 @@ @Override public QueryTree<N> getLGG(QueryTree<N> tree1, QueryTree<N> tree2, boolean learnFilters) { - return computeLGG(tree1, tree2, learnFilters); + Monitor mon = MonitorFactory.getTimeMonitor("LGG"); + mon.start(); + QueryTree<N> lgg = computeLGG(tree1, tree2, learnFilters); + mon.stop(); + return lgg; } @Override @@ -80,7 +84,8 @@ if(trees.size() == 1){ return trees.iterator().next(); } - + Monitor mon = MonitorFactory.getTimeMonitor("LGG"); + mon.start(); QueryTree<N> lgg = computeLGG(treeList.get(0), treeList.get(1), learnFilters); if(logger.isInfoEnabled()){ logger.info("LGG for 1 and 2:\n" + lgg.getStringRepresentation()); @@ -97,8 +102,8 @@ logger.info("LGG = "); logger.info(lgg.getStringRepresentation()); } + mon.stop(); - return lgg; } @@ -109,8 +114,7 @@ logger.debug("and"); logger.debug(tree2.getStringRepresentation()); } - Monitor mon = MonitorFactory.getTimeMonitor("LGG"); - mon.start(); + QueryTree<N> lgg = new QueryTreeImpl<N>(tree1.getUserObject()); // if(!lgg.getUserObject().equals(tree2.getUserObject())){ @@ -183,9 +187,8 @@ } } } - mon.stop(); if(logger.isDebugEnabled()){ - logger.debug("Computed LGG(" + mon.getLastValue() + "ms):"); + logger.debug("Computed LGG:"); logger.debug(lgg.getStringRepresentation()); } return lgg; Modified: trunk/sparql-query-generator/src/main/java/org/dllearner/sparqlquerygenerator/operations/nbr/strategy/GreedyNBRStrategy.java =================================================================== --- trunk/sparql-query-generator/src/main/java/org/dllearner/sparqlquerygenerator/operations/nbr/strategy/GreedyNBRStrategy.java 2010-12-16 13:02:08 UTC (rev 2568) +++ trunk/sparql-query-generator/src/main/java/org/dllearner/sparqlquerygenerator/operations/nbr/strategy/GreedyNBRStrategy.java 2010-12-17 12:14:30 UTC (rev 2569) @@ -48,6 +48,9 @@ @Override public QueryTree<N> computeNBR(QueryTree<N> posExampleTree, List<QueryTree<N>> negExampleTrees) { + if(logger.isInfoEnabled()){ + logger.info("Making NBR..."); + } Monitor mon = MonitorFactory.getTimeMonitor("NBR"); mon.start(); @@ -58,17 +61,43 @@ checkTree(matrix, nbr, negExampleTrees.get(i), i); } - if(logger.isInfoEnabled()){ - logger.info(printTreeWithValues(nbr, matrix)); - } - List<QueryTree<N>> candidates2Remove = new ArrayList<QueryTree<N>>(); for(Entry<QueryTree<N>, List<Integer>> entry : matrix.entrySet()){ if(sum(entry.getValue()) < negExampleTrees.size()/2.0){ candidates2Remove.add(entry.getKey()); } } - removeLeafs(nbr, candidates2Remove); + + if(logger.isInfoEnabled()){ + logger.info("Marked tree:\n" + printTreeWithValues(nbr, matrix)); + logger.info("Removing leafs with rowsum < #negTrees/2"); + } + + QueryTree<N> parent; + for(QueryTree<N> leaf : new ArrayList<QueryTree<N>>(nbr.getLeafs())){ + parent = leaf.getParent(); + if(candidates2Remove.contains(leaf)){ + if(logger.isInfoEnabled()){ + logger.info("Removing edge [" + + leaf.getParent().getUserObject() + "--" + leaf.getParent().getEdge(leaf) + "-->" + leaf.getUserObject() + "]"); + } + leaf.getParent().removeChild((QueryTreeImpl<N>) leaf); + if(logger.isInfoEnabled()){ + logger.info("Checking if removal leads to cover a negative tree..."); + } + for(QueryTree<N> negTree : negExampleTrees){ + if(negTree.isSubsumedBy(nbr)){ + parent.addChild((QueryTreeImpl<N>) leaf); + if(logger.isInfoEnabled()){ + logger.info("Removal of the edge leads to cover a negative tree. Reverting removal."); + } + break; + } + } + } + } + +// removeLeafs(nbr, candidates2Remove); removeEqualEdgesFromRoot(nbr); mon.stop(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |