From: <ku...@us...> - 2008-05-20 14:00:26
|
Revision: 904 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=904&view=rev Author: kurzum Date: 2008-05-20 07:00:20 -0700 (Tue, 20 May 2008) Log Message: ----------- added RDFS reasoning to sparql SparqlQueryDescriptionConvertRDFS Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java trunk/src/dl-learner/org/dllearner/scripts/SKOS7030.java trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticExampleFinderSKOSSPARQL.java trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticExampleFinderSPARQL.java Property Changed: ---------------- trunk/src/dl-learner/org/dllearner/kb/sparql/ Modified: trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java 2008-05-19 14:12:01 UTC (rev 903) +++ trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java 2008-05-20 14:00:20 UTC (rev 904) @@ -1082,32 +1082,10 @@ - /*//HACK - public List<String> getBestSolutionsAsKBSyntax(int nrOfSolutions){ - if(nrOfSolutions==0)nrOfSolutions=99999; - List<String> result = new LinkedList<String>(); - for (Description d : solutions) { - - result.add(d.toKBSyntaxString()); - if(result.size()==nrOfSolutions)break; - //if(result.size()==nrOfSolutions)break; - } - if(result.size()==0){ - - for(ExampleBasedNode n : candidatesStable.descendingSet()) { - - result.add(n.getConcept().toKBSyntaxString()); - if(result.size()>=nrOfSolutions) - return result; - - } - } - return result; - }*/ public void printBestSolutions(int nrOfSolutions, boolean showOrderedSolutions){ - //QUALITY + //QUALITY: could be optimized if(!logger.isTraceEnabled()) return; //if(!logger.getLevel().toString().equalsIgnoreCase("TRACE"))return; Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java 2008-05-19 14:12:01 UTC (rev 903) +++ trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java 2008-05-20 14:00:20 UTC (rev 904) @@ -58,7 +58,7 @@ Iterator<StringTuple> it = s.iterator(); while (it.hasNext()) { StringTuple t = (StringTuple) it.next(); - //RBC + //QUALITY: needs proper handling of ressource, could be done one step lower in the onion if(!t.b.startsWith("http:"))continue; // basically : if p is rdf:type then o is a class Property changes on: trunk/src/dl-learner/org/dllearner/kb/sparql ___________________________________________________________________ Name: svn:ignore + SparqlQueryDescriptionConvertRDFS.java Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-05-19 14:12:01 UTC (rev 903) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-05-20 14:00:20 UTC (rev 904) @@ -410,8 +410,7 @@ } public SparqlQueryThreaded sparqlQueryThreaded(String query){ - //RBC - return new SparqlQueryThreaded(new Cache("cachet2"),this.sparqlQuery(query)); + return new SparqlQueryThreaded(new Cache("cache"),this.sparqlQuery(query)); } /* (non-Javadoc) Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java 2008-05-19 14:12:01 UTC (rev 903) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java 2008-05-20 14:00:20 UTC (rev 904) @@ -41,6 +41,7 @@ //private SparqlEndpoint se = null; //private boolean RDFSReasoning = false; + private static int defaultLimit = 5; private static Logger logger = Logger.getLogger(ComponentManager.class); @@ -64,81 +65,94 @@ this.RDFSReasoning = RDFSReasoning; }*/ - public String getSparqlQuery() - { - query="SELECT ?subject\nWHERE {"+query; - query+="}\n"; - query+="LIMIT 5"; + /*private String getSparqlQuery() + { + return getSparqlQuery(defaultLimit); + }*/ + + private String getSparqlQuery(int limit) + { // for old function see below + // it was using the object attribute in a strange way + // QUALITY: what if this function is called several times?? should be private maybe? + String tmpQuery= + "SELECT ?subject \nWHERE {"+query+ + " }\n "; + if(limit>0) tmpQuery+="LIMIT "+limit; + + query = tmpQuery; return query; } - public String getSparqlQuery(int limit) + /* OLD FUNCTION keep for audit + * 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 descriptionKBSyntax) throws ParseException + { + return getSparqlQuery(descriptionKBSyntax, defaultLimit); } - public static String getSparqlSubclassQuery(String description) - { String ret = "SELECT * \n"; - ret+= "WHERE {\n"; - ret+=" ?subject ?predicate <"+description+"> \n"; - ret+="}\n"; - - return ret; + public static String getSparqlQuery(String descriptionKBSyntax, int limit) throws ParseException + { + Description d = KBParser.parseConcept(descriptionKBSyntax); + return getSparqlQuery(d, limit); } - public static String getSparqlQuery(String description) throws ParseException + public static String getSparqlQuery(Description description) { - Description d = KBParser.parseConcept(description); - SparqlQueryDescriptionConvertVisitor visitor=new SparqlQueryDescriptionConvertVisitor(); - d.accept(visitor); - - //TODO ERROR see replace HACK - String ret = visitor.getSparqlQuery(); - while (ret.contains("..")) { - ret = ret.replace("..", "."); - } - return ret; + return getSparqlQuery(description, defaultLimit); } - public static String getSparqlQuery(String description, int limit) throws ParseException - { if(limit==0)limit=99999; - Description d = KBParser.parseConcept(description); + public static String getSparqlQuery(Description description, int limit) + { SparqlQueryDescriptionConvertVisitor visitor=new SparqlQueryDescriptionConvertVisitor(); - d.accept(visitor); - //TODO ERROR see replace HACK + description.accept(visitor); String ret = visitor.getSparqlQuery(limit); + //HACK see replace might be a good solution, needs testing while (ret.contains("..")) { ret = ret.replace("..", "."); } return ret; } + + + + + /** - * includes subclasses, costly function, because subclasses habe to be recieved first. - * @param description - * @param limit + * COMMENT: write some more + * includes subclasses, costly function, because subclasses have to be received first. + * @see conceptRewrite(String descriptionKBSyntax, SparqlEndpoint se, Cache c, + boolean simple) + * @param descriptionKBSyntax @see getSparqlQuery(Description description, int limit) + * @param limit @see getSparqlQuery(Description description, int limit) * @param se + * @param c + * @param simple * @return * @throws ParseException */ - /*public static String getSparqlQueryIncludingSubclasses(String description, int limit, SparqlEndpoint se) throws ParseException - { if(limit==0)limit=99999; - Description d = KBParser.parseConcept(description); - SparqlQueryDescriptionConvertVisitor visitor=new SparqlQueryDescriptionConvertVisitor(se, true); - d.accept(visitor); - return visitor.getSparqlQuery(limit); - }*/ - - public static String getSparqlQuery(Description description) - { - SparqlQueryDescriptionConvertVisitor visitor=new SparqlQueryDescriptionConvertVisitor(); - description.accept(visitor); - return visitor.getSparqlQuery(); + public static String getSparqlQueryIncludingSubclasses(String descriptionKBSyntax, int limit, SparqlEndpoint se,Cache c, boolean simple) throws ParseException + { + String rewritten = SparqlQueryDescriptionConvertRDFS.conceptRewrite(descriptionKBSyntax, se, c, simple); + + return getSparqlQuery(rewritten, limit); + } + + + /** * Used for testing the Sparql Query converter. * @@ -225,8 +239,7 @@ * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.Intersection) */ public void visit(Intersection description) { - //TODO ERROR see replace HACK - + // HACK see replace hacks in other functions logger.trace("Intersection"); description.getChild(0).accept(this); query+="."; @@ -238,6 +251,7 @@ * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.Union) */ public void visit(Union description) { + // HACK see replace hacks in other functions logger.trace("Union"); query+="{"; description.getChild(0).accept(this); Modified: trunk/src/dl-learner/org/dllearner/scripts/SKOS7030.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/SKOS7030.java 2008-05-19 14:12:01 UTC (rev 903) +++ trunk/src/dl-learner/org/dllearner/scripts/SKOS7030.java 2008-05-20 14:00:20 UTC (rev 904) @@ -17,6 +17,7 @@ import org.dllearner.kb.sparql.Cache; import org.dllearner.kb.sparql.SparqlEndpoint; import org.dllearner.kb.sparql.SparqlQuery; +import org.dllearner.kb.sparql.SparqlQueryDescriptionConvertRDFS; import org.dllearner.utilities.datastructures.JenaResultSetConvenience; import org.dllearner.utilities.datastructures.SetManipulation; import org.dllearner.utilities.examples.AutomaticExampleFinderSKOSSPARQL; @@ -200,7 +201,8 @@ for (Description oneConcept : conceptresults) { try{ System.out.println("oneconcept: "+oneConcept); - SortedSet<String> instances = ae.queryConceptAsStringSet(conceptRewrite(oneConcept.toKBSyntaxString()), 200); + String rewritten = SparqlQueryDescriptionConvertRDFS.conceptRewrite(oneConcept.toKBSyntaxString(), se, c, true); + SortedSet<String> instances = ae.queryConceptAsStringSet(rewritten, 200); SortedSet<String> coveredInRest = new TreeSet<String>(); SortedSet<String> possibleNewCandidates = new TreeSet<String>(); SortedSet<String> notCoveredInTotal = new TreeSet<String>(); @@ -326,122 +328,5 @@ } - /** - * - * @param description - */ - public static SortedSet<String> getSubClasses(String description, int limit) { - if(limit==0)limit=10; - ResultSet rs = null; - //System.out.println(description); - SortedSet<String> alreadyQueried = new TreeSet<String>(); - try { - String query = getSparqlSubclassQuery(description.replaceAll("\"", "")); - String JSON = (c.executeSparqlQuery(new SparqlQuery(query, se))); - rs =SparqlQuery.JSONtoResultSet(JSON); - LinkedList<String> remainingClasses = new LinkedList<String>(); - - //make back - //remainingClasses.addAll(getSubclassesFromResultSet(rs)); - - alreadyQueried = new TreeSet<String>(); - alreadyQueried.add(description.replaceAll("\"", "")); - alreadyQueried.addAll(getSubclassesFromResultSet(rs)); - //remainingClasses.addAll(alreadyQueried); - return alreadyQueried; - - //SortedSet<String> remainingClasses = new JenaResultSetConvenience(rs).getStringListForVariable("subject"); - -// while (remainingClasses.size()!=0){ -// SortedSet<String> tmpSet = new TreeSet<String>(); -// String tmp = remainingClasses.removeFirst(); -// //remainingClasses.remove(tmp); -// query = SparqlQueryDescriptionConvertVisitor -// .getSparqlSubclassQuery(tmp); -// alreadyQueried.add(tmp); -// if(alreadyQueried.size()==limit)break; -// JSON = (c.executeSparqlQuery(new SparqlQuery(query, se))); -// rs =SparqlQuery.JSONtoResultSet(JSON); -// tmpSet=getSubclassesFromResultSet(rs); -// for (String string : tmpSet) { -// if(!alreadyQueried.contains(string)) -// remainingClasses.add(string); -// } -// } - //System.out.println(JSON); - - - } catch (Exception e) { - - } - System.out.println("subclasses "+alreadyQueried); - System.out.println("nr of subclasses :"+alreadyQueried.size()); - return alreadyQueried; - } - public static SortedSet<String> getSubclassesFromResultSet(ResultSet rs) - { - SortedSet<String> result = new TreeSet<String>(); - List<ResultBinding> l = ResultSetFormatter.toList(rs); - String p="",s=""; - for (ResultBinding resultBinding : l) { - - s=((resultBinding.get("subject").toString())); - p=((resultBinding.get("predicate").toString())); - if(p.equalsIgnoreCase("http://www.w3.org/2000/01/rdf-schema#subClassOf")){ - result.add(s); - } - } - return result; - } - - public static String getSparqlSubclassQuery(String description) - { String ret = "SELECT * \n"; - ret+= "WHERE {\n"; - ret+=" ?subject ?predicate <"+description+"> \n"; - ret+="}\n"; - - return ret; - } - - public static String conceptRewrite(String description) - { String quote = "\""; - String ret=""; - String currentconcept=""; - int lastPos=0; - SortedSet<String> subclasses=new TreeSet<String>(); - - while ((lastPos=description.lastIndexOf(quote))!=-1){ - ret=description.substring(lastPos+1,description.length())+ret; - description=description.substring(0,lastPos); - //System.out.println(description); - lastPos=description.lastIndexOf(quote); - currentconcept=description.substring(lastPos+1,description.length()); - description=description.substring(0,lastPos); - //replace - //currentconcept="\"blabla\""; - //System.out.println(currentconcept); - - - subclasses = getSubClasses( currentconcept, 0); - - if (subclasses.size()==1)currentconcept="\""+currentconcept+"\""; - else { - LinkedList<Description> nc = new LinkedList<Description>(); - for (String one : subclasses) { - nc.add(new NamedClass(one)); - } - currentconcept=new Union(nc).toKBSyntaxString(); - } - - ret=currentconcept+ret; - //ret+=description; - } - ret=description+ret; - //System.out.println(ret); - return ret; - } - - - } Modified: trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticExampleFinderSKOSSPARQL.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticExampleFinderSKOSSPARQL.java 2008-05-19 14:12:01 UTC (rev 903) +++ trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticExampleFinderSKOSSPARQL.java 2008-05-20 14:00:20 UTC (rev 904) @@ -371,41 +371,9 @@ } - /** - * NOT WORKING - * @param description - */ - public void getSubClasses(String description) { - ResultSet rs = null; - try { - String query = SparqlQueryDescriptionConvertVisitor - .getSparqlSubclassQuery(description.replace("\"", "")); - - rs = new SparqlQuery(query, se).send(); - System.out.println(query); - //System.out.println(SparqlQuery.getAsXMLString(rs)); - System.out.println(rs.getResultVars()); - SortedSet<String> remainingClasses = new JenaResultSetConvenience(rs).getStringListForVariable("subject"); - SortedSet<String> alreadyQueried = new TreeSet<String>(); - alreadyQueried.add(description); - while (remainingClasses.size()!=0){ - String tmp = remainingClasses.first(); - remainingClasses.remove(tmp); - query = SparqlQueryDescriptionConvertVisitor - .getSparqlSubclassQuery(tmp); - alreadyQueried.add(tmp); - rs = new SparqlQuery(query, se).send(); - remainingClasses.addAll(new JenaResultSetConvenience(rs).getStringListForVariable("subject")); - } - //System.out.println(JSON); - System.out.println(alreadyQueried); - - } catch (Exception e) { - e.printStackTrace(); - } - - } + + } Modified: trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticExampleFinderSPARQL.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticExampleFinderSPARQL.java 2008-05-19 14:12:01 UTC (rev 903) +++ trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticExampleFinderSPARQL.java 2008-05-20 14:00:20 UTC (rev 904) @@ -343,41 +343,8 @@ } - /** - * NOT WORKING - * @param description - */ - public void getSubClasses(String description) { - ResultSet rs = null; - try { - String query = SparqlQueryDescriptionConvertVisitor - .getSparqlSubclassQuery(description.replace("\"", "")); - - rs = new SparqlQuery(query, se).send(); - System.out.println(query); - //System.out.println(SparqlQuery.getAsXMLString(rs)); - System.out.println(rs.getResultVars()); - SortedSet<String> remainingClasses = new JenaResultSetConvenience(rs).getStringListForVariable("subject"); - SortedSet<String> alreadyQueried = new TreeSet<String>(); - alreadyQueried.add(description); - while (remainingClasses.size()!=0){ - String tmp = remainingClasses.first(); - remainingClasses.remove(tmp); - query = SparqlQueryDescriptionConvertVisitor - .getSparqlSubclassQuery(tmp); - alreadyQueried.add(tmp); - rs = new SparqlQuery(query, se).send(); - remainingClasses.addAll(new JenaResultSetConvenience(rs).getStringListForVariable("subject")); - } - //System.out.println(JSON); - System.out.println(alreadyQueried); - - } catch (Exception e) { - e.printStackTrace(); - } - - } + } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |