From: <lor...@us...> - 2011-11-05 07:05:30
|
Revision: 3375 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=3375&view=rev Author: lorenz_b Date: 2011-11-05 07:05:23 +0000 (Sat, 05 Nov 2011) Log Message: ----------- Some changes in eval output. Modified Paths: -------------- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/learning/SPARQLTemplateBasedLearner.java trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/Evaluation.java Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/learning/SPARQLTemplateBasedLearner.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/learning/SPARQLTemplateBasedLearner.java 2011-11-04 15:22:54 UTC (rev 3374) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/learning/SPARQLTemplateBasedLearner.java 2011-11-05 07:05:23 UTC (rev 3375) @@ -119,6 +119,8 @@ private Map<Template, Collection<? extends Query>> template2Queries; private Map<Slot, List<String>> slot2URI; + private Set<WeightedQuery> generatedQueries; + private Map<String, String> prefixMap; private Lemmatizer lemmatizer = new LingPipeLemmatizer();// StanfordLemmatizer(); @@ -282,10 +284,10 @@ // sparqlQueryCandidates = getNBestQueryCandidatesForTemplates(template2Queries); //get the weighted query candidates - Set<WeightedQuery> weightedQueries = getWeightedSPARQLQueries(templates); + generatedQueries = getWeightedSPARQLQueries(templates); sparqlQueryCandidates = new ArrayList<Query>(); int i = 0; - for(WeightedQuery wQ : weightedQueries){System.out.println(wQ); + for(WeightedQuery wQ : generatedQueries){System.out.println(wQ); sparqlQueryCandidates.add(wQ.getQuery()); if(i == maxTestedQueries){ break; @@ -302,6 +304,22 @@ } + public Set<WeightedQuery> getGeneratedQueries() { + return generatedQueries; + } + + public Set<WeightedQuery> getGeneratedQueries(int topN) { + Set<WeightedQuery> topNQueries = new TreeSet<WeightedQuery>(); + int max = Math.min(topN, generatedQueries.size()); + for(WeightedQuery wQ : generatedQueries){ + topNQueries.add(wQ); + if(topNQueries.size() == max){ + break; + } + } + return topNQueries; + } + public List<String> getSPARQLQueries() throws NoTemplateFoundException{ logger.info("Generating SPARQL query templates..."); mon.start(); @@ -1253,7 +1271,10 @@ logger.info("Testing query:\n" + query); boolean result = executeAskQuery(query); learnedSPARQLQueries.put(query, result); - if(stopIfQueryResultNotEmpty && result){ +// if(stopIfQueryResultNotEmpty && result){ +// return; +// } + if(stopIfQueryResultNotEmpty){ return; } logger.info("Result: " + result); @@ -1400,7 +1421,8 @@ // String question = "Who/WP was/VBD the/DT wife/NN of/IN president/NN Lincoln/NNP"; // String question = "Who/WP produced/VBD the/DT most/JJS films/NNS"; // String question = "Which/WDT country/NN does/VBZ the/DT Airedale/NNP Terrier/NNP come/VBP from/IN"; - String question = "When/WRB was/VBD Capcom/NNP founded/VBD"; +// String question = "When/WRB was/VBD Capcom/NNP founded/VBD"; + String question = "Is/VBZ there/RB a/DT video/NN game/NN called/VBN Battle/NNP Chess/NNP"; // String question = "Which/WDT software/NN has/VBZ been/VBN developed/VBN by/IN organizations/NNS founded/VBN in/IN California/NNP"; // String question = "How/WRB many/JJ films/NNS did/VBD Leonardo/NNP DiCaprio/NNP star/VB in/IN"; // String question = "Which/WDT music/NN albums/NNS contain/VBP the/DT song/NN Last/NNP Christmas/NNP"; Modified: trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/Evaluation.java =================================================================== --- trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/Evaluation.java 2011-11-04 15:22:54 UTC (rev 3374) +++ trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/Evaluation.java 2011-11-05 07:05:23 UTC (rev 3375) @@ -37,8 +37,10 @@ import org.dllearner.algorithm.tbsl.learning.NoTemplateFoundException; import org.dllearner.algorithm.tbsl.learning.SPARQLTemplateBasedLearner; import org.dllearner.algorithm.tbsl.sparql.Query; +import org.dllearner.algorithm.tbsl.sparql.SPARQL_Prefix; import org.dllearner.algorithm.tbsl.sparql.Slot; import org.dllearner.algorithm.tbsl.sparql.Template; +import org.dllearner.algorithm.tbsl.sparql.WeightedQuery; import org.dllearner.algorithm.tbsl.util.LatexWriter; import org.dllearner.kb.sparql.ExtractionDBCache; import org.dllearner.kb.sparql.SparqlEndpoint; @@ -49,8 +51,10 @@ import org.w3c.dom.NodeList; import org.xml.sax.SAXException; +import com.hp.hpl.jena.query.QueryFactory; import com.hp.hpl.jena.query.QuerySolution; import com.hp.hpl.jena.query.ResultSet; +import com.hp.hpl.jena.query.Syntax; import com.hp.hpl.jena.rdf.model.RDFNode; import com.hp.hpl.jena.sparql.engine.http.QueryEngineHTTP; import com.hp.hpl.jena.sparql.vocabulary.FOAF; @@ -369,32 +373,34 @@ latex.endEnumeration(); //get the generated SPARQL query candidates - Map<Template, Collection<? extends Query>> template2Queries = stbl.getTemplates2SPARQLQueries(); + Set<WeightedQuery> generatedQueries = stbl.getGeneratedQueries(15); //write generated queries subsection - latex.beginSubsection("Top " + topN2Print + " generated queries per template"); - int k = 1; - List<Query> queries; - for(Template t : templates){ - latex.beginSubSubsection("Template " + k); - queries = new ArrayList<Query>(template2Queries.get(t)); - if(!queries.isEmpty()){ - latex.beginEnumeration(); - } - //print top n queries to latex file - int max = Math.min(topN2Print, queries.size()); - for(int j = 0; j < max; j++){ + latex.beginSubsection("Top " + 15 + " generated queries"); + if(!generatedQueries.isEmpty()){ + latex.beginEnumeration(); + for(WeightedQuery wQ : generatedQueries){ latex.beginEnumerationItem(); - latex.addListing(queries.get(j).toString()); + com.hp.hpl.jena.query.Query q = QueryFactory.create(wQ.getQuery().toString()); + if(q.toString().contains("http://dbpedia.org/property/")){ + q.setPrefix("dbp", "http://dbpedia.org/property/"); + } + if(q.toString().contains("http://dbpedia.org/ontology/")){ + q.setPrefix("dbo", "http://dbpedia.org/ontology/"); + } + if(q.toString().contains("http://dbpedia.org/resource/")){ + q.setPrefix("dbr", "http://dbpedia.org/resource/"); + } + String queryString = q.toString(); + String requestURL = new QueryEngineHTTP(endpoint.getURL().toString(), queryString).toString(); +// System.out.println(requestURL); + queryString = queryString + "\n" + "Score(" + wQ.getScore() + ")"; + latex.addListing(queryString); latex.endEnumerationItem(); } - if(!queries.isEmpty()){ - latex.endEnumeration(); - } - k++; + latex.endEnumeration(); } - //get the URIs for each template slot latex.beginSubsection("Covered entities"); Map<Slot, List<String>> slot2URIsMap = stbl.getSlot2URIs(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |