From: <ku...@us...> - 2007-12-08 18:46:58
|
Revision: 331 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=331&view=rev Author: kurzum Date: 2007-12-08 10:46:56 -0800 (Sat, 08 Dec 2007) Log Message: ----------- some code changes mainly needed for role learning Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/kb/SparqlEndpointRestructured.java trunk/src/dl-learner/org/dllearner/kb/sparql/Manager.java trunk/src/dl-learner/org/dllearner/kb/sparql/PredefinedEndpoint.java trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryMaker.java trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryType.java trunk/src/dl-learner/org/dllearner/kb/sparql/TypedSparqlQuery.java Modified: trunk/src/dl-learner/org/dllearner/kb/SparqlEndpointRestructured.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/SparqlEndpointRestructured.java 2007-12-05 16:18:15 UTC (rev 330) +++ trunk/src/dl-learner/org/dllearner/kb/SparqlEndpointRestructured.java 2007-12-08 18:46:56 UTC (rev 331) @@ -84,7 +84,8 @@ private boolean learnDomain = false; private boolean learnRange = false; - private String role; + private int numberOfInstancesUsedForRoleLearning=40; + private String role=""; private String blankNodeIdentifier = "bnode"; LinkedList<StringTuple> URIParameters = new LinkedList<StringTuple>(); @@ -170,8 +171,10 @@ options.add(new StringTupleListConfigOption("replacePredicate", "rule for replacing predicates")); options.add(new StringTupleListConfigOption("replaceObject", "rule for replacing predicates")); options.add(new IntegerConfigOption("breakSuperClassRetrievalAfter", "stops a cyclic hierarchy after specified number of classes")); + options.add(new IntegerConfigOption("numberOfInstancesUsedForRoleLearning", "")); + return options; } @@ -230,6 +233,8 @@ replaceObject = (LinkedList)entry.getValue(); }else if (option.equals("breakSuperClassRetrievalAfter")) { breakSuperClassRetrievalAfter = (Integer) entry.getValue(); + }else if (option.equals("numberOfInstancesUsedForRoleLearning")) { + numberOfInstancesUsedForRoleLearning = (Integer) entry.getValue(); } } @@ -279,12 +284,12 @@ // used to learn a domain of a role if (learnDomain || learnRange) { Set<String> pos=new HashSet<String>(); - Set<String> neg=new HashSet<String>(); + //Set<String> neg=new HashSet<String>(); if(learnDomain){ pos = m.getDomainInstancesForRole(role); - neg = m.getRangeInstancesForRole(role); + //neg = m.getRangeInstancesForRole(role); }else if(learnRange){ - neg = m.getDomainInstancesForRole(role); + //neg = m.getDomainInstancesForRole(role); pos = m.getRangeInstancesForRole(role); } //choose 30 @@ -293,29 +298,29 @@ Set<String> tmp=new HashSet<String>(); for(String one:pos){ tmp.add(one); - if(tmp.size()>=5)break; + if(tmp.size()>=numberOfInstancesUsedForRoleLearning)break; } pos=tmp; - System.out.println(pos.size()); + System.out.println("Instances used: "+pos.size()); - tmp=new HashSet<String>(); + /*tmp=new HashSet<String>(); for(String one:neg){ tmp.add(one); if(tmp.size()>=5)break; } - neg=tmp; + neg=tmp;*/ instances=new HashSet<String>(); - instances.addAll( pos); + instances.addAll(pos); - instances.addAll(neg); + //instances.addAll(neg); for(String one:pos){ System.out.println("+\""+one+"\""); } - for(String one:neg){ + /*for(String one:neg){ System.out.println("-\""+one+"\""); - } + }*/ /*Random r= new Random(); Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/Manager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/Manager.java 2007-12-05 16:18:15 UTC (rev 330) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/Manager.java 2007-12-08 18:46:56 UTC (rev 331) @@ -52,7 +52,7 @@ } catch (Exception e) { e.printStackTrace(); } - Set<StringTuple> t = this.typedSparqlQuery.getTupelsForRole(u); + Set<StringTuple> t = this.typedSparqlQuery.getTupelsForRole(u, true); Set<String> ret = new HashSet<String>(); for (StringTuple one : t) { @@ -68,7 +68,7 @@ } catch (Exception e) { e.printStackTrace(); } - Set<StringTuple> t = this.typedSparqlQuery.getTupelsForRole(u); + Set<StringTuple> t = this.typedSparqlQuery.getTupelsForRole(u,false); Set<String> ret = new HashSet<String>(); for (StringTuple one : t) { Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/PredefinedEndpoint.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/PredefinedEndpoint.java 2007-12-05 16:18:15 UTC (rev 330) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/PredefinedEndpoint.java 2007-12-08 18:46:56 UTC (rev 331) @@ -32,13 +32,13 @@ case 2: return localJoseki(); case 3: - return worldFactBook(); - case 4: return govTrack(); + case 4: + return revyu(); case 5: - return revyu(); - case 6: return myopenlink(); + case 6: + return worldFactBook(); } return null; } @@ -66,7 +66,7 @@ } catch (Exception e) { e.printStackTrace(); } - return new SpecificSparqlEndpoint(u, "localost", m); + return new SpecificSparqlEndpoint(u, "localhost", m); } public static SpecificSparqlEndpoint worldFactBook() { URL u = null; Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryMaker.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryMaker.java 2007-12-05 16:18:15 UTC (rev 330) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryMaker.java 2007-12-08 18:46:56 UTC (rev 331) @@ -21,7 +21,8 @@ // can assemble sparql queries public class SparqlQueryMaker { - + String lineend="\n"; + boolean print_flag=false; /* can make queries for subject, predicate, object * according to the filter settings * object not yet implemented @@ -35,26 +36,47 @@ } public String makeSubjectQueryUsingFilters(String subject) { - String lineend = "\n"; + String Filter = internalFilterAssemblySubject(); String ret = "SELECT * WHERE { " + lineend + "<" + subject + "> ?predicate ?object. " + lineend + "FILTER( " + lineend + "(" + Filter + ").}"; // System.out.println(ret); + //System.out.println(sparqlQueryType.getPredicatefilterlist().length); return ret; } public String makeRoleQueryUsingFilters(String role) { - String lineend = "\n"; + String Filter = internalFilterAssemblyRole(); - String ret = "SELECT * WHERE { " + lineend + "?subject <" + role + "> ?object. " + lineend + String ret = "SELECT * WHERE { " + lineend + " ?subject <" + role + "> ?object. " + lineend + "FILTER( " + lineend + "(" + Filter + ").}"; // System.out.println(ret); return ret; } + public String makeRoleQueryUsingFilters(String role,boolean domain) { + + String Filter = internalFilterAssemblyRole(); + String ret=""; + if(domain){ + ret = "SELECT * WHERE { " + lineend + + "?subject <" + role + "> ?object; a []. " + lineend + + "FILTER( " + lineend + "(" + Filter + ").}"; + // System.out.println(ret); + }else{ + ret = "SELECT * WHERE { " + lineend + + "?object a [] . " + + "?subject <" + role + "> ?object . " + lineend + + "FILTER( " + lineend + "(" + Filter + ").}"; + + } + //System.out.println(ret); + return ret; + } + private String internalFilterAssemblySubject() { - String lineend = "\n"; + String Filter = ""; if (!this.sparqlQueryType.isLiterals()) Filter += "!isLiteral(?object))"; @@ -68,7 +90,7 @@ } private String internalFilterAssemblyRole() { - String lineend = "\n"; + String Filter = ""; if (!this.sparqlQueryType.isLiterals()) Filter += "!isLiteral(?object))"; @@ -92,4 +114,10 @@ public String filterObject(String ns) { return "&&( !regex(str(?object), '" + ns + "') )"; } + + public void p(String str){ + if(print_flag){ + System.out.println(str); + } + } } Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryType.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryType.java 2007-12-05 16:18:15 UTC (rev 330) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryType.java 2007-12-08 18:46:56 UTC (rev 331) @@ -85,9 +85,11 @@ int i = 0; for (; i < predicatefilterlist.length; i++) { tmp[i] = predicatefilterlist[i]; - + //System.out.println(tmp[i]); } tmp[i] = filter; + predicatefilterlist=tmp; + //System.out.println("added filter: "+filter); } Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/TypedSparqlQuery.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/TypedSparqlQuery.java 2007-12-05 16:18:15 UTC (rev 330) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/TypedSparqlQuery.java 2007-12-08 18:46:56 UTC (rev 331) @@ -36,6 +36,8 @@ // can execute different queries public class TypedSparqlQuery { + boolean print_flag=false; + boolean debug_no_cache=false; private Configuration configuration; // private SparqlHTTPRequest SparqlHTTPRequest; private SparqlQueryMaker sparqlQueryMaker; @@ -68,13 +70,25 @@ return s; } + public Set<StringTuple> getTupelsForRole(URI u,boolean domain) { + // getQuery + String sparql = sparqlQueryMaker.makeRoleQueryUsingFilters(u.toString(),domain); + + Set<StringTuple> s = cachedSparql(u, sparql, "subject", "object"); + // System.out.println(s); + return s; + + } + // uses a cache private Set<StringTuple> cachedSparql(URI u, String sparql, String a, String b) { // check cache String FromCache = cache.get(u.toString(), sparql); - + if(debug_no_cache) { + FromCache=null; + } String xml = null; // if not in cache get it from EndPoint if (FromCache == null) { @@ -84,9 +98,11 @@ // TODO Auto-generated catch block e.printStackTrace(); } - // System.out.println(sparql); + p(sparql); // System.out.println(xml); - cache.put(u.toString(), sparql, xml); + if(!debug_no_cache) { + cache.put(u.toString(), sparql, xml); + } //System.out.print("\n"); } else { xml = FromCache; @@ -134,16 +150,20 @@ } private String sendAndReceiveSPARQL(String sparql) throws IOException { + p("sendAndReceiveSPARQL"); StringBuilder answer = new StringBuilder(); + //sparql="SELECT * WHERE {?a ?b ?c}LIMIT 10"; // String an Sparql-Endpoint schicken HttpURLConnection connection; SpecificSparqlEndpoint se = configuration.getSparqlEndpoint(); - + p("URL: "+se.getURL()); + p("Host: "+se.getHost()); + connection = (HttpURLConnection) se.getURL().openConnection(); connection.setDoOutput(true); - connection.addRequestProperty("Host", se.getHost()); + //connection.addRequestProperty("Host", se.getHost()); connection.addRequestProperty("Connection", "close"); connection .addRequestProperty( @@ -155,7 +175,7 @@ .addRequestProperty( "User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4 Web-Sniffer/1.0.24"); - + OutputStream os = connection.getOutputStream(); OutputStreamWriter osw = new OutputStreamWriter(os); @@ -167,9 +187,9 @@ FullURI += "" + URLEncoder.encode(element, "UTF-8") + "=" + URLEncoder.encode(se.getParameters().get(element), "UTF-8") + "&"; } - // System.out.println(FullURI); + FullURI += "" + se.getHasQueryParameter() + "=" + URLEncoder.encode(sparql, "UTF-8"); - + p(FullURI); osw.write(FullURI); osw.close(); @@ -186,8 +206,13 @@ } while (line != null); br.close(); - + p(answer.toString()); return answer.toString(); } + public void p(String str){ + if(print_flag){ + System.out.println(str); + } + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |