From: <sk...@us...> - 2008-07-06 12:34:40
|
Revision: 1000 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1000&view=rev Author: sknappe Date: 2008-07-06 05:34:38 -0700 (Sun, 06 Jul 2008) Log Message: ----------- Changed some things to work with the Maipulator and fixed some bugs (the SparqlQueryMaker didn't produce queries without failures at all filter combinations, I changed that) Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/kb/extraction/DBpediaNavigatorManipulator.java trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.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/server/DLLearnerWS.java Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/DBpediaNavigatorManipulator.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/extraction/DBpediaNavigatorManipulator.java 2008-07-06 12:28:50 UTC (rev 999) +++ trunk/src/dl-learner/org/dllearner/kb/extraction/DBpediaNavigatorManipulator.java 2008-07-06 12:34:38 UTC (rev 1000) @@ -71,10 +71,26 @@ public Set<StringTuple> check(Set<StringTuple> tuples, Node node) { Set<StringTuple> toRemove = new HashSet<StringTuple>(); Iterator<StringTuple> it = tuples.iterator(); + float lat=0; + float lng=0; + String clas=""; + StringTuple typeTupel=null; + if (node.uri.toString().equals("http://dbpedia.org/class/custom/City_in_Saxony")) + tuples.add(new StringTuple("http://www.w3.org/2000/01/rdf-schema#subClassOf","http://dbpedia.org/class/yago/City108524735")); while (it.hasNext()) { StringTuple t = (StringTuple) it.next(); + + if (t.a.equals("http://www.w3.org/1999/02/22-rdf-syntax-ns#type")){ + clas=t.b; + typeTupel=t; + } - replacePredicate(t); + if (t.a.equals("http://www.w3.org/2003/01/geo/wgs84_pos#lat")) + lat=Float.parseFloat(t.b.substring(0,t.b.indexOf("^^"))); + if (t.a.equals("http://www.w3.org/2003/01/geo/wgs84_pos#long")) + lng=Float.parseFloat(t.b.substring(0,t.b.indexOf("^^"))); + + /*replacePredicate(t); replaceObject(t); @@ -94,10 +110,16 @@ if (t.a.equals(type) && t.b.equals(thing) && node instanceof InstanceNode) { toRemove.add(t); - } + }*/ } - tuples.removeAll(toRemove); + if (clas.equals("http://dbpedia.org/class/yago/City108524735")){ + if (lat>50&&lat<52&&lng>12&&lng<13){ + tuples.add(new StringTuple("http://www.w3.org/1999/02/22-rdf-syntax-ns#type","http://dbpedia.org/class/custom/City_in_Saxony")); + tuples.remove(typeTupel); + } + } + //tuples.removeAll(toRemove); return tuples; } Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java 2008-07-06 12:28:50 UTC (rev 999) +++ trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java 2008-07-06 12:34:38 UTC (rev 1000) @@ -51,7 +51,7 @@ Set<StringTuple> s = tsq.getTupelForResource(uri); // see Manipulator - m.check(s, this); + s=m.check(s, this); // System.out.println("fffffff"+m); Vector<Node> Nodes = new Vector<Node>(); Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryMaker.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryMaker.java 2008-07-06 12:28:50 UTC (rev 999) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryMaker.java 2008-07-06 12:34:38 UTC (rev 1000) @@ -40,10 +40,13 @@ public String makeSubjectQueryUsingFilters(String subject) { String Filter = internalFilterAssemblySubject(); - String ret = "SELECT * WHERE { " + lineend + "<" + subject + String ret=""; + if (Filter.length()>0) ret = "SELECT * WHERE { " + lineend + "<" + subject + "> ?predicate ?object. " + lineend + "FILTER( " + lineend - + "(" + Filter + ").}"; - // System.out.println(ret); + + Filter + ").}"; + else ret="SELECT * WHERE { " + lineend + "<" + subject + + "> ?predicate ?object}"; + // System.out.println("Query: "+ret); // System.out.println(sparqlQueryType.getPredicatefilterlist().length); return ret; } @@ -89,14 +92,51 @@ private String internalFilterAssemblySubject() { String Filter = ""; - if (!this.sparqlQueryType.isLiterals()) - Filter += "!isLiteral(?object))"; + if (!this.sparqlQueryType.isLiterals()){ + Filter += "(!isLiteral(?object))"; + if (sparqlQueryType.getPredicatefilterlist().size()>0) + Filter += "&&("; + } + else if (sparqlQueryType.getPredicatefilterlist().size()>0) + Filter += "("; + int i=1; for (String p : sparqlQueryType.getPredicatefilterlist()) { - Filter += lineend + filterPredicate(p); + if (this.sparqlQueryType.getMode()=="forbid") + if (!this.sparqlQueryType.isLiterals()||i!=1) + Filter += lineend + filterPredicate(p); + else + Filter += lineend + filterPredicate(p).substring(2); + else if (this.sparqlQueryType.getMode()=="allow") + if (!this.sparqlQueryType.isLiterals()||i!=1) + Filter += lineend + allowPredicate(p); + else + Filter += lineend + allowPredicate(p).substring(2); + i++; } + if (sparqlQueryType.getPredicatefilterlist().size()>0) + Filter += ")"; + + if ((sparqlQueryType.getPredicatefilterlist().size()>0||!this.sparqlQueryType.isLiterals())&&sparqlQueryType.getObjectfilterlist().size()>0) + Filter += "&&("; + else if (sparqlQueryType.getObjectfilterlist().size()>0) + Filter += "("; + i=1; for (String o : sparqlQueryType.getObjectfilterlist()) { - Filter += lineend + filterObject(o); + if (this.sparqlQueryType.getMode()=="forbid") + if (!this.sparqlQueryType.isLiterals()||i!=1) + Filter += lineend + filterObject(o); + else + Filter += lineend + filterObject(o).substring(2); + else if (this.sparqlQueryType.getMode()=="allow") + if (!this.sparqlQueryType.isLiterals()||i!=1) + Filter += lineend + allowObject(o); + else + Filter += lineend + allowObject(o).substring(2); + i++; } + if (sparqlQueryType.getObjectfilterlist().size()>0) + Filter += ")"; + return Filter; } @@ -125,7 +165,15 @@ private static String filterObject(String ns) { return "&&( !regex(str(?object), '" + ns + "') )"; } + + private static String allowPredicate(String ns) { + return "||( regex(str(?predicate), '" + ns + "') )"; + } + private static String allowObject(String ns) { + return "||( regex(str(?object), '" + ns + "') )"; + } + /*private 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 2008-07-06 12:28:50 UTC (rev 999) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryType.java 2008-07-06 12:34:38 UTC (rev 1000) @@ -78,6 +78,8 @@ return YagoSpecialHierarchy(); if (name.equals("TEST")) return test(); + if (name.equals("DBPEDIA-NAVIGATOR")) + return DBpediaNavigatorFilter(); return null; } @@ -111,6 +113,24 @@ return new SparqlQueryType("forbid", obj, pred, false); } + + public static SparqlQueryType DBpediaNavigatorFilter(){ + Set<String> pred = new HashSet<String>(); + pred.add("http://www.w3.org/1999/02/22-rdf-syntax-ns#type"); + pred.add("http://www.w3.org/2000/01/rdf-schema#subClassOf"); + pred.add("http://www.w3.org/2003/01/geo/wgs84_pos#lat"); + pred.add("http://www.w3.org/2003/01/geo/wgs84_pos#long"); + //pred.add("http://dbpedia.org/property/wikipage"); + //pred.add("http://dbpedia.org/property/wikiPageUsesTemplate"); + //pred.add("http://dbpedia.org/property/relatedInstance"); + //pred.add("http://dbpedia.org/property/owner"); + //pred.add("http://dbpedia.org/property/standard"); + + Set<String> obj = new HashSet<String>(); + + return new SparqlQueryType("allow", obj, pred, true); + } + public static SparqlQueryType YagoSpecialHierarchy(){ Set<String> pred = new HashSet<String>(); pred.add("http://www.w3.org/2004/02/skos/core"); Modified: trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java =================================================================== --- trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java 2008-07-06 12:28:50 UTC (rev 999) +++ trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java 2008-07-06 12:34:38 UTC (rev 1000) @@ -675,8 +675,8 @@ SparqlKnowledgeSource ks=(SparqlKnowledgeSource)component; SPARQLTasks task=ks.getSparqlTask(); AutomaticNegativeExampleFinderSPARQL finder=new AutomaticNegativeExampleFinderSPARQL(set,task); - finder.makeNegativeExamplesFromRelatedInstances(set, namespace); - finder.makeNegativeExamplesFromParallelClasses(set, 2); + //finder.makeNegativeExamplesFromRelatedInstances(set, namespace); + finder.makeNegativeExamplesFromParallelClasses(set, 5); SortedSet<String> negExamples=finder.getNegativeExamples(results); return negExamples.toArray(new String[negExamples.size()]); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |