From: <ku...@us...> - 2008-04-21 20:21:41
|
Revision: 805 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=805&view=rev Author: kurzum Date: 2008-04-21 13:21:36 -0700 (Mon, 21 Apr 2008) Log Message: ----------- finished script for automatic example choice Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java trunk/src/dl-learner/org/dllearner/test/SPARQLPreparation.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/utilities/JenaResultSetConvenience.java Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java 2008-04-21 19:55:38 UTC (rev 804) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java 2008-04-21 20:21:36 UTC (rev 805) @@ -58,6 +58,14 @@ return query; } + public String getSparqlQuery(int limit) + { if(limit==0)limit=99999; + query="SELECT ?subject\nWHERE {"+query; + query+="}\n"; + query+="LIMIT "+limit; + return query; + } + public static String getSparqlQuery(String description) throws ParseException { Description d = KBParser.parseConcept(description); @@ -66,6 +74,14 @@ return visitor.getSparqlQuery(); } + public static String getSparqlQuery(String description, int limit) throws ParseException + { if(limit==0)limit=99999; + Description d = KBParser.parseConcept(description); + SparqlQueryDescriptionConvertVisitor visitor=new SparqlQueryDescriptionConvertVisitor(); + d.accept(visitor); + return visitor.getSparqlQuery(limit); + } + public static String getSparqlQuery(Description description) { SparqlQueryDescriptionConvertVisitor visitor=new SparqlQueryDescriptionConvertVisitor(); Modified: trunk/src/dl-learner/org/dllearner/test/SPARQLPreparation.java =================================================================== --- trunk/src/dl-learner/org/dllearner/test/SPARQLPreparation.java 2008-04-21 19:55:38 UTC (rev 804) +++ trunk/src/dl-learner/org/dllearner/test/SPARQLPreparation.java 2008-04-21 20:21:36 UTC (rev 805) @@ -1,6 +1,6 @@ package org.dllearner.test; -import java.util.HashMap; +import java.util.Random; import java.util.SortedSet; import java.util.TreeSet; @@ -8,68 +8,144 @@ import org.dllearner.kb.sparql.SparqlQuery; import org.dllearner.kb.sparql.SparqlQueryDescriptionConvertVisitor; import org.dllearner.kb.sparql.configuration.SparqlEndpoint; -import org.dllearner.parser.ParseException; +import org.dllearner.utilities.JenaResultSetConvenience; +import org.dllearner.utilities.SimpleClock; import com.hp.hpl.jena.query.ResultSet; public class SPARQLPreparation { static Cache c; + static SparqlEndpoint se; + /** * @param args */ public static void main(String[] args) { + init(); try { + SimpleClock sc=new SimpleClock(); SortedSet<String> concepts = new TreeSet<String>(); - HashMap<String,ResultSet> result = new HashMap<String,ResultSet>(); - HashMap<String,String> result2 = new HashMap<String,String>(); + //concepts.add("\"http://dbpedia.org/class/yago/Person100007846\""); + concepts.add("\"http://dbpedia.org/class/yago/FieldMarshal110086821\""); + SortedSet<String> posExamples = new TreeSet<String>(); + SortedSet<String> negExamples = new TreeSet<String>(); + //HashMap<String, ResultSet> result = new HashMap<String, ResultSet>(); + //HashMap<String, String> result2 = new HashMap<String, String>(); - SparqlQueryDescriptionConvertVisitor.debug_flag=false; - c=new Cache("cache"); - String conj="(\"http://dbpedia.org/class/yago/Person100007846\" AND \"http://dbpedia.org/class/yago/Head110162991\")"; + //System.out.println(concepts.first()); + posExamples = new JenaResultSetConvenience(queryConcept(concepts.first(),0)) + .getStringListForVariable("subject"); + + for (String string : posExamples) { + negExamples.addAll( getObjects(string)); + //if(neg.size()>=1)System.out.println(neg); + } + /*for (String string2 : negExamples) { + if(posExamples.contains(string2)){ + System.out.println(string2); + negExamples.remove(string2); + }; + }*/ + System.out.println(negExamples.size()); + negExamples.removeAll(posExamples); - concepts.add("EXISTS \"http://dbpedia.org/property/disambiguates\".TOP"); - concepts.add("EXISTS \"http://dbpedia.org/property/successor\".\"http://dbpedia.org/class/yago/Person100007846\""); - concepts.add("EXISTS \"http://dbpedia.org/property/successor\"."+conj); - //concepts.add("ALL \"http://dbpedia.org/property/disambiguates\".TOP"); - //concepts.add("ALL \"http://dbpedia.org/property/successor\".\"http://dbpedia.org/class/yago/Person100007846\""); - concepts.add("\"http://dbpedia.org/class/yago/Person100007846\""); - concepts.add(conj); - concepts.add("(\"http://dbpedia.org/class/yago/Person100007846\" OR \"http://dbpedia.org/class/yago/Head110162991\")"); + negExamples=shrink(negExamples,posExamples.size()*2); + //System.out.println(posExamples.first())); + System.out.println(posExamples.size()); + System.out.println(negExamples.size()); + sc.printAndSet("Finished"); + } catch (Exception e) { + e.printStackTrace(); + + } + + } + + /*************************************************************************** + * *********************OLDCODE String + * conj="(\"http://dbpedia.org/class/yago/Person100007846\" AND + * \"http://dbpedia.org/class/yago/Head110162991\")"; + * + * + * concepts.add("EXISTS \"http://dbpedia.org/property/disambiguates\".TOP"); + * concepts.add("EXISTS + * \"http://dbpedia.org/property/successor\".\"http://dbpedia.org/class/yago/Person100007846\""); + * concepts.add("EXISTS \"http://dbpedia.org/property/successor\"."+conj); + * //concepts.add("ALL \"http://dbpedia.org/property/disambiguates\".TOP"); + * //concepts.add("ALL + * \"http://dbpedia.org/property/successor\".\"http://dbpedia.org/class/yago/Person100007846\""); + * concepts.add("\"http://dbpedia.org/class/yago/Person100007846\""); + * concepts.add(conj); + * concepts.add("(\"http://dbpedia.org/class/yago/Person100007846\" OR + * \"http://dbpedia.org/class/yago/Head110162991\")"); + * + * //concepts.add("NOT \"http://dbpedia.org/class/yago/Person100007846\""); + * + * for (String kbsyntax : concepts) { + * result.put(kbsyntax,queryConcept(kbsyntax)); } + * System.out.println("************************"); for (String string : + * result.keySet()) { System.out.println("KBSyntayString: "+string); + * System.out.println("Query:\n"+result.get(string).hasNext()); + * System.out.println("************************"); } + **************************************************************************/ + + static SortedSet<String> getObjects(String subject) { + // SortedSet<String> result = new TreeSet<String>(); + + String query = "SELECT * WHERE { \n" + "<" + subject + "> " + "?p ?o. \n" + + "FILTER (REGEX(str(?o), 'http://dbpedia.org/resource/')).\n" + + "FILTER (!REGEX(str(?p), 'http://www.w3.org/2004/02/skos'))\n" + + "}"; + //System.out.println(query); + String JSON = (c.executeSparqlQuery(new SparqlQuery(query, se))); + //System.out.println(JSON); + ResultSet rs =SparqlQuery.JSONtoResultSet(JSON); + JenaResultSetConvenience rsc = new JenaResultSetConvenience(rs); + return rsc.getStringListForVariable("o"); + } + + public static ResultSet queryConcept(String concept,int limit) { + ResultSet rs = null; + try { + String query = SparqlQueryDescriptionConvertVisitor + .getSparqlQuery(concept,limit); - //concepts.add("NOT \"http://dbpedia.org/class/yago/Person100007846\""); - - for (String kbsyntax : concepts) { - result.put(kbsyntax,queryConcept(kbsyntax)); - } - System.out.println("************************"); - for (String string : result.keySet()) { - System.out.println("KBSyntayString: "+string); - System.out.println("Query:\n"+result.get(string).hasNext()); - System.out.println("************************"); - } - System.out.println("Finished"); + SparqlQuery sq = new SparqlQuery(query, se); + String JSON = c.executeSparqlQuery(sq); + //System.out.println(JSON); + rs = SparqlQuery.JSONtoResultSet(JSON); + } catch (Exception e) { - // TODO Auto-generated catch block e.printStackTrace(); + } + return rs; } + public static void init() { + SparqlQueryDescriptionConvertVisitor.debug_flag = false; + c = new Cache("cache"); + se = SparqlEndpoint.dbpediaEndpoint(); + } - public static ResultSet queryConcept(String concept){ - ResultSet rs =null; - try{ - String query = SparqlQueryDescriptionConvertVisitor.getSparqlQuery(concept); - SparqlQuery sq= new SparqlQuery(query,SparqlEndpoint.dbpediaEndpoint()); - String JSON = c.executeSparqlQuery(sq); + public static SortedSet<String> shrink(SortedSet<String> s, int limit) { + SortedSet<String> ret = new TreeSet<String>(); + Random r = new Random(); + double treshold = ((double)limit)/s.size(); + //System.out.println("treshold"+howmany); + //System.out.println("treshold"+allRetrieved.size()); + System.out.println("treshold"+treshold); - rs= SparqlQuery.JSONtoResultSet(JSON); - - }catch (Exception e) {e.printStackTrace();} - - return rs; + for (String oneInd : s) { + if(r.nextDouble()<treshold) { + ret.add(oneInd); + + } + } + return ret; } - + } Added: trunk/src/dl-learner/org/dllearner/utilities/JenaResultSetConvenience.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/JenaResultSetConvenience.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/utilities/JenaResultSetConvenience.java 2008-04-21 20:21:36 UTC (rev 805) @@ -0,0 +1,36 @@ +package org.dllearner.utilities; + +import java.util.List; +import java.util.SortedSet; +import java.util.TreeSet; + +import com.hp.hpl.jena.query.ResultSet; +import com.hp.hpl.jena.query.ResultSetFormatter; +import com.hp.hpl.jena.sparql.core.ResultBinding; + +public class JenaResultSetConvenience { + ResultSet rs; + + public JenaResultSetConvenience(ResultSet rs) { + super(); + this.rs = rs; + } + + @SuppressWarnings("unchecked") + public SortedSet<String> getStringListForVariable(String var){ + SortedSet<String> result = new TreeSet<String>(); + + List<ResultBinding> l = ResultSetFormatter.toList(this.rs); + + for (ResultBinding resultBinding : l) { + + result.add(resultBinding.get(var).toString()); + + } + + return result; + + } + + +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |