From: <jen...@us...> - 2007-12-03 18:13:21
|
Revision: 318 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=318&view=rev Author: jenslehmann Date: 2007-12-03 10:13:19 -0800 (Mon, 03 Dec 2007) Log Message: ----------- started list of string tuples as config option Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/core/config/StringSetConfigOption.java trunk/src/dl-learner/org/dllearner/kb/sparql/ClassNode.java trunk/src/dl-learner/org/dllearner/kb/sparql/InstanceNode.java trunk/src/dl-learner/org/dllearner/kb/sparql/Manager.java trunk/src/dl-learner/org/dllearner/kb/sparql/Manipulator.java trunk/src/dl-learner/org/dllearner/kb/sparql/PropertyNode.java trunk/src/dl-learner/org/dllearner/kb/sparql/TypedSparqlQuery.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/core/config/StringTupleListConfigOption.java trunk/src/dl-learner/org/dllearner/utilities/StringTuple.java Removed Paths: ------------- trunk/src/dl-learner/org/dllearner/kb/sparql/Tupel.java Modified: trunk/src/dl-learner/org/dllearner/core/config/StringSetConfigOption.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/config/StringSetConfigOption.java 2007-12-03 17:58:20 UTC (rev 317) +++ trunk/src/dl-learner/org/dllearner/core/config/StringSetConfigOption.java 2007-12-03 18:13:19 UTC (rev 318) @@ -23,6 +23,8 @@ /** + * A set of strings. + * * @author Jens Lehmann * */ Added: trunk/src/dl-learner/org/dllearner/core/config/StringTupleListConfigOption.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/config/StringTupleListConfigOption.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/core/config/StringTupleListConfigOption.java 2007-12-03 18:13:19 UTC (rev 318) @@ -0,0 +1,67 @@ +/** + * Copyright (C) 2007, Jens Lehmann + * + * This file is part of DL-Learner. + * + * DL-Learner is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * DL-Learner is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package org.dllearner.core.config; + +import java.util.List; + +import org.dllearner.utilities.StringTuple; + +/** + * A list if string tuples, for instance for specifying several + * parameters or replacement rules. + * + * @author Jens Lehmann + */ +public class StringTupleListConfigOption extends ConfigOption<List<StringTuple>> { + + public StringTupleListConfigOption(String name, String description) { + this(name, description, null); + } + + public StringTupleListConfigOption(String name, String description, List<StringTuple> defaultValue) { + super(name, description, defaultValue); + } + + /* (non-Javadoc) + * @see org.dllearner.core.config.ConfigOption#checkType(java.lang.Object) + */ + @Override + public boolean checkType(Object object) { + if(!(object instanceof List)) + return false; + + List<?> set = (List<?>) object; + for(Object element : set) { + if(!(element instanceof StringTuple)) + return false; + } + + return true; + } + + /* (non-Javadoc) + * @see org.dllearner.core.config.ConfigOption#isValidValue(java.lang.Object) + */ + @Override + public boolean isValidValue(List<StringTuple> value) { + return true; + } + +} Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/ClassNode.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/ClassNode.java 2007-12-03 17:58:20 UTC (rev 317) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/ClassNode.java 2007-12-03 18:13:19 UTC (rev 318) @@ -25,6 +25,8 @@ import java.util.Set; import java.util.Vector; +import org.dllearner.utilities.StringTuple; + // is a node in the graph that is a class public class ClassNode extends Node { Set<PropertyNode> properties = new HashSet<PropertyNode>(); @@ -36,14 +38,14 @@ @Override public Vector<Node> expand(TypedSparqlQuery tsq, Manipulator m) { - Set<Tupel> s = tsq.query(this.uri); + Set<StringTuple> s = tsq.query(this.uri); s = m.check(s, this); Vector<Node> Nodes = new Vector<Node>(); // Manipulation - Iterator<Tupel> it = s.iterator(); + Iterator<StringTuple> it = s.iterator(); while (it.hasNext()) { - Tupel t = (Tupel) it.next(); + StringTuple t = (StringTuple) it.next(); try { if (t.a.equals(m.type) || t.a.equals(m.subclass)) { ClassNode tmp = new ClassNode(new URI(t.b)); Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/InstanceNode.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/InstanceNode.java 2007-12-03 17:58:20 UTC (rev 317) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/InstanceNode.java 2007-12-03 18:13:19 UTC (rev 318) @@ -25,11 +25,13 @@ import java.util.Set; import java.util.Vector; +import org.dllearner.utilities.StringTuple; + // a node in the graph that is an instance public class InstanceNode extends Node { Set<ClassNode> classes = new HashSet<ClassNode>(); - Set<Tupel> datatypes = new HashSet<Tupel>(); + Set<StringTuple> datatypes = new HashSet<StringTuple>(); Set<PropertyNode> properties = new HashSet<PropertyNode>(); public InstanceNode(URI u) { @@ -41,15 +43,15 @@ @Override public Vector<Node> expand(TypedSparqlQuery tsq, Manipulator m) { - Set<Tupel> s = tsq.query(uri); + Set<StringTuple> s = tsq.query(uri); // Manipulation m.check(s, this); // System.out.println("fffffff"+m); Vector<Node> Nodes = new Vector<Node>(); - Iterator<Tupel> it = s.iterator(); + Iterator<StringTuple> it = s.iterator(); while (it.hasNext()) { - Tupel t = (Tupel) it.next(); + StringTuple t = (StringTuple) it.next(); try { if (t.a.equals(m.type)) { Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/Manager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/Manager.java 2007-12-03 17:58:20 UTC (rev 317) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/Manager.java 2007-12-03 18:13:19 UTC (rev 318) @@ -23,6 +23,8 @@ import java.util.HashSet; import java.util.Set; +import org.dllearner.utilities.StringTuple; + // an object of this class encapsulates everything public class Manager { @@ -47,9 +49,9 @@ } catch (Exception e) { e.printStackTrace(); } - Set<Tupel> t = this.typedSparqlQuery.getTupelsForRole(u); + Set<StringTuple> t = this.typedSparqlQuery.getTupelsForRole(u); Set<String> ret = new HashSet<String>(); - for (Tupel one : t) { + for (StringTuple one : t) { ret.add(one.a); } return ret; @@ -62,9 +64,9 @@ } catch (Exception e) { e.printStackTrace(); } - Set<Tupel> t = this.typedSparqlQuery.getTupelsForRole(u); + Set<StringTuple> t = this.typedSparqlQuery.getTupelsForRole(u); Set<String> ret = new HashSet<String>(); - for (Tupel one : t) { + for (StringTuple one : t) { ret.add(one.b); } return ret; Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/Manipulator.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/Manipulator.java 2007-12-03 17:58:20 UTC (rev 317) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/Manipulator.java 2007-12-03 18:13:19 UTC (rev 318) @@ -23,6 +23,8 @@ import java.util.Iterator; import java.util.Set; +import org.dllearner.utilities.StringTuple; + // used to manipulate retrieved tupels, identify blanknodes, etc. public class Manipulator { public String subclass = "http://www.w3.org/2000/01/rdf-schema#subClassOf"; @@ -46,11 +48,11 @@ } - public Set<Tupel> check(Set<Tupel> s, Node node) { - Set<Tupel> toRemove = new HashSet<Tupel>(); - Iterator<Tupel> it = s.iterator(); + public Set<StringTuple> check(Set<StringTuple> s, Node node) { + Set<StringTuple> toRemove = new HashSet<StringTuple>(); + Iterator<StringTuple> it = s.iterator(); while (it.hasNext()) { - Tupel t = (Tupel) it.next(); + StringTuple t = (StringTuple) it.next(); // System.out.println(t); // all classes with owl:type class if (t.a.equals(type) && t.b.equals(classns) && node instanceof ClassNode) { Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/PropertyNode.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/PropertyNode.java 2007-12-03 17:58:20 UTC (rev 317) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/PropertyNode.java 2007-12-03 18:13:19 UTC (rev 318) @@ -25,6 +25,8 @@ import java.util.Set; import java.util.Vector; +import org.dllearner.utilities.StringTuple; + public class PropertyNode extends Node { private Node a; @@ -47,13 +49,13 @@ @Override public Vector<Node> expand(TypedSparqlQuery tsq, Manipulator m) { - Set<Tupel> s = tsq.query(uri); + Set<StringTuple> s = tsq.query(uri); Vector<Node> Nodes = new Vector<Node>(); // Manipulation - Iterator<Tupel> it = s.iterator(); + Iterator<StringTuple> it = s.iterator(); while (it.hasNext()) { - Tupel t = (Tupel) it.next(); + StringTuple t = (StringTuple) it.next(); try { if (t.a.equals(m.type)) { specialTypes.add(t.b); Deleted: trunk/src/dl-learner/org/dllearner/kb/sparql/Tupel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/Tupel.java 2007-12-03 17:58:20 UTC (rev 317) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/Tupel.java 2007-12-03 18:13:19 UTC (rev 318) @@ -1,45 +0,0 @@ -/** - * Copyright (C) 2007, Sebastian Hellmann - * - * This file is part of DL-Learner. - * - * DL-Learner is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * DL-Learner is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ -package org.dllearner.kb.sparql; - -// a container which can hold two Strings, mainly used as a helper -public class Tupel { - - public String a; - public String b; - - public Tupel(String a, String b) { - this.a = a; - this.b = b; - } - - @Override - public String toString() { - return "<" + a + "|" + b + ">"; - } - - public boolean equals(Tupel t) { - if (a.equals(t.a) && b.equals(t.b)) - return true; - else - return false; - } - -} Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/TypedSparqlQuery.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/TypedSparqlQuery.java 2007-12-03 17:58:20 UTC (rev 317) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/TypedSparqlQuery.java 2007-12-03 18:13:19 UTC (rev 318) @@ -32,6 +32,8 @@ import java.util.Iterator; import java.util.Set; +import org.dllearner.utilities.StringTuple; + // can execute different queries public class TypedSparqlQuery { private Configuration configuration; @@ -47,7 +49,7 @@ this.cache = new Cache("cache"); } - public Set<Tupel> query(URI u) { + public Set<StringTuple> query(URI u) { // getQuery String sparql = sparqlQueryMaker.makeSubjectQueryUsingFilters(u.toString()); @@ -55,18 +57,18 @@ } - public Set<Tupel> getTupelsForRole(URI u) { + public Set<StringTuple> getTupelsForRole(URI u) { // getQuery String sparql = sparqlQueryMaker.makeRoleQueryUsingFilters(u.toString()); - Set<Tupel> s = cachedSparql(u, sparql, "subject", "object"); + Set<StringTuple> s = cachedSparql(u, sparql, "subject", "object"); // System.out.println(s); return s; } - private Set<Tupel> cachedSparql(URI u, String sparql, String a, String b) { + private Set<StringTuple> cachedSparql(URI u, String sparql, String a, String b) { // check cache String FromCache = cache.get(u.toString(), sparql); @@ -91,7 +93,7 @@ // System.out.println(sparql); // System.out.println(xml); // process XML - Set<Tupel> s = processResult(xml, a, b); + Set<StringTuple> s = processResult(xml, a, b); try { System.out.println("retrieved " + s.size() + " tupels\n"); } catch (Exception e) { @@ -99,9 +101,9 @@ return s; } - public Set<Tupel> processResult(String xml, String a, String b) { + public Set<StringTuple> processResult(String xml, String a, String b) { - Set<Tupel> ret = new HashSet<Tupel>(); + Set<StringTuple> ret = new HashSet<StringTuple>(); // TODO if result is empty, catch exceptions String one = "<binding name=\"" + a + "\">"; String two = "<binding name=\"" + b + "\">"; @@ -120,7 +122,7 @@ xml = xml.substring(xml.indexOf(two) + two.length()); xml = xml.substring(xml.indexOf(uridel) + uridel.length()); objtmp = xml.substring(0, xml.indexOf(end)); - ret.add(new Tupel(predtmp, objtmp)); + ret.add(new StringTuple(predtmp, objtmp)); // System.out.println(new Tupel(predtmp,objtmp)); } Added: trunk/src/dl-learner/org/dllearner/utilities/StringTuple.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/StringTuple.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/utilities/StringTuple.java 2007-12-03 18:13:19 UTC (rev 318) @@ -0,0 +1,49 @@ +/** + * Copyright (C) 2007, Jens Lehmann + * + * This file is part of DL-Learner. + * + * DL-Learner is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * DL-Learner is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package org.dllearner.utilities; + +/** + * A container which can hold two Strings, mainly used as a helper. + * + * @author Sebastian Hellmann + */ +public class StringTuple { + + public String a; + public String b; + + public StringTuple(String a, String b) { + this.a = a; + this.b = b; + } + + @Override + public String toString() { + return "<" + a + "|" + b + ">"; + } + + public boolean equals(StringTuple t) { + if (a.equals(t.a) && b.equals(t.b)) + return true; + else + return false; + } + +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jen...@us...> - 2007-12-03 18:29:22
|
Revision: 319 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=319&view=rev Author: jenslehmann Date: 2007-12-03 10:29:20 -0800 (Mon, 03 Dec 2007) Log Message: ----------- started parser support for lists of tuples Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/cli/ConfFileOption.java trunk/src/dl-learner/org/dllearner/parser/ConfParser.java trunk/src/dl-learner/org/dllearner/parser/ConfParserConstants.java trunk/src/dl-learner/org/dllearner/parser/ConfParserTokenManager.java trunk/src/dl-learner/org/dllearner/parser/conf.jj Modified: trunk/src/dl-learner/org/dllearner/cli/ConfFileOption.java =================================================================== --- trunk/src/dl-learner/org/dllearner/cli/ConfFileOption.java 2007-12-03 18:13:19 UTC (rev 318) +++ trunk/src/dl-learner/org/dllearner/cli/ConfFileOption.java 2007-12-03 18:29:20 UTC (rev 319) @@ -20,8 +20,11 @@ package org.dllearner.cli; +import java.util.List; import java.util.Set; +import org.dllearner.utilities.StringTuple; + /** * Represents one configuration option in a conf file, e.g. * refinement.horizontalExpansionFactor = 0.6. @@ -36,12 +39,14 @@ private boolean isDoubleOption = false; private boolean isStringOption = false; private boolean isSetOption = false; + private boolean isListOption = false; private String option; private String subOption; private String stringValue; private int intValue; private double doubleValue; private Set<String> setValues; + private List<StringTuple> listTuples; public ConfFileOption(String option, String value) { this(option, null, value); @@ -91,6 +96,18 @@ setValues = values; } + public ConfFileOption(String option, List<StringTuple> tuples) { + this(option, null, tuples); + containsSubOption = false; + } + + public ConfFileOption(String option, String subOption, List<StringTuple> tuples) { + this.option = option; + this.subOption = subOption; + isListOption = true; + listTuples = tuples; + } + public boolean containsSubOption() { return containsSubOption; } @@ -122,8 +139,10 @@ return doubleValue; else if(isStringOption) return stringValue; + else if(isSetOption) + return setValues; else - return setValues; + return listTuples; } /** @@ -161,6 +180,10 @@ return isSetOption; } + public boolean isListOption() { + return isListOption; + } + @Override public String toString() { String completeOption = "Configuration Option: "; Modified: trunk/src/dl-learner/org/dllearner/parser/ConfParser.java =================================================================== --- trunk/src/dl-learner/org/dllearner/parser/ConfParser.java 2007-12-03 18:13:19 UTC (rev 318) +++ trunk/src/dl-learner/org/dllearner/parser/ConfParser.java 2007-12-03 18:29:20 UTC (rev 319) @@ -239,12 +239,13 @@ } final public ConfFileOption ConfOption() throws ParseException { - boolean containsSubOption=false, isNumeric=false, isDouble=false, isSet=false; - String option="", subOption="", value="", tmp=""; + boolean containsSubOption=false, isNumeric=false, isDouble=false, isSet=false, isList=false; + String option="", subOption="", value="", tmp="", tmp2=""; int number = 0; double numberDouble = 0; ConfFileOption confOption; Set<String> values = new HashSet<String>(); + List<StringTuple> tuples = new LinkedList<StringTuple>(); option = Id(); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case COMMAND_END: @@ -273,8 +274,8 @@ isNumeric=true; isDouble=true; break; default: - jj_la1[4] = jj_gen; - if (jj_2_6(2147483647)) { + jj_la1[8] = jj_gen; + if (jj_2_7(2147483647)) { jj_consume_token(26); jj_consume_token(27); isSet=true; @@ -321,9 +322,89 @@ isSet=true; break; default: - jj_la1[5] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); + jj_la1[9] = jj_gen; + if (jj_2_8(2147483647)) { + jj_consume_token(31); + jj_consume_token(32); + isList=true; + } else { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case 31: + jj_consume_token(31); + label_3: + while (true) { + if (jj_2_6(6)) { + ; + } else { + break label_3; + } + jj_consume_token(29); + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case STRING: + tmp = String(); + break; + case ID: + tmp = Id(); + break; + default: + jj_la1[4] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + jj_consume_token(28); + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case STRING: + tmp2 = String(); + break; + case ID: + tmp2 = Id(); + break; + default: + jj_la1[5] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + jj_consume_token(30); + tuples.add(new StringTuple(tmp,tmp2)); + jj_consume_token(28); + } + jj_consume_token(29); + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case STRING: + tmp = String(); + break; + case ID: + tmp = Id(); + break; + default: + jj_la1[6] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + jj_consume_token(28); + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case STRING: + tmp2 = String(); + break; + case ID: + tmp2 = Id(); + break; + default: + jj_la1[7] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + jj_consume_token(30); + tuples.add(new StringTuple(tmp,tmp2)); + jj_consume_token(32); + isList=true; + break; + default: + jj_la1[10] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + } } } } @@ -364,15 +445,15 @@ jj_consume_token(29); s2 = String(); list.add(s2); - label_3: + label_4: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 28: ; break; default: - jj_la1[6] = jj_gen; - break label_3; + jj_la1[11] = jj_gen; + break label_4; } jj_consume_token(28); s = String(); @@ -407,7 +488,7 @@ name = String(); break; default: - jj_la1[7] = jj_gen; + jj_la1[12] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -489,55 +570,92 @@ finally { jj_save(5, xla); } } - final private boolean jj_3_6() { - if (jj_scan_token(26)) return true; - if (jj_scan_token(27)) return true; + final private boolean jj_2_7(int xla) { + jj_la = xla; jj_lastpos = jj_scanpos = token; + try { return !jj_3_7(); } + catch(LookaheadSuccess ls) { return true; } + finally { jj_save(6, xla); } + } + + final private boolean jj_2_8(int xla) { + jj_la = xla; jj_lastpos = jj_scanpos = token; + try { return !jj_3_8(); } + catch(LookaheadSuccess ls) { return true; } + finally { jj_save(7, xla); } + } + + final private boolean jj_3R_19() { + if (jj_3R_13()) return true; return false; } - final private boolean jj_3_5() { + final private boolean jj_3_6() { + if (jj_scan_token(29)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_14()) { + if (jj_3R_17()) { jj_scanpos = xsp; - if (jj_3R_15()) return true; + if (jj_3R_18()) return true; } if (jj_scan_token(28)) return true; + xsp = jj_scanpos; + if (jj_3R_19()) { + jj_scanpos = xsp; + if (jj_3R_20()) return true; + } + if (jj_scan_token(30)) return true; + if (jj_scan_token(28)) return true; return false; } - final private boolean jj_3R_12() { - if (jj_scan_token(STRING)) return true; + final private boolean jj_3_5() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_15()) { + jj_scanpos = xsp; + if (jj_3R_16()) return true; + } + if (jj_scan_token(28)) return true; return false; } - final private boolean jj_3R_21() { - if (jj_3R_12()) return true; + final private boolean jj_3R_26() { + if (jj_3R_13()) return true; return false; } - final private boolean jj_3R_18() { + final private boolean jj_3R_23() { Token xsp; xsp = jj_scanpos; - if (jj_3R_21()) { + if (jj_3R_26()) { jj_scanpos = xsp; - if (jj_3R_22()) return true; + if (jj_3R_27()) return true; } if (jj_scan_token(28)) return true; return false; } - final private boolean jj_3R_9() { - if (jj_3R_12()) return true; + final private boolean jj_3R_21() { + if (jj_scan_token(NUMBER)) return true; return false; } - final private boolean jj_3R_5() { + final private boolean jj_3R_10() { + if (jj_3R_13()) return true; + return false; + } + + final private boolean jj_3R_6() { if (jj_scan_token(COMMAND_END)) return true; - if (jj_3R_4()) return true; + if (jj_3R_5()) return true; return false; } + final private boolean jj_3R_18() { + if (jj_3R_5()) return true; + return false; + } + final private boolean jj_3_4() { if (jj_scan_token(NEG_EX)) return true; return false; @@ -548,60 +666,58 @@ return false; } - final private boolean jj_3R_11() { + final private boolean jj_3R_12() { if (jj_scan_token(26)) return true; Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3R_18()) { jj_scanpos = xsp; break; } + if (jj_3R_23()) { jj_scanpos = xsp; break; } } xsp = jj_scanpos; - if (jj_3R_19()) { + if (jj_3R_24()) { jj_scanpos = xsp; - if (jj_3R_20()) return true; + if (jj_3R_25()) return true; } if (jj_scan_token(27)) return true; return false; } - final private boolean jj_3R_20() { - if (jj_3R_4()) return true; + final private boolean jj_3R_25() { + if (jj_3R_5()) return true; return false; } - final private boolean jj_3R_16() { - if (jj_scan_token(NUMBER)) return true; - return false; - } - final private boolean jj_3_2() { - if (jj_3R_4()) return true; + if (jj_3R_5()) return true; if (jj_scan_token(29)) return true; - if (jj_3R_12()) return true; + if (jj_3R_13()) return true; Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3R_13()) { jj_scanpos = xsp; break; } + if (jj_3R_14()) { jj_scanpos = xsp; break; } } if (jj_scan_token(30)) return true; if (jj_scan_token(CONF_END)) return true; return false; } - final private boolean jj_3R_15() { - if (jj_3R_4()) return true; + final private boolean jj_3R_16() { + if (jj_3R_5()) return true; return false; } + final private boolean jj_3R_22() { + if (jj_scan_token(DOUBLE)) return true; + return false; + } + final private boolean jj_3_1() { - if (jj_3R_4()) return true; + if (jj_3R_5()) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_5()) jj_scanpos = xsp; + if (jj_3R_6()) jj_scanpos = xsp; if (jj_scan_token(25)) return true; xsp = jj_scanpos; - if (jj_3R_6()) { - jj_scanpos = xsp; if (jj_3R_7()) { jj_scanpos = xsp; if (jj_3R_8()) { @@ -610,7 +726,9 @@ jj_scanpos = xsp; if (jj_3R_10()) { jj_scanpos = xsp; - if (jj_3R_11()) return true; + if (jj_3R_11()) { + jj_scanpos = xsp; + if (jj_3R_12()) return true; } } } @@ -620,58 +738,80 @@ return false; } - final private boolean jj_3R_8() { - if (jj_3R_17()) return true; + final private boolean jj_3R_9() { + if (jj_3R_22()) return true; return false; } - final private boolean jj_3R_10() { + final private boolean jj_3R_11() { if (jj_scan_token(26)) return true; if (jj_scan_token(27)) return true; return false; } - final private boolean jj_3R_19() { - if (jj_3R_12()) return true; + final private boolean jj_3R_24() { + if (jj_3R_13()) return true; return false; } final private boolean jj_3R_17() { - if (jj_scan_token(DOUBLE)) return true; + if (jj_3R_13()) return true; return false; } - final private boolean jj_3R_14() { - if (jj_3R_12()) return true; + final private boolean jj_3R_20() { + if (jj_3R_5()) return true; return false; } - final private boolean jj_3R_7() { - if (jj_3R_16()) return true; + final private boolean jj_3R_5() { + if (jj_scan_token(ID)) return true; return false; } - final private boolean jj_3R_4() { - if (jj_scan_token(ID)) return true; + final private boolean jj_3R_15() { + if (jj_3R_13()) return true; return false; } - final private boolean jj_3R_6() { - if (jj_3R_4()) return true; + final private boolean jj_3R_8() { + if (jj_3R_21()) return true; return false; } - final private boolean jj_3R_22() { - if (jj_3R_4()) return true; + final private boolean jj_3_8() { + if (jj_scan_token(31)) return true; + if (jj_scan_token(32)) return true; return false; } + final private boolean jj_3R_7() { + if (jj_3R_5()) return true; + return false; + } + + final private boolean jj_3R_27() { + if (jj_3R_5()) return true; + return false; + } + final private boolean jj_3R_13() { + if (jj_scan_token(STRING)) return true; + return false; + } + + final private boolean jj_3R_14() { if (jj_scan_token(28)) return true; - if (jj_3R_12()) return true; + if (jj_3R_13()) return true; return false; } + final private boolean jj_3_7() { + if (jj_scan_token(26)) return true; + if (jj_scan_token(27)) return true; + return false; + } + public ConfParserTokenManager token_source; SimpleCharStream jj_input_stream; public Token token, jj_nt; @@ -681,15 +821,20 @@ public boolean lookingAhead = false; private boolean jj_semLA; private int jj_gen; - final private int[] jj_la1 = new int[8]; + final private int[] jj_la1 = new int[13]; static private int[] jj_la1_0; + static private int[] jj_la1_1; static { jj_la1_0(); + jj_la1_1(); } private static void jj_la1_0() { - jj_la1_0 = new int[] {0x1c00,0x100,0x1001000,0x1001000,0x1007000,0x4000000,0x10000000,0x1001000,}; + jj_la1_0 = new int[] {0x1c00,0x100,0x1001000,0x1001000,0x1001000,0x1001000,0x1001000,0x1001000,0x1007000,0x4000000,0x80000000,0x10000000,0x1001000,}; } - final private JJCalls[] jj_2_rtns = new JJCalls[6]; + private static void jj_la1_1() { + jj_la1_1 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,}; + } + final private JJCalls[] jj_2_rtns = new JJCalls[8]; private boolean jj_rescan = false; private int jj_gc = 0; @@ -702,7 +847,7 @@ token = new Token(); jj_ntk = -1; jj_gen = 0; - for (int i = 0; i < 8; i++) jj_la1[i] = -1; + for (int i = 0; i < 13; i++) jj_la1[i] = -1; for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); } @@ -715,7 +860,7 @@ token = new Token(); jj_ntk = -1; jj_gen = 0; - for (int i = 0; i < 8; i++) jj_la1[i] = -1; + for (int i = 0; i < 13; i++) jj_la1[i] = -1; for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); } @@ -725,7 +870,7 @@ token = new Token(); jj_ntk = -1; jj_gen = 0; - for (int i = 0; i < 8; i++) jj_la1[i] = -1; + for (int i = 0; i < 13; i++) jj_la1[i] = -1; for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); } @@ -735,7 +880,7 @@ token = new Token(); jj_ntk = -1; jj_gen = 0; - for (int i = 0; i < 8; i++) jj_la1[i] = -1; + for (int i = 0; i < 13; i++) jj_la1[i] = -1; for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); } @@ -744,7 +889,7 @@ token = new Token(); jj_ntk = -1; jj_gen = 0; - for (int i = 0; i < 8; i++) jj_la1[i] = -1; + for (int i = 0; i < 13; i++) jj_la1[i] = -1; for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); } @@ -753,7 +898,7 @@ token = new Token(); jj_ntk = -1; jj_gen = 0; - for (int i = 0; i < 8; i++) jj_la1[i] = -1; + for (int i = 0; i < 13; i++) jj_la1[i] = -1; for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); } @@ -864,21 +1009,24 @@ public ParseException generateParseException() { jj_expentries.removeAllElements(); - boolean[] la1tokens = new boolean[31]; + boolean[] la1tokens = new boolean[33]; if (jj_kind >= 0) { la1tokens[jj_kind] = true; jj_kind = -1; } - for (int i = 0; i < 8; i++) { + for (int i = 0; i < 13; i++) { if (jj_la1[i] == jj_gen) { for (int j = 0; j < 32; j++) { if ((jj_la1_0[i] & (1<<j)) != 0) { la1tokens[j] = true; } + if ((jj_la1_1[i] & (1<<j)) != 0) { + la1tokens[32+j] = true; + } } } } - for (int i = 0; i < 31; i++) { + for (int i = 0; i < 33; i++) { if (la1tokens[i]) { jj_expentry = new int[1]; jj_expentry[0] = i; @@ -903,7 +1051,7 @@ final private void jj_rescan_token() { jj_rescan = true; - for (int i = 0; i < 6; i++) { + for (int i = 0; i < 8; i++) { try { JJCalls p = jj_2_rtns[i]; do { @@ -916,6 +1064,8 @@ case 3: jj_3_4(); break; case 4: jj_3_5(); break; case 5: jj_3_6(); break; + case 6: jj_3_7(); break; + case 7: jj_3_8(); break; } } p = p.next; Modified: trunk/src/dl-learner/org/dllearner/parser/ConfParserConstants.java =================================================================== --- trunk/src/dl-learner/org/dllearner/parser/ConfParserConstants.java 2007-12-03 18:13:19 UTC (rev 318) +++ trunk/src/dl-learner/org/dllearner/parser/ConfParserConstants.java 2007-12-03 18:29:20 UTC (rev 319) @@ -59,6 +59,8 @@ "\",\"", "\"(\"", "\")\"", + "\"[\"", + "\"]\"", }; } Modified: trunk/src/dl-learner/org/dllearner/parser/ConfParserTokenManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/parser/ConfParserTokenManager.java 2007-12-03 18:13:19 UTC (rev 318) +++ trunk/src/dl-learner/org/dllearner/parser/ConfParserTokenManager.java 2007-12-03 18:29:20 UTC (rev 319) @@ -85,6 +85,10 @@ return jjMoveStringLiteralDfa1_0(0x40000L); case 84: return jjMoveStringLiteralDfa1_0(0x8000L); + case 91: + return jjStopAtPos(0, 31); + case 93: + return jjStopAtPos(0, 32); case 123: return jjStopAtPos(0, 26); case 125: @@ -616,12 +620,12 @@ "", null, null, null, null, null, null, null, "\56", "\73", "\53", "\55", null, null, null, "\124\117\120", "\102\117\124\124\117\115", "\101\116\104", "\117\122", null, null, null, "\76\75", "\74\75", null, "\75", "\173", "\175", "\54", "\50", -"\51", }; +"\51", "\133", "\135", }; public static final String[] lexStateNames = { "DEFAULT", }; static final long[] jjtoToken = { - 0x7fffff01L, + 0x1ffffff01L, }; static final long[] jjtoSkip = { 0xfeL, Modified: trunk/src/dl-learner/org/dllearner/parser/conf.jj =================================================================== --- trunk/src/dl-learner/org/dllearner/parser/conf.jj 2007-12-03 18:13:19 UTC (rev 318) +++ trunk/src/dl-learner/org/dllearner/parser/conf.jj 2007-12-03 18:29:20 UTC (rev 319) @@ -290,12 +290,13 @@ ConfFileOption ConfOption() : { - boolean containsSubOption=false, isNumeric=false, isDouble=false, isSet=false; - String option="", subOption="", value="", tmp=""; + boolean containsSubOption=false, isNumeric=false, isDouble=false, isSet=false, isList=false; + String option="", subOption="", value="", tmp="", tmp2=""; int number = 0; double numberDouble = 0; ConfFileOption confOption; Set<String> values = new HashSet<String>(); + List<StringTuple> tuples = new LinkedList<StringTuple>(); } { option=Id() [ "." subOption=Id() {containsSubOption=true;} ] @@ -307,6 +308,13 @@ | "{" ( LOOKAHEAD(2) ( tmp=String() | tmp=Id() ) {values.add(tmp);} "," )* (tmp=String() | tmp=Id()) {values.add(tmp);} "}" {isSet=true;} // eine Liste von ein oder mehr Elementen in Mengenschreibweise + | LOOKAHEAD("[" "]") "[" "]" {isList=true;} // empty list + | "[" + ( LOOKAHEAD(6) "(" (tmp=String() | tmp=Id()) "," (tmp2=String() | tmp2=Id()) ")" + {tuples.add(new StringTuple(tmp,tmp2));} "," )* + "(" (tmp=String() | tmp=Id()) "," (tmp2=String() | tmp2=Id()) ")" + {tuples.add(new StringTuple(tmp,tmp2));} + "]" {isList=true;} ) <CONF_END> { if(containsSubOption) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2007-12-04 17:08:51
|
Revision: 322 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=322&view=rev Author: kurzum Date: 2007-12-04 09:08:42 -0800 (Tue, 04 Dec 2007) Log Message: ----------- commented everything with a few lines, implemented replacement of skos, example will follow Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/kb/SparqlEndpointRestructured.java trunk/src/dl-learner/org/dllearner/kb/sparql/ClassNode.java trunk/src/dl-learner/org/dllearner/kb/sparql/Configuration.java trunk/src/dl-learner/org/dllearner/kb/sparql/ExtractionAlgorithm.java trunk/src/dl-learner/org/dllearner/kb/sparql/InstanceNode.java trunk/src/dl-learner/org/dllearner/kb/sparql/Manager.java trunk/src/dl-learner/org/dllearner/kb/sparql/Manipulator.java trunk/src/dl-learner/org/dllearner/kb/sparql/PredefinedFilter.java trunk/src/dl-learner/org/dllearner/kb/sparql/PropertyNode.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 trunk/src/dl-learner/org/dllearner/utilities/StringTuple.java Modified: trunk/src/dl-learner/org/dllearner/kb/SparqlEndpointRestructured.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/SparqlEndpointRestructured.java 2007-12-03 22:06:30 UTC (rev 321) +++ trunk/src/dl-learner/org/dllearner/kb/SparqlEndpointRestructured.java 2007-12-04 17:08:42 UTC (rev 322) @@ -26,8 +26,10 @@ import java.net.MalformedURLException; import java.net.URI; import java.net.URL; +import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; +import java.util.HashSet; import java.util.LinkedList; import java.util.Set; @@ -52,6 +54,7 @@ import org.dllearner.parser.KBParser; import org.dllearner.reasoning.DIGConverter; import org.dllearner.reasoning.JenaOWLDIGConverter; +import org.dllearner.utilities.StringTuple; /** * Represents a SPARQL Endpoint. @@ -65,13 +68,13 @@ // ConfigOptions private URL url; String host; - private Set<String> instances; + private Set<String> instances=new HashSet<String>();; private URL dumpFile; private int recursionDepth = 2; private int predefinedFilter = 0; private int predefinedEndpoint = 0; - private Set<String> predList; - private Set<String> objList; + private Set<String> predList=new HashSet<String>(); + private Set<String> objList=new HashSet<String>(); private Set<String> classList; private String format = "N-TRIPLES"; private boolean dumpToFile = true; @@ -81,6 +84,10 @@ private boolean learnDomain = false; private String role; private String blankNodeIdentifier = "bnode"; + + LinkedList<StringTuple> URIParameters = new LinkedList<StringTuple>(); + LinkedList<StringTuple> replacePredicate = new LinkedList<StringTuple>(); + LinkedList<StringTuple> replaceObject = new LinkedList<StringTuple>(); /** * Holds the results of the calculateSubjects method @@ -157,7 +164,10 @@ "used to identify blanknodes in Tripels")); options.add(new StringTupleListConfigOption("example", "example")); + options.add(new StringTupleListConfigOption("replacePredicate", "rule for replacing predicates")); + options.add(new StringTupleListConfigOption("replaceObject", "rule for replacing predicates")); + return options; } @@ -208,6 +218,11 @@ blankNodeIdentifier = (String) entry.getValue(); } else if (option.equals("example")) { System.out.println(entry.getValue()); + }else if (option.equals("replacePredicate")) { + replacePredicate = (LinkedList)entry.getValue(); + }else if (option.equals("replaceObject")) { + replaceObject = (LinkedList)entry.getValue(); + } } @@ -229,7 +244,7 @@ SpecificSparqlEndpoint sse = null; SparqlQueryType sqt = null; // get Options for Manipulator - Manipulator man = new Manipulator(blankNodeIdentifier); + Manipulator man = new Manipulator(blankNodeIdentifier,replacePredicate,replaceObject); HashMap<String, String> parameters = new HashMap<String, String>(); parameters.put("default-graph-uri", "http://dbpedia.org"); parameters.put("format", "application/sparql-results.xml"); @@ -242,11 +257,13 @@ } // get Options for Filters + System.out.println("aaa"+predefinedFilter); if (predefinedFilter >= 1) { sqt = PredefinedFilter.getFilter(predefinedFilter); } else { sqt = new SparqlQueryType("forbid", objList, predList, useLits + ""); + System.out.println(sqt); } // give everything to the manager m.useConfiguration(sqt, sse, man, recursionDepth, getAllSuperClasses); @@ -255,10 +272,14 @@ // used to learn a domain of a role if (learnDomain) { instances = m.getDomainInstancesForRole(role); - // ad the role to the filter(a solution is always EXISTS + // add the role to the filter(a solution is always EXISTS // role.TOP) m.addPredicateFilter(role); - System.out.println(instances); + //System.out.println(instances); + // THIS is a workaround + for(String one:instances){ + System.out.println("+\""+one+"\""); + } } // the actual extraction is started here ont = m.extract(instances); Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/ClassNode.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/ClassNode.java 2007-12-03 22:06:30 UTC (rev 321) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/ClassNode.java 2007-12-04 17:08:42 UTC (rev 322) @@ -36,26 +36,33 @@ this.type = "class"; } + //expands all directly connected nodes @Override public Vector<Node> expand(TypedSparqlQuery tsq, Manipulator m) { Set<StringTuple> s = tsq.query(this.uri); + // see manipulator s = m.check(s, this); Vector<Node> Nodes = new Vector<Node>(); - // Manipulation + Iterator<StringTuple> it = s.iterator(); while (it.hasNext()) { StringTuple t = (StringTuple) it.next(); try { + // substitute rdf:type with owl:subclassof if (t.a.equals(m.type) || t.a.equals(m.subclass)) { ClassNode tmp = new ClassNode(new URI(t.b)); properties.add(new PropertyNode(new URI(m.subclass), this, tmp)); Nodes.add(tmp); } else { + // further expansion stops here + // Nodes.add(tmp); is missing on purpose ClassNode tmp = new ClassNode(new URI(t.b)); properties.add(new PropertyNode(new URI(t.a), this, tmp)); // System.out.println(m.blankNodeIdentifier); // System.out.println("XXXXX"+t.b); + + // if o is a blank node expand further if (t.b.startsWith(m.blankNodeIdentifier)) { tmp.expand(tsq, m); System.out.println(m.blankNodeIdentifier); @@ -72,6 +79,7 @@ return Nodes; } + // gets the types for properties recursively @Override public Vector<Node> expandProperties(TypedSparqlQuery tsq, Manipulator m) { // TODO return type doesn't make sense Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/Configuration.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/Configuration.java 2007-12-03 22:06:30 UTC (rev 321) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/Configuration.java 2007-12-04 17:08:42 UTC (rev 322) @@ -21,9 +21,17 @@ //stores all configuration settings public class Configuration { + + /* + * this class colects all configuration information + * see the other classes, which are used as attributes here + * */ + private SpecificSparqlEndpoint specificSparqlEndpoint; private SparqlQueryType sparqlQueryType; private Manipulator manipulator; + // the following needs to be moved to + // class extraction algorithm or manipulator private int recursiondepth = 2; private boolean getAllBackground = true; Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/ExtractionAlgorithm.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/ExtractionAlgorithm.java 2007-12-03 22:06:30 UTC (rev 321) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/ExtractionAlgorithm.java 2007-12-04 17:08:42 UTC (rev 322) @@ -50,6 +50,11 @@ return v; } + /*most important function + expands one example + cave: the recursion is not a recursion anymore, + it was transformed to an iteration + */ public Node expandNode(URI u, TypedSparqlQuery tsp) { Node n = getFirstNode(u); Vector<Node> v = new Vector<Node>(); @@ -64,6 +69,9 @@ Node tmpNode = v.remove(0); System.out.println("Expanding " + tmpNode); // System.out.println(this.Manipulator); + + // these are the new not expanded nodes + // the others are saved in connection with the original node Vector<Node> tmpVec = tmpNode.expand(tsp, manipulator); tmp.addAll(tmpVec); @@ -72,6 +80,8 @@ System.out .println("Recursion counter: " + x + " with " + v.size() + " Nodes remaining"); } + + // gets All Class Nodes and expands them further if (this.getAllBackground) { Vector<Node> classes = new Vector<Node>(); for (Node one : v) { Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/InstanceNode.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/InstanceNode.java 2007-12-03 22:06:30 UTC (rev 321) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/InstanceNode.java 2007-12-04 17:08:42 UTC (rev 322) @@ -40,11 +40,12 @@ } + //expands all directly connected nodes @Override public Vector<Node> expand(TypedSparqlQuery tsq, Manipulator m) { Set<StringTuple> s = tsq.query(uri); - // Manipulation + // see Manipulator m.check(s, this); // System.out.println("fffffff"+m); Vector<Node> Nodes = new Vector<Node>(); @@ -52,7 +53,8 @@ Iterator<StringTuple> it = s.iterator(); while (it.hasNext()) { StringTuple t = (StringTuple) it.next(); - + // basically : if p is rdf:type then o is a class + // else it is an instance try { if (t.a.equals(m.type)) { ClassNode tmp = new ClassNode(new URI(t.b)); @@ -74,6 +76,7 @@ return Nodes; } + // gets the types for properties recursively @Override public Vector<Node> expandProperties(TypedSparqlQuery tsq, Manipulator m) { for (PropertyNode one : properties) { Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/Manager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/Manager.java 2007-12-03 22:06:30 UTC (rev 321) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/Manager.java 2007-12-04 17:08:42 UTC (rev 322) @@ -40,6 +40,7 @@ recursiondepth, getAllBackground); this.typedSparqlQuery = new TypedSparqlQuery(configuration); this.extractionAlgorithm = new ExtractionAlgorithm(configuration); + } public Set<String> getDomainInstancesForRole(String role) { @@ -76,6 +77,7 @@ // this.TypedSparqlQuery.query(uri); // System.out.println(ExtractionAlgorithm.getFirstNode(uri)); System.out.println("Start extracting"); + Node n = extractionAlgorithm.expandNode(uri, typedSparqlQuery); Set<String> s = n.toNTriple(); String nt = ""; Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/Manipulator.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/Manipulator.java 2007-12-03 22:06:30 UTC (rev 321) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/Manipulator.java 2007-12-04 17:08:42 UTC (rev 322) @@ -21,6 +21,7 @@ import java.util.HashSet; import java.util.Iterator; +import java.util.LinkedList; import java.util.Set; import org.dllearner.utilities.StringTuple; @@ -30,6 +31,8 @@ public String subclass = "http://www.w3.org/2000/01/rdf-schema#subClassOf"; public String type = "http://www.w3.org/1999/02/22-rdf-syntax-ns#type"; public String blankNodeIdentifier = "bnode"; + public LinkedList<StringTuple> replacePredicate; + public LinkedList<StringTuple> replaceObject; String objectProperty = "http://www.w3.org/2002/07/owl#ObjectProperty"; String classns = "http://www.w3.org/2002/07/owl#Class"; @@ -41,20 +44,27 @@ "http://dbpedia.org/resource/Category:", "http://dbpedia.org/resource/Template:", "http://www.w3.org/2004/02/skos/core", "http://dbpedia.org/class/" }; - public Manipulator(String blankNodeIdentifier) { + public Manipulator(String blankNodeIdentifier,LinkedList<StringTuple> replacePredicate,LinkedList<StringTuple> replaceObject) { this.blankNodeIdentifier = blankNodeIdentifier; + this.replaceObject=replaceObject; + this.replacePredicate=replacePredicate; + Set<String> classproperties = new HashSet<String>(); classproperties.add(subclass); } + // TODO user defined rules missing public Set<StringTuple> check(Set<StringTuple> s, Node node) { Set<StringTuple> toRemove = new HashSet<StringTuple>(); Iterator<StringTuple> it = s.iterator(); while (it.hasNext()) { StringTuple t = (StringTuple) it.next(); - // System.out.println(t); - // all classes with owl:type class + replacePredicate(t); + replaceObject(t); + + // remove <rdf:type, owl:class> + // this is done to avoid transformation to owl:subclassof if (t.a.equals(type) && t.b.equals(classns) && node instanceof ClassNode) { toRemove.add(t); } @@ -64,7 +74,7 @@ toRemove.add(t); } - // all instances with owl:type thing + // remove all instances with owl:type thing if (t.a.equals(type) && t.b.equals(thing) && node instanceof InstanceNode) { toRemove.add(t); } @@ -74,5 +84,20 @@ return s; } + + private void replacePredicate(StringTuple t){ + for(StringTuple rep:replacePredicate){ + if(rep.a.equals(t.a)){ + t.a=rep.b; + } + } + } + private void replaceObject(StringTuple t){ + for(StringTuple rep:replaceObject){ + if(rep.a.equals(t.a)){ + t.a=rep.b; + } + } + } } Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/PredefinedFilter.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/PredefinedFilter.java 2007-12-03 22:06:30 UTC (rev 321) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/PredefinedFilter.java 2007-12-04 17:08:42 UTC (rev 322) @@ -46,10 +46,13 @@ pred.add("http://dbpedia.org/property/reference"); pred.add("http://dbpedia.org/property/website"); pred.add("http://dbpedia.org/property/wikipage"); + pred.add("http://dbpedia.org/property/wikiPageUsesTemplate"); + Set<String> obj = new HashSet<String>(); obj.add("http://dbpedia.org/resource/Category:Wikipedia_"); obj.add("http://dbpedia.org/resource/Category:Articles_"); + obj.add("http://dbpedia.org/resource/Template"); obj.add("http://xmlns.com/foaf/0.1/"); obj.add("http://upload.wikimedia.org/wikipedia/commons"); obj.add("http://upload.wikimedia.org/wikipedia"); @@ -70,10 +73,11 @@ pred.add("http://dbpedia.org/property/reference"); pred.add("http://dbpedia.org/property/website"); pred.add("http://dbpedia.org/property/wikipage"); + pred.add("http://dbpedia.org/property/wikiPageUsesTemplate"); Set<String> obj = new HashSet<String>(); - obj.add("http://dbpedia.org/resource/Category:Wikipedia_"); - obj.add("http://dbpedia.org/resource/Category:Articles_"); + //obj.add("http://dbpedia.org/resource/Category:Wikipedia_"); + //obj.add("http://dbpedia.org/resource/Category:Articles_"); obj.add("http://xmlns.com/foaf/0.1/"); obj.add("http://upload.wikimedia.org/wikipedia/commons"); obj.add("http://upload.wikimedia.org/wikipedia"); Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/PropertyNode.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/PropertyNode.java 2007-12-03 22:06:30 UTC (rev 321) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/PropertyNode.java 2007-12-04 17:08:42 UTC (rev 322) @@ -29,8 +29,10 @@ public class PropertyNode extends Node { + // the a and b part of a property private Node a; private Node b; + // specialtypes like owl:symmetricproperty private Set<String> specialTypes; public PropertyNode(URI u) { @@ -68,6 +70,8 @@ } return Nodes; } + + // gets the types for properties recursively @Override public Vector<Node> expandProperties(TypedSparqlQuery tsq, Manipulator m) { b.expandProperties(tsq, m); Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryMaker.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryMaker.java 2007-12-03 22:06:30 UTC (rev 321) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryMaker.java 2007-12-04 17:08:42 UTC (rev 322) @@ -22,6 +22,12 @@ // can assemble sparql queries public class SparqlQueryMaker { + /* can make queries for subject, predicate, object + * according to the filter settings + * object not yet implemented + * + * */ + private SparqlQueryType sparqlQueryType; public SparqlQueryMaker(SparqlQueryType SparqlQueryType) { Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryType.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryType.java 2007-12-03 22:06:30 UTC (rev 321) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryType.java 2007-12-04 17:08:42 UTC (rev 322) @@ -24,6 +24,8 @@ // is used to set the filter: configuration public class SparqlQueryType { // TODO make sets out of them + + private String mode = "forbid"; private String[] objectfilterlist = { "http://dbpedia.org/resource/Category:Articles_", "http://dbpedia.org/resource/Category:Wikipedia_", "http://xmlns.com/foaf/0.1/", Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/TypedSparqlQuery.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/TypedSparqlQuery.java 2007-12-03 22:06:30 UTC (rev 321) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/TypedSparqlQuery.java 2007-12-04 17:08:42 UTC (rev 322) @@ -48,7 +48,7 @@ this.sparqlQueryMaker = new SparqlQueryMaker(Configuration.getSparqlQueryType()); this.cache = new Cache("cache"); } - + // standard query get a tupels (p,o) for subject s public Set<StringTuple> query(URI u) { // getQuery @@ -57,6 +57,7 @@ } + // query get a tupels (s,o) for role p public Set<StringTuple> getTupelsForRole(URI u) { // getQuery @@ -68,6 +69,8 @@ } + + // uses a cache private Set<StringTuple> cachedSparql(URI u, String sparql, String a, String b) { // check cache String FromCache = cache.get(u.toString(), sparql); Modified: trunk/src/dl-learner/org/dllearner/utilities/StringTuple.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/StringTuple.java 2007-12-03 22:06:30 UTC (rev 321) +++ trunk/src/dl-learner/org/dllearner/utilities/StringTuple.java 2007-12-04 17:08:42 UTC (rev 322) @@ -21,7 +21,7 @@ /** * A container which can hold two Strings, mainly used as a helper. - * + * Also used as pre form, if you want to create triple, that have the same subject * @author Sebastian Hellmann */ public class StringTuple { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jen...@us...> - 2008-01-06 10:58:28
|
Revision: 341 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=341&view=rev Author: jenslehmann Date: 2008-01-06 02:57:59 -0800 (Sun, 06 Jan 2008) Log Message: ----------- started mapping to OWL API reasoner interface (not working yet) Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/kb/SparqlEndpoint.java trunk/src/dl-learner/org/dllearner/kb/SparqlEndpointRestructured.java trunk/src/dl-learner/org/dllearner/parser/KBParser.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIReasoner.java Modified: trunk/src/dl-learner/org/dllearner/kb/SparqlEndpoint.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/SparqlEndpoint.java 2008-01-06 10:56:17 UTC (rev 340) +++ trunk/src/dl-learner/org/dllearner/kb/SparqlEndpoint.java 2008-01-06 10:57:59 UTC (rev 341) @@ -196,7 +196,8 @@ } if (format.equals("KB")) { try{ - kb=KBParser.parseKBFile(new StringReader(ont)); + // kb=KBParser.parseKBFile(new StringReader(ont)); + kb=KBParser.parseKBFile(dumpFile); } catch(Exception e) {e.printStackTrace();} } }catch(IOException e) { Modified: trunk/src/dl-learner/org/dllearner/kb/SparqlEndpointRestructured.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/SparqlEndpointRestructured.java 2008-01-06 10:56:17 UTC (rev 340) +++ trunk/src/dl-learner/org/dllearner/kb/SparqlEndpointRestructured.java 2008-01-06 10:57:59 UTC (rev 341) @@ -359,7 +359,8 @@ } if (format.equals("KB")) { try { - kb = KBParser.parseKBFile(new StringReader(ont)); + //kb = KBParser.parseKBFile(new StringReader(ont)); + kb=KBParser.parseKBFile(dumpFile); } catch (Exception e) { e.printStackTrace(); } Modified: trunk/src/dl-learner/org/dllearner/parser/KBParser.java =================================================================== --- trunk/src/dl-learner/org/dllearner/parser/KBParser.java 2008-01-06 10:56:17 UTC (rev 340) +++ trunk/src/dl-learner/org/dllearner/parser/KBParser.java 2008-01-06 10:57:59 UTC (rev 341) @@ -32,11 +32,6 @@ KBParser parser = new KBParser(new FileInputStream(file)); return parser.KB(); } - - public static KB parseKBFile(StringReader read) throws ParseException{ - KBParser parser = new KBParser(read); - return parser.KB(); - } final public KB KB() throws ParseException { ConceptAssertion conceptAssertion; Added: trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIReasoner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIReasoner.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIReasoner.java 2008-01-06 10:57:59 UTC (rev 341) @@ -0,0 +1,212 @@ +/** + * Copyright (C) 2008, Jens Lehmann + * + * This file is part of DL-Learner. + * + * DL-Learner is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * DL-Learner is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package org.dllearner.reasoning; + +import java.net.URI; +import java.net.URISyntaxException; +import java.net.URL; +import java.util.Collection; +import java.util.Comparator; +import java.util.LinkedList; +import java.util.Set; +import java.util.SortedSet; +import java.util.TreeSet; + +import org.dllearner.core.KnowledgeSource; +import org.dllearner.core.ReasonerComponent; +import org.dllearner.core.config.ConfigEntry; +import org.dllearner.core.config.ConfigOption; +import org.dllearner.core.config.InvalidConfigOptionValueException; +import org.dllearner.core.config.StringConfigOption; +import org.dllearner.core.dl.AtomicConcept; +import org.dllearner.core.dl.AtomicRole; +import org.dllearner.core.dl.Individual; +import org.dllearner.core.dl.RoleHierarchy; +import org.dllearner.core.dl.SubsumptionHierarchy; +import org.dllearner.kb.OWLFile; +import org.dllearner.utilities.ConceptComparator; +import org.dllearner.utilities.RoleComparator; +import org.semanticweb.owl.apibinding.OWLManager; +import org.semanticweb.owl.inference.OWLReasoner; +import org.semanticweb.owl.model.OWLClass; +import org.semanticweb.owl.model.OWLIndividual; +import org.semanticweb.owl.model.OWLNamedObject; +import org.semanticweb.owl.model.OWLObjectProperty; +import org.semanticweb.owl.model.OWLOntology; +import org.semanticweb.owl.model.OWLOntologyCreationException; +import org.semanticweb.owl.model.OWLOntologyManager; + +/** + * Mapping to OWL API reasoner interface. The OWL API currently + * supports two reasoners: FaCT++ and Pellet. FaCT++ is connected + * using JNI and native libraries, while Pellet is a pure Java + * library. + * + * @author Jens Lehmann + * + */ +public class OWLAPIReasoner extends ReasonerComponent { + + private String reasonerType = "FaCT++"; + + private Set<KnowledgeSource> sources; + private OWLReasoner reasoner; + + private ConceptComparator conceptComparator = new ConceptComparator(); + private RoleComparator roleComparator = new RoleComparator(); + private SubsumptionHierarchy subsumptionHierarchy; + private RoleHierarchy roleHierarchy; + + public OWLAPIReasoner(Set<KnowledgeSource> sources) { + this.sources = sources; + } + + public static String getName() { + return "FaCT++ reasoner"; + } + + public static Collection<ConfigOption<?>> createConfigOptions() { + Collection<ConfigOption<?>> options = new LinkedList<ConfigOption<?>>(); + StringConfigOption type = new StringConfigOption("reasonerType", "FaCT++ or Pellet", "FaCT++"); + type.setAllowedValues(new String[] {"FaCT++", "Pellet"}); + options.add(type); + return options; + } + + /* (non-Javadoc) + * @see org.dllearner.core.Component#applyConfigEntry(org.dllearner.core.config.ConfigEntry) + */ + @Override + public <T> void applyConfigEntry(ConfigEntry<T> entry) throws InvalidConfigOptionValueException { + String name = entry.getOptionName(); + if(name.equals("reasonerType")) + reasonerType = (String) entry.getValue(); + } + + @Override + public void init() { + OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); + + // it is a bit cumbersome to obtain all classes, because there + // are no reasoner queries to obtain them => hence we query them + // for each ontology and add them to a set; a comparator avoids + // duplicates by checking URIs + Comparator<OWLNamedObject> namedObjectComparator = new Comparator<OWLNamedObject>() { + public int compare(OWLNamedObject o1, OWLNamedObject o2) { + return o1.getURI().compareTo(o2.getURI()); + } + }; + Set<OWLClass> classes = new TreeSet<OWLClass>(namedObjectComparator); + Set<OWLObjectProperty> properties = new TreeSet<OWLObjectProperty>(namedObjectComparator); + Set<OWLIndividual> individuals = new TreeSet<OWLIndividual>(namedObjectComparator); + + for(KnowledgeSource source : sources) { + if(!(source instanceof OWLFile)) { + System.out.println("Currently, only OWL files are supported. Ignoring knowledge source " + source + "."); + } else { + URL url = ((OWLFile)source).getURL(); + try { + OWLOntology ontology = manager.loadOntologyFromPhysicalURI(url.toURI()); + classes.addAll(ontology.getReferencedClasses()); + properties.addAll(ontology.getReferencedObjectProperties()); + individuals.addAll(ontology.getReferencedIndividuals()); + } catch (OWLOntologyCreationException e) { + e.printStackTrace(); + } catch (URISyntaxException e) { + e.printStackTrace(); + } + } + } + + // create actual reasoner + if(reasonerType.equals("FaCT++")) { + try { + reasoner = new uk.ac.manchester.cs.factplusplus.owlapi.Reasoner(manager); + } catch (Exception e) { + e.printStackTrace(); + } + } else { + // .. insert Pellet code here + } + } + + /* (non-Javadoc) + * @see org.dllearner.core.Reasoner#getAtomicConcepts() + */ + public Set<AtomicConcept> getAtomicConcepts() { + // reasoner + + // TODO Auto-generated method stub + return null; + } + + /* (non-Javadoc) + * @see org.dllearner.core.Reasoner#getAtomicRoles() + */ + public Set<AtomicRole> getAtomicRoles() { + // TODO Auto-generated method stub + return null; + } + + /* (non-Javadoc) + * @see org.dllearner.core.Reasoner#getIndividuals() + */ + public SortedSet<Individual> getIndividuals() { + // TODO Auto-generated method stub + return null; + } + + /* (non-Javadoc) + * @see org.dllearner.core.Reasoner#getReasonerType() + */ + public ReasonerType getReasonerType() { + // TODO Auto-generated method stub + return null; + } + + /* (non-Javadoc) + * @see org.dllearner.core.Reasoner#prepareSubsumptionHierarchy(java.util.Set) + */ + public void prepareSubsumptionHierarchy(Set<AtomicConcept> allowedConcepts) { + // TODO Auto-generated method stub + + } + + /** + * Test + * + * @param args + */ + public static void main(String[] args) { + // System.out.println(System.getProperty("java.library.path")); + + String uri = "http://www.co-ode.org/ontologies/pizza/2007/02/12/pizza.owl"; + + OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); + try { + manager.loadOntologyFromPhysicalURI(URI.create(uri)); + new org.mindswap.pellet.owlapi.Reasoner(manager); + System.out.println("Reasoner loaded succesfully."); + } catch (Exception e) { + e.printStackTrace(); + } + } + +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jen...@us...> - 2008-01-06 11:21:12
|
Revision: 342 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=342&view=rev Author: jenslehmann Date: 2008-01-06 03:21:05 -0800 (Sun, 06 Jan 2008) Log Message: ----------- Removed warnings. Changed Sebastians class comments to conform to the Javadoc standard. Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/kb/SparqlEndpoint.java trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java trunk/src/dl-learner/org/dllearner/kb/sparql/ClassNode.java trunk/src/dl-learner/org/dllearner/kb/sparql/Configuration.java trunk/src/dl-learner/org/dllearner/kb/sparql/ExtractionAlgorithm.java trunk/src/dl-learner/org/dllearner/kb/sparql/InstanceNode.java trunk/src/dl-learner/org/dllearner/kb/sparql/Manager.java trunk/src/dl-learner/org/dllearner/kb/sparql/Manipulator.java trunk/src/dl-learner/org/dllearner/kb/sparql/Node.java trunk/src/dl-learner/org/dllearner/kb/sparql/PredefinedEndpoint.java trunk/src/dl-learner/org/dllearner/kb/sparql/PredefinedFilter.java trunk/src/dl-learner/org/dllearner/kb/sparql/PropertyNode.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/SpecificSparqlEndpoint.java trunk/src/dl-learner/org/dllearner/kb/sparql/Test.java trunk/src/dl-learner/org/dllearner/kb/sparql/TypedSparqlQuery.java trunk/src/dl-learner/org/dllearner/kb/sparql/TypedSparqlQueryClasses.java trunk/src/dl-learner/org/dllearner/kb/sparql/TypedSparqlQueryInterface.java trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIReasoner.java Modified: trunk/src/dl-learner/org/dllearner/kb/SparqlEndpoint.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/SparqlEndpoint.java 2008-01-06 10:57:59 UTC (rev 341) +++ trunk/src/dl-learner/org/dllearner/kb/SparqlEndpoint.java 2008-01-06 11:21:05 UTC (rev 342) @@ -22,7 +22,6 @@ import java.io.File; import java.io.FileWriter; import java.io.IOException; -import java.io.StringReader; import java.net.MalformedURLException; import java.net.URI; import java.net.URL; Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java 2008-01-06 10:57:59 UTC (rev 341) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java 2008-01-06 11:21:05 UTC (rev 342) @@ -28,6 +28,12 @@ import java.net.URLEncoder; import java.util.HashMap; +/** + * SPARQL query cache to avoid possibly expensive multiple queries. + * + * @author Sebastian Hellmann + * + */ public class Cache implements Serializable { // Object can be the cache itself // or a cache object(one entry) @@ -40,7 +46,7 @@ long timestamp; long daysoffreshness = 15; long multiplier = 24 * 60 * 60 * 1000;// h m s ms - private HashMap<String, String> inmem_cache; + // private HashMap<String, String> inmem_cache; // constructor for the cache itself public Cache(String path) { Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/ClassNode.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/ClassNode.java 2008-01-06 10:57:59 UTC (rev 341) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/ClassNode.java 2008-01-06 11:21:05 UTC (rev 342) @@ -27,7 +27,11 @@ import org.dllearner.utilities.StringTuple; -// is a node in the graph that is a class +/** + * Is a node in the graph that is a class. + * + * @author Sebastian Hellmann + */ public class ClassNode extends Node { Set<PropertyNode> properties = new HashSet<PropertyNode>(); Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/Configuration.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/Configuration.java 2008-01-06 10:57:59 UTC (rev 341) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/Configuration.java 2008-01-06 11:21:05 UTC (rev 342) @@ -19,7 +19,11 @@ */ package org.dllearner.kb.sparql; -//stores all configuration settings +/** + * Stores all configuration settings. + * + * @author Sebastian Hellmann + */ public class Configuration { /* @@ -35,9 +39,6 @@ private int recursiondepth = 2; private boolean getAllBackground = true; - private Configuration() { - } - public Configuration(SpecificSparqlEndpoint specificSparqlEndpoint, SparqlQueryType sparqlQueryType, Manipulator manipulator, int recursiondepth, boolean getAllBackground) { Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/ExtractionAlgorithm.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/ExtractionAlgorithm.java 2008-01-06 10:57:59 UTC (rev 341) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/ExtractionAlgorithm.java 2008-01-06 11:21:05 UTC (rev 342) @@ -23,7 +23,11 @@ import java.util.HashSet; import java.util.Vector; -// this class is used to extract the information recursively +/** + * This class is used to extract the information recursively. + * + * @author Sebastian Hellmann + */ public class ExtractionAlgorithm { private Configuration configuration; Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/InstanceNode.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/InstanceNode.java 2008-01-06 10:57:59 UTC (rev 341) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/InstanceNode.java 2008-01-06 11:21:05 UTC (rev 342) @@ -27,7 +27,12 @@ import org.dllearner.utilities.StringTuple; -// a node in the graph that is an instance +/** + * A node in the graph that is an instance. + * + * @author Sebastian Hellmann + * + */ public class InstanceNode extends Node { Set<ClassNode> classes = new HashSet<ClassNode>(); Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/Manager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/Manager.java 2008-01-06 10:57:59 UTC (rev 341) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/Manager.java 2008-01-06 11:21:05 UTC (rev 342) @@ -27,7 +27,12 @@ import org.dllearner.utilities.StringTuple; -// an object of this class encapsulates everything +/** + * An object of this class encapsulates everything. + * + * @author Sebastian Hellmann + * + */ public class Manager { private Configuration configuration; Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/Manipulator.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/Manipulator.java 2008-01-06 10:57:59 UTC (rev 341) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/Manipulator.java 2008-01-06 11:21:05 UTC (rev 342) @@ -26,7 +26,12 @@ import org.dllearner.utilities.StringTuple; -// used to manipulate retrieved tupels, identify blanknodes, etc. +/** + * Used to manipulate retrieved tupels, identify blanknodes, etc. + * + * @author Sebastian Hellmann + * + */ public class Manipulator { public String subclass = "http://www.w3.org/2000/01/rdf-schema#subClassOf"; public String type = "http://www.w3.org/1999/02/22-rdf-syntax-ns#type"; Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/Node.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/Node.java 2008-01-06 10:57:59 UTC (rev 341) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/Node.java 2008-01-06 11:21:05 UTC (rev 342) @@ -23,7 +23,12 @@ import java.util.Set; import java.util.Vector; -// abstract class +/** + * Abstract class. + * + * @author Sebastian Hellmann + * + */ public abstract class Node implements Comparable<Node> { URI uri; protected String type; Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/PredefinedEndpoint.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/PredefinedEndpoint.java 2008-01-06 10:57:59 UTC (rev 341) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/PredefinedEndpoint.java 2008-01-06 11:21:05 UTC (rev 342) @@ -22,7 +22,12 @@ import java.net.URL; import java.util.HashMap; -// holds some predefined endpoints +/** + * Holds some predefined endpoints. + * + * @author Sebastian Hellmann + * + */ public class PredefinedEndpoint { public static SpecificSparqlEndpoint getEndpoint(int i) { Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/PredefinedFilter.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/PredefinedFilter.java 2008-01-06 10:57:59 UTC (rev 341) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/PredefinedFilter.java 2008-01-06 11:21:05 UTC (rev 342) @@ -22,6 +22,12 @@ import java.util.HashSet; import java.util.Set; +/** + * Predefined filters. + * + * @author Sebastian Hellmann + * + */ public class PredefinedFilter { Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/PropertyNode.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/PropertyNode.java 2008-01-06 10:57:59 UTC (rev 341) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/PropertyNode.java 2008-01-06 11:21:05 UTC (rev 342) @@ -27,6 +27,12 @@ import org.dllearner.utilities.StringTuple; +/** + * Property node. + * + * @author Sebastian Hellmann + * + */ public class PropertyNode extends Node { // the a and b part of a property @@ -78,7 +84,10 @@ return this.expand(tsq, m); } - + public Node getA() { + return a; + } + public Node getB() { return b; } Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryMaker.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryMaker.java 2008-01-06 10:57:59 UTC (rev 341) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryMaker.java 2008-01-06 11:21:05 UTC (rev 342) @@ -19,7 +19,12 @@ */ package org.dllearner.kb.sparql; -// can assemble sparql queries +/** + * Can assemble sparql queries. + * + * @author Sebastian Hellmann + * + */ public class SparqlQueryMaker { String lineend="\n"; boolean print_flag=false; Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryType.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryType.java 2008-01-06 10:57:59 UTC (rev 341) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryType.java 2008-01-06 11:21:05 UTC (rev 342) @@ -21,7 +21,12 @@ import java.util.Set; -// is used to set the filter: configuration +/** + * Is used to set the filter: configuration. + * + * @author Sebastian Hellmann + * + */ public class SparqlQueryType { // TODO make sets out of them Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SpecificSparqlEndpoint.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SpecificSparqlEndpoint.java 2008-01-06 10:57:59 UTC (rev 341) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SpecificSparqlEndpoint.java 2008-01-06 11:21:05 UTC (rev 342) @@ -22,7 +22,12 @@ import java.net.URL; import java.util.HashMap; -// one sparql endpoint configuration +/** + * One sparql endpoint configuration. + * + * @author Sebastian Hellmann + * + */ public class SpecificSparqlEndpoint { String host; Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/Test.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/Test.java 2008-01-06 10:57:59 UTC (rev 341) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/Test.java 2008-01-06 11:21:05 UTC (rev 342) @@ -23,15 +23,20 @@ import java.io.FileWriter; import java.net.URI; -// test class +/** + * Test class. + * + * @author Sebastian Hellmann + * + */ public class Test { public static void main(String[] args) { System.out.println("Start"); - String test2 = "http://www.extraction.org/config#dbpediatest"; - String test = "http://www.extraction.org/config#localjoseki"; + // String test2 = "http://www.extraction.org/config#dbpediatest"; + // String test = "http://www.extraction.org/config#localjoseki"; try { - URI u = new URI(test); + // URI u = new URI(test); Manager m = new Manager(); // m.usePredefinedConfiguration(u); Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/TypedSparqlQuery.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/TypedSparqlQuery.java 2008-01-06 10:57:59 UTC (rev 341) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/TypedSparqlQuery.java 2008-01-06 11:21:05 UTC (rev 342) @@ -34,7 +34,12 @@ import org.dllearner.utilities.StringTuple; -// can execute different queries +/** + * Can execute different queries. + * + * @author Sebastian Hellmann + * + */ public class TypedSparqlQuery implements TypedSparqlQueryInterface{ boolean print_flag=false; boolean debug_no_cache=false;// true means no cahce is used @@ -129,9 +134,9 @@ String two = "binding name=\"" + b + "\""; String endbinding= "binding"; String uri="uri"; - String uridel = "<uri>"; + //String uridel = "<uri>"; String bnode = "<bnode>"; - String uriend = "</uri>"; + //String uriend = "</uri>"; String predtmp = ""; String objtmp = ""; //System.out.println(getNextResult(xml)); Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/TypedSparqlQueryClasses.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/TypedSparqlQueryClasses.java 2008-01-06 10:57:59 UTC (rev 341) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/TypedSparqlQueryClasses.java 2008-01-06 11:21:05 UTC (rev 342) @@ -34,7 +34,12 @@ import org.dllearner.utilities.StringTuple; -// can execute different queries +/** + * Can execute different queries. + * + * @author Sebastian Hellmann + * + */ public class TypedSparqlQueryClasses implements TypedSparqlQueryInterface{ boolean print_flag=false; boolean debug_no_cache=false; @@ -113,9 +118,9 @@ String two = "binding name=\"" + b + "\""; String endbinding= "binding"; String uri="uri"; - String uridel = "<uri>"; + //String uridel = "<uri>"; String bnode = "<bnode>"; - String uriend = "</uri>"; + //String uriend = "</uri>"; String predtmp = ""; String objtmp = ""; //System.out.println(getNextResult(xml)); Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/TypedSparqlQueryInterface.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/TypedSparqlQueryInterface.java 2008-01-06 10:57:59 UTC (rev 341) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/TypedSparqlQueryInterface.java 2008-01-06 11:21:05 UTC (rev 342) @@ -5,6 +5,13 @@ import org.dllearner.utilities.StringTuple; +/** + * + * Type SPARQL query interface. + * + * @author Sebastian Hellmann + * + */ public interface TypedSparqlQueryInterface { public Set<StringTuple> query(URI u); Modified: trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIReasoner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIReasoner.java 2008-01-06 10:57:59 UTC (rev 341) +++ trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIReasoner.java 2008-01-06 11:21:05 UTC (rev 342) @@ -37,6 +37,7 @@ import org.dllearner.core.config.StringConfigOption; import org.dllearner.core.dl.AtomicConcept; import org.dllearner.core.dl.AtomicRole; +import org.dllearner.core.dl.Concept; import org.dllearner.core.dl.Individual; import org.dllearner.core.dl.RoleHierarchy; import org.dllearner.core.dl.SubsumptionHierarchy; @@ -69,10 +70,10 @@ private Set<KnowledgeSource> sources; private OWLReasoner reasoner; - private ConceptComparator conceptComparator = new ConceptComparator(); - private RoleComparator roleComparator = new RoleComparator(); - private SubsumptionHierarchy subsumptionHierarchy; - private RoleHierarchy roleHierarchy; + // private ConceptComparator conceptComparator = new ConceptComparator(); + // private RoleComparator roleComparator = new RoleComparator(); + // private SubsumptionHierarchy subsumptionHierarchy; + // private RoleHierarchy roleHierarchy; public OWLAPIReasoner(Set<KnowledgeSource> sources) { this.sources = sources; @@ -151,7 +152,7 @@ * @see org.dllearner.core.Reasoner#getAtomicConcepts() */ public Set<AtomicConcept> getAtomicConcepts() { - // reasoner + // reasoner. // TODO Auto-generated method stub return null; @@ -189,6 +190,12 @@ } + @Override + public boolean subsumes(Concept superConcept, Concept subConcept) { + // reasoner.isSubClassOf(arg0, arg1); + return false; + } + /** * Test * This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jen...@us...> - 2008-01-06 11:54:43
|
Revision: 343 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=343&view=rev Author: jenslehmann Date: 2008-01-06 03:54:42 -0800 (Sun, 06 Jan 2008) Log Message: ----------- wrote method to convert DL-Learner concepts to OWL API concepts Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/kb/SparqlEndpointRestructured.java trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIReasoner.java Modified: trunk/src/dl-learner/org/dllearner/kb/SparqlEndpointRestructured.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/SparqlEndpointRestructured.java 2008-01-06 11:21:05 UTC (rev 342) +++ trunk/src/dl-learner/org/dllearner/kb/SparqlEndpointRestructured.java 2008-01-06 11:54:42 UTC (rev 343) @@ -22,7 +22,6 @@ import java.io.File; import java.io.FileWriter; import java.io.IOException; -import java.io.StringReader; import java.net.MalformedURLException; import java.net.URI; import java.net.URL; Modified: trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIReasoner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIReasoner.java 2008-01-06 11:21:05 UTC (rev 342) +++ trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIReasoner.java 2008-01-06 11:54:42 UTC (rev 343) @@ -24,6 +24,7 @@ import java.net.URL; import java.util.Collection; import java.util.Comparator; +import java.util.HashSet; import java.util.LinkedList; import java.util.Set; import java.util.SortedSet; @@ -35,18 +36,26 @@ import org.dllearner.core.config.ConfigOption; import org.dllearner.core.config.InvalidConfigOptionValueException; import org.dllearner.core.config.StringConfigOption; +import org.dllearner.core.dl.All; import org.dllearner.core.dl.AtomicConcept; import org.dllearner.core.dl.AtomicRole; +import org.dllearner.core.dl.Bottom; import org.dllearner.core.dl.Concept; +import org.dllearner.core.dl.Conjunction; +import org.dllearner.core.dl.Disjunction; +import org.dllearner.core.dl.Exists; import org.dllearner.core.dl.Individual; -import org.dllearner.core.dl.RoleHierarchy; -import org.dllearner.core.dl.SubsumptionHierarchy; +import org.dllearner.core.dl.MultiConjunction; +import org.dllearner.core.dl.MultiDisjunction; +import org.dllearner.core.dl.Negation; +import org.dllearner.core.dl.Top; import org.dllearner.kb.OWLFile; -import org.dllearner.utilities.ConceptComparator; -import org.dllearner.utilities.RoleComparator; import org.semanticweb.owl.apibinding.OWLManager; import org.semanticweb.owl.inference.OWLReasoner; +import org.semanticweb.owl.inference.OWLReasonerException; import org.semanticweb.owl.model.OWLClass; +import org.semanticweb.owl.model.OWLDataFactory; +import org.semanticweb.owl.model.OWLDescription; import org.semanticweb.owl.model.OWLIndividual; import org.semanticweb.owl.model.OWLNamedObject; import org.semanticweb.owl.model.OWLObjectProperty; @@ -69,6 +78,8 @@ private Set<KnowledgeSource> sources; private OWLReasoner reasoner; + // the data factory is used to generate OWL API objects + private OWLDataFactory factory; // private ConceptComparator conceptComparator = new ConceptComparator(); // private RoleComparator roleComparator = new RoleComparator(); @@ -144,8 +155,11 @@ e.printStackTrace(); } } else { - // .. insert Pellet code here + // instantiate Pellet reasoner + reasoner = new org.mindswap.pellet.owlapi.Reasoner(manager); } + + factory = manager.getOWLDataFactory(); } /* (non-Javadoc) @@ -192,10 +206,65 @@ @Override public boolean subsumes(Concept superConcept, Concept subConcept) { - // reasoner.isSubClassOf(arg0, arg1); + try { + OWLDescription d1 = factory.getOWLClass(URI.create("a")); + OWLDescription d2 = factory.getOWLClass(URI.create("b")); + reasoner.isSubClassOf(d1, d2); + } catch (OWLReasonerException e) { + e.printStackTrace(); + } return false; } + public OWLDescription getOWLAPIDescription(Concept concept) { + if (concept instanceof AtomicConcept) { + return factory.getOWLClass(URI.create(((AtomicConcept)concept).getName())); + } else if (concept instanceof Bottom) { + return factory.getOWLNothing(); + } else if (concept instanceof Top) { + return factory.getOWLThing(); + } else if (concept instanceof Negation) { + return factory.getOWLObjectComplementOf( + getOWLAPIDescription(concept.getChild(0))); + } else if (concept instanceof Conjunction) { + OWLDescription d1 = getOWLAPIDescription(concept.getChild(0)); + OWLDescription d2 = getOWLAPIDescription(concept.getChild(1)); + Set<OWLDescription> d = new HashSet<OWLDescription>(); + d.add(d1); + d.add(d2); + return factory.getOWLObjectIntersectionOf(d); + } else if (concept instanceof Disjunction) { + OWLDescription d1 = getOWLAPIDescription(concept.getChild(0)); + OWLDescription d2 = getOWLAPIDescription(concept.getChild(1)); + Set<OWLDescription> d = new HashSet<OWLDescription>(); + d.add(d1); + d.add(d2); + return factory.getOWLObjectUnionOf(d); + } else if (concept instanceof All) { + OWLObjectProperty role = factory.getOWLObjectProperty( + URI.create(((All) concept).getRole().getName())); + OWLDescription d = getOWLAPIDescription(concept.getChild(0)); + return factory.getOWLObjectAllRestriction(role, d); + } else if(concept instanceof Exists) { + OWLObjectProperty role = factory.getOWLObjectProperty( + URI.create(((Exists) concept).getRole().getName())); + OWLDescription d = getOWLAPIDescription(concept.getChild(0)); + return factory.getOWLObjectSomeRestriction(role, d); + } else if(concept instanceof MultiConjunction) { + Set<OWLDescription> descriptions = new HashSet<OWLDescription>(); + for(Concept child : concept.getChildren()) + descriptions.add(getOWLAPIDescription(child)); + return factory.getOWLObjectIntersectionOf(descriptions); + } else if(concept instanceof MultiDisjunction) { + Set<OWLDescription> descriptions = new HashSet<OWLDescription>(); + for(Concept child : concept.getChildren()) + descriptions.add(getOWLAPIDescription(child)); + return factory.getOWLObjectUnionOf(descriptions); + } + + throw new IllegalArgumentException("Unsupported concept type."); + } + /** * Test * This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jen...@us...> - 2008-01-06 20:08:47
|
Revision: 346 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=346&view=rev Author: jenslehmann Date: 2008-01-06 12:08:33 -0800 (Sun, 06 Jan 2008) Log Message: ----------- fixed Tilos bug Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/gui/KnowledgeSourcePanel.java trunk/src/dl-learner/org/dllearner/gui/ReasonerPanel.java trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIDIGConverter.java Modified: trunk/src/dl-learner/org/dllearner/gui/KnowledgeSourcePanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/gui/KnowledgeSourcePanel.java 2008-01-06 18:47:12 UTC (rev 345) +++ trunk/src/dl-learner/org/dllearner/gui/KnowledgeSourcePanel.java 2008-01-06 20:08:33 UTC (rev 346) @@ -82,9 +82,11 @@ StartGUI.myconfig.setFile(fc.getSelectedFile()); //save variable fileDisplay.setText(StartGUI.myconfig.getFile().toString()); System.out.println("Init KnowledgeSource after loading file ... show over output"); + System.out.println("test: " + StartGUI.myconfig.getFile().toURI().toString()); StartGUI.myconfig.getComponentManager().applyConfigEntry(StartGUI.myconfig.getKnowledgeSource(), "url", StartGUI.myconfig.getFile().toURI().toString()); StartGUI.myconfig.getKnowledgeSource().init(); - } + } + return; } // choose none Modified: trunk/src/dl-learner/org/dllearner/gui/ReasonerPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/gui/ReasonerPanel.java 2008-01-06 18:47:12 UTC (rev 345) +++ trunk/src/dl-learner/org/dllearner/gui/ReasonerPanel.java 2008-01-06 20:08:33 UTC (rev 346) @@ -75,6 +75,7 @@ public void actionPerformed(ActionEvent e) { if (e.getSource() == digButton) { // DIG StartGUI.myconfig.setReasoner(StartGUI.myconfig.getComponentManager().reasoner(DIGReasoner.class, StartGUI.myconfig.getKnowledgeSource())); + System.out.println(StartGUI.myconfig.getKnowledgeSource()); StartGUI.myconfig.getReasoner().init(); //error System.out.println("test"); Modified: trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIDIGConverter.java =================================================================== --- trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIDIGConverter.java 2008-01-06 18:47:12 UTC (rev 345) +++ trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIDIGConverter.java 2008-01-06 20:08:33 UTC (rev 346) @@ -26,64 +26,50 @@ public class OWLAPIDIGConverter { public static String getTellsString(URL file, OntologyFormat format, URI kbURI) { - // public static String getTellsString(URL file, URI kbURI){//throws OWLOntologyCreationException{ - String ret=""; - try{ - - /* Load an ontology from a physical URI */ - OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); - //the next function could return an ontology - manager.loadOntologyFromPhysicalURI(file.toURI()); - - DIGTranslatorImpl dig=new DIGTranslatorImpl(manager); - Document doc=dig.createTellsDocument(kbURI.toString()); - dig.translateToDIG(manager.getOntologies(), doc, doc.getDocumentElement() ); - ret=xml2string(doc); - // }catch (Exception e) {e.printStackTrace();} - }catch (DIGReasonerException e) {e.printStackTrace();} - catch (OWLOntologyCreationException e) {e.printStackTrace();} - catch (URISyntaxException e) {e.printStackTrace();} - - // System.out.println(ret); - // System.exit(0); - - return ret; - } - - - //for convenience - /* - public static String getTellsString(String file, String kbURI){ - // String ret=""; - //try{ - // URL u=new URL(file); - // URI ui=new URI(kbURI); - return getTellsString(file, kbURI); - //}catch (MalformedURLException e) {e.printStackTrace();} - //catch (URISyntaxException e) {e.printStackTrace();} - // return ret; - }*/ - - public static String xml2string(Document d){ - // XML als String erzeugen (ziemlich umst�ndlich) - String tellString=""; + String ret = ""; try { - // transformer erzeugen mit identity transformation - Transformer transformer = TransformerFactory.newInstance().newTransformer(); - transformer.setOutputProperty(OutputKeys.INDENT, "yes"); - transformer.setOutputProperty(OutputKeys.METHOD, "xml"); - // Quelle ist das DOM-Objekt - DOMSource source = new DOMSource( d ); - // Resultat ist ein OutputStream, leider kann man das Resultat nicht - // direkt als String bekommen - ByteArrayOutputStream os = new ByteArrayOutputStream(); - StreamResult result = new StreamResult( os ); - // Transformation ausf�hren - transformer.transform( source, result ); - // String aus OutputStream generieren - tellString = os.toString(); - + + // Load an ontology from a physical URI + OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); + // the next function could return an ontology + manager.loadOntologyFromPhysicalURI(file.toURI()); + + DIGTranslatorImpl dig = new DIGTranslatorImpl(manager); + Document doc = dig.createTellsDocument(kbURI.toString()); + dig.translateToDIG(manager.getOntologies(), doc, doc.getDocumentElement()); + ret = xml2string(doc); + + } catch (DIGReasonerException e) { + e.printStackTrace(); + } catch (OWLOntologyCreationException e) { + e.printStackTrace(); + } catch (URISyntaxException e) { + e.printStackTrace(); + } + + return ret; + } + + public static String xml2string(Document d) { + // XML als String erzeugen (ziemlich umst�ndlich) + String tellString = ""; + try { + // transformer erzeugen mit identity transformation + Transformer transformer = TransformerFactory.newInstance().newTransformer(); + transformer.setOutputProperty(OutputKeys.INDENT, "yes"); + transformer.setOutputProperty(OutputKeys.METHOD, "xml"); + // Quelle ist das DOM-Objekt + DOMSource source = new DOMSource(d); + // Resultat ist ein OutputStream, leider kann man das Resultat nicht + // direkt als String bekommen + ByteArrayOutputStream os = new ByteArrayOutputStream(); + StreamResult result = new StreamResult(os); + // Transformation ausf�hren + transformer.transform(source, result); + // String aus OutputStream generieren + tellString = os.toString(); + } catch (TransformerConfigurationException e) { e.printStackTrace(); } catch (TransformerFactoryConfigurationError e) { @@ -93,31 +79,4 @@ } return tellString; } - - - -/*public static void main(String[] args) { - - try{ - - String inputOntology = "http://localhost/dllearner/ontologies/arch.owl"; - //String inputOntology = "http://localhost/dllearner/ontologies/ttttt.rdf"; - - OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); - URL res = new URL("http://localhost:8081"); - HTTPReasonerImpl h=new HTTPReasonerImpl(manager); - h.setReasonerURL(res); - URL u=new URL(inputOntology); - String kb=(h.createKnowledgeBase()); - URI ui=new URI(kb); - System.out.println(getTellsString(u, ui)); - - System.out.println("Done"); - - } catch (Exception e) { - e.printStackTrace(); - } - - }*/ } - This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jen...@us...> - 2008-01-10 18:52:54
|
Revision: 364 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=364&view=rev Author: jenslehmann Date: 2008-01-10 10:52:03 -0800 (Thu, 10 Jan 2008) Log Message: ----------- - small fix for Tilos problem - removed two warnings Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/core/ReasoningService.java trunk/src/dl-learner/org/dllearner/gui/ReasonerPanel.java trunk/src/dl-learner/org/dllearner/kb/sparql/ClassNode.java Modified: trunk/src/dl-learner/org/dllearner/core/ReasoningService.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/ReasoningService.java 2008-01-10 16:49:25 UTC (rev 363) +++ trunk/src/dl-learner/org/dllearner/core/ReasoningService.java 2008-01-10 18:52:03 UTC (rev 364) @@ -21,7 +21,6 @@ package org.dllearner.core; import java.io.File; -import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Set; Modified: trunk/src/dl-learner/org/dllearner/gui/ReasonerPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/gui/ReasonerPanel.java 2008-01-10 16:49:25 UTC (rev 363) +++ trunk/src/dl-learner/org/dllearner/gui/ReasonerPanel.java 2008-01-10 18:52:03 UTC (rev 364) @@ -59,7 +59,7 @@ private List<Individual> individuals; private Config config; - ReasonerPanel(Config config) { + ReasonerPanel(final Config config) { super(new BorderLayout()); this.config = config; @@ -91,8 +91,8 @@ int[] selectedIndices = digList.getSelectedIndices(); for(int i : selectedIndices) exampleSet.add(individuals.get(i).toString()); - //config.setExampleSet(exampleSet); //error - //System.out.println("digList: " + config.getExampleSet() ); //error + config.setExampleSet(exampleSet); //error + System.out.println("digList: " + config.getExampleSet() ); //error } }); Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/ClassNode.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/ClassNode.java 2008-01-10 16:49:25 UTC (rev 363) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/ClassNode.java 2008-01-10 18:52:03 UTC (rev 364) @@ -104,7 +104,7 @@ return s; } - + @Override public int compareTo(Node n){ return super.compareTo(n); // This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sk...@us...> - 2008-01-22 08:58:07
|
Revision: 408 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=408&view=rev Author: sknappe Date: 2008-01-22 00:58:01 -0800 (Tue, 22 Jan 2008) Log Message: ----------- sparql queries with jena api Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java trunk/src/dl-learner/org/dllearner/kb/sparql/configuration/SparqlEndpoint.java trunk/src/dl-learner/org/dllearner/kb/sparql/query/SparqlQuery.java trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-01-22 02:49:27 UTC (rev 407) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-01-22 08:58:01 UTC (rev 408) @@ -25,12 +25,17 @@ import java.net.URI; import java.net.URL; import java.util.Collection; +import java.util.HashMap; import java.util.HashSet; +import java.util.Iterator; import java.util.LinkedList; +import java.util.Map; +import java.util.Random; import java.util.Set; import java.util.Vector; import org.apache.log4j.Logger; +import org.dllearner.core.Component; import org.dllearner.core.KnowledgeSource; import org.dllearner.core.OntologyFormat; import org.dllearner.core.OntologyFormatUnsupportedException; @@ -61,8 +66,10 @@ */ public class SparqlKnowledgeSource extends KnowledgeSource { + private Map<Integer,SparqlQuery> queryIDs = new HashMap<Integer,SparqlQuery>(); + private Map<Integer, String[][]> queryResult=new HashMap<Integer,String[][]>(); // ConfigOptions - private URL url; + public URL url; // String host; private Set<String> instances = new HashSet<String>();; private URL dumpFile; @@ -124,6 +131,9 @@ private Thread triplesThread; private Thread conceptThread; + + private LinkedList<String> defaultGraphURIs=new LinkedList<String>(); + private LinkedList<String> namedGraphURIs=new LinkedList<String>(); // received ontology as array, used if format=Array(an element of the // array consists of the subject, predicate and object separated by '<' @@ -199,7 +209,9 @@ options.add(new BooleanConfigOption("closeAfterRecursion", "gets all classes for all instances")); options.add(CommonConfigOptions.getVerbosityOption()); - + + options.add(new StringSetConfigOption("defaultGraphURIs","a list of all default Graph URIs")); + options.add(new StringSetConfigOption("namedGraphURIs","a list of all named Graph URIs")); return options; } @@ -265,8 +277,19 @@ closeAfterRecursion = (Boolean) entry.getValue(); // } else if (option.equals("verbosity")) { // verbosity = (String) entry.getValue(); + } else if (option.equals("defaultGraphURIs")) { + Set<String> temp = (Set<String>) entry.getValue(); + Iterator iter=temp.iterator(); + while (iter.hasNext()){ + defaultGraphURIs.add((String)iter.next()); + } + } else if (option.equals("namedGraphURIs")) { + Set<String> temp = (Set<String>) entry.getValue(); + Iterator iter=temp.iterator(); + while (iter.hasNext()){ + namedGraphURIs.add((String)iter.next()); + } } - } /* @@ -577,7 +600,46 @@ return conceptSubjects; } - public SparqlQuery sparqlQuery(String query) { - return new SparqlQuery(query, sse); + public int sparqlQuery(String query) { + this.sse=new SparqlEndpoint(url,defaultGraphURIs,namedGraphURIs); + return this.generateQueryID(new SparqlQuery(query, sse)); } + + public void startSparqlQuery(int queryID){ + queryResult.put(queryID, queryIDs.get(queryID).getAsStringArray()); + } + + public SparqlQuery getSparqlQuery(int queryID){ + return queryIDs.get(queryID); + } + + public String[][] getSparqlResult(int queryID){ + return queryResult.get(queryID); + } + + private int generateQueryID(SparqlQuery query) { + int id; + Random rand=new Random(); + do { + id = rand.nextInt(); + } while(queryIDs.keySet().contains(id)); + queryIDs.put(id, query); + return id; + } + + public static void main(String[] args) throws MalformedURLException + { + String query="SELECT ?pred ?obj\n"+ + "WHERE {<http://dbpedia.org/resource/Leipzig> ?pred ?obj}"; + URL url=new URL("http://dbpedia.openlinksw.com:8890/sparql"); + SparqlEndpoint sse=new SparqlEndpoint(url); + SparqlQuery q=new SparqlQuery(query,sse); + String[][] array=q.getAsStringArray(); + for (int i=0;i<array.length;i++) + { + for (int j=0;j<array[0].length;j++) + System.out.print(array[i][j]+" "); + System.out.println(); + } + } } Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/configuration/SparqlEndpoint.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/configuration/SparqlEndpoint.java 2008-01-22 02:49:27 UTC (rev 407) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/configuration/SparqlEndpoint.java 2008-01-22 08:58:01 UTC (rev 408) @@ -32,8 +32,8 @@ */ public class SparqlEndpoint { URL url; - LinkedList<String> defaultGraphURIs; - LinkedList<String> namedGraphURIs; + List<String> defaultGraphURIs; + List<String> namedGraphURIs; //public HashMap<String, String> parameters = new HashMap<String, String>(); public SparqlEndpoint(URL u) { @@ -44,8 +44,8 @@ public SparqlEndpoint(URL u,List<String> defaultGraphURIs,List<String> namedGraphURIs) { this.url = u; - this.defaultGraphURIs=new LinkedList<String>(); - this.namedGraphURIs=new LinkedList<String>(); + this.defaultGraphURIs=defaultGraphURIs; + this.namedGraphURIs=namedGraphURIs; } @@ -53,11 +53,11 @@ return this.url; } - public LinkedList<String> getDefaultGraphURIs() { + public List<String> getDefaultGraphURIs() { return defaultGraphURIs; } - public LinkedList<String> getNamedGraphURIs() { + public List<String> getNamedGraphURIs() { return namedGraphURIs; } Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/query/SparqlQuery.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/query/SparqlQuery.java 2008-01-22 02:49:27 UTC (rev 407) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/query/SparqlQuery.java 2008-01-22 08:58:01 UTC (rev 408) @@ -20,6 +20,7 @@ package org.dllearner.kb.sparql.query; import java.net.URL; +import java.util.Iterator; import java.util.List; import java.util.Vector; @@ -49,6 +50,10 @@ private QueryExecution queryExecution; SparqlEndpoint endpoint; + public void setQueryExecutionRunning(boolean isRunning){ + this.isRunning=isRunning; + } + /** * simplest contructor, works only with some endpoints, * not with DBpedia @@ -76,8 +81,6 @@ * @return jena ResultSet */ protected ResultSet send() { - isRunning = true; - p(queryString); // create a query and parse it into Jena Query query = QueryFactory.create(queryString); @@ -91,7 +94,6 @@ p("query SPARQL server"); ResultSet rs = queryExecution.execSelect(); - isRunning = false; return rs; } @@ -103,7 +105,31 @@ public boolean isRunning() { return isRunning; } - + + public String[][] getAsStringArray(){ + System.out.println("Starting Query"); + ResultSet rs=send(); + System.out.println("getResults"); + List<ResultBinding> l = ResultSetFormatter.toList(rs); + List resultVars=rs.getResultVars(); + String[][] array=new String[l.size()][resultVars.size()]; + Iterator iter=resultVars.iterator(); + int i=0,j=0; + + for (ResultBinding resultBinding : l) { + while (iter.hasNext()){ + String varName=(String)iter.next(); + array[i][j]=resultBinding.get(varName).toString(); + j++; + } + iter=resultVars.iterator(); + i++; + j=0; + } + System.out.println("Query complete"); + return array; + } + /** * sends a query and returns XML * Modified: trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java =================================================================== --- trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java 2008-01-22 02:49:27 UTC (rev 407) +++ trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java 2008-01-22 08:58:01 UTC (rev 408) @@ -55,6 +55,7 @@ import org.dllearner.reasoning.DIGReasoner; import org.dllearner.utilities.Datastructures; import org.dllearner.utilities.Helper; +import org.dllearner.kb.sparql.query.SparqlQuery; /** * DL-Learner web service interface. @@ -486,7 +487,7 @@ //////////////////////////////////////// // SPARQL component methods // //////////////////////////////////////// - + /* @WebMethod public void startThread(int id, int componentID, String[] options) throws ClientNotKnownException { @@ -572,8 +573,51 @@ return ((SparqlKnowledgeSource)component).getConceptSubjects(); return new String[0]; } + */ @WebMethod + public String[][] sparqlQuery(int sessionID, int componentID, int queryID) throws ClientNotKnownException + { + ClientState state = getState(sessionID); + Component component = state.getComponent(componentID); + return ((SparqlKnowledgeSource)component).getSparqlResult(queryID); + } + + @WebMethod + public int sparqlQueryThreaded(int sessionID, int componentID, final String query) throws ClientNotKnownException + { + final ClientState state = getState(sessionID); + final Component component = state.getComponent(componentID); + final int ID=((SparqlKnowledgeSource)component).sparqlQuery(query); + Thread sparqlThread = new Thread() { + @Override + public void run() { + ((SparqlKnowledgeSource)component).getSparqlQuery(ID).setQueryExecutionRunning(true); + ((SparqlKnowledgeSource)component).startSparqlQuery(ID); + ((SparqlKnowledgeSource)component).getSparqlQuery(ID).setQueryExecutionRunning(false); + } + }; + sparqlThread.start(); + return ID; + } + + @WebMethod + public boolean isSparqlQueryRunning(int sessionID, int componentID, int queryID) throws ClientNotKnownException + { + ClientState state = getState(sessionID); + Component component = state.getComponent(componentID); + return ((SparqlKnowledgeSource)component).getSparqlQuery(queryID).isRunning(); + } + + @WebMethod + public void stopSparqlThread(int sessionID, int componentID, int queryID) throws ClientNotKnownException + { + ClientState state = getState(sessionID); + Component component = state.getComponent(componentID); + ((SparqlKnowledgeSource)component).getSparqlQuery(queryID).stop(); + } + + @WebMethod public String debug(String deb) { return "Test"; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2008-01-22 15:50:33
|
Revision: 409 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=409&view=rev Author: kurzum Date: 2008-01-22 07:50:29 -0800 (Tue, 22 Jan 2008) Log Message: ----------- fixed warnings Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java trunk/src/dl-learner/org/dllearner/kb/sparql/query/SparqlQuery.java trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-01-22 08:58:01 UTC (rev 408) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-01-22 15:50:29 UTC (rev 409) @@ -35,7 +35,6 @@ import java.util.Vector; import org.apache.log4j.Logger; -import org.dllearner.core.Component; import org.dllearner.core.KnowledgeSource; import org.dllearner.core.OntologyFormat; import org.dllearner.core.OntologyFormatUnsupportedException; Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/query/SparqlQuery.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/query/SparqlQuery.java 2008-01-22 08:58:01 UTC (rev 408) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/query/SparqlQuery.java 2008-01-22 15:50:29 UTC (rev 409) @@ -106,14 +106,18 @@ return isRunning; } + /** + * @return + */ + @SuppressWarnings({"unchecked"}) public String[][] getAsStringArray(){ System.out.println("Starting Query"); ResultSet rs=send(); System.out.println("getResults"); List<ResultBinding> l = ResultSetFormatter.toList(rs); - List resultVars=rs.getResultVars(); + List<String> resultVars=rs.getResultVars(); String[][] array=new String[l.size()][resultVars.size()]; - Iterator iter=resultVars.iterator(); + Iterator<String> iter=resultVars.iterator(); int i=0,j=0; for (ResultBinding resultBinding : l) { Modified: trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java =================================================================== --- trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java 2008-01-22 08:58:01 UTC (rev 408) +++ trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java 2008-01-22 15:50:29 UTC (rev 409) @@ -55,7 +55,6 @@ import org.dllearner.reasoning.DIGReasoner; import org.dllearner.utilities.Datastructures; import org.dllearner.utilities.Helper; -import org.dllearner.kb.sparql.query.SparqlQuery; /** * DL-Learner web service interface. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2008-01-23 02:24:10
|
Revision: 411 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=411&view=rev Author: kurzum Date: 2008-01-22 18:23:59 -0800 (Tue, 22 Jan 2008) Log Message: ----------- added roleLearningProblem, commented out lots of code, that can be saved using Jena and wrote more comments Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/kb/sparql/ExtractionAlgorithm.java trunk/src/dl-learner/org/dllearner/kb/sparql/Manager.java trunk/src/dl-learner/org/dllearner/kb/sparql/Manipulator.java trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryMaker.java trunk/src/dl-learner/org/dllearner/kb/sparql/TypedSparqlQuery.java trunk/src/dl-learner/org/dllearner/kb/sparql/TypedSparqlQueryInterface.java trunk/src/dl-learner/org/dllearner/kb/sparql/configuration/Configuration.java trunk/src/dl-learner/org/dllearner/kb/sparql/datastructure/ClassNode.java trunk/src/dl-learner/org/dllearner/kb/sparql/datastructure/InstanceNode.java trunk/src/dl-learner/org/dllearner/kb/sparql/datastructure/Node.java trunk/src/dl-learner/org/dllearner/kb/sparql/datastructure/PropertyNode.java trunk/src/dl-learner/org/dllearner/kb/sparql/query/SparqlQuery.java trunk/src/dl-learner/org/dllearner/kb/sparql/test/TestResultSet.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/learningproblems/RoleLearning.java Removed Paths: ------------- trunk/src/dl-learner/org/dllearner/kb/sparql/TypedSparqlQueryClasses.java Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/ExtractionAlgorithm.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/ExtractionAlgorithm.java 2008-01-22 16:47:20 UTC (rev 410) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/ExtractionAlgorithm.java 2008-01-23 02:23:59 UTC (rev 411) @@ -29,7 +29,7 @@ import org.dllearner.kb.sparql.datastructure.Node; /** - * This class is used to extract the information recursively. + * This class is used to extract the information . * * @author Sebastian Hellmann */ @@ -38,23 +38,23 @@ private Configuration configuration; private Manipulator manipulator; private int recursionDepth = 1; - //private boolean getAllSuperClasses = true; - //private boolean closeAfterRecursion = true; - private boolean print_flag=false; + // private boolean getAllSuperClasses = true; + // private boolean closeAfterRecursion = true; + private boolean print_flag = false; public ExtractionAlgorithm(Configuration Configuration) { - this.configuration = Configuration; + // this.configuration = Configuration; this.manipulator = Configuration.getManipulator(); this.recursionDepth = Configuration.getRecursiondepth(); - //this.getAllSuperClasses = Configuration.isGetAllSuperClasses(); - //this.closeAfterRecursion=Configuration.isCloseAfterRecursion(); + // this.getAllSuperClasses = Configuration.isGetAllSuperClasses(); + // this.closeAfterRecursion=Configuration.isCloseAfterRecursion(); } public Node getFirstNode(URI u) { return new InstanceNode(u); } - public Vector<Node> expandAll(URI[] u, TypedSparqlQueryInterface tsp) { + public Vector<Node> expandAll(URI[] u, TypedSparqlQuery tsp) { Vector<Node> v = new Vector<Node>(); for (URI one : u) { v.add(expandNode(one, tsp)); @@ -62,14 +62,17 @@ return v; } - /*most important function - expands one example - cave: the recursion is not a recursion anymore, - it was transformed to an iteration - */ - public Node expandNode(URI u, TypedSparqlQueryInterface tsp) { - long time=System.currentTimeMillis(); - Node n = getFirstNode(u); + /** + * most important function expands one example cave: the recursion is not a + * recursion anymore, it was transformed to an iteration + * + * @param uri + * @param typedSparqlQuery + * @return + */ + public Node expandNode(URI uri, TypedSparqlQuery typedSparqlQuery) { + long time = System.currentTimeMillis(); + Node n = getFirstNode(uri); Vector<Node> v = new Vector<Node>(); v.add(n); p("StartVector: " + v); @@ -82,26 +85,27 @@ Node tmpNode = v.remove(0); p("Expanding " + tmpNode); // System.out.println(this.Manipulator); - + // these are the new not expanded nodes // the others are saved in connection with the original node - Vector<Node> tmpVec = tmpNode.expand(tsp, manipulator); + Vector<Node> tmpVec = tmpNode.expand(typedSparqlQuery, + manipulator); tmp.addAll(tmpVec); } v = tmp; - System.out.println("Recursion counter: " + x + - " with " + v.size() + " Nodes remaining, needed: " - +(System.currentTimeMillis()-time)+"ms"); - time=System.currentTimeMillis(); + System.out.println("Recursion counter: " + x + " with " + v.size() + + " Nodes remaining, needed: " + + (System.currentTimeMillis() - time) + "ms"); + time = System.currentTimeMillis(); } - - HashSet<String> hadAlready=new HashSet<String>(); + + HashSet<String> hadAlready = new HashSet<String>(); // gets All Class Nodes and expands them further if (this.configuration.isGetAllSuperClasses()) { - //Set<Node> classes = new TreeSet<Node>(); + // Set<Node> classes = new TreeSet<Node>(); Vector<Node> classes = new Vector<Node>(); - + Vector<Node> instances = new Vector<Node>(); for (Node one : v) { if (one instanceof ClassNode) { @@ -110,54 +114,62 @@ if (one instanceof InstanceNode) { instances.add(one); } - + } - //System.out.println(instances.size()); - TypedSparqlQueryClasses tsqc=new TypedSparqlQueryClasses(configuration); - if(this.configuration.isCloseAfterRecursion()){ + // System.out.println(instances.size()); + TypedSparqlQueryClasses tsqc = new TypedSparqlQueryClasses( + configuration); + if (this.configuration.isCloseAfterRecursion()) { while (instances.size() > 0) { - p("Getting classes for remaining instances: " + instances.size()); + p("Getting classes for remaining instances: " + + instances.size()); Node next = instances.remove(0); p("Getting classes for: " + next); classes.addAll(next.expand(tsqc, manipulator)); - if (classes.size()>=manipulator.breakSuperClassRetrievalAfter){break;} + if (classes.size() >= manipulator.breakSuperClassRetrievalAfter) { + break; + } } } - Vector<Node>tmp=new Vector<Node>(); - int i=0; + Vector<Node> tmp = new Vector<Node>(); + int i = 0; while (classes.size() > 0) { p("Remaining classes: " + classes.size()); - //Iterator<Node> it=classes.iterator(); - //Node next =(Node) it.next(); - //classes.remove(next); + // Iterator<Node> it=classes.iterator(); + // Node next =(Node) it.next(); + // classes.remove(next); Node next = classes.remove(0); - - if(!hadAlready.contains(next.getURI().toString())){ + + if (!hadAlready.contains(next.getURI().toString())) { p("Expanding: " + next); - //System.out.println(hadAlready.size()); + // System.out.println(hadAlready.size()); hadAlready.add(next.getURI().toString()); - tmp=next.expand(tsp, manipulator); + tmp = next.expand(typedSparqlQuery, manipulator); classes.addAll(tmp); - tmp=new Vector<Node>(); - //if(i % 50==0)System.out.println("got "+i+" extra classes, max: "+manipulator.breakSuperClassRetrievalAfter); + tmp = new Vector<Node>(); + // if(i % 50==0)System.out.println("got "+i+" extra classes, + // max: "+manipulator.breakSuperClassRetrievalAfter); i++; - if (i>=manipulator.breakSuperClassRetrievalAfter){break;} + if (i >= manipulator.breakSuperClassRetrievalAfter) { + break; + } } - //System.out.println("Skipping"); - - - //if (classes.size()>=manipulator.breakSuperClassRetrievalAfter){break;} - + // System.out.println("Skipping"); + + // if + // (classes.size()>=manipulator.breakSuperClassRetrievalAfter){break;} + } - //System.out.println((System.currentTimeMillis()-time)+""); + // System.out.println((System.currentTimeMillis()-time)+""); } return n; } - - void p(String s){ - if(print_flag)System.out.println(s); + + void p(String s) { + if (print_flag) + System.out.println(s); } } Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/Manager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/Manager.java 2008-01-22 16:47:20 UTC (rev 410) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/Manager.java 2008-01-23 02:23:59 UTC (rev 411) @@ -20,7 +20,6 @@ package org.dllearner.kb.sparql; import java.net.URI; -import java.util.HashSet; import java.util.Set; import java.util.SortedSet; import java.util.TreeSet; @@ -29,13 +28,12 @@ import org.dllearner.kb.sparql.configuration.SparqlEndpoint; import org.dllearner.kb.sparql.configuration.SparqlQueryType; import org.dllearner.kb.sparql.datastructure.Node; -import org.dllearner.utilities.StringTuple; /** * An object of this class encapsulates everything. * * @author Sebastian Hellmann - * + * */ public class Manager { @@ -44,53 +42,23 @@ private ExtractionAlgorithm extractionAlgorithm; public void useConfiguration(SparqlQueryType SparqlQueryType, - SparqlEndpoint SparqlEndpoint, Manipulator manipulator, int recursiondepth, - boolean getAllSuperClasses,boolean closeAfterRecursion) { + SparqlEndpoint SparqlEndpoint, Manipulator manipulator, + int recursiondepth, boolean getAllSuperClasses, + boolean closeAfterRecursion) { - this.configuration = new Configuration(SparqlEndpoint, SparqlQueryType, manipulator, - recursiondepth, getAllSuperClasses, closeAfterRecursion); + this.configuration = new Configuration(SparqlEndpoint, SparqlQueryType, + manipulator, recursiondepth, getAllSuperClasses, + closeAfterRecursion); this.typedSparqlQuery = new TypedSparqlQuery(configuration); this.extractionAlgorithm = new ExtractionAlgorithm(configuration); - - } - public Set<String> getDomainInstancesForRole(String role) { - URI u = null; - try { - u = new URI(role); - } catch (Exception e) { - e.printStackTrace(); - } - Set<StringTuple> t = ((TypedSparqlQuery)this.typedSparqlQuery).getTupelsForRole(u, true); - Set<String> ret = new HashSet<String>(); - for (StringTuple one : t) { - - ret.add(one.a); - } - return ret; } - public Set<String> getRangeInstancesForRole(String role) { - URI u = null; - try { - u = new URI(role); - } catch (Exception e) { - e.printStackTrace(); - } - Set<StringTuple> t = ((TypedSparqlQuery)this.typedSparqlQuery).getTupelsForRole(u,false); - Set<String> ret = new HashSet<String>(); - for (StringTuple one : t) { - - ret.add(one.b); - } - return ret; - } - public String extract(URI uri) { // this.TypedSparqlQuery.query(uri); // System.out.println(ExtractionAlgorithm.getFirstNode(uri)); System.out.println("Start extracting"); - + Node n = extractionAlgorithm.expandNode(uri, typedSparqlQuery); Set<String> s = n.toNTriple(); String nt = ""; @@ -108,7 +76,8 @@ for (String one : instances) { try { - Node n = extractionAlgorithm.expandNode(new URI(one), typedSparqlQuery); + Node n = extractionAlgorithm.expandNode(new URI(one), + typedSparqlQuery); ret.addAll(n.toNTriple()); } catch (Exception e) { e.printStackTrace(); @@ -116,24 +85,18 @@ } System.out.println("Finished extracting, start conversion"); StringBuffer nt = new StringBuffer(); - Object[] arr=ret.toArray(); + Object[] arr = ret.toArray(); for (int i = 0; i < arr.length; i++) { - nt.append((String) arr[i]+"\n"); - if(i%1000==0)System.out.println(i+" of "+arr.length+" triples done"); + nt.append((String) arr[i] + "\n"); + if (i % 1000 == 0) + System.out.println(i + " of " + arr.length + " triples done"); } - System.out.println(arr.length+" of "+arr.length+" triples done"); + System.out.println(arr.length + " of " + arr.length + " triples done"); /* - String tmp=""; - while ( ret.size() > 0) { - tmp=ret.first(); - nt+=tmp; - ret.remove(tmp); - System.out.println(ret.size()); - - } - /*for (String str : ret) { - nt += str + "\n"; - }*/ + * String tmp=""; while ( ret.size() > 0) { tmp=ret.first(); nt+=tmp; + * ret.remove(tmp); System.out.println(ret.size()); } /*for (String str : + * ret) { nt += str + "\n"; } + */ return nt.toString(); } @@ -141,57 +104,43 @@ this.configuration.getSparqlQueryType().addPredicateFilter(str); } - - public Configuration getConfiguration(){ + + public Configuration getConfiguration() { return configuration; } - - /*public void calculateSubjects(String label, int limit) { - System.out.println("SparqlModul: Collecting Subjects"); - oldSparqlOntologyCollector oc = new oldSparqlOntologyCollector(url); - try { - subjects = oc.getSubjectsFromLabel(label, limit); - } catch (IOException e) { - subjects = new String[1]; - subjects[0] = "[Error]Sparql Endpoint could not be reached."; - } - System.out.println("SparqlModul: ****Finished"); - } - /** - * TODO SparqlOntologyCollector needs to be removed - * @param subject + /* + * public void calculateSubjects(String label, int limit) { + * System.out.println("SparqlModul: Collecting Subjects"); + * oldSparqlOntologyCollector oc = new oldSparqlOntologyCollector(url); try { + * subjects = oc.getSubjectsFromLabel(label, limit); } catch (IOException e) { + * subjects = new String[1]; subjects[0] = "[Error]Sparql Endpoint could not + * be reached."; } System.out.println("SparqlModul: ****Finished"); } + * + * /** TODO SparqlOntologyCollector needs to be removed @param subject */ /* - public void calculateTriples(String subject) { - System.out.println("SparqlModul: Collecting Triples"); - oldSparqlOntologyCollector oc = new oldSparqlOntologyCollector(url); - try { - triples = oc.collectTriples(subject); - } catch (IOException e) { - triples = new String[1]; - triples[0] = "[Error]Sparql Endpoint could not be reached."; - } - System.out.println("SparqlModul: ****Finished"); - } -*/ + * public void calculateTriples(String subject) { + * System.out.println("SparqlModul: Collecting Triples"); + * oldSparqlOntologyCollector oc = new oldSparqlOntologyCollector(url); try { + * triples = oc.collectTriples(subject); } catch (IOException e) { triples = + * new String[1]; triples[0] = "[Error]Sparql Endpoint could not be + * reached."; } System.out.println("SparqlModul: ****Finished"); } + */ /** * TODO SparqlOntologyCollector needs to be removed + * * @param concept */ - - /*public void calculateConceptSubjects(String concept) { - System.out.println("SparqlModul: Collecting Subjects"); - oldSparqlOntologyCollector oc = new oldSparqlOntologyCollector(url); - try { - conceptSubjects = oc.getSubjectsFromConcept(concept); - } catch (IOException e) { - conceptSubjects = new String[1]; - conceptSubjects[0] = "[Error]Sparql Endpoint could not be reached."; - } - System.out.println("SparqlModul: ****Finished"); - } - */ - + /* + * public void calculateConceptSubjects(String concept) { + * System.out.println("SparqlModul: Collecting Subjects"); + * oldSparqlOntologyCollector oc = new oldSparqlOntologyCollector(url); try { + * conceptSubjects = oc.getSubjectsFromConcept(concept); } catch + * (IOException e) { conceptSubjects = new String[1]; conceptSubjects[0] = + * "[Error]Sparql Endpoint could not be reached."; } + * System.out.println("SparqlModul: ****Finished"); } + */ + } \ No newline at end of file Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/Manipulator.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/Manipulator.java 2008-01-22 16:47:20 UTC (rev 410) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/Manipulator.java 2008-01-23 02:23:59 UTC (rev 411) @@ -33,7 +33,7 @@ * Used to manipulate retrieved tupels, identify blanknodes, etc. * * @author Sebastian Hellmann - * + * */ public class Manipulator { public final String subclass = "http://www.w3.org/2000/01/rdf-schema#subClassOf"; @@ -42,37 +42,47 @@ final String classns = "http://www.w3.org/2002/07/owl#Class"; final String thing = "http://www.w3.org/2002/07/owl#Thing"; - public String blankNodeIdentifier = "bnode"; - public int breakSuperClassRetrievalAfter=200; + public int breakSuperClassRetrievalAfter = 200; public LinkedList<StringTuple> replacePredicate; public LinkedList<StringTuple> replaceObject; - - Set<String> classproperties; + // Set<String> classproperties; - public Manipulator(String blankNodeIdentifier,int breakSuperClassRetrievalAfter,LinkedList<StringTuple> replacePredicate,LinkedList<StringTuple> replaceObject) { + public Manipulator(String blankNodeIdentifier, + int breakSuperClassRetrievalAfter, + LinkedList<StringTuple> replacePredicate, + LinkedList<StringTuple> replaceObject) { this.blankNodeIdentifier = blankNodeIdentifier; - this.replaceObject=replaceObject; - this.replacePredicate=replacePredicate; - this.breakSuperClassRetrievalAfter=breakSuperClassRetrievalAfter; - Set<String> classproperties = new HashSet<String>(); - classproperties.add(subclass); + this.replaceObject = replaceObject; + this.replacePredicate = replacePredicate; + this.breakSuperClassRetrievalAfter = breakSuperClassRetrievalAfter; + // Set<String> classproperties = new HashSet<String>(); + // classproperties.add(subclass); } - // TODO user defined rules missing - public Set<StringTuple> check(Set<StringTuple> s, Node node) { + /** + * this checks for consistency and manipulates the tuples, before they get + * triple + * + * @param tuples + * tuples for the node + * @param node + * @return + */ + public Set<StringTuple> check(Set<StringTuple> tuples, Node node) { Set<StringTuple> toRemove = new HashSet<StringTuple>(); - Iterator<StringTuple> it = s.iterator(); + Iterator<StringTuple> it = tuples.iterator(); while (it.hasNext()) { StringTuple t = (StringTuple) it.next(); replacePredicate(t); replaceObject(t); - // remove <rdf:type, owl:class> + // remove <rdf:type, owl:class> // this is done to avoid transformation to owl:subclassof - if (t.a.equals(type) && t.b.equals(classns) && node instanceof ClassNode) { + if (t.a.equals(type) && t.b.equals(classns) + && node instanceof ClassNode) { toRemove.add(t); } @@ -82,27 +92,29 @@ } // remove all instances with owl:type thing - if (t.a.equals(type) && t.b.equals(thing) && node instanceof InstanceNode) { + if (t.a.equals(type) && t.b.equals(thing) + && node instanceof InstanceNode) { toRemove.add(t); } } - s.removeAll(toRemove); + tuples.removeAll(toRemove); - return s; + return tuples; } - - private void replacePredicate(StringTuple t){ - for(StringTuple rep:replacePredicate){ - if(rep.a.equals(t.a)){ - t.a=rep.b; + + private void replacePredicate(StringTuple t) { + for (StringTuple rep : replacePredicate) { + if (rep.a.equals(t.a)) { + t.a = rep.b; } } } - private void replaceObject(StringTuple t){ - for(StringTuple rep:replaceObject){ - if(rep.a.equals(t.a)){ - t.a=rep.b; + + private void replaceObject(StringTuple t) { + for (StringTuple rep : replaceObject) { + if (rep.a.equals(t.a)) { + t.a = rep.b; } } } Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-01-22 16:47:20 UTC (rev 410) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-01-23 02:23:59 UTC (rev 411) @@ -57,7 +57,7 @@ import org.dllearner.utilities.StringTuple; /** - * Represents a SPARQL Endpoint. + * Represents the SPARQL Endpoint Component. * * @author Jens Lehmann * @author Sebastian Knappe @@ -65,8 +65,8 @@ */ public class SparqlKnowledgeSource extends KnowledgeSource { - private Map<Integer,SparqlQuery> queryIDs = new HashMap<Integer,SparqlQuery>(); - private Map<Integer, String[][]> queryResult=new HashMap<Integer,String[][]>(); + private Map<Integer, SparqlQuery> queryIDs = new HashMap<Integer, SparqlQuery>(); + private Map<Integer, String[][]> queryResult = new HashMap<Integer, String[][]>(); // ConfigOptions public URL url; // String host; @@ -84,19 +84,19 @@ private boolean getAllSuperClasses = true; private boolean closeAfterRecursion = true; private int breakSuperClassRetrievalAfter = 200; - - private boolean learnDomain = false; - private boolean learnRange = false; - private int numberOfInstancesUsedForRoleLearning = 40; - private String role = ""; private String blankNodeIdentifier = "bnode"; -// private String verbosity = "warning"; - - //LinkedList<StringTuple> URIParameters = new LinkedList<StringTuple>(); + // private boolean learnDomain = false; + // private boolean learnRange = false; + // private int numberOfInstancesUsedForRoleLearning = 40; + // private String role = ""; + // + // private String verbosity = "warning"; + + // LinkedList<StringTuple> URIParameters = new LinkedList<StringTuple>(); LinkedList<StringTuple> replacePredicate = new LinkedList<StringTuple>(); LinkedList<StringTuple> replaceObject = new LinkedList<StringTuple>(); - SparqlEndpoint sse = null; + SparqlEndpoint endpoint = null; /** * Holds the results of the calculateSubjects method @@ -130,10 +130,10 @@ private Thread triplesThread; private Thread conceptThread; - - private LinkedList<String> defaultGraphURIs=new LinkedList<String>(); - private LinkedList<String> namedGraphURIs=new LinkedList<String>(); + private LinkedList<String> defaultGraphURIs = new LinkedList<String>(); + private LinkedList<String> namedGraphURIs = new LinkedList<String>(); + // received ontology as array, used if format=Array(an element of the // array consists of the subject, predicate and object separated by '<' private String[] ontArray; @@ -145,8 +145,9 @@ return "SPARQL Endpoint"; } - private static Logger logger = Logger.getLogger(SparqlKnowledgeSource.class); - + private static Logger logger = Logger + .getLogger(SparqlKnowledgeSource.class); + /** * sets the ConfigOptions for this KnowledgeSource * @@ -155,7 +156,8 @@ public static Collection<ConfigOption<?>> createConfigOptions() { Collection<ConfigOption<?>> options = new LinkedList<ConfigOption<?>>(); options.add(new StringConfigOption("url", "URL of SPARQL Endpoint")); -// options.add(new StringConfigOption("host", "host of SPARQL Endpoint")); + // options.add(new StringConfigOption("host", "host of SPARQL + // Endpoint")); options .add(new StringSetConfigOption("instances", "relevant instances e.g. positive and negative examples in a learning problem")); @@ -208,9 +210,11 @@ options.add(new BooleanConfigOption("closeAfterRecursion", "gets all classes for all instances")); options.add(CommonConfigOptions.getVerbosityOption()); - - options.add(new StringSetConfigOption("defaultGraphURIs","a list of all default Graph URIs")); - options.add(new StringSetConfigOption("namedGraphURIs","a list of all named Graph URIs")); + + options.add(new StringSetConfigOption("defaultGraphURIs", + "a list of all default Graph URIs")); + options.add(new StringSetConfigOption("namedGraphURIs", + "a list of all named Graph URIs")); return options; } @@ -230,8 +234,8 @@ throw new InvalidConfigOptionValueException(entry.getOption(), entry.getValue(), "malformed URL " + s); } -// } else if (option.equals("host")) { -// host = (String) entry.getValue(); + // } else if (option.equals("host")) { + // host = (String) entry.getValue(); } else if (option.equals("instances")) { instances = (Set<String>) entry.getValue(); } else if (option.equals("recursionDepth")) { @@ -254,12 +258,16 @@ useLits = (Boolean) entry.getValue(); } else if (option.equals("getAllSuperClasses")) { getAllSuperClasses = (Boolean) entry.getValue(); - } else if (option.equals("learnDomain")) { - learnDomain = (Boolean) entry.getValue(); - } else if (option.equals("learnRange")) { - learnRange = (Boolean) entry.getValue(); - } else if (option.equals("role")) { - role = (String) entry.getValue(); + /* + * TODO remaove } else if (option.equals("learnDomain")) { + * learnDomain = (Boolean) entry.getValue(); } else if + * (option.equals("learnRange")) { learnRange = (Boolean) + * entry.getValue(); } else if (option.equals("role")) { role = + * (String) entry.getValue(); } else if + * (option.equals("numberOfInstancesUsedForRoleLearning")) { + * numberOfInstancesUsedForRoleLearning = (Integer) + * entry.getValue(); + */ } else if (option.equals("blankNodeIdentifier")) { blankNodeIdentifier = (String) entry.getValue(); } else if (option.equals("example")) { @@ -270,23 +278,21 @@ replaceObject = (LinkedList) entry.getValue(); } else if (option.equals("breakSuperClassRetrievalAfter")) { breakSuperClassRetrievalAfter = (Integer) entry.getValue(); - } else if (option.equals("numberOfInstancesUsedForRoleLearning")) { - numberOfInstancesUsedForRoleLearning = (Integer) entry.getValue(); } else if (option.equals("closeAfterRecursion")) { closeAfterRecursion = (Boolean) entry.getValue(); -// } else if (option.equals("verbosity")) { -// verbosity = (String) entry.getValue(); + // } else if (option.equals("verbosity")) { + // verbosity = (String) entry.getValue(); } else if (option.equals("defaultGraphURIs")) { Set<String> temp = (Set<String>) entry.getValue(); - Iterator iter=temp.iterator(); - while (iter.hasNext()){ - defaultGraphURIs.add((String)iter.next()); + Iterator iter = temp.iterator(); + while (iter.hasNext()) { + defaultGraphURIs.add((String) iter.next()); } } else if (option.equals("namedGraphURIs")) { Set<String> temp = (Set<String>) entry.getValue(); - Iterator iter=temp.iterator(); - while (iter.hasNext()){ - namedGraphURIs.add((String)iter.next()); + Iterator iter = temp.iterator(); + while (iter.hasNext()) { + namedGraphURIs.add((String) iter.next()); } } } @@ -299,100 +305,50 @@ @Override public void init() { logger.info("SparqlModul: Collecting Ontology"); - // SparqlOntologyCollector oc= - // new SparqlOntologyCollector(Datastructures.setToArray(instances), - // numberOfRecursions, filterMode, - // Datastructures.setToArray(predList),Datastructures.setToArray( - // objList),Datastructures.setToArray(classList),format,url,useLits); - + /* + * TODO remove when Jena works SparqlOntologyCollector oc= // new + * SparqlOntologyCollector(Datastructures.setToArray(instances), // + * numberOfRecursions, filterMode, // + * Datastructures.setToArray(predList),Datastructures.setToArray( + * objList),Datastructures.setToArray(classList),format,url,useLits); + * //HashMap<String, String> parameters = new HashMap<String, + * String>(); //parameters.put("default-graph-uri", + * "http://dbpedia.org"); //parameters.put("format", + * "application/sparql-results.xml"); + * + */ + Manager m = new Manager(); - SparqlQueryType sqt = null; + SparqlQueryType sparqlQueryType = null; // get Options for Manipulator - Manipulator man = new Manipulator(blankNodeIdentifier, + Manipulator manipulator = new Manipulator(blankNodeIdentifier, breakSuperClassRetrievalAfter, replacePredicate, replaceObject); - //HashMap<String, String> parameters = new HashMap<String, String>(); - //parameters.put("default-graph-uri", "http://dbpedia.org"); - //parameters.put("format", "application/sparql-results.xml"); // get Options for endpoints if (predefinedEndpoint >= 1) { - sse = SparqlEndpoint.getEndpointByNumber(predefinedEndpoint); + endpoint = SparqlEndpoint.getEndpointByNumber(predefinedEndpoint); } else { // TODO this is not optimal, because not all options are used - sse = new SparqlEndpoint(url); + // like default-graph uri + endpoint = new SparqlEndpoint(url); } // get Options for Filters if (predefinedFilter >= 1) { - sqt = SparqlQueryType.getFilterByNumber(predefinedFilter); + sparqlQueryType = SparqlQueryType + .getFilterByNumber(predefinedFilter); } else { - sqt = new SparqlQueryType("forbid", objList, predList, useLits ); + sparqlQueryType = new SparqlQueryType("forbid", objList, predList, + useLits); } // give everything to the manager - m.useConfiguration(sqt, sse, man, recursionDepth, getAllSuperClasses, - closeAfterRecursion); + m.useConfiguration(sparqlQueryType, endpoint, manipulator, + recursionDepth, getAllSuperClasses, closeAfterRecursion); try { String ont = ""; - // System.out.println(learnDomain); - // used to learn a domain of a role - if (learnDomain || learnRange) { - Set<String> pos = new HashSet<String>(); - Set<String> neg = new HashSet<String>(); - if (learnDomain) { - pos = m.getDomainInstancesForRole(role); - neg = m.getRangeInstancesForRole(role); - } else if (learnRange) { - neg = m.getDomainInstancesForRole(role); - pos = m.getRangeInstancesForRole(role); - } - // choose 30 - - Set<String> tmp = new HashSet<String>(); - for (String one : pos) { - tmp.add(one); - if (tmp.size() >= numberOfInstancesUsedForRoleLearning) - break; - } - pos = tmp; - logger.info("Instances used: " + pos.size()); - - tmp = new HashSet<String>(); - for (String one : neg) { - tmp.add(one); - if (tmp.size() >= numberOfInstancesUsedForRoleLearning) - break; - } - neg = tmp; - - instances = new HashSet<String>(); - instances.addAll(pos); - - instances.addAll(neg); - - for (String one : pos) { - logger.info("+\"" + one + "\""); - } - for (String one : neg) { - logger.info("-\"" + one + "\""); - } - - /* - * Random r= new Random(); - * - * - * Object[] arr=instances.toArray(); - * while(instances.size()>=30){ } - */ - // add the role to the filter(a solution is always EXISTS - // role.TOP) - m.addPredicateFilter(role); - // System.out.println(instances); - // THIS is a workaround - - } // the actual extraction is started here ont = m.extract(instances); logger.info("Number of cached SPARQL queries: " @@ -479,9 +435,9 @@ logger.info("SparqlModul: Collecting Subjects"); // oldSparqlOntologyCollector oc = new oldSparqlOntologyCollector(url); // try { - Vector<String> v = (SparqlQuery.makeLabelQuery(label, limit, sse) + Vector<String> v = (SparqlQuery.makeLabelQuery(label, limit, endpoint) .getAsVector("subject")); - subjects = (String[]) v.toArray(new String[v.size()]); + subjects = (String[]) v.toArray(new String[v.size()]); // subjects = oc.getSubjectsFromLabel(label, limit); // } catch (IOException e) { // TODO I removed IOException, please check @@ -498,22 +454,23 @@ */ public void calculateTriples(String subject) { logger.info("SparqlModul: Collecting Triples"); - Vector<StringTuple> v = (SparqlQuery.makeArticleQuery(subject, sse) - .getAsVectorOfTupels("predicate", "objcet")); - //String[] subjects = (String[]) v.toArray(new String[v.size()]); + Vector<StringTuple> v = (SparqlQuery + .makeArticleQuery(subject, endpoint).getAsVectorOfTupels( + "predicate", "objcet")); + // String[] subjects = (String[]) v.toArray(new String[v.size()]); String[] tmp = new String[v.size()]; - int i=0; + int i = 0; for (StringTuple stringTuple : v) { - tmp[i++]=stringTuple.a+"<"+stringTuple.b; + tmp[i++] = stringTuple.a + "<" + stringTuple.b; } - triples=tmp; - //oldSparqlOntologyCollector oc = new oldSparqlOntologyCollector(url); - //try { - // triples = oc.collectTriples(subject); - //} catch (IOException e) { - // triples = new String[1]; - // triples[0] = "[Error]Sparql Endpoint could not be reached."; - //} + triples = tmp; + // oldSparqlOntologyCollector oc = new oldSparqlOntologyCollector(url); + // try { + // triples = oc.collectTriples(subject); + // } catch (IOException e) { + // triples = new String[1]; + // triples[0] = "[Error]Sparql Endpoint could not be reached."; + // } logger.info("SparqlModul: ****Finished"); } @@ -524,9 +481,9 @@ */ public void calculateConceptSubjects(String concept) { logger.info("SparqlModul: Collecting Subjects"); - Vector<String> v = (SparqlQuery.makeConceptQuery(concept, sse) + Vector<String> v = (SparqlQuery.makeConceptQuery(concept, endpoint) .getAsVector("subject")); - conceptSubjects = (String[]) v.toArray(new String[v.size()]); + conceptSubjects = (String[]) v.toArray(new String[v.size()]); // oldSparqlOntologyCollector oc = new oldSparqlOntologyCollector(url); // try { @@ -600,44 +557,43 @@ } public int sparqlQuery(String query) { - this.sse=new SparqlEndpoint(url,defaultGraphURIs,namedGraphURIs); - return this.generateQueryID(new SparqlQuery(query, sse)); + this.endpoint = new SparqlEndpoint(url, defaultGraphURIs, + namedGraphURIs); + return this.generateQueryID(new SparqlQuery(query, endpoint)); } - - public void startSparqlQuery(int queryID){ + + public void startSparqlQuery(int queryID) { queryResult.put(queryID, queryIDs.get(queryID).getAsStringArray()); } - - public SparqlQuery getSparqlQuery(int queryID){ + + public SparqlQuery getSparqlQuery(int queryID) { return queryIDs.get(queryID); } - - public String[][] getSparqlResult(int queryID){ + + public String[][] getSparqlResult(int queryID) { return queryResult.get(queryID); } - + private int generateQueryID(SparqlQuery query) { int id; - Random rand=new Random(); + Random rand = new Random(); do { id = rand.nextInt(); - } while(queryIDs.keySet().contains(id)); + } while (queryIDs.keySet().contains(id)); queryIDs.put(id, query); - return id; + return id; } - - public static void main(String[] args) throws MalformedURLException - { - String query="SELECT ?pred ?obj\n"+ - "WHERE {<http://dbpedia.org/resource/Leipzig> ?pred ?obj}"; - URL url=new URL("http://dbpedia.openlinksw.com:8890/sparql"); - SparqlEndpoint sse=new SparqlEndpoint(url); - SparqlQuery q=new SparqlQuery(query,sse); - String[][] array=q.getAsStringArray(); - for (int i=0;i<array.length;i++) - { - for (int j=0;j<array[0].length;j++) - System.out.print(array[i][j]+" "); + + public static void main(String[] args) throws MalformedURLException { + String query = "SELECT ?pred ?obj\n" + + "WHERE {<http://dbpedia.org/resource/Leipzig> ?pred ?obj}"; + URL url = new URL("http://dbpedia.openlinksw.com:8890/sparql"); + SparqlEndpoint sse = new SparqlEndpoint(url); + SparqlQuery q = new SparqlQuery(query, sse); + String[][] array = q.getAsStringArray(); + for (int i = 0; i < array.length; i++) { + for (int j = 0; j < array[0].length; j++) + System.out.print(array[i][j] + " "); System.out.println(); } } Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryMaker.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryMaker.java 2008-01-22 16:47:20 UTC (rev 410) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryMaker.java 2008-01-23 02:23:59 UTC (rev 411) @@ -23,7 +23,8 @@ /** * Can assemble sparql queries. can make queries for subject, predicate, object - * according to the filter settings object not yet implemented + * according to the filter settings object SparqlQueryType, which gives the + * predicate and object lists * * @author Sebastian Hellmann * @@ -48,6 +49,11 @@ return ret; } + /** + * + * @param role + * @return + */ public String makeRoleQueryUsingFilters(String role) { String Filter = internalFilterAssemblyRole(); @@ -109,19 +115,19 @@ return Filter; } - public String filterSubject(String ns) { + private String filterSubject(String ns) { return "&&( !regex(str(?subject), '" + ns + "') )"; } - public static String filterPredicate(String ns) { + private static String filterPredicate(String ns) { return "&&( !regex(str(?predicate), '" + ns + "') )"; } - public static String filterObject(String ns) { + private static String filterObject(String ns) { return "&&( !regex(str(?object), '" + ns + "') )"; } - public void p(String str) { + private void p(String str) { if (print_flag) { System.out.println(str); } @@ -137,28 +143,18 @@ * @return sparql query */ /* - public static String makeQueryFilter(String subject, oldSparqlFilter sf) { + * public static String makeQueryFilter(String subject, oldSparqlFilter sf) { + * + * String Filter = ""; if (!sf.useLiterals) Filter += "!isLiteral(?object)"; + * for (String p : sf.getPredFilter()) { Filter += "\n" + + * filterPredicate(p); } for (String o : sf.getObjFilter()) { Filter += "\n" + + * filterObject(o); } + * + * String ret = "SELECT * WHERE { \n" + "<" + subject + "> ?predicate + * ?object.\n"; if (!(Filter.length() == 0)) ret += "FILTER( \n" + "(" + + * Filter + "))."; ret += "}"; // System.out.println(ret); return ret; } + */ - String Filter = ""; - if (!sf.useLiterals) - Filter += "!isLiteral(?object)"; - for (String p : sf.getPredFilter()) { - Filter += "\n" + filterPredicate(p); - } - for (String o : sf.getObjFilter()) { - Filter += "\n" + filterObject(o); - } - - String ret = "SELECT * WHERE { \n" + "<" + subject - + "> ?predicate ?object.\n"; - if (!(Filter.length() == 0)) - ret += "FILTER( \n" + "(" + Filter + "))."; - ret += "}"; - // System.out.println(ret); - return ret; - } -*/ - /* * moved to SparqlQuery TODO remove here creates a query for subjects with * the specified label @param label a phrase that is part of the label of a Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/TypedSparqlQuery.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/TypedSparqlQuery.java 2008-01-22 16:47:20 UTC (rev 410) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/TypedSparqlQuery.java 2008-01-23 02:23:59 UTC (rev 411) @@ -25,6 +25,7 @@ import org.dllearner.kb.sparql.configuration.Configuration; import org.dllearner.kb.sparql.query.Cache; +import org.dllearner.kb.sparql.query.CachedSparqlQuery; import org.dllearner.kb.sparql.query.SparqlQuery; import org.dllearner.utilities.StringTuple; @@ -36,102 +37,98 @@ */ public class TypedSparqlQuery implements TypedSparqlQueryInterface { boolean print_flag = false; - boolean debug_no_cache = false;// true means no cahce is used - private Configuration configuration; - // private SparqlHTTPRequest SparqlHTTPRequest; + protected Configuration configuration; private SparqlQueryMaker sparqlQueryMaker; - // private SparqlQuery sparqlQuery; - //private CachedSparqlQuery cachedSparqlQuery; Cache cache; + // boolean debug_no_cache = false;// true means no cache is used + // private SparqlHTTPRequest SparqlHTTPRequest; + // private SparqlQuery sparqlQuery; + // private CachedSparqlQuery cachedSparqlQuery; + public TypedSparqlQuery(Configuration Configuration) { this.configuration = Configuration; - // this.SparqlHTTPRequest = new - // SparqlHTTPRequest(Configuration.getSparqlEndpoint()); this.sparqlQueryMaker = new SparqlQueryMaker(Configuration .getSparqlQueryType()); + this.cache = new Cache("cache"); // this.sparqlQuery=new SparqlQuery(configuration.getSparqlEndpoint()); - this.cache = new Cache("cache"); // this.cachedSparqlQuery=new // CachedSparqlQuery(this.sparqlQuery,this.cache); } // standard query get a tupels (p,o) for subject s - public Set<StringTuple> query(URI u) { + /** + * uses a cache and gets the result tuples for a resource u + * + * @param uri + * the resource + * @param sparqlQueryString + * @param a + * the name of the first bound variable for xml parsing, normally + * predicate + * @param b + * the name of the second bound variable for xml parsing, + * normally object + * @return + */ + public Set<StringTuple> getTupelForResource(URI uri) { + // TODO remove + String a = "predicate"; + String b = "object"; // getQuery - String sparql = sparqlQueryMaker.makeSubjectQueryUsingFilters(u - .toString()); - return cachedSparql(u, sparql, "predicate", "object"); + String sparqlQueryString = sparqlQueryMaker + .makeSubjectQueryUsingFilters(uri.toString()); - } + CachedSparqlQuery csq = new CachedSparqlQuery(configuration + .getSparqlEndpoint(), cache, uri.toString(), sparqlQueryString); - // query get a tupels (s,o) for role p - public Set<StringTuple> getTupelsForRole(URI u) { - - // getQuery - String sparql = sparqlQueryMaker - .makeRoleQueryUsingFilters(u.toString()); - - Set<StringTuple> s = cachedSparql(u, sparql, "subject", "object"); - // System.out.println(s); - 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) { - configuration.increaseNumberOfuncachedSparqlQueries(); - // try { - xml = sendAndReceiveSPARQL(sparql); - /* - * } catch (IOException e) {e.printStackTrace();} - */ - p(sparql); - // System.out.println(xml); - if (!debug_no_cache) { - cache.put(u.toString(), sparql, xml); - } - // System.out.print("\n"); - } else { - configuration.increaseNumberOfCachedSparqlQueries(); - xml = FromCache; - // System.out.println("FROM CACHE"); - } - - // System.out.println(sparql); - // System.out.println(xml); - // process XML + String xml = csq.getAsXMLString(); + // TODO needs to be changed to new format Set<StringTuple> s = processResult(xml, a, b); try { // System.out.println("retrieved " + s.size() + " tupels\n"); } catch (Exception e) { } return s; + // return cachedSparql(u, sparql, "predicate", "object"); } + @Deprecated + private Set<StringTuple> cachedSparql(URI uri, String sparqlQueryString, + String a, String b) { + return null; + /* + * OLD CODE FOLLOWING keep until Jena is working String FromCache = + * cache.get(u.toString(), sparqlQueryString); if (debug_no_cache) { + * //FromCache = null; } String xml = null; // if not in cache get it + * from EndPoint if (FromCache == null) { + * configuration.increaseNumberOfuncachedSparqlQueries(); // try { xml = + * sendAndReceiveSPARQL(sparqlQueryString); + * + * //} catch (IOException e) {e.printStackTrace();} + * + * p(sparqlQueryString); // System.out.println(xml); if + * (!debug_no_cache) { cache.put(uri.toString(), sparqlQueryString, + * xml); } // System.out.print("\n"); } else { + * configuration.increaseNumberOfCachedSparqlQueries(); xml = FromCache; // + * System.out.println("FROM CACHE"); } + */ + // System.out.println(sparql); + // System.out.println(xml); + // process XML + } + + /** + * TODO old XML processing, can be removed, once Jena is done + * + * @param xml + * @param a + * @param b + * @return a Set of Tuples <a|b> + */ + @Deprecated public Set<StringTuple> processResult(String xml, String a, String b) { Set<StringTuple> ret = new HashSet<StringTuple>(); @@ -177,7 +174,6 @@ * while (xml.indexOf(one) != -1) { * * - * * // System.out.println(new Tupel(predtmp,objtmp)); } */ @@ -185,6 +181,13 @@ } + /** + * TODO used by old XML processing, can be removed once Jena is done + * + * @param xml + * @return + */ + @Deprecated private String getNextResult(String xml) { String res1 = "<result>"; String res2 = "</result>"; @@ -196,6 +199,15 @@ return xml; } + /** + * TODO used by old XML processing, can be removed once Jena is done + * + * @param xml + * @param starttag + * @param endtag + * @return + */ + @Deprecated private String getinTag(String xml, String starttag, String endtag) { String res1 = "<" + starttag + ">"; // System.out.println(res1); @@ -210,6 +222,7 @@ return xml; } + @Deprecated public String sendAndReceiveSPARQL(String queryString) { // SparqlQuery sq=new SparqlQuery(configuration.getSparqlEndpoint()); return new SparqlQuery(queryString, configuration.getSparqlEndpoint()) Deleted: trunk/src/dl-learner/org/dllearner/kb/sparql/TypedSparqlQueryClasses.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/TypedSparqlQueryClasses.java 2008-01-22 16:47:20 UTC (rev 410) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/TypedSparqlQueryClasses.java 2008-01-23 02:23:59 UTC (rev 411) @@ -1,194 +0,0 @@ -/** - * Copyright (C) 2007, Sebastian Hellmann - * - * This file is part of DL-Learner. - * - * DL-Learner is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * DL-Learner is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ -package org.dllearner.kb.sparql; - -import java.net.URI; -import java.util.HashSet; -import java.util.Set; - -import org.dllearner.kb.sparql.configuration.Configuration; -import org.dllearner.kb.sparql.query.Cache; -import org.dllearner.kb.sparql.query.SparqlQuery; -import org.dllearner.utilities.StringTuple; - -/** - * Can execute different queries. - * - * @author Sebastian Hellmann - * - */ -public class TypedSparqlQueryClasses implements TypedSparqlQueryInterface { - boolean print_flag = false; - boolean debug_no_cache = false; - private Configuration configuration; - // private SparqlHTTPRequest SparqlHTTPRequest; - // private SparqlQueryMaker sparqlQueryMaker; - Cache cache; - - public TypedSparqlQueryClasses(Configuration configuration) { - this.configuration = configuration; - this.cache = new Cache("cache"); - } - - // standard query get a tupels (p,o) for subject s - public Set<StringTuple> query(URI u) { - - // getQuery - String sparql = "SELECT ?predicate ?object " + "WHERE {" + "<" - + u.toString() + "> ?predicate ?object;" + "a ?object . " - + " FILTER (!regex(str(?object),'http://xmlns.com/foaf/0.1/'))" - + "}"; - - return cachedSparql(u, sparql, "predicate", "object"); - - } - - // 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) { - configuration.increaseNumberOfuncachedSparqlQueries(); - // try { - xml = sendAndReceiveSPARQL(sparql); - /* - * } catch (IOException e) {e.printStackTrace();} - */ - p(sparql); - // System.out.println(xml); - if (!debug_no_cache) { - cache.put(u.toString(), sparql, xml); - } - // System.out.print("\n"); - } else { - configuration.increaseNumberOfCachedSparqlQueries(); - xml = FromCache; - // System.out.println("FROM CACHE"); - } - - // System.out.println(sparql); - // System.out.println(xml); - // process XML - Set<StringTuple> s = processResult(xml, a, b); - try { - // System.out.println("retrieved " + s.size() + " tupels\n"); - } catch (Exception e) { - } - return s; - } - - public Set<StringTuple> processResult(String xml, String a, String b) { - - Set<StringTuple> ret = new HashSet<StringTuple>(); - // TODO if result is empty, catch exceptions - String resEnd = "</result>"; - String one = "binding name=\"" + a + "\""; - String two = "binding name=\"" + b + "\""; - String endbinding = "binding"; - String uri = "uri"; - // String uridel = "<uri>"; - String bnode = "<bnode>"; - // String uriend = "</uri>"; - String predtmp = ""; - String objtmp = ""; - // System.out.println(getNextResult(xml)); - String nextResult = ""; - while ((nextResult = getNextResult(xml)) != null) { - // System.out.println(xml.indexOf(resEnd)); - // System.out.println(xml); - if (nextResult.indexOf(bnode) != -1) { - xml = xml.substring(xml.indexOf(resEnd) + resEnd.length()); - continue; - } - // get pred - // predtmp = nextResult.substring(nextResult.indexOf(one) + - // one.length()); - predtmp = getinTag(nextResult, one, endbinding); - predtmp = getinTag(predtmp, uri, uri); - // System.out.println(predtmp); - - // getobj - objtmp = getinTag(nextResult, two, endbinding); - objtmp = getinTag(objtmp, uri, uri); - // System.out.println(objtmp); - - StringTuple st = new StringTuple(predtmp, objtmp); - // System.out.println(st); - ret.add(st); - xml = xml.substring(xml.indexOf(resEnd) + resEnd.length()); - - } - /* - * while (xml.indexOf(one) != -1) { - * - * - * - * // System.out.println(new Tupel(predtmp,objtmp)); } - */ - - return ret; - - } - - private String getNextResult(String xml) { - String res1 = "<result>"; - String res2 = "</result>"; - if (xml.indexOf(res1) == -1) - return null; - xml = xml.substring(xml.indexOf(res1) + res1.length()); - xml = xml.substring(0, xml.indexOf(res2)); - // System.out.println(xml); - return xml; - } - - private String getinTag(String xml, String starttag, String endtag) { - String res1 = "<" + starttag + ">"; - // System.out.println(res1); - String res2 = "</" + endtag + ">"; - if (xml.indexOf(res1) == -1) - return null; - xml = xml.substring(xml.indexOf(res1) + res1.length()); - // System.out.println(xml); - xml = xml.substring(0, xml.indexOf(res2)); - // System.out.println(xml); - - return xml; - } - - private String sendAndReceiveSPARQL(String sparql) { - - - return new SparqlQuery(sparql, configuration.getSparqlEndpoint()) - .getAsXMLString(); - } - - public void p(String str) { - if (print_flag) { - System.out.println(str); - } - } - -} Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/TypedSparqlQueryInterface.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/TypedSparqlQueryInterface.java 2008-01-22 16:47:20 UTC (rev 410) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/TypedSparqlQueryInterface.java 2008-01-23 02:23:59 UTC (rev 411) @@ -1,3 +1,22 @@ +/** + * Copyright (C) 2007, Sebastian Hellmann + * + * This file is part of DL-Learner. + * + * DL-Learner is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * DL-Learner is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ package org.dllearner.kb.sparql; import java.net.URI; @@ -7,12 +26,14 @@ /** * - * Type SPARQL query interface. + * Typed SPARQL query interface. The typing means that they all have the same + * input and the same output: They are fn: resource -> ( a | b ) where a + * normally is a predicate and b an object * * @author Sebastian Hellmann - * + * */ public interface TypedSparqlQueryInterface { - public Set<StringTuple> query(URI u); + public Set<StringTuple> getTupelForResource(URI u); } Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/configuration/Configuration.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/configuration/Configuration.java 2008-01-22 16:47:20 UTC (rev 410) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/configuration/Configuration.java 2008-01-23 02:23:59 UTC (rev 411) @@ -22,44 +22,42 @@ import org.dllearner.kb.sparql.Manipulator; /** - * Stores all configuration settings. + * Stores all configuration settings. this class collects all configuration + * information see the other classes, which are used as attributes here * * @author Sebastian Hellmann */ public class Configuration { - - /* - * this class colects all configuration information - * see the other classes, which are used as attributes here - * */ - + private SparqlEndpoint endpoint; private SparqlQueryType sparqlQueryType; private Manipulator manipulator; - // the following needs to be moved to + // the following needs to be moved to // class extraction algorithm or manipulator private int recursiondepth = 2; private boolean getAllSuperClasses = true; private boolean closeAfterRecursion = true; - public int numberOfUncachedSparqlQueries=0; - public int numberOfCachedSparqlQueries=0; + public int numberOfUncachedSparqlQueries = 0; + public int numberOfCachedSparqlQueries = 0; public Configuration(SparqlEndpoint specificSparqlEndpoint, - SparqlQueryType sparqlQueryType, Manipulator manipulator, int recursiondepth, - boolean getAllSuperClasses, boolean closeAfterRecursion) { + SparqlQueryType sparqlQueryType, Manipulator manipulator, + int recursiondepth, boolean getAllSuperClasses, + boolean closeAfterRecursion) { this.endpoint = specificSparqlEndpoint; this.sparqlQueryType = sparqlQueryType; this.manipulator = manipulator; this.recursiondepth = recursiondepth; this.getAllSuperClasses = getAllSuperClasses; - this.closeAfterRecursion=closeAfterRecursion; + this.closeAfterRecursion = closeAfterRecursion; } public Configuration changeQueryType(SparqlQueryType sqt) { // TODO must clone here return new Configuration(this.endpoint, sqt, this.manipulator, - this.recursiondepth, this.getAllSuperClasses,this.closeAfterRecursion); + this.recursiondepth, this.getAllSuperClasses, + this.closeAfterRecursion); } @@ -78,6 +76,7 @@ public boolean isGetAllSuperClasses() { return getAllSuperClasses; } + public boolean isCloseAfterRecursion() { return closeAfterRecursion; } @@ -85,11 +84,12 @@ public int getRecursiondepth() { return recursiondepth; } - - public void increaseNumberOfuncachedSparqlQueries(){ + + public void increaseNumberOfuncachedSparqlQueries() { numberOfUncachedSparqlQueries++; } - public void increaseNumberOfCachedSparqlQueries(){ + + public void increaseNumberOfCachedSparqlQueries() { numberOfCachedSparqlQueries++; } Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/datastructure/ClassNode.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/datastructure/ClassNode.java 2008-01-22 16:47:20 UTC (rev 410) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/datastructure/ClassNode.java 2008-01-23 02:23:59 UTC (rev 411) @@ -30,7 +30,7 @@ import org.dllearner.utilities.StringTuple; /** - * Is a node in the graph that is a class. + * Is a node in the graph, that is a class. * * @author Sebastian Hellmann */ @@ -39,14 +39,13 @@ public ClassNode(URI u) { super(u); - // this.type = "class"; } // expands all directly connected nodes @Override public Vector<Node> expand(TypedSparqlQueryInterface tsq, Manipulator m) { - Set<StringTuple> s = tsq.query(this.uri); + Set<StringTuple> s = tsq.getTupelForResource(this.uri); // see manipulator s = m.check(s, this); Vector<Node> Nodes = new Vector<Node>(); @@ -69,6 +68,7 @@ // System.out.println("XXXXX"+t.b); // if o is a blank node expand further + // TODO this needs a lot more work if (t.b.startsWith(m.blankNodeIdentifier)) { tmp.expand(tsq, m); System.out.println(m.blankNodeIdentifier); @@ -90,6 +90,11 @@ public void expandProperties(TypedSparqlQueryInterface tsq, Manipulator m) { } + /* + * (non-Javadoc) + * + * @see org.dllearner.kb.sparql.datastructure.Node#toNTriple() + */ @Override public Set<String> toNTriple() { Set<String> s = new HashSet<String>(); Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/datastructure/InstanceNode.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/datastructure/InstanceNode.java 2008-01-22 16:47:20 UTC (rev 410) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/datastructure/InstanceNode.java 2008-01-23 02:23:59 UTC (rev 411) @@ -51,7 +51,7 @@ @Override public Vector<Node> expand(TypedSparqlQueryInterface tsq, Manipulator m) { - Set<StringTuple> s = tsq.query(uri); + Set<StringTuple> s = tsq.getTupelForResource(uri); // see Manipulator m.check(s, this); // System.out.println("fffffff"+m); Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/datastructure/Node.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/datastructure/Node.java 2008-01-22 16:47:20 UTC (rev 410) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/datastructure/Node.java 2008-01-23 02:23:59 UTC (rev 411) @@ -27,25 +27,21 @@ import org.dllearner.kb.sparql.TypedSparqlQueryInterface; /** - * Abstract class. + * Abstract class. defines functions to expand the nodes * * @author Sebastian Hellmann * */ -/** - * @author sebastian - * - */ public abstract class Node implements Comparable<Node> { - final String subclass = "http://www.w3.org/2000/01/rdf-schema#subClassOf"; + final String subclass = "http://www.w3.org/2000/01/rdf-schema#subClassOf"; final String rdftype = "http://www.w3.org/1999/02/22-rdf-syntax-ns#type"; final String objectProperty = "http://www.w3.org/2002/07/owl#ObjectProperty"; final String classns = "http://www.w3.org/2002/07/owl#Class"; final String thing = "http://www.w3.org/2002/07/owl#Thing"; URI uri; - //protected String type; + // protected String type; protected boolean expanded = false; public Node(URI u) { @@ -53,29 +49,30 @@ } /** - * Nodes are expanded with a certain context, given by - * the typedSparqlQuery and the manipulator + * Nodes are expanded with a certain context, given by the typedSparqlQuery + * and the manipulator + * * @param typedSparqlQuery * @param manipulator * @return Vector<Node> all Nodes that are new because of expansion */ - public abstract Vector<Node> expand(TypedSparqlQueryInterface typedSparqlQuery, - Manipulator manipulator); + public abstract Vector<Node> expand( + TypedSparqlQueryInterface typedSparqlQuery, Manipulator manipulator); - /** - * used to get type defs for properties like rdf:type SymmetricProperties + * gets type defs for properties like rdf:type SymmetricProperties * * @param typedSparqlQuery * @param manipulator - * @return Vector<Node> + * @return Vector<Node> */ public abstract void expandProperties( TypedSparqlQueryInterface typedSparqlQuery, Manipulator manipulator); /** * output - * @return a set of n-triple + * + * @return a set of n-triple */ public abstract Set<String> toNTriple(); Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/datastructure/PropertyNode.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/datastructure/Prope... [truncated message content] |
From: <sk...@us...> - 2008-01-28 17:10:14
|
Revision: 441 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=441&view=rev Author: sknappe Date: 2008-01-28 09:10:02 -0800 (Mon, 28 Jan 2008) Log Message: ----------- changed the SparqlQuery mechanism Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java trunk/src/dl-learner/org/dllearner/kb/sparql/query/CachedSparqlQuery.java trunk/src/dl-learner/org/dllearner/kb/sparql/query/SparqlQuery.java trunk/src/dl-learner/org/dllearner/server/ClientState.java trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-01-28 16:05:10 UTC (rev 440) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-01-28 17:10:02 UTC (rev 441) @@ -64,7 +64,6 @@ */ public class SparqlKnowledgeSource extends KnowledgeSource { - private Map<Integer, SparqlQuery> queryIDs = new HashMap<Integer, SparqlQuery>(); private Map<Integer, String[][]> queryResult = new HashMap<Integer, String[][]>(); // ConfigOptions public URL url; @@ -392,34 +391,12 @@ return ontArray; } - public int sparqlQuery(String query) { + public SparqlQuery sparqlQuery(String query) { this.endpoint = new SparqlEndpoint(url, defaultGraphURIs, namedGraphURIs); - return this.generateQueryID(new SparqlQuery(query, endpoint)); + return new SparqlQuery(query, endpoint); } - public void startSparqlQuery(int queryID) { - queryResult.put(queryID, queryIDs.get(queryID).getAsStringArray()); - } - - public SparqlQuery getSparqlQuery(int queryID) { - return queryIDs.get(queryID); - } - - public String[][] getSparqlResult(int queryID) { - return queryResult.get(queryID); - } - - private int generateQueryID(SparqlQuery query) { - int id; - Random rand = new Random(); - do { - id = rand.nextInt(); - } while (queryIDs.keySet().contains(id)); - queryIDs.put(id, query); - return id; - } - public static void main(String[] args) throws MalformedURLException { String query = "SELECT ?pred ?obj\n" + "WHERE {<http://dbpedia.org/resource/Leipzig> ?pred ?obj}"; Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/query/CachedSparqlQuery.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/query/CachedSparqlQuery.java 2008-01-28 16:05:10 UTC (rev 440) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/query/CachedSparqlQuery.java 2008-01-28 17:10:02 UTC (rev 441) @@ -77,10 +77,6 @@ return SparqlQuery.JSONtoResultSet(getAsJSON()); } - public ResultSet getAsResultSet2(){ - return this.sparqlQuery.send(); - } - /** * sends a query and returns JSON using cache * Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/query/SparqlQuery.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/query/SparqlQuery.java 2008-01-28 16:05:10 UTC (rev 440) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/query/SparqlQuery.java 2008-01-28 17:10:02 UTC (rev 441) @@ -51,11 +51,8 @@ private String queryString; private QueryExecution queryExecution; SparqlEndpoint endpoint; + private ResultSet rs=null; - public void setQueryExecutionRunning(boolean isRunning){ - this.isRunning=isRunning; - } - /** * simplest contructor, works only with some endpoints, * not with DBpedia @@ -82,7 +79,8 @@ * method used for sending over Jena * @return jena ResultSet */ - protected ResultSet send() { + public void send() { + this.isRunning=true; p(queryString); String service = endpoint.getURL().toString(); @@ -98,10 +96,10 @@ p("query SPARQL server"); - ResultSet rs = queryExecution.execSelect(); + rs = queryExecution.execSelect(); p(rs.getResultVars().toString()); //p(ResultSetFormatter.asXMLString(rs)); - return rs; + this.isRunning=false; } public void stop() { @@ -119,8 +117,8 @@ */ @SuppressWarnings({"unchecked"}) public String[][] getAsStringArray(){ + if (rs==null) this.send(); System.out.println("Starting Query"); - ResultSet rs=send(); List<ResultBinding> l = ResultSetFormatter.toList(rs); List<String> resultVars=rs.getResultVars(); String[][] array=new String[l.size()][resultVars.size()]; @@ -147,7 +145,7 @@ * @return String xml */ public String getAsXMLString() { - ResultSet rs = send(); + if (rs==null) this.send(); return ResultSetFormatter.asXMLString(rs); } @@ -159,7 +157,7 @@ */ @SuppressWarnings({"unchecked"}) public List<ResultBinding> getAsList() { - ResultSet rs = send(); + if (rs==null) this.send(); return ResultSetFormatter.toList(rs); } @@ -174,7 +172,6 @@ @SuppressWarnings({"unchecked"}) @Deprecated public Vector<String> getAsVector(String varName) { - ResultSet rs = send(); Vector<String> vret = new Vector<String>(); List<ResultBinding> l = ResultSetFormatter.toList(rs); for (ResultBinding resultBinding : l) { @@ -196,8 +193,6 @@ @Deprecated public Vector<StringTuple> getAsVectorOfTupels(String varName1, String varName2) { - ResultSet rs = send(); - Vector<StringTuple> vret = new Vector<StringTuple>(); List<ResultBinding> l = ResultSetFormatter.toList(rs); //System.out.println(l); @@ -240,7 +235,7 @@ * @return a String representation of the Resultset as JSON */ public String getAsJSON(){ - ResultSet rs=send(); + if (rs==null) this.send(); ByteArrayOutputStream baos=new ByteArrayOutputStream(); ResultSetFormatter.outputAsJSON(baos, rs); return baos.toString(); Modified: trunk/src/dl-learner/org/dllearner/server/ClientState.java =================================================================== --- trunk/src/dl-learner/org/dllearner/server/ClientState.java 2008-01-28 16:05:10 UTC (rev 440) +++ trunk/src/dl-learner/org/dllearner/server/ClientState.java 2008-01-28 17:10:02 UTC (rev 441) @@ -34,6 +34,7 @@ import org.dllearner.core.ReasoningService; import org.dllearner.kb.OWLFile; import org.dllearner.kb.sparql.SparqlKnowledgeSource; +import org.dllearner.kb.sparql.query.SparqlQuery; /** * Stores the state of a DL-Learner client session. @@ -50,6 +51,8 @@ private Set<KnowledgeSource> knowledgeSources = new HashSet<KnowledgeSource>(); + private Map<Integer, SparqlQuery> queryIDs = new HashMap<Integer, SparqlQuery>(); + private LearningProblem learningProblem; private ReasonerComponent reasonerComponent; @@ -70,6 +73,24 @@ return id; } + private int generateQueryID(SparqlQuery query) { + int id; + Random rand = new Random(); + do { + id = rand.nextInt(); + } while (queryIDs.keySet().contains(id)); + queryIDs.put(id, query); + return id; + } + + public int addQuery(SparqlQuery query){ + return this.generateQueryID(query); + } + + public SparqlQuery getQuery(int id){ + return queryIDs.get(id); + } + /** * @return the isAlgorithmRunning */ Modified: trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java =================================================================== --- trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java 2008-01-28 16:05:10 UTC (rev 440) +++ trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java 2008-01-28 17:10:02 UTC (rev 441) @@ -488,45 +488,55 @@ //////////////////////////////////////// @WebMethod - public String[][] sparqlQuery(int sessionID, int componentID, int queryID) throws ClientNotKnownException + public String[][] getAsStringArray(int sessionID, int queryID) throws ClientNotKnownException { ClientState state = getState(sessionID); - Component component = state.getComponent(componentID); - return ((SparqlKnowledgeSource)component).getSparqlResult(queryID); + return state.getQuery(queryID).getAsStringArray(); } @WebMethod + public String getAsJSON(int sessionID, int queryID) throws ClientNotKnownException + { + ClientState state = getState(sessionID); + return state.getQuery(queryID).getAsJSON(); + } + + @WebMethod + public String getAsXMLString(int sessionID, int queryID) throws ClientNotKnownException + { + ClientState state = getState(sessionID); + return state.getQuery(queryID).getAsXMLString(); + } + + @WebMethod public int sparqlQueryThreaded(int sessionID, int componentID, final String query) throws ClientNotKnownException { final ClientState state = getState(sessionID); final Component component = state.getComponent(componentID); - final int ID=((SparqlKnowledgeSource)component).sparqlQuery(query); + final int id=state.addQuery(((SparqlKnowledgeSource)component).sparqlQuery(query)); Thread sparqlThread = new Thread() { @Override public void run() { - ((SparqlKnowledgeSource)component).getSparqlQuery(ID).setQueryExecutionRunning(true); - ((SparqlKnowledgeSource)component).startSparqlQuery(ID); - ((SparqlKnowledgeSource)component).getSparqlQuery(ID).setQueryExecutionRunning(false); + state.getQuery(id).send(); } }; sparqlThread.start(); - return ID; + return id; } @WebMethod - public boolean isSparqlQueryRunning(int sessionID, int componentID, int queryID) throws ClientNotKnownException + public boolean isSparqlQueryRunning(int sessionID, int queryID) throws ClientNotKnownException { ClientState state = getState(sessionID); - Component component = state.getComponent(componentID); - return ((SparqlKnowledgeSource)component).getSparqlQuery(queryID).isRunning(); + return state.getQuery(queryID).isRunning(); } @WebMethod - public void stopSparqlThread(int sessionID, int componentID, int queryID) throws ClientNotKnownException + public void stopSparqlThread(int sessionID, int queryID) throws ClientNotKnownException { ClientState state = getState(sessionID); - Component component = state.getComponent(componentID); - ((SparqlKnowledgeSource)component).getSparqlQuery(queryID).stop(); + + state.getQuery(queryID).stop(); } @WebMethod This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jen...@us...> - 2008-01-28 18:29:03
|
Revision: 442 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=442&view=rev Author: jenslehmann Date: 2008-01-28 10:28:59 -0800 (Mon, 28 Jan 2008) Log Message: ----------- - resurrected and extented the fast retrieval reasoner algorithm; extremely fast reasoning, reasonably correct instance checks, often incorrect subsumption checks - add reasoner = fastRetrieval in the conf files to use it Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/cli/Start.java trunk/src/dl-learner/org/dllearner/reasoning/FastRetrieval.java trunk/src/dl-learner/org/dllearner/reasoning/FastRetrievalReasoner.java Modified: trunk/src/dl-learner/org/dllearner/cli/Start.java =================================================================== --- trunk/src/dl-learner/org/dllearner/cli/Start.java 2008-01-28 17:10:02 UTC (rev 441) +++ trunk/src/dl-learner/org/dllearner/cli/Start.java 2008-01-28 18:28:59 UTC (rev 442) @@ -76,6 +76,7 @@ import org.dllearner.parser.ParseException; import org.dllearner.parser.TokenMgrError; import org.dllearner.reasoning.DIGReasoner; +import org.dllearner.reasoning.FastRetrievalReasoner; import org.dllearner.reasoning.OWLAPIReasoner; import org.dllearner.utilities.ConceptComparator; import org.dllearner.utilities.Datastructures; @@ -150,9 +151,11 @@ reasonerClass = DIGReasoner.class; else if(reasonerOption.getStringValue().equals("owlAPI")) reasonerClass = OWLAPIReasoner.class; + else if(reasonerOption.getStringValue().equals("fastRetrieval")) + reasonerClass = FastRetrievalReasoner.class; else { handleError("Unknown value " + reasonerOption.getStringValue() - + "for option \"reasoner\"."); + + " for option \"reasoner\"."); } ReasonerComponent reasoner = cm.reasoner(reasonerClass, sources); configureComponent(cm, reasoner, componentPrefixMapping, parser); Modified: trunk/src/dl-learner/org/dllearner/reasoning/FastRetrieval.java =================================================================== --- trunk/src/dl-learner/org/dllearner/reasoning/FastRetrieval.java 2008-01-28 17:10:02 UTC (rev 441) +++ trunk/src/dl-learner/org/dllearner/reasoning/FastRetrieval.java 2008-01-28 18:28:59 UTC (rev 442) @@ -12,6 +12,8 @@ import org.dllearner.core.dl.Disjunction; import org.dllearner.core.dl.Exists; import org.dllearner.core.dl.FlatABox; +import org.dllearner.core.dl.MultiConjunction; +import org.dllearner.core.dl.MultiDisjunction; import org.dllearner.core.dl.Negation; import org.dllearner.core.dl.Top; import org.dllearner.utilities.Helper; @@ -46,6 +48,20 @@ return calculateConjunctionSets(calculateSetsADC(concept.getChild(0),adcSet),calculateSetsADC(concept.getChild(1),adcSet)); } else if(concept instanceof Disjunction) { return calculateDisjunctionSets(calculateSetsADC(concept.getChild(0),adcSet),calculateSetsADC(concept.getChild(1),adcSet)); + } else if(concept instanceof MultiConjunction) { + SortedSetTuple<String> res = + calculateConjunctionSets(calculateSetsADC(concept.getChild(0),adcSet),calculateSetsADC(concept.getChild(1),adcSet)); + for(int i=2; i < concept.getChildren().size(); i++) { + res = calculateConjunctionSets(res,calculateSetsADC(concept.getChild(i),adcSet)); + } + return res; + } else if(concept instanceof MultiDisjunction) { + SortedSetTuple<String> res = + calculateDisjunctionSets(calculateSetsADC(concept.getChild(0),adcSet),calculateSetsADC(concept.getChild(1),adcSet)); + for(int i=2; i < concept.getChildren().size(); i++) { + res = calculateDisjunctionSets(res,calculateSetsADC(concept.getChild(i),adcSet)); + } + return res; } else if(concept instanceof All) { return calculateAllSet(abox,((All)concept).getRole().getName(),calculateSetsADC(concept.getChild(0),adcSet)); } else if(concept instanceof Exists) { Modified: trunk/src/dl-learner/org/dllearner/reasoning/FastRetrievalReasoner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/reasoning/FastRetrievalReasoner.java 2008-01-28 17:10:02 UTC (rev 441) +++ trunk/src/dl-learner/org/dllearner/reasoning/FastRetrievalReasoner.java 2008-01-28 18:28:59 UTC (rev 442) @@ -5,14 +5,21 @@ import java.util.SortedSet; import java.util.TreeSet; +import org.dllearner.core.KnowledgeSource; import org.dllearner.core.ReasonerComponent; +import org.dllearner.core.ReasoningMethodUnsupportedException; +import org.dllearner.core.ReasoningService; import org.dllearner.core.config.ConfigEntry; import org.dllearner.core.config.InvalidConfigOptionValueException; import org.dllearner.core.dl.AtomicConcept; import org.dllearner.core.dl.AtomicRole; import org.dllearner.core.dl.Concept; +import org.dllearner.core.dl.Conjunction; import org.dllearner.core.dl.FlatABox; import org.dllearner.core.dl.Individual; +import org.dllearner.core.dl.Negation; +import org.dllearner.core.dl.RoleHierarchy; +import org.dllearner.core.dl.SubsumptionHierarchy; import org.dllearner.utilities.Helper; import org.dllearner.utilities.SortedSetTuple; @@ -24,6 +31,25 @@ Set<AtomicRole> atomicRoles; SortedSet<Individual> individuals; + ReasoningService rs; + ReasonerComponent rc; + + public FastRetrievalReasoner(Set<KnowledgeSource> sources) { + rc = new DIGReasoner(sources); + rc.init(); + atomicConcepts = rc.getAtomicConcepts(); + atomicRoles = rc.getAtomicRoles(); + individuals = rc.getIndividuals(); + rs = new ReasoningService(rc); + try { + abox = Helper.createFlatABox(rs); + } catch (ReasoningMethodUnsupportedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + fastRetrieval = new FastRetrieval(abox); + } + public FastRetrievalReasoner(FlatABox abox) { this.abox = abox; fastRetrieval = new FastRetrieval(abox); @@ -79,10 +105,43 @@ return abox; } + // C \sqsubseteq D is rewritten to a retrieval for \not C \sqcap D + @Override + public boolean subsumes(Concept superConcept, Concept subConcept) { + Negation neg = new Negation(subConcept); + Conjunction c = new Conjunction(neg,superConcept); + return fastRetrieval.calculateSets(c).getPosSet().isEmpty(); + } + + @Override + public void prepareRoleHierarchy(Set<AtomicRole> allowedRoles) { + rs.prepareRoleHierarchy(allowedRoles); + } + + @Override + public RoleHierarchy getRoleHierarchy() { + return rs.getRoleHierarchy(); + } + public void prepareSubsumptionHierarchy(Set<AtomicConcept> allowedConcepts) { - // hier muss nichts getan werden + rs.prepareSubsumptionHierarchy(allowedConcepts); } + @Override + public SubsumptionHierarchy getSubsumptionHierarchy() { + return rs.getSubsumptionHierarchy(); + } + + @Override + public boolean isSatisfiable() { + return rs.isSatisfiable(); + } + + @Override + public boolean instanceCheck(Concept concept, Individual individual) { + return fastRetrieval.calculateSets(concept).getPosSet().contains(individual.getName()); + } + public static String getName() { return "fast retrieval reasoner"; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jen...@us...> - 2008-01-28 19:15:11
|
Revision: 443 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=443&view=rev Author: jenslehmann Date: 2008-01-28 11:15:03 -0800 (Mon, 28 Jan 2008) Log Message: ----------- - fixed useRetrievalForClassification option - fixed warnings Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/cli/Start.java trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java trunk/src/dl-learner/org/dllearner/learningproblems/PosNegDefinitionLP.java trunk/src/dl-learner/org/dllearner/learningproblems/PosNegLP.java Modified: trunk/src/dl-learner/org/dllearner/cli/Start.java =================================================================== --- trunk/src/dl-learner/org/dllearner/cli/Start.java 2008-01-28 18:28:59 UTC (rev 442) +++ trunk/src/dl-learner/org/dllearner/cli/Start.java 2008-01-28 19:15:03 UTC (rev 443) @@ -92,6 +92,8 @@ */ public class Start { + private static Logger logger = Logger.getRootLogger(); + /** * Entry point for CLI interface. * @@ -109,7 +111,6 @@ // its messages to the console) SimpleLayout layout = new SimpleLayout(); ConsoleAppender consoleAppender = new ConsoleAppender(layout); - Logger logger = Logger.getRootLogger(); logger.removeAllAppenders(); logger.addAppender(consoleAppender); logger.setLevel(Level.INFO); @@ -287,7 +288,7 @@ // the name of the option is suboption-part (the first part refers // to its component) String optionName = option.getSubOption(); - + ConfigOption<?> configOption = cm.getConfigOption(component.getClass(), optionName); // check whether such an option exists if (configOption != null) { @@ -522,8 +523,8 @@ } private static void initComponent(ComponentManager cm, Component component) { - System.out.print("initialising component \"" + cm.getComponentName(component.getClass()) - + "\" ... "); + String startMessage = "initialising component \"" + cm.getComponentName(component.getClass()) + + "\" ... "; long initStartTime = System.nanoTime(); component.init(); // standard messsage is just "OK" but can be more detailed for certain @@ -538,7 +539,7 @@ } long initTime = System.nanoTime() - initStartTime; - System.out.println(message + " (" + Helper.prettyPrintNanoSeconds(initTime, false, false) + logger.info(startMessage + message + " (" + Helper.prettyPrintNanoSeconds(initTime, false, false) + ")"); } Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-01-28 18:28:59 UTC (rev 442) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-01-28 19:15:03 UTC (rev 443) @@ -25,12 +25,9 @@ import java.net.URI; import java.net.URL; import java.util.Collection; -import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.LinkedList; -import java.util.Map; -import java.util.Random; import java.util.Set; import org.apache.log4j.Logger; @@ -64,7 +61,6 @@ */ public class SparqlKnowledgeSource extends KnowledgeSource { - private Map<Integer, String[][]> queryResult = new HashMap<Integer, String[][]>(); // ConfigOptions public URL url; // String host; Modified: trunk/src/dl-learner/org/dllearner/learningproblems/PosNegDefinitionLP.java =================================================================== --- trunk/src/dl-learner/org/dllearner/learningproblems/PosNegDefinitionLP.java 2008-01-28 18:28:59 UTC (rev 442) +++ trunk/src/dl-learner/org/dllearner/learningproblems/PosNegDefinitionLP.java 2008-01-28 19:15:03 UTC (rev 443) @@ -19,12 +19,14 @@ */ package org.dllearner.learningproblems; +import java.util.Collection; import java.util.Set; import java.util.SortedSet; import java.util.TreeSet; import org.dllearner.core.ReasoningService; import org.dllearner.core.Score; +import org.dllearner.core.config.ConfigOption; import org.dllearner.core.dl.Concept; import org.dllearner.core.dl.Individual; import org.dllearner.utilities.Helper; @@ -63,6 +65,10 @@ return "two valued definition learning problem"; } + public static Collection<ConfigOption<?>> createConfigOptions() { + return PosNegLP.createConfigOptions(); + } + /** * This method computes (using the reasoner) whether a concept is too weak. * If it is not weak, it returns the number of covered negative example. It Modified: trunk/src/dl-learner/org/dllearner/learningproblems/PosNegLP.java =================================================================== --- trunk/src/dl-learner/org/dllearner/learningproblems/PosNegLP.java 2008-01-28 18:28:59 UTC (rev 442) +++ trunk/src/dl-learner/org/dllearner/learningproblems/PosNegLP.java 2008-01-28 19:15:03 UTC (rev 443) @@ -112,9 +112,9 @@ else if (name.equals("negativeExamples")) negativeExamples = CommonConfigMappings .getIndividualSet((Set<String>) entry.getValue()); - else if (name.equals("useRetrievalForClassification")) + else if (name.equals("useRetrievalForClassficiation")) { useRetrievalForClassification = (Boolean) entry.getValue(); - else if (name.equals("percentPerLengthUnit")) + } else if (name.equals("percentPerLengthUnit")) percentPerLengthUnit = (Double) entry.getValue(); else if (name.equals("useMultiInstanceChecks")) { String value = (String) entry.getValue(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jen...@us...> - 2008-01-29 14:36:56
|
Revision: 455 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=455&view=rev Author: jenslehmann Date: 2008-01-29 06:36:53 -0800 (Tue, 29 Jan 2008) Log Message: ----------- - added comment - fixed warnings Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/gui/WidgetPanelBoolean.java trunk/src/dl-learner/org/dllearner/gui/WidgetPanelDefault.java trunk/src/dl-learner/org/dllearner/gui/WidgetPanelInteger.java trunk/src/dl-learner/org/dllearner/kb/sparql/query/SparqlQuery.java trunk/src/dl-learner/org/dllearner/kb/sparql/test/TestHTTP.java Modified: trunk/src/dl-learner/org/dllearner/gui/WidgetPanelBoolean.java =================================================================== --- trunk/src/dl-learner/org/dllearner/gui/WidgetPanelBoolean.java 2008-01-29 14:25:52 UTC (rev 454) +++ trunk/src/dl-learner/org/dllearner/gui/WidgetPanelBoolean.java 2008-01-29 14:36:53 UTC (rev 455) @@ -81,12 +81,14 @@ } } + @Override protected void showLabel() { nameLabel = new JLabel(configOption.getName()); nameLabel.setToolTipText(configOption.getDescription()); widgetPanel.add(nameLabel); } + @Override protected void showThingToChange() { if (component != null) { // IntegerConfigOption @@ -123,6 +125,7 @@ } } + @Override protected void setEntry() { BooleanConfigOption specialOption; if (cb.getSelectedIndex() == 0) Modified: trunk/src/dl-learner/org/dllearner/gui/WidgetPanelDefault.java =================================================================== --- trunk/src/dl-learner/org/dllearner/gui/WidgetPanelDefault.java 2008-01-29 14:25:52 UTC (rev 454) +++ trunk/src/dl-learner/org/dllearner/gui/WidgetPanelDefault.java 2008-01-29 14:36:53 UTC (rev 455) @@ -54,12 +54,14 @@ add(widgetPanel, BorderLayout.CENTER); } + @Override protected void showLabel() { nameLabel = new JLabel(configOption.getName()); nameLabel.setToolTipText(configOption.getDescription()); widgetPanel.add(nameLabel); } + @Override protected void showThingToChange() { JLabel notImplementedLabel = new JLabel(configOption.getClass() .getSimpleName() @@ -69,6 +71,7 @@ widgetPanel.add(notImplementedLabel); } + @Override protected void setEntry() { } Modified: trunk/src/dl-learner/org/dllearner/gui/WidgetPanelInteger.java =================================================================== --- trunk/src/dl-learner/org/dllearner/gui/WidgetPanelInteger.java 2008-01-29 14:25:52 UTC (rev 454) +++ trunk/src/dl-learner/org/dllearner/gui/WidgetPanelInteger.java 2008-01-29 14:36:53 UTC (rev 455) @@ -81,12 +81,14 @@ } } + @Override protected void showLabel() { nameLabel = new JLabel(configOption.getName()); nameLabel.setToolTipText(configOption.getDescription()); widgetPanel.add(nameLabel); } + @Override protected void showThingToChange() { if (component != null) { // IntegerConfigOption @@ -118,6 +120,7 @@ } } + @Override protected void setEntry() { IntegerConfigOption specialOption; value = Integer.parseInt(integerField.getText()); // get from input Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/query/SparqlQuery.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/query/SparqlQuery.java 2008-01-29 14:25:52 UTC (rev 454) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/query/SparqlQuery.java 2008-01-29 14:36:53 UTC (rev 455) @@ -21,12 +21,13 @@ import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; -import java.net.URL; import java.nio.charset.Charset; import java.util.Iterator; import java.util.List; import java.util.Vector; +import org.apache.log4j.Logger; +import org.dllearner.kb.sparql.SparqlKnowledgeSource; import org.dllearner.kb.sparql.configuration.SparqlEndpoint; import org.dllearner.utilities.StringTuple; @@ -45,7 +46,9 @@ */ public class SparqlQuery { - private boolean print_flag = false; + private static Logger logger = Logger + .getLogger(SparqlKnowledgeSource.class); + protected boolean isRunning = false; protected String queryString; protected QueryEngineHTTP queryExecution; @@ -53,19 +56,9 @@ protected ResultSet rs=null; /** - * simplest contructor, works only with some endpoints, - * not with DBpedia + * Standard constructor. + * * @param queryString - * @param url - */ - public SparqlQuery(String queryString, URL url) { - this.queryString = queryString; - this.endpoint = new SparqlEndpoint(url); - } - - /** - * standard constructor - * @param queryString * @param endpoint */ public SparqlQuery(String queryString, SparqlEndpoint endpoint) { @@ -82,10 +75,10 @@ * @return jena ResultSet */ public void send() { - p(queryString); + logger.info(queryString); String service = endpoint.getURL().toString(); - p(endpoint.getURL().toString()); + logger.info(endpoint.getURL().toString()); // Jena access to SPARQL endpoint queryExecution=new QueryEngineHTTP(service,queryString); for (String dgu : endpoint.getDefaultGraphURIs()){ @@ -94,12 +87,11 @@ for (String ngu : endpoint.getNamedGraphURIs()){ queryExecution.addNamedGraph(ngu); } - p("query SPARQL server"); + logger.info("query SPARQL server"); rs = queryExecution.execSelect(); - p(rs.getResultVars().toString()); - //p(ResultSetFormatter.asXMLString(rs)); + logger.info(rs.getResultVars().toString()); } public void stop() { @@ -161,26 +153,7 @@ return ResultSetFormatter.toList(rs); } - /** - * sends a query and returns the results for variable - * TODO untested and not used, feel free to change - * varName as Vector<String> - * @param varName - * @return Vector<String> - */ - @SuppressWarnings({"unchecked"}) - @Deprecated - public Vector<String> getAsVector(String varName) { - Vector<String> vret = new Vector<String>(); - List<ResultBinding> l = ResultSetFormatter.toList(rs); - for (ResultBinding resultBinding : l) { - vret.add(resultBinding.get(varName).toString()); - } - return vret; - } - - /** * sends a query and returns the results for two variables * ex: getAsVectorOfTupels("predicate", "object") * TODO untested and not used, feel free to change @@ -205,32 +178,7 @@ return vret; } - /** - * sends a query and returns the results for n variables - * TODO not working, finish - * @param varNames - * @return Vector<Vector<String>> - */ - @Deprecated - public Vector<Vector<String>> getAsVectorOfVectors(Vector<String> varNames) { - // ResultSet rs = send(); - Vector<Vector<String>> vret = new Vector<Vector<String>>(); - /* - * Does not work yet List<ResultBinding> l = - * ResultSetFormatter.toList(rs); for (ResultBinding resultBinding : l) { - * vret.add(new StringTuple(resultBinding.get(varName1).toString(), - * resultBinding.get(varName2).toString())); } - */ - return vret; - } - - // probably not needed - /* - * public Model asJenaModel(){ ResultSet rs=send(); return - * ResultSetFormatter.toModel(rs); } - */ - /** * sends a query and returns JSON * @return a String representation of the Resultset as JSON */ @@ -238,11 +186,12 @@ if (rs==null) this.send(); ByteArrayOutputStream baos=new ByteArrayOutputStream(); ResultSetFormatter.outputAsJSON(baos, rs); + // possible Jena bug: Jena modifies the result set during + // JSON transformation, so we need to get it back rs=JSONtoResultSet(baos.toString()); return baos.toString(); } - /** * @param json a string representation string object * @return jena ResultSet @@ -261,10 +210,4 @@ return queryString; } - public void p(String str) { - if (print_flag) { - System.out.println(str); - } - } - } Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/test/TestHTTP.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/test/TestHTTP.java 2008-01-29 14:25:52 UTC (rev 454) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/test/TestHTTP.java 2008-01-29 14:36:53 UTC (rev 455) @@ -7,7 +7,6 @@ import java.net.Socket; import java.net.URLEncoder; -import com.hp.hpl.jena.query.ResultSet; import com.hp.hpl.jena.sparql.engine.http.QueryEngineHTTP; public class TestHTTP { @@ -23,7 +22,7 @@ if (i!=0) time+=TestHTTP.httpQuery(query); } time=time/100; - System.out.println("Durchschnittliche Zeit f\xFCr eine Anfrage per Http-Methode: "+time); + System.out.println("Durchschnittliche Zeit f�r eine Anfrage per Http-Methode: "+time); time=0; for (int i=0; i<101; i++) @@ -31,7 +30,7 @@ if (i!=0) time+=TestHTTP.jenaQuery(query); } time=time/100; - System.out.println("Durchschnittliche Zeit f\xFCr eine Anfrage per Jena-Methode: "+time); + System.out.println("Durchschnittliche Zeit f�r eine Anfrage per Jena-Methode: "+time); } private static double jenaQuery(String query) @@ -40,7 +39,8 @@ QueryEngineHTTP queryExecution=new QueryEngineHTTP("http://localhost:8890/sparql",query); queryExecution.addDefaultGraph("http://dbpedia.org"); // Jena access to DBpedia SPARQL endpoint - ResultSet rs = queryExecution.execSelect(); + // ResultSet rs = + queryExecution.execSelect(); double end=System.currentTimeMillis(); return ((end-start)/1000); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jen...@us...> - 2008-01-29 17:34:22
|
Revision: 456 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=456&view=rev Author: jenslehmann Date: 2008-01-29 09:34:13 -0800 (Tue, 29 Jan 2008) Log Message: ----------- - rewrote SPARQL query - added method to cache for executing a SPARQL query (result is either taken from cache or query is send) Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java trunk/src/dl-learner/org/dllearner/kb/sparql/TypedSparqlQuery.java trunk/src/dl-learner/org/dllearner/kb/sparql/query/Cache.java trunk/src/dl-learner/org/dllearner/kb/sparql/query/CachedSparqlQuery.java trunk/src/dl-learner/org/dllearner/kb/sparql/query/SparqlQuery.java trunk/src/dl-learner/org/dllearner/kb/sparql/test/JenaQueryToResultSpeedTest.java trunk/src/dl-learner/org/dllearner/kb/sparql/test/TestResultSet.java trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java Removed Paths: ------------- trunk/src/dl-learner/org/dllearner/kb/sparql/query/CachedSparqlQueryTest.java Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-01-29 14:36:53 UTC (rev 455) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-01-29 17:34:13 UTC (rev 456) @@ -46,8 +46,6 @@ import org.dllearner.core.dl.KB; import org.dllearner.kb.sparql.configuration.SparqlEndpoint; import org.dllearner.kb.sparql.configuration.SparqlQueryType; -import org.dllearner.kb.sparql.query.Cache; -import org.dllearner.kb.sparql.query.CachedSparqlQueryTest; import org.dllearner.kb.sparql.query.SparqlQuery; import org.dllearner.parser.KBParser; import org.dllearner.reasoning.DIGConverter; @@ -398,8 +396,10 @@ public SparqlQuery sparqlQuery(String query) { this.endpoint = new SparqlEndpoint(url, defaultGraphURIs, namedGraphURIs); - if (cached) return new CachedSparqlQueryTest(endpoint, new Cache("cache"),""+query.hashCode(),query); - else return new SparqlQuery(query, endpoint); +// if (cached) +// return new CachedSparqlQueryTest(endpoint, new Cache("cache"),""+query.hashCode(),query); +// else + return new SparqlQuery(query, endpoint); } /*public static void main(String[] args) throws MalformedURLException { Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/TypedSparqlQuery.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/TypedSparqlQuery.java 2008-01-29 14:36:53 UTC (rev 455) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/TypedSparqlQuery.java 2008-01-29 17:34:13 UTC (rev 456) @@ -27,7 +27,6 @@ import org.dllearner.kb.sparql.configuration.Configuration; import org.dllearner.kb.sparql.query.Cache; import org.dllearner.kb.sparql.query.CachedSparqlQuery; -import org.dllearner.kb.sparql.query.SparqlQuery; import org.dllearner.utilities.StringTuple; import com.hp.hpl.jena.query.ResultSet; @@ -230,13 +229,6 @@ return xml; } - @Deprecated - public String sendAndReceiveSPARQL(String queryString) { - // SparqlQuery sq=new SparqlQuery(configuration.getSparqlEndpoint()); - return new SparqlQuery(queryString, configuration.getSparqlEndpoint()) - .getAsXMLString(); - } - public void p(String str) { if (print_flag) { System.out.println(str); Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/query/Cache.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/query/Cache.java 2008-01-29 14:36:53 UTC (rev 455) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/query/Cache.java 2008-01-29 17:34:13 UTC (rev 456) @@ -28,30 +28,34 @@ import java.net.URLEncoder; import java.util.HashMap; +import com.hp.hpl.jena.query.ResultSet; + /** * SPARQL query cache to avoid possibly expensive multiple queries. An object of * this class can be the cache itself or a cache object(one entry), We could * split that in two classes, but one entry o object only has contains data and * one additional function and would just be a data class + * TODO: decipher previous sentence * * it writes the files according to one resource in the basedir and saves the * cache object in it. Filename is the subject, a resource * e.g. http://dbpedia.org/resource/Angela_Merkel which is first urlencoded * and so serves as the hash for the filename. + * TODO: Why not just take some hash of the SPARQL query itself? * * the cache object in the file remembers: a timestamp, * a hashmap SparqlQuery -> SparqlXMLResult * Cache validates if timestamp too old and Sparql-Query the same * before returning the SPARQL xml-result + * TODO: it is not JSON, not XML is it? * * @author Sebastian Hellmann * @author Sebastian Knappe + * @author Jens Lehmann */ public class Cache implements Serializable { - /** - * This maps sparql query to sparql result - */ + // maps SPARQL queries to JSON represenation of results protected HashMap<String, String> hm; final static long serialVersionUID = 104; @@ -232,4 +236,23 @@ return false; } + /** + * Takes a SPARQL query (which has not been evaluated yet) as + * argument and returns a result set. The result set is taken from + * this cache if the query is stored here. Otherwise the query is + * send and its result added to the cache and returned. + * + * @param query The SPARQL query. + * @return Jena result set. + */ + public ResultSet executeSparqlQuery(SparqlQuery query) { + if(hm.containsKey(query.getQueryString())) { + String result = hm.get(query.getQueryString()); + return SparqlQuery.JSONtoResultSet(result); + } else { + query.send(); + return query.getResultSet(); + } + } + } Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/query/CachedSparqlQuery.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/query/CachedSparqlQuery.java 2008-01-29 14:36:53 UTC (rev 455) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/query/CachedSparqlQuery.java 2008-01-29 17:34:13 UTC (rev 456) @@ -8,9 +8,12 @@ * Does the same as SparqlQuery, but uses the cache. key should be an uri or * something that can be mapped to a file see cache * + * Do not use this class anymore, but use Cache.executeSparqlQuery instead. + * * @author Jens Lehmann * */ +@Deprecated public class CachedSparqlQuery { String key; @@ -52,7 +55,8 @@ // if not in cache get it from EndPoint if (FromCache == null) { // configuration.increaseNumberOfuncachedSparqlQueries(); - xml = this.sparqlQuery.getAsXMLString(); + ResultSet rs = sparqlQuery.send(); + xml = SparqlQuery.getAsXMLString(rs); // sendAndReceiveSPARQL(sparql); // p(sparql); // System.out.println(xml); @@ -92,7 +96,8 @@ // if not in cache get it from EndPoint if (FromCache == null) { // configuration.increaseNumberOfuncachedSparqlQueries(); - JSON = this.sparqlQuery.getAsJSON(); + ResultSet rs = sparqlQuery.send(); + JSON = SparqlQuery.getAsJSON(rs); System.out.println(JSON); // sendAndReceiveSPARQL(sparql); // p(sparql); Deleted: trunk/src/dl-learner/org/dllearner/kb/sparql/query/CachedSparqlQueryTest.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/query/CachedSparqlQueryTest.java 2008-01-29 14:36:53 UTC (rev 455) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/query/CachedSparqlQueryTest.java 2008-01-29 17:34:13 UTC (rev 456) @@ -1,37 +0,0 @@ -package org.dllearner.kb.sparql.query; - -import org.dllearner.kb.sparql.configuration.SparqlEndpoint; - -/** - * Does the same as SparqlQuery, but uses the cache. key should be an uri or - * something that can be mapped to a file see cache - * - * @author Sebastian Knappe - * - */ -public class CachedSparqlQueryTest extends SparqlQuery { - - private Cache cache; - private String key; - - public CachedSparqlQueryTest(SparqlEndpoint endpoint, Cache cache, String key, - String queryString) { - super(queryString,endpoint); - this.cache = cache; - this.key = key; - } - - public void send() - { - String FromCache = cache.get(key, queryString); - - // if not in cache get it from EndPoint - if (FromCache == null) { - super.send(); - this.cache.put(key, queryString, getAsJSON()); - } else { - this.rs=SparqlQuery.JSONtoResultSet(FromCache); - System.out.println("FROM CACHE"); - } - } -} Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/query/SparqlQuery.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/query/SparqlQuery.java 2008-01-29 14:36:53 UTC (rev 455) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/query/SparqlQuery.java 2008-01-29 17:34:13 UTC (rev 456) @@ -24,12 +24,10 @@ import java.nio.charset.Charset; import java.util.Iterator; import java.util.List; -import java.util.Vector; import org.apache.log4j.Logger; import org.dllearner.kb.sparql.SparqlKnowledgeSource; import org.dllearner.kb.sparql.configuration.SparqlEndpoint; -import org.dllearner.utilities.StringTuple; import com.hp.hpl.jena.query.ResultSet; import com.hp.hpl.jena.query.ResultSetFactory; @@ -38,22 +36,23 @@ import com.hp.hpl.jena.sparql.engine.http.QueryEngineHTTP; /** - * Represents one SPARQL query. It includes support for stopping the SPARQL query - * (which may be necessary if a timeout is reached). + * Represents one SPARQL query. It includes support for stopping the SPARQL + * query (which may be necessary if a timeout is reached). * * @author Jens Lehmann * */ public class SparqlQuery { - private static Logger logger = Logger - .getLogger(SparqlKnowledgeSource.class); - - protected boolean isRunning = false; + private static Logger logger = Logger.getLogger(SparqlKnowledgeSource.class); + + private boolean isRunning = false; + // TODO: declare as private protected String queryString; - protected QueryEngineHTTP queryExecution; - protected SparqlEndpoint endpoint; - protected ResultSet rs=null; + private QueryEngineHTTP queryExecution; + private SparqlEndpoint endpoint; + // TODO: declare as private + protected ResultSet rs = null; /** * Standard constructor. @@ -66,32 +65,34 @@ this.endpoint = endpoint; } - public void setIsRunning(boolean running){ - this.isRunning=running; + @Deprecated + public void setIsRunning(boolean running) { + this.isRunning = running; } - + /** - * method used for sending over Jena - * @return jena ResultSet + * Sends a SPARQL query using the Jena library. */ - public void send() { + public ResultSet send() { + isRunning = true; logger.info(queryString); - + String service = endpoint.getURL().toString(); logger.info(endpoint.getURL().toString()); // Jena access to SPARQL endpoint - queryExecution=new QueryEngineHTTP(service,queryString); - for (String dgu : endpoint.getDefaultGraphURIs()){ + queryExecution = new QueryEngineHTTP(service, queryString); + for (String dgu : endpoint.getDefaultGraphURIs()) { queryExecution.addDefaultGraph(dgu); } - for (String ngu : endpoint.getNamedGraphURIs()){ + for (String ngu : endpoint.getNamedGraphURIs()) { queryExecution.addNamedGraph(ngu); } logger.info("query SPARQL server"); - - + rs = queryExecution.execSelect(); logger.info(rs.getResultVars().toString()); + isRunning = false; + return rs; } public void stop() { @@ -99,46 +100,62 @@ isRunning = false; } + public String getQueryString() { + return queryString; + } + + public ResultSet getResultSet() { + return rs; + } + public boolean isRunning() { return isRunning; } + + public boolean hasCompleted() { + return (rs != null); + } /** * TODO define the format + * * @return */ - @SuppressWarnings({"unchecked"}) - public String[][] getAsStringArray(){ - if (rs==null) this.send(); + @Deprecated + @SuppressWarnings( { "unchecked" }) + public String[][] getAsStringArray() { + if (rs == null) + this.send(); System.out.println("Starting Query"); List<ResultBinding> l = ResultSetFormatter.toList(rs); - List<String> resultVars=rs.getResultVars(); - String[][] array=new String[l.size()][resultVars.size()]; - Iterator<String> iter=resultVars.iterator(); - int i=0,j=0; - + List<String> resultVars = rs.getResultVars(); + String[][] array = new String[l.size()][resultVars.size()]; + Iterator<String> iter = resultVars.iterator(); + int i = 0, j = 0; + for (ResultBinding resultBinding : l) { - while (iter.hasNext()){ - String varName=(String)iter.next(); - array[i][j]=resultBinding.get(varName).toString(); + while (iter.hasNext()) { + String varName = (String) iter.next(); + array[i][j] = resultBinding.get(varName).toString(); j++; } - iter=resultVars.iterator(); + iter = resultVars.iterator(); i++; - j=0; + j = 0; } System.out.println("Query complete"); return array; } - + /** * sends a query and returns XML * * @return String xml */ - public String getAsXMLString() { - if (rs==null) this.send(); - return ResultSetFormatter.asXMLString(rs); + public static String getAsXMLString(ResultSet resultSet) { + //if (rs == null) + // this.send(); + return ResultSetFormatter.asXMLString(resultSet); } /** @@ -147,67 +164,42 @@ * * @return jena List<ResultBinding> */ - @SuppressWarnings({"unchecked"}) + @Deprecated + @SuppressWarnings( { "unchecked" }) public List<ResultBinding> getAsList() { - if (rs==null) this.send(); + if (rs == null) + this.send(); return ResultSetFormatter.toList(rs); } /** - * sends a query and returns the results for two variables - * ex: getAsVectorOfTupels("predicate", "object") - * TODO untested and not used, feel free to change + * Converts Jena result set to JSON. * - * @param varName1 - * @param varName2 - * @return Vector<StringTuple> + * @param resultSet The result set to transform. + * @return JSON representation of the result set. */ - @SuppressWarnings({"unchecked"}) - @Deprecated - public Vector<StringTuple> getAsVectorOfTupels(String varName1, - String varName2) { - Vector<StringTuple> vret = new Vector<StringTuple>(); - List<ResultBinding> l = ResultSetFormatter.toList(rs); - //System.out.println(l); - //System.out.println(ResultSetFormatter.asXMLString(rs)); - for (ResultBinding resultBinding : l) { - - vret.add(new StringTuple(resultBinding.get(varName1).toString(), - resultBinding.get(varName2).toString())); - } - return vret; - } - - /** - * sends a query and returns JSON - * @return a String representation of the Resultset as JSON - */ - public String getAsJSON(){ - if (rs==null) this.send(); - ByteArrayOutputStream baos=new ByteArrayOutputStream(); - ResultSetFormatter.outputAsJSON(baos, rs); + public static String getAsJSON(ResultSet resultSet) { + // if (rs == null) + // this.send(); + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + ResultSetFormatter.outputAsJSON(baos, resultSet); // possible Jena bug: Jena modifies the result set during // JSON transformation, so we need to get it back - rs=JSONtoResultSet(baos.toString()); + resultSet = JSONtoResultSet(baos.toString()); return baos.toString(); } - + /** - * @param json a string representation string object - * @return jena ResultSet + * Converts from JSON to internal Jena format. + * + * @param json + * A JSON representation if a SPARQL query result. + * @return A Jena ResultSet. */ - public static ResultSet JSONtoResultSet(String json){ - ResultSet rs=null; - try{ - ByteArrayInputStream bais=new ByteArrayInputStream(json.getBytes(Charset.forName("UTF-8"))); - rs=ResultSetFactory.fromJSON(bais); - }catch (Exception e) {e.printStackTrace();} - return rs; - + public static ResultSet JSONtoResultSet(String json) { + ByteArrayInputStream bais = new ByteArrayInputStream(json + .getBytes(Charset.forName("UTF-8"))); + return ResultSetFactory.fromJSON(bais); } - - public String getQueryString() { - return queryString; - } } Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/test/JenaQueryToResultSpeedTest.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/test/JenaQueryToResultSpeedTest.java 2008-01-29 14:36:53 UTC (rev 455) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/test/JenaQueryToResultSpeedTest.java 2008-01-29 17:34:13 UTC (rev 456) @@ -22,7 +22,9 @@ import org.dllearner.kb.sparql.configuration.SparqlEndpoint; import org.dllearner.kb.sparql.query.SparqlQuery; +import com.hp.hpl.jena.query.ResultSet; + public class JenaQueryToResultSpeedTest { static boolean print_flag=false; @@ -51,12 +53,14 @@ SparqlEndpoint sse = SparqlEndpoint.dbpediaEndpoint(); SparqlQuery sqJena = new SparqlQuery(queryString, sse); // first query is not counted - sqJena.getAsXMLString(); + ResultSet rs = sqJena.send(); + SparqlQuery.getAsXMLString(rs); long now = System.currentTimeMillis(); long tmp = now; for (int i = 0; i < howOften; i++) { - sqJena.getAsXMLString(); + rs = sqJena.send(); + SparqlQuery.getAsXMLString(rs); p("Jena as XML needed: " + (System.currentTimeMillis() - tmp)); tmp = System.currentTimeMillis(); @@ -92,12 +96,14 @@ SparqlEndpoint sse = SparqlEndpoint.dbpediaEndpoint(); SparqlQuery sqJena = new SparqlQuery(queryString, sse); // first query is not counted - sqJena.getAsJSON(); + ResultSet rs = sqJena.send(); + SparqlQuery.getAsJSON(rs); long now = System.currentTimeMillis(); long tmp = now; for (int i = 0; i < howOften; i++) { - sqJena.getAsJSON(); + rs = sqJena.send(); + SparqlQuery.getAsJSON(rs); p("Jena as JSON needed: " + (System.currentTimeMillis() - tmp)); tmp = System.currentTimeMillis(); @@ -113,13 +119,16 @@ SparqlEndpoint sse = SparqlEndpoint.dbpediaEndpoint(); SparqlQuery sqJena = new SparqlQuery(queryString, sse); // first query is not counted - sqJena.getAsJSON(); + ResultSet rs = sqJena.send(); + SparqlQuery.getAsJSON(rs); long now = System.currentTimeMillis(); long tmp = now; for (int i = 0; i < howOften; i++) { // System.out.println(sqJena.getAsJSON()); - SparqlQuery.JSONtoResultSet(sqJena.getAsJSON()); + rs = sqJena.send(); + String json = SparqlQuery.getAsJSON(rs); + SparqlQuery.JSONtoResultSet(json); p("Jena as JSON and back needed: " + (System.currentTimeMillis() - tmp)); tmp = System.currentTimeMillis(); @@ -137,7 +146,8 @@ SparqlQuery sqJena = new SparqlQuery(queryString, sse); // SparqlQueryConventional sqConv=new SparqlQueryConventional(sse); - System.out.println(sqJena.getAsXMLString()); + ResultSet rs = sqJena.send(); + System.out.println(SparqlQuery.getAsXMLString(rs)); // System.out.println(sqConv.getAsXMLString("")); } Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/test/TestResultSet.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/test/TestResultSet.java 2008-01-29 14:36:53 UTC (rev 455) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/test/TestResultSet.java 2008-01-29 17:34:13 UTC (rev 456) @@ -28,6 +28,7 @@ import org.dllearner.kb.sparql.configuration.SparqlEndpoint; import org.dllearner.kb.sparql.query.SparqlQuery; +import com.hp.hpl.jena.query.ResultSet; import com.hp.hpl.jena.sparql.core.ResultBinding; public class TestResultSet { @@ -43,7 +44,8 @@ SparqlEndpoint sse = SparqlEndpoint.dbpediaEndpoint(); SparqlQuery sqJena = new SparqlQuery(queryString, sse); - String json=sqJena.getAsJSON(); + ResultSet rs = sqJena.send(); + String json = SparqlQuery.getAsJSON(rs); System.out.println(json); @@ -107,12 +109,14 @@ } System.out.println("Conv total: " + (System.currentTimeMillis() - now)); // first query is not counted - sqJena.getAsXMLString(); + ResultSet rs = sqJena.send(); + SparqlQuery.getAsXMLString(rs); now = System.currentTimeMillis(); tmp = now; for (int i = 0; i < howOften; i++) { - sqJena.getAsXMLString(); + rs = sqJena.send(); + SparqlQuery.getAsXMLString(rs); System.out.println("Jena needed: " + (System.currentTimeMillis() - tmp)); tmp = System.currentTimeMillis(); @@ -140,7 +144,8 @@ SparqlQuery sqJena = new SparqlQuery(queryString, sse); // SparqlQueryConventional sqConv = new SparqlQueryConventional(sse); - System.out.println(sqJena.getAsXMLString()); + ResultSet rs = sqJena.send(); + System.out.println(SparqlQuery.getAsXMLString(rs)); //System.out.println(sqConv.getAsXMLString(queryString)); } Modified: trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java =================================================================== --- trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java 2008-01-29 14:36:53 UTC (rev 455) +++ trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java 2008-01-29 17:34:13 UTC (rev 456) @@ -57,6 +57,8 @@ import org.dllearner.utilities.Datastructures; import org.dllearner.utilities.Helper; +import com.hp.hpl.jena.query.ResultSet; + /** * DL-Learner web service interface. * @@ -499,14 +501,16 @@ public String getAsJSON(int sessionID, int queryID) throws ClientNotKnownException { ClientState state = getState(sessionID); - return state.getQuery(queryID).getAsJSON(); + ResultSet rs = state.getQuery(queryID).send(); + return SparqlQuery.getAsJSON(rs); } @WebMethod public String getAsXMLString(int sessionID, int queryID) throws ClientNotKnownException { ClientState state = getState(sessionID); - return state.getQuery(queryID).getAsXMLString(); + ResultSet rs = state.getQuery(queryID).send(); + return SparqlQuery.getAsXMLString(rs); } @WebMethod This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jen...@us...> - 2008-01-29 19:24:54
|
Revision: 457 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=457&view=rev Author: jenslehmann Date: 2008-01-29 11:24:02 -0800 (Tue, 29 Jan 2008) Log Message: ----------- - started to rewrite Cache such that it can be used for arbitrary SPARQL queries (i.e. not only in the extraction algorithm) - not working yet Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java trunk/src/dl-learner/org/dllearner/kb/sparql/TypedSparqlQuery.java trunk/src/dl-learner/org/dllearner/kb/sparql/TypedSparqlQueryClasses.java trunk/src/dl-learner/org/dllearner/kb/sparql/test/JenaQueryToResultSpeedTest.java trunk/src/dl-learner/org/dllearner/kb/sparql/test/TestResultSet.java trunk/src/dl-learner/org/dllearner/server/ClientState.java trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java Removed Paths: ------------- trunk/src/dl-learner/org/dllearner/kb/sparql/query/ Copied: trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java (from rev 456, trunk/src/dl-learner/org/dllearner/kb/sparql/query/Cache.java) =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java 2008-01-29 19:24:02 UTC (rev 457) @@ -0,0 +1,254 @@ +/** + * Copyright (C) 2007-2008, Jens Lehmann + * + * This file is part of DL-Learner. + * + * DL-Learner is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * DL-Learner is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package org.dllearner.kb.sparql; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.io.Serializable; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; +import java.util.HashMap; + +import org.apache.log4j.Logger; + +import com.hp.hpl.jena.query.ResultSet; + +/** + * SPARQL query cache to avoid possibly expensive multiple queries. The queries + * and their results are written to files. A cache has an associated cache + * directory where all files are written. + * + * Each SPARQL query and its result is written to one file. The name of this + * file is a hash of the query. The result of the query is written as JSON + * serialisation of the SPARQL XML result, see + * http://www.w3.org/TR/rdf-sparql-json-res/. + * + * Apart from the query and its result, a timestamp of the query is stored. + * After a configurable amount of time, query results are considered outdated. + * If a cached result of a SPARQL query exists, but is too old, the cache + * behaves as if the cached result would not exist. + * + * @author Sebastian Hellmann + * @author Sebastian Knappe + * @author Jens Lehmann + */ +public class Cache implements Serializable { + + private static Logger logger = Logger.getLogger(Cache.class); + + private static final long serialVersionUID = 843308736471742205L; + + // maps hash of a SPARQL queries to JSON representation + // of its results; this + private HashMap<String, String> hm; + + private transient String cacheDir = ""; + private transient String fileEnding = ".cache"; + private long timestamp; + + // specifies after how many seconds a cached result becomes invalid + private long freshnessSeconds = 15 * 24 * 60 * 60; + + /** + * Constructor for the cache itself. + * + * @param cacheDir + * Where the base path to the cache is . + */ + public Cache(String cacheDir) { + this.cacheDir = cacheDir + File.separator; + if (!new File(cacheDir).exists()) { + logger + .info("Created directory: " + cacheDir + " : " + new File(cacheDir).mkdir() + + "."); + } + } + + /** + * constructor for single cache object(one entry) + * + * @param sparqlQuery + * query + * @param content + * that is the sparql query result as xml + */ + private Cache(String sparqlQuery, String content) { + // this.content = c; + // this.sparqlquery = sparql; + this.timestamp = System.currentTimeMillis(); + this.hm = new HashMap<String, String>(); + hm.put(sparqlQuery, content); + } + + private String getHash(String string) { + // calculate md5 hash of the string (code is somewhat + // difficult to read, but there doesn't seem to be a + // single function call in Java for md5 hashing) + MessageDigest md5 = null; + try { + md5 = MessageDigest.getInstance("MD5"); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + } + md5.reset(); + md5.update(string.getBytes()); + byte[] result = md5.digest(); + + StringBuffer hexString = new StringBuffer(); + for (int i = 0; i < result.length; i++) { + hexString.append(Integer.toHexString(0xFF & result[i])); + } + return hexString.toString(); + } + + private String getFilename(String sparqlQuery) { + return getHash(sparqlQuery) + fileEnding; + } + + /** + * Gets the query result for a SPARQL query. + * + * @param sparqlQuery + * SPARQL query to check. + * @return Query result or null if no result has been found or it is + * outdated. + */ + public String get(String sparqlQuery) { + Cache c = readFromFile(getFilename(sparqlQuery)); + if (c == null) + return null; + // System.out.println(" file found"); + if (!c.checkFreshness()) + return null; + // System.out.println("fresh"); + String xml = ""; + try { + xml = c.hm.get(sparqlQuery); + } catch (Exception e) { + return null; + } + return xml; + } + + /** + * @param key + * is the resource, the identifier + * @param sparqlquery + * is the query used as another identifier + * @param content + * is the result of the query + */ + public void put(String sparqlQuery, String content) { + String hash = getHash(sparqlQuery); + Cache c = readFromFile(hash); + if (c == null) { + c = new Cache(sparqlQuery, content); + putIntoFile(hash, c); + } else { + c.hm.put(sparqlQuery, content); + putIntoFile(hash, c); + } + + } + + public void checkFile(String Filename) { + if (!new File(Filename).exists()) { + try { + new File(Filename).createNewFile(); + } catch (Exception e) { + e.printStackTrace(); + } + + } + + } + + /** + * puts a cache entry in a file + * + * @param filename + * @param c + */ + protected void putIntoFile(String filename, Cache c) { + try { + // FileWriter fw=new FileWriter(new File(Filename),true); + FileOutputStream fos = new FileOutputStream(filename, false); + ObjectOutputStream o = new ObjectOutputStream(fos); + o.writeObject(c); + fos.flush(); + fos.close(); + } catch (Exception e) { + System.out.println("Not in cache creating: " + filename); + } + } + + /** + * reads a cache entry from a file + * + * @param Filename + * @return cache entry + */ + protected Cache readFromFile(String Filename) { + Cache content = null; + try { + FileInputStream fos = new FileInputStream(Filename); + ObjectInputStream o = new ObjectInputStream(fos); + content = (Cache) o.readObject(); + } catch (IOException e) { + e.printStackTrace(); + } catch (ClassNotFoundException e) { + e.printStackTrace(); + } + return content; + } + + private boolean checkFreshness() { + if ((System.currentTimeMillis() - this.timestamp) <= (freshnessSeconds * 1000)) + // fresh + return true; + else + return false; + } + + /** + * Takes a SPARQL query (which has not been evaluated yet) as argument and + * returns a result set. The result set is taken from this cache if the + * query is stored here. Otherwise the query is send and its result added to + * the cache and returned. Convenience method. + * + * @param query + * The SPARQL query. + * @return Jena result set. + */ + public ResultSet executeSparqlQuery(SparqlQuery query) { + if (hm.containsKey(query.getQueryString())) { + String result = hm.get(query.getQueryString()); + return SparqlQuery.JSONtoResultSet(result); + } else { + query.send(); + return query.getResultSet(); + } + } + +} Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-01-29 17:34:13 UTC (rev 456) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-01-29 19:24:02 UTC (rev 457) @@ -46,7 +46,6 @@ import org.dllearner.core.dl.KB; import org.dllearner.kb.sparql.configuration.SparqlEndpoint; import org.dllearner.kb.sparql.configuration.SparqlQueryType; -import org.dllearner.kb.sparql.query.SparqlQuery; import org.dllearner.parser.KBParser; import org.dllearner.reasoning.DIGConverter; import org.dllearner.reasoning.JenaOWLDIGConverter; Copied: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java (from rev 456, trunk/src/dl-learner/org/dllearner/kb/sparql/query/SparqlQuery.java) =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java 2008-01-29 19:24:02 UTC (rev 457) @@ -0,0 +1,204 @@ +/** + * Copyright (C) 2007-2008, Jens Lehmann + * + * This file is part of DL-Learner. + * + * DL-Learner is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * DL-Learner is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package org.dllearner.kb.sparql; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.nio.charset.Charset; +import java.util.Iterator; +import java.util.List; + +import org.apache.log4j.Logger; +import org.dllearner.kb.sparql.configuration.SparqlEndpoint; + +import com.hp.hpl.jena.query.ResultSet; +import com.hp.hpl.jena.query.ResultSetFactory; +import com.hp.hpl.jena.query.ResultSetFormatter; +import com.hp.hpl.jena.sparql.core.ResultBinding; +import com.hp.hpl.jena.sparql.engine.http.QueryEngineHTTP; + +/** + * Represents one SPARQL query. It includes support for stopping the SPARQL + * query (which may be necessary if a timeout is reached). + * + * @author Jens Lehmann + * + */ +public class SparqlQuery { + + private static Logger logger = Logger.getLogger(SparqlKnowledgeSource.class); + + private boolean isRunning = false; + // TODO: declare as private + protected String queryString; + private QueryEngineHTTP queryExecution; + private SparqlEndpoint endpoint; + // TODO: declare as private + protected ResultSet rs = null; + + /** + * Standard constructor. + * + * @param queryString + * @param endpoint + */ + public SparqlQuery(String queryString, SparqlEndpoint endpoint) { + this.queryString = queryString; + this.endpoint = endpoint; + } + + @Deprecated + public void setIsRunning(boolean running) { + this.isRunning = running; + } + + /** + * Sends a SPARQL query using the Jena library. + */ + public ResultSet send() { + isRunning = true; + logger.info(queryString); + + String service = endpoint.getURL().toString(); + logger.info(endpoint.getURL().toString()); + // Jena access to SPARQL endpoint + queryExecution = new QueryEngineHTTP(service, queryString); + for (String dgu : endpoint.getDefaultGraphURIs()) { + queryExecution.addDefaultGraph(dgu); + } + for (String ngu : endpoint.getNamedGraphURIs()) { + queryExecution.addNamedGraph(ngu); + } + logger.info("query SPARQL server"); + + rs = queryExecution.execSelect(); + logger.info(rs.getResultVars().toString()); + isRunning = false; + return rs; + } + + public void stop() { + queryExecution.abort(); + isRunning = false; + } + + public String getQueryString() { + return queryString; + } + + public ResultSet getResultSet() { + return rs; + } + + public boolean isRunning() { + return isRunning; + } + + public boolean hasCompleted() { + return (rs != null); + } + + /** + * TODO define the format + * + * @return + */ + @Deprecated + @SuppressWarnings( { "unchecked" }) + public String[][] getAsStringArray() { + if (rs == null) + this.send(); + System.out.println("Starting Query"); + List<ResultBinding> l = ResultSetFormatter.toList(rs); + List<String> resultVars = rs.getResultVars(); + String[][] array = new String[l.size()][resultVars.size()]; + Iterator<String> iter = resultVars.iterator(); + int i = 0, j = 0; + + for (ResultBinding resultBinding : l) { + while (iter.hasNext()) { + String varName = (String) iter.next(); + array[i][j] = resultBinding.get(varName).toString(); + j++; + } + iter = resultVars.iterator(); + i++; + j = 0; + } + System.out.println("Query complete"); + return array; + } + + /** + * sends a query and returns XML + * + * @return String xml + */ + public static String getAsXMLString(ResultSet resultSet) { + //if (rs == null) + // this.send(); + return ResultSetFormatter.asXMLString(resultSet); + } + + /** + * sends a query and returns complicated Jena List with ResultBindings + * + * + * @return jena List<ResultBinding> + */ + @Deprecated + @SuppressWarnings( { "unchecked" }) + public List<ResultBinding> getAsList() { + if (rs == null) + this.send(); + return ResultSetFormatter.toList(rs); + } + + /** + * Converts Jena result set to JSON. + * + * @param resultSet The result set to transform. + * @return JSON representation of the result set. + */ + public static String getAsJSON(ResultSet resultSet) { + // if (rs == null) + // this.send(); + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + ResultSetFormatter.outputAsJSON(baos, resultSet); + // possible Jena bug: Jena modifies the result set during + // JSON transformation, so we need to get it back + resultSet = JSONtoResultSet(baos.toString()); + return baos.toString(); + } + + /** + * Converts from JSON to internal Jena format. + * + * @param json + * A JSON representation if a SPARQL query result. + * @return A Jena ResultSet. + */ + public static ResultSet JSONtoResultSet(String json) { + ByteArrayInputStream bais = new ByteArrayInputStream(json + .getBytes(Charset.forName("UTF-8"))); + return ResultSetFactory.fromJSON(bais); + } + +} Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/TypedSparqlQuery.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/TypedSparqlQuery.java 2008-01-29 17:34:13 UTC (rev 456) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/TypedSparqlQuery.java 2008-01-29 19:24:02 UTC (rev 457) @@ -25,8 +25,6 @@ import java.util.Set; import org.dllearner.kb.sparql.configuration.Configuration; -import org.dllearner.kb.sparql.query.Cache; -import org.dllearner.kb.sparql.query.CachedSparqlQuery; import org.dllearner.utilities.StringTuple; import com.hp.hpl.jena.query.ResultSet; @@ -85,13 +83,12 @@ String sparqlQueryString = sparqlQueryMaker .makeSubjectQueryUsingFilters(uri.toString()); - CachedSparqlQuery csq = new CachedSparqlQuery(configuration - .getSparqlEndpoint(), cache, uri.toString(), sparqlQueryString); +// CachedSparqlQuery csq = new CachedSparqlQuery(configuration +// .getSparqlEndpoint(), cache, uri.toString(), sparqlQueryString); + SparqlQuery query = new SparqlQuery(sparqlQueryString, configuration.getSparqlEndpoint()); + ResultSet rs = cache.executeSparqlQuery(query); - // TODO optimize - ResultSet rs = csq.getAsResultSet(); - List<ResultBinding> l = ResultSetFormatter.toList(rs); p(l.toString()); for (ResultBinding resultBinding : l) { Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/TypedSparqlQueryClasses.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/TypedSparqlQueryClasses.java 2008-01-29 17:34:13 UTC (rev 456) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/TypedSparqlQueryClasses.java 2008-01-29 19:24:02 UTC (rev 457) @@ -25,7 +25,6 @@ import java.util.Set; import org.dllearner.kb.sparql.configuration.Configuration; -import org.dllearner.kb.sparql.query.CachedSparqlQuery; import org.dllearner.utilities.StringTuple; import com.hp.hpl.jena.query.ResultSet; @@ -64,11 +63,9 @@ + " FILTER (!regex(str(?object),'http://xmlns.com/foaf/0.1/'))" + "}"; - CachedSparqlQuery csq = new CachedSparqlQuery(configuration - .getSparqlEndpoint(), cache, uri.toString(), sparqlQueryString); - - // TODO optimize - ResultSet rs = csq.getAsResultSet(); + SparqlQuery query = new SparqlQuery(sparqlQueryString, configuration.getSparqlEndpoint()); + ResultSet rs = cache.executeSparqlQuery(query); + List<ResultBinding> l = ResultSetFormatter.toList(rs); for (ResultBinding resultBinding : l) { Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/test/JenaQueryToResultSpeedTest.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/test/JenaQueryToResultSpeedTest.java 2008-01-29 17:34:13 UTC (rev 456) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/test/JenaQueryToResultSpeedTest.java 2008-01-29 19:24:02 UTC (rev 457) @@ -19,8 +19,8 @@ */ package org.dllearner.kb.sparql.test; +import org.dllearner.kb.sparql.SparqlQuery; import org.dllearner.kb.sparql.configuration.SparqlEndpoint; -import org.dllearner.kb.sparql.query.SparqlQuery; import com.hp.hpl.jena.query.ResultSet; Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/test/TestResultSet.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/test/TestResultSet.java 2008-01-29 17:34:13 UTC (rev 456) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/test/TestResultSet.java 2008-01-29 19:24:02 UTC (rev 457) @@ -25,8 +25,8 @@ import java.io.ObjectOutputStream; import java.util.List; +import org.dllearner.kb.sparql.SparqlQuery; import org.dllearner.kb.sparql.configuration.SparqlEndpoint; -import org.dllearner.kb.sparql.query.SparqlQuery; import com.hp.hpl.jena.query.ResultSet; import com.hp.hpl.jena.sparql.core.ResultBinding; Modified: trunk/src/dl-learner/org/dllearner/server/ClientState.java =================================================================== --- trunk/src/dl-learner/org/dllearner/server/ClientState.java 2008-01-29 17:34:13 UTC (rev 456) +++ trunk/src/dl-learner/org/dllearner/server/ClientState.java 2008-01-29 19:24:02 UTC (rev 457) @@ -34,7 +34,7 @@ import org.dllearner.core.ReasoningService; import org.dllearner.kb.OWLFile; import org.dllearner.kb.sparql.SparqlKnowledgeSource; -import org.dllearner.kb.sparql.query.SparqlQuery; +import org.dllearner.kb.sparql.SparqlQuery; /** * Stores the state of a DL-Learner client session. Modified: trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java =================================================================== --- trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java 2008-01-29 17:34:13 UTC (rev 456) +++ trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java 2008-01-29 19:24:02 UTC (rev 457) @@ -47,7 +47,7 @@ import org.dllearner.core.dl.Individual; import org.dllearner.kb.OWLFile; import org.dllearner.kb.sparql.SparqlKnowledgeSource; -import org.dllearner.kb.sparql.query.SparqlQuery; +import org.dllearner.kb.sparql.SparqlQuery; import org.dllearner.learningproblems.PosNegDefinitionLP; import org.dllearner.learningproblems.PosNegInclusionLP; import org.dllearner.learningproblems.PosOnlyDefinitionLP; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sk...@us...> - 2008-01-30 10:27:23
|
Revision: 464 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=464&view=rev Author: sknappe Date: 2008-01-30 02:27:21 -0800 (Wed, 30 Jan 2008) Log Message: ----------- now works with the new Cache Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java trunk/src/dl-learner/org/dllearner/server/ClientState.java trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryThreaded.java Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-01-30 10:26:38 UTC (rev 463) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-01-30 10:27:21 UTC (rev 464) @@ -101,8 +101,6 @@ // received ontology as KB, the internal format private KB kb; - private boolean cached=true; - public static String getName() { return "SPARQL Endpoint"; } @@ -159,8 +157,6 @@ "role to learn Domain/Range from")); options.add(new StringConfigOption("blankNodeIdentifier", "used to identify blanknodes in Tripels")); - options.add(new BooleanConfigOption("cached", - "use Cache")); options.add(new StringTupleListConfigOption("example", "example")); options.add(new StringTupleListConfigOption("replacePredicate", "rule for replacing predicates")); @@ -219,8 +215,6 @@ dumpToFile = (Boolean) entry.getValue(); } else if (option.equals("useLits")) { useLits = (Boolean) entry.getValue(); - } else if (option.equals("cached")) { - cached = (Boolean) entry.getValue(); } else if (option.equals("getAllSuperClasses")) { getAllSuperClasses = (Boolean) entry.getValue(); /* @@ -395,11 +389,12 @@ public SparqlQuery sparqlQuery(String query) { this.endpoint = new SparqlEndpoint(url, defaultGraphURIs, namedGraphURIs); -// if (cached) -// return new CachedSparqlQueryTest(endpoint, new Cache("cache"),""+query.hashCode(),query); -// else - return new SparqlQuery(query, endpoint); + return new SparqlQuery(query, endpoint); } + + public SparqlQueryThreaded sparqlQueryThreaded(String query){ + return new SparqlQueryThreaded(new Cache("cache"),this.sparqlQuery(query)); + } /*public static void main(String[] args) throws MalformedURLException { String query = "SELECT ?pred ?obj\n" Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java 2008-01-30 10:26:38 UTC (rev 463) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java 2008-01-30 10:27:21 UTC (rev 464) @@ -46,12 +46,10 @@ private static Logger logger = Logger.getLogger(SparqlKnowledgeSource.class); private boolean isRunning = false; - // TODO: declare as private - protected String queryString; + private String queryString; private QueryEngineHTTP queryExecution; private SparqlEndpoint endpoint; - // TODO: declare as private - protected ResultSet rs = null; + private ResultSet rs = null; /** * Standard constructor. @@ -64,11 +62,6 @@ this.endpoint = endpoint; } - @Deprecated - public void setIsRunning(boolean running) { - this.isRunning = running; - } - /** * Sends a SPARQL query using the Jena library. */ @@ -110,6 +103,10 @@ public boolean isRunning() { return isRunning; } + + public QueryEngineHTTP getExecution(){ + return queryExecution; + } public boolean hasCompleted() { return (rs != null); @@ -184,7 +181,7 @@ ResultSetFormatter.outputAsJSON(baos, resultSet); // possible Jena bug: Jena modifies the result set during // JSON transformation, so we need to get it back - resultSet = JSONtoResultSet(baos.toString()); + //resultSet = JSONtoResultSet(baos.toString()); return baos.toString(); } Added: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryThreaded.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryThreaded.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryThreaded.java 2008-01-30 10:27:21 UTC (rev 464) @@ -0,0 +1,40 @@ +package org.dllearner.kb.sparql; + +import com.hp.hpl.jena.query.ResultSet; + +/** + * The class is used for threaded querying of a Sparql Endpoint. + * @author Sebastian Knappe + * + */ +public class SparqlQueryThreaded { + private boolean isRunning=false; + private Cache cache; + private SparqlQuery query; + + public SparqlQueryThreaded(Cache cache, SparqlQuery query) + { + this.cache=cache; + this.query=query; + } + + public void stop() { + query.getExecution().abort(); + isRunning = false; + } + + public boolean isRunning() { + return isRunning; + } + + public void send() + { + isRunning=true; + cache.executeSparqlQuery(query); + isRunning=false; + } + + public SparqlQuery getSparqlQuery(){ + return query; + } +} Modified: trunk/src/dl-learner/org/dllearner/server/ClientState.java =================================================================== --- trunk/src/dl-learner/org/dllearner/server/ClientState.java 2008-01-30 10:26:38 UTC (rev 463) +++ trunk/src/dl-learner/org/dllearner/server/ClientState.java 2008-01-30 10:27:21 UTC (rev 464) @@ -35,6 +35,7 @@ import org.dllearner.kb.OWLFile; import org.dllearner.kb.sparql.SparqlKnowledgeSource; import org.dllearner.kb.sparql.SparqlQuery; +import org.dllearner.kb.sparql.SparqlQueryThreaded; /** * Stores the state of a DL-Learner client session. @@ -51,7 +52,7 @@ private Set<KnowledgeSource> knowledgeSources = new HashSet<KnowledgeSource>(); - private Map<Integer, SparqlQuery> queryIDs = new HashMap<Integer, SparqlQuery>(); + private Map<Integer, SparqlQueryThreaded> queryIDs = new HashMap<Integer, SparqlQueryThreaded>(); private LearningProblem learningProblem; @@ -73,7 +74,7 @@ return id; } - private int generateQueryID(SparqlQuery query) { + private int generateQueryID(SparqlQueryThreaded query) { int id; Random rand = new Random(); do { @@ -83,11 +84,11 @@ return id; } - public int addQuery(SparqlQuery query){ + public int addQuery(SparqlQueryThreaded query){ return this.generateQueryID(query); } - public SparqlQuery getQuery(int id){ + public SparqlQueryThreaded getQuery(int id){ return queryIDs.get(id); } Modified: trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java =================================================================== --- trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java 2008-01-30 10:26:38 UTC (rev 463) +++ trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java 2008-01-30 10:27:21 UTC (rev 464) @@ -494,23 +494,23 @@ public String[][] getAsStringArray(int sessionID, int queryID) throws ClientNotKnownException { ClientState state = getState(sessionID); - return state.getQuery(queryID).getAsStringArray(); + return state.getQuery(queryID).getSparqlQuery().getAsStringArray(); } @WebMethod public String getAsJSON(int sessionID, int queryID) throws ClientNotKnownException { ClientState state = getState(sessionID); - ResultSet rs = state.getQuery(queryID).send(); - return SparqlQuery.getAsJSON(rs); + ResultSet resultSet=state.getQuery(queryID).getSparqlQuery().getResultSet(); + return SparqlQuery.getAsJSON(resultSet); } @WebMethod public String getAsXMLString(int sessionID, int queryID) throws ClientNotKnownException { ClientState state = getState(sessionID); - ResultSet rs = state.getQuery(queryID).send(); - return SparqlQuery.getAsXMLString(rs); + ResultSet resultSet=state.getQuery(queryID).getSparqlQuery().getResultSet(); + return SparqlQuery.getAsXMLString(resultSet); } @WebMethod @@ -518,14 +518,11 @@ { final ClientState state = getState(sessionID); final Component component = state.getComponent(componentID); - final int id=state.addQuery(((SparqlKnowledgeSource)component).sparqlQuery(query)); + final int id=state.addQuery(((SparqlKnowledgeSource)component).sparqlQueryThreaded(query)); Thread sparqlThread = new Thread() { @Override public void run() { - SparqlQuery query=state.getQuery(id); - query.setIsRunning(true); - query.send(); - query.setIsRunning(false); + state.getQuery(id).send(); } }; sparqlThread.start(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sk...@us...> - 2008-01-30 11:21:15
|
Revision: 465 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=465&view=rev Author: sknappe Date: 2008-01-30 03:21:13 -0800 (Wed, 30 Jan 2008) Log Message: ----------- added exception handling functionality for sparql queries Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryThreaded.java trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryException.java trunk/src/dl-learner/org/dllearner/server/jaxws/SparqlQueryExceptionBean.java Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java 2008-01-30 10:27:21 UTC (rev 464) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java 2008-01-30 11:21:13 UTC (rev 465) @@ -219,8 +219,10 @@ } else { query.send(); ResultSet rs = query.getResultSet(); - String json = SparqlQuery.getAsJSON(rs); - addToCache(query.getQueryString(), json); + if (rs!=null){ + String json = SparqlQuery.getAsJSON(rs); + addToCache(query.getQueryString(), json); + } return rs; } } Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java 2008-01-30 10:27:21 UTC (rev 464) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java 2008-01-30 11:21:13 UTC (rev 465) @@ -50,6 +50,7 @@ private QueryEngineHTTP queryExecution; private SparqlEndpoint endpoint; private ResultSet rs = null; + private SparqlQueryException sendException=null; /** * Standard constructor. @@ -80,9 +81,13 @@ queryExecution.addNamedGraph(ngu); } logger.info("query SPARQL server"); - - rs = queryExecution.execSelect(); - logger.info(rs.getResultVars().toString()); + try{ + rs = queryExecution.execSelect(); + logger.info(rs.getResultVars().toString()); + } catch (Exception e){ + sendException=new SparqlQueryException(e.getMessage()); + logger.info("Exception when querying Sparql Endpoint"); + } isRunning = false; return rs; } @@ -107,6 +112,10 @@ public QueryEngineHTTP getExecution(){ return queryExecution; } + + public SparqlQueryException getException(){ + return sendException; + } public boolean hasCompleted() { return (rs != null); @@ -119,10 +128,7 @@ */ @Deprecated @SuppressWarnings( { "unchecked" }) - public String[][] getAsStringArray() { - if (rs == null) - this.send(); - System.out.println("Starting Query"); + public static String[][] getAsStringArray(ResultSet rs) { List<ResultBinding> l = ResultSetFormatter.toList(rs); List<String> resultVars = rs.getResultVars(); String[][] array = new String[l.size()][resultVars.size()]; @@ -139,7 +145,6 @@ i++; j = 0; } - System.out.println("Query complete"); return array; } Added: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryException.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryException.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryException.java 2008-01-30 11:21:13 UTC (rev 465) @@ -0,0 +1,10 @@ +package org.dllearner.kb.sparql; + +public class SparqlQueryException extends Exception{ + + static final long serialVersionUID=101; + + public SparqlQueryException (String message) { + super ("Sparql Query failed.\n"+message); + } +} Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryThreaded.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryThreaded.java 2008-01-30 10:27:21 UTC (rev 464) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryThreaded.java 2008-01-30 11:21:13 UTC (rev 465) @@ -11,6 +11,7 @@ private boolean isRunning=false; private Cache cache; private SparqlQuery query; + private ResultSet result; public SparqlQueryThreaded(Cache cache, SparqlQuery query) { @@ -30,11 +31,15 @@ public void send() { isRunning=true; - cache.executeSparqlQuery(query); + result=cache.executeSparqlQuery(query); isRunning=false; } public SparqlQuery getSparqlQuery(){ return query; } + + public ResultSet getResult(){ + return result; + } } Modified: trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java =================================================================== --- trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java 2008-01-30 10:27:21 UTC (rev 464) +++ trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java 2008-01-30 11:21:13 UTC (rev 465) @@ -48,6 +48,7 @@ import org.dllearner.kb.OWLFile; import org.dllearner.kb.sparql.SparqlKnowledgeSource; import org.dllearner.kb.sparql.SparqlQuery; +import org.dllearner.kb.sparql.SparqlQueryException; import org.dllearner.learningproblems.PosNegDefinitionLP; import org.dllearner.learningproblems.PosNegInclusionLP; import org.dllearner.learningproblems.PosOnlyDefinitionLP; @@ -491,10 +492,12 @@ //////////////////////////////////////// @WebMethod - public String[][] getAsStringArray(int sessionID, int queryID) throws ClientNotKnownException + public String[][] getAsStringArray(int sessionID, int queryID) throws ClientNotKnownException, SparqlQueryException { ClientState state = getState(sessionID); - return state.getQuery(queryID).getSparqlQuery().getAsStringArray(); + SparqlQueryException exception=null; + if ((exception=state.getQuery(queryID).getSparqlQuery().getException())!=null) throw exception; + return SparqlQuery.getAsStringArray(state.getQuery(queryID).getResult()); } @WebMethod Added: trunk/src/dl-learner/org/dllearner/server/jaxws/SparqlQueryExceptionBean.java =================================================================== --- trunk/src/dl-learner/org/dllearner/server/jaxws/SparqlQueryExceptionBean.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/server/jaxws/SparqlQueryExceptionBean.java 2008-01-30 11:21:13 UTC (rev 465) @@ -0,0 +1,38 @@ +package org.dllearner.server.jaxws; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.XmlType; + +/** + * This class was generated by the JAXWS SI. + * JAX-WS RI 2.0_02-b08-fcs + * Generated source version: 2.0_02 + * + */ +@XmlRootElement(name = "SparqlQueryException", namespace = "http://server.dllearner.org/") +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "SparqlQueryException", namespace = "http://server.dllearner.org/") +public class SparqlQueryExceptionBean { + + private String message; + + /** + * + * @return + * returns String + */ + public String getMessage() { + return this.message; + } + + /** + * + * @param message + * the value for the message property + */ + public void setMessage(String message) { + this.message = message; + } +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jen...@us...> - 2008-02-04 14:54:12
|
Revision: 489 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=489&view=rev Author: jenslehmann Date: 2008-02-04 06:54:07 -0800 (Mon, 04 Feb 2008) Log Message: ----------- - moved all tests to org.dllearner.test - some cleanup, fixed warnings Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/gui/ThreadRun.java trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java trunk/src/dl-learner/org/dllearner/server/ClientState.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/test/ComponentTest.java trunk/src/dl-learner/org/dllearner/test/FaCTBugDemo.java trunk/src/dl-learner/org/dllearner/test/JenaHTTPTest.java trunk/src/dl-learner/org/dllearner/test/JenaQueryToResultSpeedTest.java trunk/src/dl-learner/org/dllearner/test/SparqlExtractionTest.java trunk/src/dl-learner/org/dllearner/test/junit/ trunk/src/dl-learner/org/dllearner/test/junit/AllTestsRunner.java trunk/src/dl-learner/org/dllearner/test/junit/ComponentTests.java trunk/src/dl-learner/org/dllearner/test/junit/package.html Removed Paths: ------------- trunk/src/dl-learner/org/dllearner/core/ComponentTest.java trunk/src/dl-learner/org/dllearner/kb/sparql/test/ trunk/src/dl-learner/org/dllearner/reasoning/FaCTBugDemo.java trunk/src/dl-learner/org/dllearner/test/AllTestsRunner.java trunk/src/dl-learner/org/dllearner/test/ComponentTests.java trunk/src/dl-learner/org/dllearner/test/package.html Deleted: trunk/src/dl-learner/org/dllearner/core/ComponentTest.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/ComponentTest.java 2008-02-04 11:38:43 UTC (rev 488) +++ trunk/src/dl-learner/org/dllearner/core/ComponentTest.java 2008-02-04 14:54:07 UTC (rev 489) @@ -1,84 +0,0 @@ -/** - * Copyright (C) 2007, Jens Lehmann - * - * This file is part of DL-Learner. - * - * DL-Learner is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * DL-Learner is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ -package org.dllearner.core; - -import java.io.File; -import java.util.Set; -import java.util.TreeSet; - -import org.dllearner.algorithms.RandomGuesser; -import org.dllearner.kb.OWLFile; -import org.dllearner.learningproblems.PosNegDefinitionLP; -import org.dllearner.reasoning.DIGReasoner; - -/** - * Test for component based design. - * - * @author Jens Lehmann - * - */ -public class ComponentTest { - - /** - * @param args - */ - public static void main(String[] args) { - - // get singleton instance of component manager - ComponentManager cm = ComponentManager.getInstance(); - - // create knowledge source - KnowledgeSource source = cm.knowledgeSource(OWLFile.class); - String example = "examples/father.owl"; - cm.applyConfigEntry(source, "url", new File(example).toURI().toString()); - source.init(); - - // create DIG reasoning service with standard settings - ReasonerComponent reasoner = cm.reasoner(DIGReasoner.class, source); - // ReasoningService rs = cm.reasoningService(DIGReasonerNew.class, source); - reasoner.init(); - ReasoningService rs = cm.reasoningService(reasoner); - - // create a learning problem and set positive and negative examples - LearningProblem lp = cm.learningProblem(PosNegDefinitionLP.class, rs); - Set<String> positiveExamples = new TreeSet<String>(); - positiveExamples.add("http://example.com/father#stefan"); - positiveExamples.add("http://example.com/father#markus"); - positiveExamples.add("http://example.com/father#martin"); - Set<String> negativeExamples = new TreeSet<String>(); - negativeExamples.add("http://example.com/father#heinz"); - negativeExamples.add("http://example.com/father#anna"); - negativeExamples.add("http://example.com/father#michelle"); - cm.applyConfigEntry(lp, "positiveExamples", positiveExamples); - cm.applyConfigEntry(lp, "negativeExamples", negativeExamples); - lp.init(); - - // create the learning algorithm - LearningAlgorithm la = cm.learningAlgorithm(RandomGuesser.class, lp, rs); - cm.applyConfigEntry(la, "numberOfTrees", 100); - cm.applyConfigEntry(la, "maxDepth", 5); - la.init(); - - // start the algorithm and print the best concept found - la.start(); - System.out.println(la.getBestSolution()); - } - -} Modified: trunk/src/dl-learner/org/dllearner/gui/ThreadRun.java =================================================================== --- trunk/src/dl-learner/org/dllearner/gui/ThreadRun.java 2008-02-04 11:38:43 UTC (rev 488) +++ trunk/src/dl-learner/org/dllearner/gui/ThreadRun.java 2008-02-04 14:54:07 UTC (rev 489) @@ -34,6 +34,7 @@ } // method to start thread + @Override public void run() { if (config.getLearningAlgorithm() != null) config.getLearningAlgorithm().start(); Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java 2008-02-04 11:38:43 UTC (rev 488) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java 2008-02-04 14:54:07 UTC (rev 489) @@ -160,20 +160,6 @@ } /** - * sends a query and returns complicated Jena List with ResultBindings - * - * - * @return jena List<ResultBinding> - */ - @Deprecated - @SuppressWarnings( { "unchecked" }) - public List<ResultBinding> getAsList() { - if (rs == null) - this.send(); - return ResultSetFormatter.toList(rs); - } - - /** * Converts Jena result set to JSON. * * @param resultSet The result set to transform. Deleted: trunk/src/dl-learner/org/dllearner/reasoning/FaCTBugDemo.java =================================================================== --- trunk/src/dl-learner/org/dllearner/reasoning/FaCTBugDemo.java 2008-02-04 11:38:43 UTC (rev 488) +++ trunk/src/dl-learner/org/dllearner/reasoning/FaCTBugDemo.java 2008-02-04 14:54:07 UTC (rev 489) @@ -1,65 +0,0 @@ -package org.dllearner.reasoning; - -import org.semanticweb.owl.model.*; -import org.semanticweb.owl.apibinding.OWLManager; -import org.semanticweb.owl.inference.OWLReasoner; -import org.semanticweb.owl.inference.OWLReasonerException; - -import java.net.URI; -import java.util.HashSet; -import java.util.Set; -import java.io.File; - -public class FaCTBugDemo { - - public static void main(String[] args) { - - try { - URI uri = new File("examples/father.owl").toURI(); - - // Create our ontology manager in the usual way. - OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); - - // Load a copy of the pizza ontology. We'll load the ontology from the web. - OWLOntology ont = manager.loadOntologyFromPhysicalURI(uri); - - OWLReasoner reasoner = new uk.ac.manchester.cs.factplusplus.owlapi.Reasoner(manager); - // OWLReasoner reasoner = new org.mindswap.pellet.owlapi.Reasoner(manager); - - // seems to be needed for some reason although no ontology is imported - Set<OWLOntology> importsClosure = manager.getImportsClosure(ont); - reasoner.loadOntologies(importsClosure); - - reasoner.classify(); - reasoner.realise(); - - OWLDataFactory factory = manager.getOWLDataFactory(); - - OWLClass male = factory.getOWLClass(URI.create("http://example.com/father#male")); - OWLObjectProperty hasChild = factory.getOWLObjectProperty(URI.create("http://example.com/father#hasChild")); - OWLObjectSomeRestriction hasSomeChild = factory.getOWLObjectSomeRestriction(hasChild, factory.getOWLThing()); - Set<OWLDescription> set = new HashSet<OWLDescription>(); - set.add(male); - set.add(hasSomeChild); - OWLDescription father = factory.getOWLObjectIntersectionOf(set); - OWLIndividual martin = factory.getOWLIndividual(URI.create("http://example.com/father#martin")); - - if(reasoner.hasType(martin, father, false)) - System.out.println("positive result"); // Pellet 1.5.1 (correct) - else - System.out.println("negative result"); // FaCT++ 1.10 - - } - catch(UnsupportedOperationException exception) { - System.out.println("Unsupported reasoner operation."); - } - catch(OWLReasonerException ex) { - System.out.println("Reasoner error: " + ex.getMessage()); - } - catch (OWLOntologyCreationException e) { - System.out.println("Could not load the pizza ontology: " + e.getMessage()); - } catch (Exception e) { - e.printStackTrace(); - } - } -} Modified: trunk/src/dl-learner/org/dllearner/server/ClientState.java =================================================================== --- trunk/src/dl-learner/org/dllearner/server/ClientState.java 2008-02-04 11:38:43 UTC (rev 488) +++ trunk/src/dl-learner/org/dllearner/server/ClientState.java 2008-02-04 14:54:07 UTC (rev 489) @@ -34,7 +34,6 @@ import org.dllearner.core.ReasoningService; import org.dllearner.kb.OWLFile; import org.dllearner.kb.sparql.SparqlKnowledgeSource; -import org.dllearner.kb.sparql.SparqlQuery; import org.dllearner.kb.sparql.SparqlQueryThreaded; /** Deleted: trunk/src/dl-learner/org/dllearner/test/AllTestsRunner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/test/AllTestsRunner.java 2008-02-04 11:38:43 UTC (rev 488) +++ trunk/src/dl-learner/org/dllearner/test/AllTestsRunner.java 2008-02-04 14:54:07 UTC (rev 489) @@ -1,39 +0,0 @@ -/** - * Copyright (C) 2007-2008, Jens Lehmann - * - * This file is part of DL-Learner. - * - * DL-Learner is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * DL-Learner is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ -package org.dllearner.test; - -import org.junit.runner.JUnitCore; - -/** - * Class designed to run all DL-Learner component tests. Note, - * that in Eclipse (and similar in other IDEs) you can run - * JUnit tests by clicking on a file containing methods annotated - * with @Test and "Run As JUnit Test". - * - * @author Jens Lehmann - * - */ -public class AllTestsRunner { - - public static void main(String[] args) { - JUnitCore.main("org.dllearner.test.ComponentTests"); - } - -} Copied: trunk/src/dl-learner/org/dllearner/test/ComponentTest.java (from rev 488, trunk/src/dl-learner/org/dllearner/core/ComponentTest.java) =================================================================== --- trunk/src/dl-learner/org/dllearner/test/ComponentTest.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/test/ComponentTest.java 2008-02-04 14:54:07 UTC (rev 489) @@ -0,0 +1,90 @@ +/** + * Copyright (C) 2007, Jens Lehmann + * + * This file is part of DL-Learner. + * + * DL-Learner is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * DL-Learner is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package org.dllearner.test; + +import java.io.File; +import java.util.Set; +import java.util.TreeSet; + +import org.dllearner.algorithms.RandomGuesser; +import org.dllearner.core.ComponentManager; +import org.dllearner.core.KnowledgeSource; +import org.dllearner.core.LearningAlgorithm; +import org.dllearner.core.LearningProblem; +import org.dllearner.core.ReasonerComponent; +import org.dllearner.core.ReasoningService; +import org.dllearner.kb.OWLFile; +import org.dllearner.learningproblems.PosNegDefinitionLP; +import org.dllearner.reasoning.DIGReasoner; + +/** + * Test for component based design. + * + * @author Jens Lehmann + * + */ +public class ComponentTest { + + /** + * @param args + */ + public static void main(String[] args) { + + // get singleton instance of component manager + ComponentManager cm = ComponentManager.getInstance(); + + // create knowledge source + KnowledgeSource source = cm.knowledgeSource(OWLFile.class); + String example = "examples/father.owl"; + cm.applyConfigEntry(source, "url", new File(example).toURI().toString()); + source.init(); + + // create DIG reasoning service with standard settings + ReasonerComponent reasoner = cm.reasoner(DIGReasoner.class, source); + // ReasoningService rs = cm.reasoningService(DIGReasonerNew.class, source); + reasoner.init(); + ReasoningService rs = cm.reasoningService(reasoner); + + // create a learning problem and set positive and negative examples + LearningProblem lp = cm.learningProblem(PosNegDefinitionLP.class, rs); + Set<String> positiveExamples = new TreeSet<String>(); + positiveExamples.add("http://example.com/father#stefan"); + positiveExamples.add("http://example.com/father#markus"); + positiveExamples.add("http://example.com/father#martin"); + Set<String> negativeExamples = new TreeSet<String>(); + negativeExamples.add("http://example.com/father#heinz"); + negativeExamples.add("http://example.com/father#anna"); + negativeExamples.add("http://example.com/father#michelle"); + cm.applyConfigEntry(lp, "positiveExamples", positiveExamples); + cm.applyConfigEntry(lp, "negativeExamples", negativeExamples); + lp.init(); + + // create the learning algorithm + LearningAlgorithm la = cm.learningAlgorithm(RandomGuesser.class, lp, rs); + cm.applyConfigEntry(la, "numberOfTrees", 100); + cm.applyConfigEntry(la, "maxDepth", 5); + la.init(); + + // start the algorithm and print the best concept found + la.start(); + System.out.println(la.getBestSolution()); + } + +} Deleted: trunk/src/dl-learner/org/dllearner/test/ComponentTests.java =================================================================== --- trunk/src/dl-learner/org/dllearner/test/ComponentTests.java 2008-02-04 11:38:43 UTC (rev 488) +++ trunk/src/dl-learner/org/dllearner/test/ComponentTests.java 2008-02-04 14:54:07 UTC (rev 489) @@ -1,54 +0,0 @@ -/** - * Copyright (C) 2007-2008, Jens Lehmann - * - * This file is part of DL-Learner. - * - * DL-Learner is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * DL-Learner is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ -package org.dllearner.test; - -import java.util.List; - -import org.dllearner.core.Component; -import org.dllearner.core.ComponentManager; -import org.junit.Test; -import static org.junit.Assert.*; - -/** - * A suite of JUnit tests related to the DL-Learner component architecture. - * - * @author Jens Lehmann - * - */ -public class ComponentTests { - - /** - * Checks whether all components implement the getName() method. While it - * cannot be enforced to implement a static method, it should be done (e.g. - * to be used as label for the component in GUIs). - */ - @Test - public void nameTest() { - String defaultName = Component.getName(); - ComponentManager cm = ComponentManager.getInstance(); - List<Class<? extends Component>> components = cm.getComponents(); - for (Class<? extends Component> component : components) { - String componentName = cm.getComponentName(component); - assertFalse(component + " does not overwrite getName().", componentName - .equals(defaultName)); - } - } - -} Copied: trunk/src/dl-learner/org/dllearner/test/FaCTBugDemo.java (from rev 488, trunk/src/dl-learner/org/dllearner/reasoning/FaCTBugDemo.java) =================================================================== --- trunk/src/dl-learner/org/dllearner/test/FaCTBugDemo.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/test/FaCTBugDemo.java 2008-02-04 14:54:07 UTC (rev 489) @@ -0,0 +1,65 @@ +package org.dllearner.test; + +import org.semanticweb.owl.model.*; +import org.semanticweb.owl.apibinding.OWLManager; +import org.semanticweb.owl.inference.OWLReasoner; +import org.semanticweb.owl.inference.OWLReasonerException; + +import java.net.URI; +import java.util.HashSet; +import java.util.Set; +import java.io.File; + +public class FaCTBugDemo { + + public static void main(String[] args) { + + try { + URI uri = new File("examples/father.owl").toURI(); + + // Create our ontology manager in the usual way. + OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); + + // Load a copy of the pizza ontology. We'll load the ontology from the web. + OWLOntology ont = manager.loadOntologyFromPhysicalURI(uri); + + OWLReasoner reasoner = new uk.ac.manchester.cs.factplusplus.owlapi.Reasoner(manager); + // OWLReasoner reasoner = new org.mindswap.pellet.owlapi.Reasoner(manager); + + // seems to be needed for some reason although no ontology is imported + Set<OWLOntology> importsClosure = manager.getImportsClosure(ont); + reasoner.loadOntologies(importsClosure); + + reasoner.classify(); + reasoner.realise(); + + OWLDataFactory factory = manager.getOWLDataFactory(); + + OWLClass male = factory.getOWLClass(URI.create("http://example.com/father#male")); + OWLObjectProperty hasChild = factory.getOWLObjectProperty(URI.create("http://example.com/father#hasChild")); + OWLObjectSomeRestriction hasSomeChild = factory.getOWLObjectSomeRestriction(hasChild, factory.getOWLThing()); + Set<OWLDescription> set = new HashSet<OWLDescription>(); + set.add(male); + set.add(hasSomeChild); + OWLDescription father = factory.getOWLObjectIntersectionOf(set); + OWLIndividual martin = factory.getOWLIndividual(URI.create("http://example.com/father#martin")); + + if(reasoner.hasType(martin, father, false)) + System.out.println("positive result"); // Pellet 1.5.1 (correct) + else + System.out.println("negative result"); // FaCT++ 1.10 + + } + catch(UnsupportedOperationException exception) { + System.out.println("Unsupported reasoner operation."); + } + catch(OWLReasonerException ex) { + System.out.println("Reasoner error: " + ex.getMessage()); + } + catch (OWLOntologyCreationException e) { + System.out.println("Could not load the pizza ontology: " + e.getMessage()); + } catch (Exception e) { + e.printStackTrace(); + } + } +} Added: trunk/src/dl-learner/org/dllearner/test/JenaHTTPTest.java =================================================================== --- trunk/src/dl-learner/org/dllearner/test/JenaHTTPTest.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/test/JenaHTTPTest.java 2008-02-04 14:54:07 UTC (rev 489) @@ -0,0 +1,102 @@ +package org.dllearner.test; + +import java.io.BufferedInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.net.InetAddress; +import java.net.Socket; +import java.net.URLEncoder; + +import com.hp.hpl.jena.sparql.engine.http.QueryEngineHTTP; + +public class JenaHTTPTest { + public static void main(String[] args) throws Exception{ + + String query="SELECT DISTINCT ?object\n"+ + "FROM <http://dbpedia.org>\n"+ + "WHERE { <http://dbpedia.org/resource/Leipzig> <http://www.w3.org/2000/01/rdf-schema#label> ?object}\n"; + + double time=0; + for (int i=0; i<101; i++) + { + if (i!=0) time+=JenaHTTPTest.httpQuery(query); + } + time=time/100; + System.out.println("Durchschnittliche Zeit f�r eine Anfrage per Http-Methode: "+time); + + time=0; + for (int i=0; i<101; i++) + { + if (i!=0) time+=JenaHTTPTest.jenaQuery(query); + } + time=time/100; + System.out.println("Durchschnittliche Zeit f�r eine Anfrage per Jena-Methode: "+time); + } + + private static double jenaQuery(String query) + { + double start=System.currentTimeMillis(); + QueryEngineHTTP queryExecution=new QueryEngineHTTP("http://localhost:8890/sparql",query); + queryExecution.addDefaultGraph("http://dbpedia.org"); + // Jena access to DBpedia SPARQL endpoint + // ResultSet rs = + queryExecution.execSelect(); + double end=System.currentTimeMillis(); + return ((end-start)/1000); + } + + private static double httpQuery(String query) throws Exception + { + char value[]={13,10}; + String cut=new String(value); + String test="GET /sparql?default-graph-uri=http%3A%2F%2Fdbpedia.org&query=" + + URLEncoder.encode(query, "UTF-8")+ + "&format=application%2Fsparql-results%2Bxml HTTP/1.1"+cut+ + "Host: localhost"+cut+ + "Connection: close"+cut+ + "Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5"+cut+ + "Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3"+cut+ + "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7"+cut+ + "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"+cut+ + cut; + String retval=""; + // + double start=System.currentTimeMillis(); + byte resp[]=null; + + try{ + Socket SparqlServer=new Socket(InetAddress.getByName("localhost"),8890); + String request=test; + // send request + (SparqlServer.getOutputStream()).write(request.getBytes()); + + //get Response + resp=readBuffer(new BufferedInputStream(SparqlServer.getInputStream())); + retval=new String(resp); + retval=retval.substring(retval.indexOf(cut+""+cut)+4); + + SparqlServer.close(); + } catch (Exception e){} + double end=System.currentTimeMillis(); + return (end-start)/1000; + } + + private static byte[] readBuffer(InputStream IS) + throws IOException{ + byte buffer[] = new byte[0xffff]; + int nbytes=0; + byte resp[]=new byte[0]; + while ((nbytes=IS.read(buffer))!=-1) { + byte tmp[]=new byte[resp.length+nbytes]; + int i=0; + for (;i<resp.length;i++){ + tmp[i]=resp[i]; + } + for(int a=0;a<nbytes;a++,i++){ + tmp[i]=buffer[a]; + } + resp=tmp; + } + return resp; + } +} Copied: trunk/src/dl-learner/org/dllearner/test/JenaQueryToResultSpeedTest.java (from rev 488, trunk/src/dl-learner/org/dllearner/kb/sparql/test/JenaQueryToResultSpeedTest.java) =================================================================== --- trunk/src/dl-learner/org/dllearner/test/JenaQueryToResultSpeedTest.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/test/JenaQueryToResultSpeedTest.java 2008-02-04 14:54:07 UTC (rev 489) @@ -0,0 +1,163 @@ +/** + * Copyright (C) 2007-2008, Jens Lehmann + * + * This file is part of DL-Learner. + * + * DL-Learner is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * DL-Learner is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package org.dllearner.test; + +import org.dllearner.kb.sparql.SparqlQuery; +import org.dllearner.kb.sparql.configuration.SparqlEndpoint; + +import com.hp.hpl.jena.query.ResultSet; +import com.hp.hpl.jena.query.ResultSetFormatter; + + +public class JenaQueryToResultSpeedTest { + static boolean print_flag=false; + + public static void main(String[] args) { + + String queryString = "PREFIX dbpedia2: <http://dbpedia.org/property/> " + + "PREFIX skos: <http://www.w3.org/2004/02/skos/core#>" + + "SELECT ?episode ?chalkboard_gag WHERE { ?episode skos:subject" + + " <http://dbpedia.org/resource/Category:The_Simpsons_episodes%2C_season_12>." + + " ?episode dbpedia2:blackboard ?chalkboard_gag }"; + + int howOften=20; + testJenaAsXML(howOften, queryString); + testJenaAsList(howOften, queryString); + testJenaAsJSON(howOften, queryString); + testJenaAsJSONandBack(howOften, queryString); + + + + // compareResults( queryString); + + } + + + public static void testJenaAsXML(int howOften, String queryString){ + SparqlEndpoint sse = SparqlEndpoint.dbpediaEndpoint(); + SparqlQuery sqJena = new SparqlQuery(queryString, sse); + // first query is not counted + ResultSet rs = sqJena.send(); + SparqlQuery.getAsXMLString(rs); + long now = System.currentTimeMillis(); + long tmp = now; + for (int i = 0; i < howOften; i++) { + + rs = sqJena.send(); + SparqlQuery.getAsXMLString(rs); + p("Jena as XML needed: " + + (System.currentTimeMillis() - tmp)); + tmp = System.currentTimeMillis(); + } + long total=System.currentTimeMillis() - now; + System.out.println("Jena as XML total: " + total + + " ms , average: "+ (total/howOften) ); + + } + + public static void testJenaAsList(int howOften, String queryString){ + SparqlEndpoint sse = SparqlEndpoint.dbpediaEndpoint(); + SparqlQuery sqJena = new SparqlQuery(queryString, sse); + // first query is not counted + //sqJena.getAsList(); + sqJena.send(); + long now = System.currentTimeMillis(); + long tmp = now; + for (int i = 0; i < howOften; i++) { + + // sqJena.getAsList(); + ResultSet rs = sqJena.send(); + ResultSetFormatter.toList(rs); + p("Jena as List needed: " + + (System.currentTimeMillis() - tmp)); + tmp = System.currentTimeMillis(); + + } + long total=System.currentTimeMillis() - now; + System.out.println("Jena as List total: " + total + + " ms , average: "+ (total/howOften) ); + + } + + public static void testJenaAsJSON(int howOften, String queryString){ + SparqlEndpoint sse = SparqlEndpoint.dbpediaEndpoint(); + SparqlQuery sqJena = new SparqlQuery(queryString, sse); + // first query is not counted + ResultSet rs = sqJena.send(); + SparqlQuery.getAsJSON(rs); + long now = System.currentTimeMillis(); + long tmp = now; + for (int i = 0; i < howOften; i++) { + + rs = sqJena.send(); + SparqlQuery.getAsJSON(rs); + p("Jena as JSON needed: " + + (System.currentTimeMillis() - tmp)); + tmp = System.currentTimeMillis(); + + } + long total=System.currentTimeMillis() - now; + System.out.println("Jena as JSON total: " + total + + " ms , average: "+ (total/howOften) ); + + } + + public static void testJenaAsJSONandBack(int howOften, String queryString){ + SparqlEndpoint sse = SparqlEndpoint.dbpediaEndpoint(); + SparqlQuery sqJena = new SparqlQuery(queryString, sse); + // first query is not counted + ResultSet rs = sqJena.send(); + SparqlQuery.getAsJSON(rs); + long now = System.currentTimeMillis(); + long tmp = now; + for (int i = 0; i < howOften; i++) { + + // System.out.println(sqJena.getAsJSON()); + rs = sqJena.send(); + String json = SparqlQuery.getAsJSON(rs); + SparqlQuery.JSONtoResultSet(json); + p("Jena as JSON and back needed: " + + (System.currentTimeMillis() - tmp)); + tmp = System.currentTimeMillis(); + + } + long total=System.currentTimeMillis() - now; + System.out.println("Jena as JSON and back total: " + total + + " ms , average: "+ (total/howOften) ); + + } + + + public static void compareResults(String queryString) { + SparqlEndpoint sse = SparqlEndpoint.dbpediaEndpoint(); + SparqlQuery sqJena = new SparqlQuery(queryString, sse); + // SparqlQueryConventional sqConv=new SparqlQueryConventional(sse); + + ResultSet rs = sqJena.send(); + System.out.println(SparqlQuery.getAsXMLString(rs)); + // System.out.println(sqConv.getAsXMLString("")); + + } + + static void p(String s) { + if (print_flag) + System.out.println(s); + } +} Added: trunk/src/dl-learner/org/dllearner/test/SparqlExtractionTest.java =================================================================== --- trunk/src/dl-learner/org/dllearner/test/SparqlExtractionTest.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/test/SparqlExtractionTest.java 2008-02-04 14:54:07 UTC (rev 489) @@ -0,0 +1,69 @@ +/** + * Copyright (C) 2007, Sebastian Hellmann + * + * This file is part of DL-Learner. + * + * DL-Learner is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * DL-Learner is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package org.dllearner.test; + +import java.io.File; +import java.io.FileWriter; +import java.net.URI; +import java.util.LinkedList; + +import org.dllearner.kb.sparql.Manager; +import org.dllearner.kb.sparql.Manipulator; +import org.dllearner.kb.sparql.configuration.SparqlEndpoint; +import org.dllearner.kb.sparql.configuration.SparqlQueryType; +import org.dllearner.utilities.StringTuple; + +/** + * Test class, uses the whole thing + * + * @author Sebastian Hellmann + * + */ +public class SparqlExtractionTest { + + public static void main(String[] args) { + System.out.println("Start"); + // String test2 = "http://www.extraction.org/config#dbpediatest"; + // String test = "http://www.extraction.org/config#localjoseki"; + try { + // URI u = new URI(test); + Manager m = new Manager(); + // m.usePredefinedConfiguration(u); + + URI u2 = new URI("http://dbpedia.org/resource/Angela_Merkel"); + m.useConfiguration( + SparqlQueryType.getFilterByNumber(1),SparqlEndpoint.getEndpointByNumber(1), + new Manipulator("",200,new LinkedList<StringTuple>(),new LinkedList<StringTuple>()), + 1,true,true); + //, , + //manipulator, recursiondepth, getAllSuperClasses, closeAfterRecursion) + + String filename = System.currentTimeMillis() + ".nt"; + FileWriter fw = new FileWriter(new File(filename), true); + fw.write(m.extract(u2)); + fw.flush(); + fw.close(); + + } catch (Exception e) { + e.printStackTrace(); + } + } + +} Copied: trunk/src/dl-learner/org/dllearner/test/junit/AllTestsRunner.java (from rev 488, trunk/src/dl-learner/org/dllearner/test/AllTestsRunner.java) =================================================================== --- trunk/src/dl-learner/org/dllearner/test/junit/AllTestsRunner.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/test/junit/AllTestsRunner.java 2008-02-04 14:54:07 UTC (rev 489) @@ -0,0 +1,39 @@ +/** + * Copyright (C) 2007-2008, Jens Lehmann + * + * This file is part of DL-Learner. + * + * DL-Learner is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * DL-Learner is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package org.dllearner.test.junit; + +import org.junit.runner.JUnitCore; + +/** + * Class designed to run all DL-Learner component tests. Note, + * that in Eclipse (and similar in other IDEs) you can run + * JUnit tests by clicking on a file containing methods annotated + * with @Test and "Run As JUnit Test". + * + * @author Jens Lehmann + * + */ +public class AllTestsRunner { + + public static void main(String[] args) { + JUnitCore.main("org.dllearner.test.ComponentTests"); + } + +} Copied: trunk/src/dl-learner/org/dllearner/test/junit/ComponentTests.java (from rev 488, trunk/src/dl-learner/org/dllearner/test/ComponentTests.java) =================================================================== --- trunk/src/dl-learner/org/dllearner/test/junit/ComponentTests.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/test/junit/ComponentTests.java 2008-02-04 14:54:07 UTC (rev 489) @@ -0,0 +1,54 @@ +/** + * Copyright (C) 2007-2008, Jens Lehmann + * + * This file is part of DL-Learner. + * + * DL-Learner is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * DL-Learner is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package org.dllearner.test.junit; + +import java.util.List; + +import org.dllearner.core.Component; +import org.dllearner.core.ComponentManager; +import org.junit.Test; +import static org.junit.Assert.*; + +/** + * A suite of JUnit tests related to the DL-Learner component architecture. + * + * @author Jens Lehmann + * + */ +public class ComponentTests { + + /** + * Checks whether all components implement the getName() method. While it + * cannot be enforced to implement a static method, it should be done (e.g. + * to be used as label for the component in GUIs). + */ + @Test + public void nameTest() { + String defaultName = Component.getName(); + ComponentManager cm = ComponentManager.getInstance(); + List<Class<? extends Component>> components = cm.getComponents(); + for (Class<? extends Component> component : components) { + String componentName = cm.getComponentName(component); + assertFalse(component + " does not overwrite getName().", componentName + .equals(defaultName)); + } + } + +} Copied: trunk/src/dl-learner/org/dllearner/test/junit/package.html (from rev 488, trunk/src/dl-learner/org/dllearner/test/package.html) =================================================================== --- trunk/src/dl-learner/org/dllearner/test/junit/package.html (rev 0) +++ trunk/src/dl-learner/org/dllearner/test/junit/package.html 2008-02-04 14:54:07 UTC (rev 489) @@ -0,0 +1,7 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> +<html> +<head></head> +<body bgcolor="white"> +<p>DL-Learner JUnit tests.</p> +</body> +</html> \ No newline at end of file Deleted: trunk/src/dl-learner/org/dllearner/test/package.html =================================================================== --- trunk/src/dl-learner/org/dllearner/test/package.html 2008-02-04 11:38:43 UTC (rev 488) +++ trunk/src/dl-learner/org/dllearner/test/package.html 2008-02-04 14:54:07 UTC (rev 489) @@ -1,7 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> -<html> -<head></head> -<body bgcolor="white"> -<p>DL-Learner JUnit tests.</p> -</body> -</html> \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jen...@us...> - 2008-02-04 18:56:24
|
Revision: 490 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=490&view=rev Author: jenslehmann Date: 2008-02-04 10:56:10 -0800 (Mon, 04 Feb 2008) Log Message: ----------- started cross validator (not working yet) Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/cli/Start.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/utilities/CrossValidation.java Modified: trunk/src/dl-learner/org/dllearner/cli/Start.java =================================================================== --- trunk/src/dl-learner/org/dllearner/cli/Start.java 2008-02-04 14:54:07 UTC (rev 489) +++ trunk/src/dl-learner/org/dllearner/cli/Start.java 2008-02-04 18:56:10 UTC (rev 490) @@ -94,6 +94,10 @@ private static Logger logger = Logger.getRootLogger(); + private LearningAlgorithm la; + private LearningProblem lp; + private ReasoningService rs; + /** * Entry point for CLI interface. * @@ -101,12 +105,11 @@ */ public static void main(String[] args) { File file = new File(args[args.length - 1]); - String baseDir = file.getParentFile().getPath(); - + boolean inQueryMode = false; if (args.length > 1 && args[0].equals("-q")) inQueryMode = true; - + // create logger (a simple logger which outputs // its messages to the console) SimpleLayout layout = new SimpleLayout(); @@ -115,6 +118,17 @@ logger.addAppender(consoleAppender); logger.setLevel(Level.INFO); + Start start = new Start(file); + start.start(inQueryMode); + } + + /** + * Initialise all components based on conf file. + * @param file Conf file to read. + */ + public Start(File file) { + String baseDir = file.getParentFile().getPath(); + // create component manager instance System.out.print("starting component manager ... "); long cmStartTime = System.nanoTime(); @@ -161,12 +175,11 @@ ReasonerComponent reasoner = cm.reasoner(reasonerClass, sources); configureComponent(cm, reasoner, componentPrefixMapping, parser); initComponent(cm, reasoner); - ReasoningService rs = cm.reasoningService(reasoner); + rs = cm.reasoningService(reasoner); // step 3: detect learning problem ConfFileOption problemOption = parser.getConfOptionsByName("problem"); Class<? extends LearningProblem> lpClass = null; - LearningProblem lp = null; if (problemOption == null || problemOption.getStringValue().equals("posNegDefinition")) lpClass = PosNegDefinitionLP.class; else if (problemOption.getStringValue().equals("posNegInclusion")) @@ -187,7 +200,6 @@ // step 4: detect learning algorithm ConfFileOption algorithmOption = parser.getConfOptionsByName("algorithm"); - LearningAlgorithm la = null; Class<? extends LearningAlgorithm> laClass = null; if (algorithmOption == null || algorithmOption.getStringValue().equals("refinement")) laClass = ROLearner.class; @@ -229,8 +241,10 @@ } // handle any CLI options - processCLIOptions(cm, parser, rs); - + processCLIOptions(cm, parser, rs); + } + + public void start(boolean inQueryMode) { if (inQueryMode) processQueryMode(lp, rs); else { @@ -240,10 +254,9 @@ long algDuration = System.nanoTime() - algStartTime; printConclusions(rs, algDuration); - } - + } } - + // creates a mapping from components to option prefix strings private static Map<Class<? extends Component>, String> createComponentPrefixMapping() { Map<Class<? extends Component>, String> componentPrefixMapping = new HashMap<Class<? extends Component>, String>(); @@ -693,4 +706,8 @@ System.exit(0); } + public LearningAlgorithm getLearningAlgorithm() { + return la; + } + } Added: trunk/src/dl-learner/org/dllearner/utilities/CrossValidation.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/CrossValidation.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/utilities/CrossValidation.java 2008-02-04 18:56:10 UTC (rev 490) @@ -0,0 +1,69 @@ +/** + * Copyright (C) 2007-2008, Jens Lehmann + * + * This file is part of DL-Learner. + * + * DL-Learner is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * DL-Learner is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package org.dllearner.utilities; + +import java.io.File; + +import org.apache.log4j.ConsoleAppender; +import org.apache.log4j.Level; +import org.apache.log4j.Logger; +import org.apache.log4j.SimpleLayout; +import org.dllearner.cli.Start; +import org.dllearner.core.LearningAlgorithm; + +/** + * Performs cross validation for the given problem. + * + * @author Jens Lehmann + * + */ +public class CrossValidation { + + private static Logger logger = Logger.getRootLogger(); + + public static void main(String[] args) { + File file = new File(args[0]); + + int folds = 10; + if(args.length > 1) + folds = Integer.parseInt(args[1]); + + // create logger (a simple logger which outputs + // its messages to the console) + SimpleLayout layout = new SimpleLayout(); + ConsoleAppender consoleAppender = new ConsoleAppender(layout); + logger.removeAllAppenders(); + logger.addAppender(consoleAppender); + logger.setLevel(Level.INFO); + + new CrossValidation(file, folds); + + } + + public CrossValidation(File file, int folds) { + Start start = new Start(file); + LearningAlgorithm la = start.getLearningAlgorithm(); + + for(int currFold=0; currFold<folds; currFold++) { + la.start(); + } + } + +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jen...@us...> - 2008-02-06 14:41:48
|
Revision: 498 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=498&view=rev Author: jenslehmann Date: 2008-02-06 06:41:42 -0800 (Wed, 06 Feb 2008) Log Message: ----------- finished cross validator Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/algorithms/refinement/ROLearner.java trunk/src/dl-learner/org/dllearner/cli/Start.java trunk/src/dl-learner/org/dllearner/learningproblems/PosOnlyDefinitionLP.java trunk/src/dl-learner/org/dllearner/learningproblems/PosOnlyLP.java trunk/src/dl-learner/org/dllearner/utilities/CrossValidation.java trunk/src/dl-learner/org/dllearner/utilities/Datastructures.java trunk/src/dl-learner/org/dllearner/utilities/Stat.java Modified: trunk/src/dl-learner/org/dllearner/algorithms/refinement/ROLearner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/refinement/ROLearner.java 2008-02-05 15:59:48 UTC (rev 497) +++ trunk/src/dl-learner/org/dllearner/algorithms/refinement/ROLearner.java 2008-02-06 14:41:42 UTC (rev 498) @@ -11,6 +11,7 @@ import java.util.SortedSet; import java.util.TreeSet; +import org.apache.log4j.Logger; import org.dllearner.core.LearningAlgorithm; import org.dllearner.core.LearningProblem; import org.dllearner.core.ReasoningService; @@ -38,6 +39,9 @@ public class ROLearner extends LearningAlgorithm { + private static Logger logger = Logger + .getLogger(LearningAlgorithm.class); + public enum Heuristic { LEXICOGRAPHIC, FLEXIBLE } // configuration options @@ -461,7 +465,7 @@ loop++; if(!quiet) - System.out.println("--- loop " + loop + " finished ---"); + logger.debug("--- loop " + loop + " finished ---"); } @@ -864,15 +868,15 @@ // Refinementoperator auf Konzept anwenden String bestNodeString = "currently best node: " + candidatesStable.last(); // searchTree += bestNodeString + "\n"; - System.out.println(bestNodeString); + logger.info(bestNodeString); String expandedNodeString = "next expanded node: " + candidates.last(); // searchTree += expandedNodeString + "\n"; - System.out.println(expandedNodeString); - System.out.println("algorithm runtime " + Helper.prettyPrintNanoSeconds(algorithmRuntime)); + logger.debug(expandedNodeString); + logger.debug("algorithm runtime " + Helper.prettyPrintNanoSeconds(algorithmRuntime)); String expansionString = "horizontal expansion: " + minimumHorizontalExpansion + " to " + maximumHorizontalExpansion; // searchTree += expansionString + "\n"; - System.out.println(expansionString); - System.out.println("size of candidate set: " + candidates.size()); + logger.debug(expansionString); + logger.debug("size of candidate set: " + candidates.size()); // System.out.println("properness max recursion depth: " + maxRecDepth); // System.out.println("max. number of one-step refinements: " + maxNrOfRefinements); // System.out.println("max. number of children of a node: " + maxNrOfChildren); @@ -916,9 +920,9 @@ System.out.println("onnf time percentage: " + df.format(onnfTimePercentage) + "%"); System.out.println("shortening time percentage: " + df.format(shorteningTimePercentage) + "%"); } - System.out.println("properness tests (reasoner/short concept/too weak list): " + propernessTestsReasoner + "/" + propernessTestsAvoidedByShortConceptConstruction + logger.debug("properness tests (reasoner/short concept/too weak list): " + propernessTestsReasoner + "/" + propernessTestsAvoidedByShortConceptConstruction + "/" + propernessTestsAvoidedByTooWeakList); - System.out.println("concept tests (reasoner/too weak list/overly general list/redundant concepts): " + conceptTestsReasoner + "/" + logger.debug("concept tests (reasoner/too weak list/overly general list/redundant concepts): " + conceptTestsReasoner + "/" + conceptTestsTooWeakList + "/" + conceptTestsOverlyGeneralList + "/" + redundantConcepts); } Modified: trunk/src/dl-learner/org/dllearner/cli/Start.java =================================================================== --- trunk/src/dl-learner/org/dllearner/cli/Start.java 2008-02-05 15:59:48 UTC (rev 497) +++ trunk/src/dl-learner/org/dllearner/cli/Start.java 2008-02-06 14:41:42 UTC (rev 498) @@ -710,4 +710,12 @@ return la; } + public LearningProblem getLearningProblem() { + return lp; + } + + public ReasoningService getReasoningService() { + return rs; + } + } Modified: trunk/src/dl-learner/org/dllearner/learningproblems/PosOnlyDefinitionLP.java =================================================================== --- trunk/src/dl-learner/org/dllearner/learningproblems/PosOnlyDefinitionLP.java 2008-02-05 15:59:48 UTC (rev 497) +++ trunk/src/dl-learner/org/dllearner/learningproblems/PosOnlyDefinitionLP.java 2008-02-06 14:41:42 UTC (rev 498) @@ -19,18 +19,10 @@ */ package org.dllearner.learningproblems; -import java.util.Collection; -import java.util.LinkedList; -import java.util.Set; import java.util.SortedSet; import org.dllearner.core.ReasoningService; import org.dllearner.core.Score; -import org.dllearner.core.config.CommonConfigMappings; -import org.dllearner.core.config.ConfigEntry; -import org.dllearner.core.config.ConfigOption; -import org.dllearner.core.config.InvalidConfigOptionValueException; -import org.dllearner.core.config.StringSetConfigOption; import org.dllearner.core.dl.Concept; import org.dllearner.core.dl.Individual; import org.dllearner.utilities.Helper; @@ -55,47 +47,12 @@ /* * (non-Javadoc) * - * @see org.dllearner.core.Component#applyConfigEntry(org.dllearner.core.ConfigEntry) - */ - @Override - @SuppressWarnings( { "unchecked" }) - public <T> void applyConfigEntry(ConfigEntry<T> entry) throws InvalidConfigOptionValueException { - String name = entry.getOptionName(); - if (name.equals("positiveExamples")) - positiveExamples = CommonConfigMappings - .getIndividualSet((Set<String>) entry.getValue()); - } - - public static Collection<ConfigOption<?>> createConfigOptions() { - Collection<ConfigOption<?>> options = new LinkedList<ConfigOption<?>>(); - options.add(new StringSetConfigOption("positiveExamples", - "positive examples")); - return options; - } - - /* - * (non-Javadoc) - * * @see org.dllearner.core.Component#getName() */ public static String getName() { return "positive only definition learning problem"; } - - /** - * @return the positiveExamples - */ - public SortedSet<Individual> getPositiveExamples() { - return positiveExamples; - } - /** - * @return the pseudoNegatives - */ - public SortedSet<Individual> getPseudoNegatives() { - return pseudoNegatives; - } - /* (non-Javadoc) * @see org.dllearner.core.Component#init() */ Modified: trunk/src/dl-learner/org/dllearner/learningproblems/PosOnlyLP.java =================================================================== --- trunk/src/dl-learner/org/dllearner/learningproblems/PosOnlyLP.java 2008-02-05 15:59:48 UTC (rev 497) +++ trunk/src/dl-learner/org/dllearner/learningproblems/PosOnlyLP.java 2008-02-06 14:41:42 UTC (rev 498) @@ -19,17 +19,64 @@ */ package org.dllearner.learningproblems; +import java.util.Collection; +import java.util.LinkedList; +import java.util.Set; +import java.util.SortedSet; + import org.dllearner.core.LearningProblem; import org.dllearner.core.ReasoningService; +import org.dllearner.core.config.CommonConfigMappings; +import org.dllearner.core.config.ConfigEntry; +import org.dllearner.core.config.ConfigOption; +import org.dllearner.core.config.InvalidConfigOptionValueException; +import org.dllearner.core.config.StringSetConfigOption; +import org.dllearner.core.dl.Individual; /** + * A learning problem, where we learn from positive examples only. + * * @author Jens Lehmann * */ public abstract class PosOnlyLP extends LearningProblem { + protected SortedSet<Individual> positiveExamples; + protected SortedSet<Individual> pseudoNegatives; + public PosOnlyLP(ReasoningService reasoningService) { super(reasoningService); } + /* + * (non-Javadoc) + * + * @see org.dllearner.core.Component#applyConfigEntry(org.dllearner.core.ConfigEntry) + */ + @Override + @SuppressWarnings( { "unchecked" }) + public <T> void applyConfigEntry(ConfigEntry<T> entry) throws InvalidConfigOptionValueException { + String name = entry.getOptionName(); + if (name.equals("positiveExamples")) + positiveExamples = CommonConfigMappings + .getIndividualSet((Set<String>) entry.getValue()); + } + + public static Collection<ConfigOption<?>> createConfigOptions() { + Collection<ConfigOption<?>> options = new LinkedList<ConfigOption<?>>(); + options.add(new StringSetConfigOption("positiveExamples", + "positive examples")); + return options; + } + + public SortedSet<Individual> getPositiveExamples() { + return positiveExamples; + } + + /** + * @return the pseudoNegatives + */ + public SortedSet<Individual> getPseudoNegatives() { + return pseudoNegatives; + } } Modified: trunk/src/dl-learner/org/dllearner/utilities/CrossValidation.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/CrossValidation.java 2008-02-05 15:59:48 UTC (rev 497) +++ trunk/src/dl-learner/org/dllearner/utilities/CrossValidation.java 2008-02-06 14:41:42 UTC (rev 498) @@ -20,16 +20,30 @@ package org.dllearner.utilities; import java.io.File; +import java.text.DecimalFormat; +import java.util.HashSet; +import java.util.LinkedList; +import java.util.List; +import java.util.Set; +import java.util.TreeSet; import org.apache.log4j.ConsoleAppender; import org.apache.log4j.Level; import org.apache.log4j.Logger; import org.apache.log4j.SimpleLayout; import org.dllearner.cli.Start; +import org.dllearner.core.ComponentManager; import org.dllearner.core.LearningAlgorithm; +import org.dllearner.core.LearningProblem; +import org.dllearner.core.ReasoningService; +import org.dllearner.core.dl.Concept; +import org.dllearner.core.dl.Individual; +import org.dllearner.learningproblems.PosNegLP; +import org.dllearner.learningproblems.PosOnlyLP; /** - * Performs cross validation for the given problem. + * Performs cross validation for the given problem. Supports + * k-fold cross-validation and leave-one-out cross-validation. * * @author Jens Lehmann * @@ -41,9 +55,15 @@ public static void main(String[] args) { File file = new File(args[0]); + boolean leaveOneOut = false; int folds = 10; + + // use second argument as number of folds; if not specified + // leave one out cross validation is used if(args.length > 1) folds = Integer.parseInt(args[1]); + else + leaveOneOut = true; // create logger (a simple logger which outputs // its messages to the console) @@ -51,19 +71,181 @@ ConsoleAppender consoleAppender = new ConsoleAppender(layout); logger.removeAllAppenders(); logger.addAppender(consoleAppender); - logger.setLevel(Level.INFO); + logger.setLevel(Level.WARN); - new CrossValidation(file, folds); + new CrossValidation(file, folds, leaveOneOut); } - public CrossValidation(File file, int folds) { + public CrossValidation(File file, int folds, boolean leaveOneOut) { + + DecimalFormat df = new DecimalFormat(); + ComponentManager cm = ComponentManager.getInstance(); + + // the first read of the file is used to detect the examples + // and set up the splits correctly according to our validation + // method Start start = new Start(file); - LearningAlgorithm la = start.getLearningAlgorithm(); + LearningProblem lp = start.getLearningProblem(); + ReasoningService rs = start.getReasoningService(); + + // the training and test sets used later on + List<Set<Individual>> trainingSetsPos = new LinkedList<Set<Individual>>(); + List<Set<Individual>> trainingSetsNeg = new LinkedList<Set<Individual>>(); + List<Set<Individual>> testSetsPos = new LinkedList<Set<Individual>>(); + List<Set<Individual>> testSetsNeg = new LinkedList<Set<Individual>>(); + + if(lp instanceof PosNegLP) { + + Set<Individual> posExamples = ((PosNegLP)lp).getPositiveExamples(); + List<Individual> posExamplesList = new LinkedList<Individual>(posExamples); + Set<Individual> negExamples = ((PosNegLP)lp).getNegativeExamples(); + List<Individual> negExamplesList = new LinkedList<Individual>(negExamples); + + // sanity check whether nr. of folds makes sense for this benchmark + if(!leaveOneOut && (posExamples.size()<folds || negExamples.size()<folds)) { + System.out.println("The number of folds is higher than the number of " + + "positive/negative examples. This can result in empty test sets. Exiting."); + System.exit(0); + } + + if(leaveOneOut) { + // note that leave-one-out is not identical to k-fold with + // k = nr. of examples in the current implementation, because + // with n folds and n examples there is no guarantee that a fold + // is never empty (this is an implementation issue) + int nrOfExamples = posExamples.size() + negExamples.size(); + for(int i = 0; i < nrOfExamples; i++) { + // ... + } + System.out.println("Leave-one-out not supported yet."); + System.exit(1); + } else { + // calculating where to split the sets, ; note that we split + // positive and negative examples separately such that the + // distribution of positive and negative examples remains similar + // (note that there better but more complex ways to implement this, + // which guarantee that the sum of the elements of a fold for pos + // and neg differs by at most 1 - it can differ by 2 in our implementation, + // e.g. with 3 folds, 4 pos. examples, 4 neg. examples) + int[] splitsPos = calculateSplits(posExamples.size(),folds); + int[] splitsNeg = calculateSplits(negExamples.size(),folds); + + // calculating training and test sets + for(int i=0; i<folds; i++) { + Set<Individual> testPos = getTestingSet(posExamplesList, splitsPos, i); + Set<Individual> testNeg = getTestingSet(negExamplesList, splitsNeg, i); + testSetsPos.add(i, testPos); + testSetsNeg.add(i, testNeg); + trainingSetsPos.add(i, getTrainingSet(posExamples, testPos)); + trainingSetsNeg.add(i, getTrainingSet(negExamples, testNeg)); + } + + } + + } else if(lp instanceof PosOnlyLP) { + System.out.println("Cross validation for positive only learning not supported yet."); + System.exit(0); + // Set<Individual> posExamples = ((PosOnlyLP)lp).getPositiveExamples(); + // int[] splits = calculateSplits(posExamples.size(),folds); + } else { + System.out.println("Cross validation for learning problem " + lp + " not supported."); + System.exit(0); + } + + // statistical values + Stat runtime = new Stat(); + Stat accuracy = new Stat(); + Stat length = new Stat(); + + // run the algorithm for(int currFold=0; currFold<folds; currFold++) { + // we always perform a full initialisation to make sure that + // no objects are reused + start = new Start(file); + lp = start.getLearningProblem(); + Set<String> pos = Datastructures.individualSetToStringSet(trainingSetsPos.get(currFold)); + Set<String> neg = Datastructures.individualSetToStringSet(trainingSetsNeg.get(currFold)); + cm.applyConfigEntry(lp, "positiveExamples", pos); + cm.applyConfigEntry(lp, "negativeExamples", neg); + + LearningAlgorithm la = start.getLearningAlgorithm(); + long algorithmStartTime = System.nanoTime(); la.start(); - } + long algorithmDuration = System.nanoTime() - algorithmStartTime; + runtime.addNumber(algorithmDuration/(double)1000000000); + + Concept concept = la.getBestSolution(); + int correctExamples = getCorrectPosClassified(rs, concept, testSetsPos.get(currFold)) + + getCorrectNegClassified(rs, concept, testSetsNeg.get(currFold)); + double currAccuracy = 100*((double)correctExamples/(testSetsPos.get(currFold).size()+ + testSetsNeg.get(currFold).size())); + accuracy.addNumber(currAccuracy); + + length.addNumber(concept.getLength()); + + System.out.println("fold " + currFold + " (" + file + "):"); + System.out.println(" concept: " + concept); + System.out.println(" accuracy: " + df.format(currAccuracy) + "%"); + System.out.println(" length: " + df.format(concept.getLength())); + System.out.println(" runtime: " + df.format(algorithmDuration/(double)1000000000) + "s"); + } + + System.out.println(); + System.out.println("Finished " + folds + "-folds cross-validation on " + file + "."); + System.out.println("runtime: " + statOutput(df, runtime, "s")); + System.out.println("length: " + statOutput(df, length, "")); + System.out.println("accuracy: " + statOutput(df, accuracy, "%")); + } + private int getCorrectPosClassified(ReasoningService rs, Concept concept, Set<Individual> posClassified) { + return rs.instanceCheck(concept, posClassified).size(); + } + + private int getCorrectNegClassified(ReasoningService rs, Concept concept, Set<Individual> negClassified) { + return negClassified.size() - rs.instanceCheck(concept, negClassified).size(); + } + + private Set<Individual> getTestingSet(List<Individual> examples, int[] splits, int fold) { + int fromIndex; + // we either start from 0 or after the last fold ended + if(fold == 0) + fromIndex = 0; + else + fromIndex = splits[fold-1]; + // the split corresponds to the ends of the folds + int toIndex = splits[fold]; + + Set<Individual> testingSet = new HashSet<Individual>(); + // +1 because 2nd element is exclusive in subList method + testingSet.addAll(examples.subList(fromIndex, toIndex)); + return testingSet; + } + + private Set<Individual> getTrainingSet(Set<Individual> examples, Set<Individual> testingSet) { + return Helper.difference(examples, testingSet); + } + + // takes nr. of examples and the nr. of folds for this examples; + // returns an array which says where each fold ends, i.e. + // splits[i] is the index of the last element of fold i in the examples + private int[] calculateSplits(int nrOfExamples, int folds) { + int[] splits = new int[folds]; + for(int i=1; i<=folds; i++) { + // we always round up to the next integer + splits[i-1] = (int)Math.ceil(i*nrOfExamples/(double)folds); + } + return splits; + } + + private String statOutput(DecimalFormat df, Stat stat, String unit) { + String str = "av. " + df.format(stat.getMean()) + unit; + str += " (deviation " + df.format(stat.getStandardDeviation()) + unit + "; "; + str += "min " + df.format(stat.getMin()) + unit + "; "; + str += "max " + df.format(stat.getMax()) + unit + ")"; + return str; + } + } Modified: trunk/src/dl-learner/org/dllearner/utilities/Datastructures.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/Datastructures.java 2008-02-05 15:59:48 UTC (rev 497) +++ trunk/src/dl-learner/org/dllearner/utilities/Datastructures.java 2008-02-06 14:41:42 UTC (rev 498) @@ -22,6 +22,7 @@ import java.util.Arrays; import java.util.Iterator; import java.util.Set; +import java.util.TreeSet; import org.dllearner.core.dl.AtomicConcept; import org.dllearner.core.dl.AtomicRole; @@ -99,4 +100,12 @@ Arrays.sort(ret); return ret; } + + public static Set<String> individualSetToStringSet(Set<Individual> individuals) { + Set<String> ret = new TreeSet<String>(); + for(Individual ind : individuals) { + ret.add(ind.toString()); + } + return ret; + } } Modified: trunk/src/dl-learner/org/dllearner/utilities/Stat.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/Stat.java 2008-02-05 15:59:48 UTC (rev 497) +++ trunk/src/dl-learner/org/dllearner/utilities/Stat.java 2008-02-06 14:41:42 UTC (rev 498) @@ -32,6 +32,8 @@ private int count = 0; private double sum = 0; private double squareSum = 0; + private double min = Double.MAX_VALUE; + private double max = Double.MIN_NORMAL; /** * Add a number to this object. @@ -43,6 +45,10 @@ count++; sum += number; squareSum += number * number; + if(number<min) + min=number; + if(number>max) + max=number; } /** @@ -94,4 +100,18 @@ return root; } + /** + * @return the min + */ + public double getMin() { + return min; + } + + /** + * @return the max + */ + public double getMax() { + return max; + } + } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jen...@us...> - 2008-02-08 08:57:48
|
Revision: 526 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=526&view=rev Author: jenslehmann Date: 2008-02-08 00:57:28 -0800 (Fri, 08 Feb 2008) Log Message: ----------- added classes for supporting Prolog syntax (originally written by Sebastian Bader) Added Paths: ----------- trunk/src/dl-learner/org/dllearner/prolog/ trunk/src/dl-learner/org/dllearner/prolog/ArrayListSet.java trunk/src/dl-learner/org/dllearner/prolog/Atom.java trunk/src/dl-learner/org/dllearner/prolog/Body.java trunk/src/dl-learner/org/dllearner/prolog/Clause.java trunk/src/dl-learner/org/dllearner/prolog/Constant.java trunk/src/dl-learner/org/dllearner/prolog/Function.java trunk/src/dl-learner/org/dllearner/prolog/FunctionDefinition.java trunk/src/dl-learner/org/dllearner/prolog/List.java trunk/src/dl-learner/org/dllearner/prolog/Literal.java trunk/src/dl-learner/org/dllearner/prolog/Number.java trunk/src/dl-learner/org/dllearner/prolog/PredicateDefinition.java trunk/src/dl-learner/org/dllearner/prolog/Program.java trunk/src/dl-learner/org/dllearner/prolog/PrologConstant.java trunk/src/dl-learner/org/dllearner/prolog/StringConstant.java trunk/src/dl-learner/org/dllearner/prolog/Term.java trunk/src/dl-learner/org/dllearner/prolog/Variable.java Added: trunk/src/dl-learner/org/dllearner/prolog/ArrayListSet.java =================================================================== --- trunk/src/dl-learner/org/dllearner/prolog/ArrayListSet.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/prolog/ArrayListSet.java 2008-02-08 08:57:28 UTC (rev 526) @@ -0,0 +1,69 @@ +/** + * Copyright (C) 2007-2008, Jens Lehmann + * + * This file is part of DL-Learner. + * + * DL-Learner is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * DL-Learner is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package org.dllearner.prolog; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Iterator; +import java.util.Set; + +/** + * + * @author Sebastian Bader + * + * @param <T> + */ +public class ArrayListSet<T> extends ArrayList<T> implements Set<T> { + + private static final long serialVersionUID = 1530739499015312204L; + + public ArrayListSet() { + this(10); + } + + public ArrayListSet(int initialCapacity) { + super(initialCapacity); + } + + public ArrayListSet(Collection<T> c) { + this(c.size()); + addAll(c); + } + + @Override + public boolean add(T o) { + if (contains(o)) + return false; + return super.add(o); + } + + @Override + public boolean addAll(Collection<? extends T> c) { + Iterator<? extends T> iter = c.iterator(); + boolean ret = false; + while (iter.hasNext()) { + if (add(iter.next())) { + ret = true; + } + } + return ret; + } + +} Added: trunk/src/dl-learner/org/dllearner/prolog/Atom.java =================================================================== --- trunk/src/dl-learner/org/dllearner/prolog/Atom.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/prolog/Atom.java 2008-02-08 08:57:28 UTC (rev 526) @@ -0,0 +1,131 @@ +/** + * Copyright (C) 2007-2008, Jens Lehmann + * + * This file is part of DL-Learner. + * + * DL-Learner is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * DL-Learner is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package org.dllearner.prolog; + +import java.util.ArrayList; + +/** + * + * @author Sebastian Bader + * + */ +public class Atom { + String name; + ArrayList<Term> arguments; + + public Atom(String name, ArrayList<Term> arguments) { + super(); + this.name = name; + this.arguments = arguments; + } + + public ArrayList<Term> getArguments() { + return arguments; + } + + public String getName() { + return name; + } + + public boolean isGround() { + for (int i = 0; i < arguments.size(); i++) { + if (!getArgument(i).isGround()) + return false; + } + return true; + } + + public Term getArgument(int index) { + return arguments.get(index); + } + + public int getArity() { + return arguments.size(); + } + + /** + * + * @param variable + * Substitution variable. + * @param term + * A term. + * @return Returns a new instance of this term, where the variable is + * replaced by the term. + */ + public Atom getInstance(Variable variable, Term term) { + ArrayList<Term> newArgs = new ArrayList<Term>(arguments.size()); + for (int i = 0; i < arguments.size(); i++) { + Term argument = (Term) arguments.get(i); + newArgs.add(argument.getInstance(variable, term)); + } + return new Atom(name, newArgs); + } + + @Override + public String toString() { + StringBuffer ret = new StringBuffer("A[" + name + "/" + getArity() + "("); + for (int i = 0; i < arguments.size(); i++) { + ret.append(arguments.get(i).toString()); + if (i + 1 < arguments.size()) + ret.append(", "); + } + ret.append(")]"); + return ret.toString(); + } + + public String toPLString() { + StringBuffer ret = new StringBuffer(name + "("); + for (int i = 0; i < arguments.size(); i++) { + ret.append(((Term) arguments.get(i)).toPLString()); + if (i + 1 < arguments.size()) + ret.append(", "); + } + ret.append(")"); + return ret.toString(); + } + + @Override + public boolean equals(Object obj) { + if (obj == null) + return false; + + Atom a; + + try { + a = (Atom) obj; + } catch (ClassCastException cce) { + return false; + } + + if (!name.equals(a.name)) + return false; + + if (arguments == null) + return a.arguments == null; + else + return arguments.equals(a.arguments); + } + + @Override + public int hashCode() { + return name.hashCode() * (getArity() + 1); + } + +} Added: trunk/src/dl-learner/org/dllearner/prolog/Body.java =================================================================== --- trunk/src/dl-learner/org/dllearner/prolog/Body.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/prolog/Body.java 2008-02-08 08:57:28 UTC (rev 526) @@ -0,0 +1,93 @@ +/** + * Copyright (C) 2007-2008, Jens Lehmann + * + * This file is part of DL-Learner. + * + * DL-Learner is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * DL-Learner is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package org.dllearner.prolog; + +import java.util.ArrayList; + +/** + * + * @author Sebastian Bader + * + */ +public class Body { + private ArrayList<Literal> literals; + + public Body() { + literals = new ArrayList<Literal>(); + } + + public void addLiteral(Literal literal) { + literals.add(literal); + } + + public ArrayList<Literal> getLiterals() { + return literals; + } + + public boolean isEmpty() { + return literals.isEmpty(); + } + + public boolean isGround() { + for (int i = 0; i < literals.size(); i++) { + if (!((Literal) literals.get(i)).isGround()) + return false; + } + + return true; + } + + public Body getInstance(Variable variable, Term term) { + Body newbody = new Body(); + + for (int i = 0; i < literals.size(); i++) { + Literal literal = (Literal) literals.get(i); + newbody.addLiteral(literal.getInstance(variable, term)); + } + + return newbody; + } + + @Override + public String toString() { + StringBuffer ret = new StringBuffer(); + + for (int i = 0; i < literals.size(); i++) { + ret.append(literals.get(i)); + if (i + 1 < literals.size()) + ret.append(", "); + } + + return ret.toString(); + } + + public String toPLString() { + StringBuffer ret = new StringBuffer(); + + for (int i = 0; i < literals.size(); i++) { + ret.append(((Literal) literals.get(i)).toPLString()); + if (i + 1 < literals.size()) + ret.append(", "); + } + + return ret.toString(); + } + +} Added: trunk/src/dl-learner/org/dllearner/prolog/Clause.java =================================================================== --- trunk/src/dl-learner/org/dllearner/prolog/Clause.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/prolog/Clause.java 2008-02-08 08:57:28 UTC (rev 526) @@ -0,0 +1,85 @@ +/** + * Copyright (C) 2007-2008, Jens Lehmann + * + * This file is part of DL-Learner. + * + * DL-Learner is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * DL-Learner is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package org.dllearner.prolog; + + + +/** + * + * @author Sebastian Bader + * + */ +public class Clause { + private Atom head; + private Body body; + + public Clause(Atom head, Body body) { + this.head = head; + this.body = body; + if (body == null) + this.body = new Body(); + } + + @Override + public String toString() { + if (body.isEmpty()) + return head+"."; + return head + " :- " + body +"."; + } + + public String toPLString() { + if (body.isEmpty()) + return head.toPLString()+"."; + return head.toPLString() + " :- " + body.toPLString() +"."; + } + + public boolean isGround() { + if (!head.isGround()) + return false; + + return body.isGround(); + } + + public Body getBody() { + return body; + } + + public Atom getHead() { + return head; + } + + /** + * + * @param variable + * Substitution variable. + * @param term + * A term. + * @return Returns a new instance of this term, where the variable is + * replaced by the term. + */ + public Clause getInstance(Variable variable, Term term) { + Atom newhead = head.getInstance(variable, term); + Body newbody = body.getInstance(variable, term); + + return new Clause(newhead, newbody); + } + +} + Added: trunk/src/dl-learner/org/dllearner/prolog/Constant.java =================================================================== --- trunk/src/dl-learner/org/dllearner/prolog/Constant.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/prolog/Constant.java 2008-02-08 08:57:28 UTC (rev 526) @@ -0,0 +1,28 @@ +/** + * Copyright (C) 2007-2008, Jens Lehmann + * + * This file is part of DL-Learner. + * + * DL-Learner is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * DL-Learner is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package org.dllearner.prolog; + +/** + * + * @author Sebastian Bader + * + */ +public abstract class Constant extends Term { +} \ No newline at end of file Added: trunk/src/dl-learner/org/dllearner/prolog/Function.java =================================================================== --- trunk/src/dl-learner/org/dllearner/prolog/Function.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/prolog/Function.java 2008-02-08 08:57:28 UTC (rev 526) @@ -0,0 +1,189 @@ +/** + * Copyright (C) 2007-2008, Jens Lehmann + * + * This file is part of DL-Learner. + * + * DL-Learner is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * DL-Learner is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package org.dllearner.prolog; + +import java.util.ArrayList; + +/** + * + * @author Sebastian Bader + * + */ +public class Function extends Term { + + private String name; + private ArrayList<Term> arguments; + private int type; + + private Function(String name, int type) { + this.name = name; + this.type = type; + } + + private Function(String name, int type, ArrayList<Term> arguments) { + this.name = name; + this.type = type; + this.arguments = arguments; + } + + public Function(Function source) { + this(source.name, source.type); + arguments = new ArrayList<Term>(); + for (int i = 0; i < source.getArity(); i++) + arguments.add((Term) (source.getArgument(i)).clone()); + } + + public Function(String name, ArrayList<Term> arguments) { + this(name, FunctionDefinition.TYPE_USUAL); + this.arguments = arguments; + } + + public Function(String name, Term term2) { + this(name, FunctionDefinition.TYPE_PREFIX); + this.arguments = new ArrayList<Term>(1); + arguments.add(term2); + } + + public Function(Term term1, String name) { + this(name, FunctionDefinition.TYPE_POSTFIX); + this.arguments = new ArrayList<Term>(1); + arguments.add(term1); + } + + public Function(Term term1, String name, Term term2) { + this(name, FunctionDefinition.TYPE_INFIX); + this.arguments = new ArrayList<Term>(2); + arguments.add(term1); + arguments.add(term2); + } + + public Function(FunctionDefinition functionDefinition, ArrayList<Term> arguments) { + this(functionDefinition.getName(), functionDefinition.getType(), arguments); + } + + @Override + public Object clone() { + return new Function(this); + } + + public String getName() { + return name; + } + + public int getArity() { + return arguments.size(); + } + + public int getType() { + return type; + } + + public Term getArgument(int index) { + return (Term) arguments.get(index); + } + + public void setArgument(int index, Term term) { + arguments.set(index, term); + } + + @Override + public boolean isGround() { + for (int i = 0; i < arguments.size(); i++) { + if (!getArgument(i).isGround()) + return false; + } + return true; + } + + @Override + public String toString() { + StringBuffer ret = new StringBuffer("F" + FunctionDefinition.TYPE_NAMES[type] + "[" + name + + "/" + getArity() + "("); + for (int i = 0; i < arguments.size(); i++) { + ret.append(arguments.get(i).toString()); + if (i + 1 < arguments.size()) + ret.append(", "); + } + ret.append(")]"); + return ret.toString(); + } + + @Override + public String toPLString() { + if ((type == FunctionDefinition.TYPE_PREFIX) && (getArity() == 1)) { + return name + ((Term) arguments.get(0)).toPLString(); + } else if ((type == FunctionDefinition.TYPE_POSTFIX) && (getArity() == 1)) { + return ((Term) arguments.get(0)).toPLString() + name; + } else if ((type == FunctionDefinition.TYPE_POSTFIX) && (getArity() == 2)) { + return ((Term) arguments.get(0)).toPLString() + name + + ((Term) arguments.get(1)).toPLString(); + } else { + StringBuffer ret = new StringBuffer(name + "("); + for (int i = 0; i < arguments.size(); i++) { + ret.append(((Term) arguments.get(i)).toPLString()); + if (i + 1 < arguments.size()) + ret.append(", "); + } + ret.append(")"); + return ret.toString(); + } + } + + @Override + public Term getInstance(Variable variable, Term term) { + ArrayList<Term> newArgs = new ArrayList<Term>(arguments.size()); + for (int i = 0; i < arguments.size(); i++) { + Term argument = (Term) arguments.get(i); + newArgs.add(argument.getInstance(variable, term)); + } + return new Function(name, this.type, newArgs); + } + + @Override + public boolean equals(Object obj) { + + if (obj == null) + return false; + + Function f; + + try { + f = (Function) obj; + } catch (ClassCastException cce) { + return false; + } + + if (!name.equals(f.name)) + return false; + if (type != f.type) + return false; + + if (arguments == null) + return f.arguments == null; + else + return arguments.equals(f.arguments); + } + + @Override + public int hashCode() { + return name.hashCode() * (type + 1); + } + +} \ No newline at end of file Added: trunk/src/dl-learner/org/dllearner/prolog/FunctionDefinition.java =================================================================== --- trunk/src/dl-learner/org/dllearner/prolog/FunctionDefinition.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/prolog/FunctionDefinition.java 2008-02-08 08:57:28 UTC (rev 526) @@ -0,0 +1,86 @@ +/** + * Copyright (C) 2007-2008, Jens Lehmann + * + * This file is part of DL-Learner. + * + * DL-Learner is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * DL-Learner is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package org.dllearner.prolog; + +/** + * + * @author Sebastian Bader + * + */ +public class FunctionDefinition { + public static int TYPE_USUAL = 0; + public static int TYPE_INFIX = 1; + public static int TYPE_POSTFIX = 2; + public static int TYPE_PREFIX = 3; + + public static String[] TYPE_NAMES = new String[]{"usual", "infix", "postfix", "prefix"}; + + private String name; + private int arity; + private int type; + + public FunctionDefinition(String name, int arity, int type) { + super(); + this.name = name; + this.arity = arity; + } + + public FunctionDefinition(Function function) { + this(function.getName(), function.getArity(), function.getType()); + } + + public int getArity() { + return arity; + } + public String getName() { + return name; + } + public int getType() { + return type; + } + + @Override + public int hashCode() { + return name.hashCode() * (arity + 1); + } + + @Override + public boolean equals(Object obj) { + if (obj == null) + return false; + try { + FunctionDefinition fd = (FunctionDefinition) obj; + if (fd.getArity() != getArity()) + return false; + if (!fd.getName().equals(getName())) + return false; + if (fd.getType() != getType()) + return false; + } catch (ClassCastException cce) { + return false; + } + return true; + } + + @Override + public String toString() { + return name+TYPE_NAMES[type]+"/"+arity; + } +} Added: trunk/src/dl-learner/org/dllearner/prolog/List.java =================================================================== --- trunk/src/dl-learner/org/dllearner/prolog/List.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/prolog/List.java 2008-02-08 08:57:28 UTC (rev 526) @@ -0,0 +1,122 @@ +/** + * Copyright (C) 2007-2008, Jens Lehmann + * + * This file is part of DL-Learner. + * + * DL-Learner is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * DL-Learner is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package org.dllearner.prolog; + +import java.util.ArrayList; + + +/** + * + * @author Sebastian Bader + * + */ +public class List extends Term { + private Term head; + private List tail; + + public List() { + head = null; + tail = null; + } + + public List(Term head, List tail) { + this.head = head; + this.tail = tail; + if (tail == null) + this.tail = new List(); + } + + public static List compose(ArrayList<Term> content) { + if (content.isEmpty()) { + return new List(); + } else { + Term head = (Term) content.remove(0); + List body = compose(content); + return new List(head, body); + } + } + + @Override + public boolean isGround() { + if (!head.isGround()) + return false; + return tail.isGround(); + } + + + @Override + public String toString() { + return "L["+((head != null)?head.toString()+"|"+tail:"")+"]"; + } + + @Override + public String toPLString() { + return "["+((head != null)?head.toPLString()+"|"+tail.toPLString():"")+"]"; + } + + @Override + public Term getInstance(Variable variable, Term term) { + if (head != null) { + Term newhead = head.getInstance(variable, term); + List newtail = (List) tail.getInstance(variable, term); + return new List(newhead, newtail); + } + return new List(null, null); + } + + @Override + public boolean equals(Object obj) { + if (obj == null) + return false; + + List list; + try { + list = (List) obj; + } catch (ClassCastException cce) { + return false; + } + + if (head == null) { + if (list.head != null) + return false; + } else { + if (!head.equals(list.head)) + return false; + } + + if (tail == null) { + return (list.tail == null); + } else { + return tail.equals(list.tail); + } + } + + @Override + public int hashCode() { + if (head == null) + return 0; + return head.hashCode(); + } + + @Override + public Object clone() { + return new List((Term) head.clone(), (List) tail.clone()); + } +} \ No newline at end of file Added: trunk/src/dl-learner/org/dllearner/prolog/Literal.java =================================================================== --- trunk/src/dl-learner/org/dllearner/prolog/Literal.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/prolog/Literal.java 2008-02-08 08:57:28 UTC (rev 526) @@ -0,0 +1,86 @@ +/** + * Copyright (C) 2007-2008, Jens Lehmann + * + * This file is part of DL-Learner. + * + * DL-Learner is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * DL-Learner is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package org.dllearner.prolog; + + + +/** + * + * @author Sebastian Bader + * + */ +public class Literal { + private Atom atom; + private boolean positive; + + public Literal(Atom atom, boolean state) { + this.atom = atom; + this.positive = state; + } + + public Atom getAtom() { + return atom; + } + + public boolean isPositive() { + return positive; + } + + public boolean isGround() { + return atom.isGround(); + } + + public Literal getInstance(Variable variable, Term term) { + return new Literal(atom.getInstance(variable, term), positive); + } + + @Override + public String toString() { + return (positive?"+":"-")+atom.toString(); + } + + public String toPLString() { + return (positive?"":"not ")+atom.toPLString(); + } + + @Override + public boolean equals(Object obj) { + if (obj == null) + return false; + + Literal l; + + try { + l = (Literal) obj; + } catch (ClassCastException cce) { + return false; + } + + if (positive != l.positive) + return false; + + return atom.equals(l.atom); + } + + @Override + public int hashCode() { + return atom.hashCode() * (positive?1:2); + } +} Added: trunk/src/dl-learner/org/dllearner/prolog/Number.java =================================================================== --- trunk/src/dl-learner/org/dllearner/prolog/Number.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/prolog/Number.java 2008-02-08 08:57:28 UTC (rev 526) @@ -0,0 +1,92 @@ +/** + * Copyright (C) 2007-2008, Jens Lehmann + * + * This file is part of DL-Learner. + * + * DL-Learner is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * DL-Learner is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package org.dllearner.prolog; + + +/** + * + * @author Sebastian Bader + * + */ +public class Number extends Constant { + private double value; + + public Number(String src) { + value = Double.parseDouble(src); + } + + public Number(double value) { + this.value = value; + } + + public int getIntValue() { + return (int) value; + } + public double getDoubleValue() { + return value; + } + + @Override + public boolean isGround() { + return true; + } + + @Override + public String toString() { + return "C["+toPLString()+"]"; + } + @Override + public String toPLString() { + if (((double)((int)value)) == value) + return ""+(int) value; + return ""+value; + } + + + @Override + public Term getInstance(Variable variable, Term term) { + return new Number(value); + } + + @Override + public int hashCode() { + return (int) value; + } + + @Override + public boolean equals(Object obj) { + if (obj == null) + return false; + + Number number; + try { + number = (Number) obj; + } catch (ClassCastException cce) { + return false; + } + + return value == number.value; + } + + @Override + public Object clone() { + return new Number(value); + } +} \ No newline at end of file Added: trunk/src/dl-learner/org/dllearner/prolog/PredicateDefinition.java =================================================================== --- trunk/src/dl-learner/org/dllearner/prolog/PredicateDefinition.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/prolog/PredicateDefinition.java 2008-02-08 08:57:28 UTC (rev 526) @@ -0,0 +1,75 @@ +/** + * Copyright (C) 2007-2008, Jens Lehmann + * + * This file is part of DL-Learner. + * + * DL-Learner is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * DL-Learner is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package org.dllearner.prolog; + +/** + * + * @author Sebastian Bader + * + */ +public class PredicateDefinition { + private String name; + private int arity; + + public PredicateDefinition(String name, int arity) { + super(); + this.name = name; + this.arity = arity; + } + + public PredicateDefinition(Atom atom) { + this(atom.getName(), atom.getArity()); + } + + public int getArity() { + return arity; + } + + public String getName() { + return name; + } + + @Override + public int hashCode() { + return name.hashCode() * (arity + 1); + } + + @Override + public boolean equals(Object obj) { + if (obj == null) + return false; + try { + PredicateDefinition pd = (PredicateDefinition) obj; + if (pd.getArity() != getArity()) + return false; + if (!pd.getName().equals(getName())) + return false; + } catch (ClassCastException cce) { + return false; + } + return true; + } + + @Override + public String toString() { + return name + "/" + arity; + } + +} Added: trunk/src/dl-learner/org/dllearner/prolog/Program.java =================================================================== --- trunk/src/dl-learner/org/dllearner/prolog/Program.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/prolog/Program.java 2008-02-08 08:57:28 UTC (rev 526) @@ -0,0 +1,79 @@ +/** + * Copyright (C) 2007-2008, Jens Lehmann + * + * This file is part of DL-Learner. + * + * DL-Learner is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * DL-Learner is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package org.dllearner.prolog; + +import java.util.ArrayList; + +/** + * + * @author Sebastian Bader + * + */ +public class Program { + private ArrayList<Clause> clauses; + + public Program() { + clauses = new ArrayList<Clause>(); + } + + public void addClause(Clause clause) { + clauses.add(clause); + } + + public ArrayList<Clause> getClauses() { + return clauses; + } + + public boolean isGround() { + for (int c = 0; c < clauses.size(); c++) { + Clause clause = (Clause) clauses.get(c); + if (!clause.isGround()) + return false; + } + + return true; + } + + @Override + public String toString() { + StringBuffer ret = new StringBuffer(); + + for (int i = 0; i < clauses.size(); i++) { + ret.append(clauses.get(i)); + if (i + 1 < clauses.size()) + ret.append(" "); + } + + return ret.toString(); + } + + public String toPLString() { + StringBuffer ret = new StringBuffer(); + + for (int i = 0; i < clauses.size(); i++) { + ret.append(((Clause) clauses.get(i)).toPLString()); + if (i + 1 < clauses.size()) + ret.append("\n"); + } + + return ret.toString(); + } + +} Added: trunk/src/dl-learner/org/dllearner/prolog/PrologConstant.java =================================================================== --- trunk/src/dl-learner/org/dllearner/prolog/PrologConstant.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/prolog/PrologConstant.java 2008-02-08 08:57:28 UTC (rev 526) @@ -0,0 +1,76 @@ +/** + * Copyright (C) 2007-2008, Jens Lehmann + * + * This file is part of DL-Learner. + * + * DL-Learner is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * DL-Learner is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package org.dllearner.prolog; + + +/** + * + * @author Sebastian Bader + * + */ +public class PrologConstant extends Constant { + private String name; + + public PrologConstant(String name) { + this.name = name; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + @Override + public boolean isGround() { + return true; + } + + @Override + public String toString() { + return "C["+name+"]"; + } + @Override + public String toPLString() { + return name; + } + + @Override + public Term getInstance(Variable variable, Term term) { + return new PrologConstant(name); + } + + @Override + public boolean equals(Object obj) { + return name.equals(obj); + } + + @Override + public int hashCode() { + return name.hashCode(); + } + + @Override + public Object clone() { + return new PrologConstant(name); + } +} \ No newline at end of file Added: trunk/src/dl-learner/org/dllearner/prolog/StringConstant.java =================================================================== --- trunk/src/dl-learner/org/dllearner/prolog/StringConstant.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/prolog/StringConstant.java 2008-02-08 08:57:28 UTC (rev 526) @@ -0,0 +1,72 @@ +/** + * Copyright (C) 2007-2008, Jens Lehmann + * + * This file is part of DL-Learner. + * + * DL-Learner is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * DL-Learner is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package org.dllearner.prolog; + +/** + * + * @author Sebastian Bader + * + */ +public class StringConstant extends Constant { + private String string; + + public StringConstant(String src) { + string = src; + } + + public String getString() { + return string; + } + + @Override + public boolean isGround() { + return true; + } + + @Override + public String toString() { + return "C[" + string + "]"; + } + + @Override + public String toPLString() { + return string; + } + + @Override + public Term getInstance(Variable variable, Term term) { + return new StringConstant(string); + } + + @Override + public boolean equals(Object obj) { + return string.equals(obj); + } + + @Override + public int hashCode() { + return string.hashCode(); + } + + @Override + public Object clone() { + return new StringConstant(string); + } +} \ No newline at end of file Added: trunk/src/dl-learner/org/dllearner/prolog/Term.java =================================================================== --- trunk/src/dl-learner/org/dllearner/prolog/Term.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/prolog/Term.java 2008-02-08 08:57:28 UTC (rev 526) @@ -0,0 +1,60 @@ +/** + * Copyright (C) 2007-2008, Jens Lehmann + * + * This file is part of DL-Learner. + * + * DL-Learner is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * DL-Learner is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package org.dllearner.prolog; + +/** + * + * @author Sebastian Bader + * + */ +public abstract class Term implements Cloneable { + + /** + * + * @return Returns true iff this term is ground + */ + public abstract boolean isGround(); + + /** + * + * @param variable + * Substitution variable. + * @param term + * A term. + * @return Returns a new instance of this term, where the variable is + * replaced by the term. + */ + public abstract Term getInstance(Variable variable, Term term); + + @Override + public abstract boolean equals(Object obj); + + @Override + public abstract int hashCode(); + + @Override + public abstract Object clone(); + + @Override + public abstract String toString(); + + public abstract String toPLString(); + +} Added: trunk/src/dl-learner/org/dllearner/prolog/Variable.java =================================================================== --- trunk/src/dl-learner/org/dllearner/prolog/Variable.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/prolog/Variable.java 2008-02-08 08:57:28 UTC (rev 526) @@ -0,0 +1,89 @@ +/** + * Copyright (C) 2007-2008, Jens Lehmann + * + * This file is part of DL-Learner. + * + * DL-Learner is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * DL-Learner is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package org.dllearner.prolog; + +/** + * + * @author Sebastian Bader + * + */ +public class Variable extends Term { + private String name; + + public Variable(String name) { + this.name = name; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + @Override + public boolean isGround() { + return false; + } + + @Override + public String toString() { + return "V[" + name + "]"; + } + + @Override + public String toPLString() { + return name; + } + + @Override + public Term getInstance(Variable variable, Term term) { + if (this.equals(variable)) { + return term; + } + return this; + } + + @Override + public boolean equals(Object obj) { + if (obj == null) + return false; + + Variable v; + try { + v = (Variable) obj; + } catch (ClassCastException cce) { + return false; + } + + return name.equals(v.name); + } + + @Override + public int hashCode() { + return name.hashCode(); + } + + @Override + public Object clone() { + return new Variable(name); + } +} \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jen...@us...> - 2008-02-08 09:04:02
|
Revision: 528 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=528&view=rev Author: jenslehmann Date: 2008-02-08 01:04:00 -0800 (Fri, 08 Feb 2008) Log Message: ----------- wrote Prolog parser test (found problems with negative numbers) Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/utilities/Files.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/examples/Carcinogenesis.java Added: trunk/src/dl-learner/org/dllearner/examples/Carcinogenesis.java =================================================================== --- trunk/src/dl-learner/org/dllearner/examples/Carcinogenesis.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/examples/Carcinogenesis.java 2008-02-08 09:04:00 UTC (rev 528) @@ -0,0 +1,62 @@ +/** + * Copyright (C) 2007-2008, Jens Lehmann + * + * This file is part of DL-Learner. + * + * DL-Learner is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * DL-Learner is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package org.dllearner.examples; + +import java.io.File; +import java.io.FileNotFoundException; +import java.io.IOException; + +import org.dllearner.parser.ParseException; +import org.dllearner.parser.PrologParser; +import org.dllearner.utilities.Files; + +/** + * This class maps the carcinogenesis Prolog files to an OWL file. In a first + * step, a Prolog parser is used to read all files. The main step involves + * applying mapping Prolog clauses to OWL axioms through domain specific mapping + * rules. + * + * @author Jens Lehmann + * + */ +public class Carcinogenesis { + + /** + * @param args + */ + public static void main(String[] args) { + + try { + String prologFile = "examples/carcinogenesis/prolog/atoms.pl"; + File file = new File(prologFile); + String content = Files.readFile(file); + PrologParser pp = new PrologParser(); + pp.parseProgram(content); + } catch (ParseException e) { + e.printStackTrace(); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + + } + +} Modified: trunk/src/dl-learner/org/dllearner/utilities/Files.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/Files.java 2008-02-08 08:59:26 UTC (rev 527) +++ trunk/src/dl-learner/org/dllearner/utilities/Files.java 2008-02-08 09:04:00 UTC (rev 528) @@ -19,10 +19,14 @@ */ package org.dllearner.utilities; +import java.io.BufferedReader; +import java.io.DataInputStream; import java.io.File; +import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; +import java.io.InputStreamReader; /** * @author Jens Lehmann @@ -31,6 +35,26 @@ public class Files { /** + * Reads in a file. + * + * @param file + * The file to read. + * @return Content of the file. + */ + public static String readFile(File file) throws FileNotFoundException, IOException { + FileInputStream fstream = new FileInputStream(file); + DataInputStream in = new DataInputStream(fstream); + BufferedReader br = new BufferedReader(new InputStreamReader(in)); + String line; + StringBuffer content = new StringBuffer(); + while ((line = br.readLine()) != null) { + content.append(line); + } + in.close(); + return content.toString(); + } + + /** * Creates a new file with the given content or replaces the content of a * file. * @@ -74,7 +98,7 @@ e.printStackTrace(); } } - + public static void clearFile(File file) { createFile(file, ""); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jen...@us...> - 2008-02-08 10:25:27
|
Revision: 529 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=529&view=rev Author: jenslehmann Date: 2008-02-08 02:25:23 -0800 (Fri, 08 Feb 2008) Log Message: ----------- added support for negative and decimal numbers Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/examples/Carcinogenesis.java trunk/src/dl-learner/org/dllearner/parser/PrologParser.java trunk/src/dl-learner/org/dllearner/parser/PrologParserConstants.java trunk/src/dl-learner/org/dllearner/parser/PrologParserTokenManager.java trunk/src/dl-learner/org/dllearner/parser/prolog.jj Modified: trunk/src/dl-learner/org/dllearner/examples/Carcinogenesis.java =================================================================== --- trunk/src/dl-learner/org/dllearner/examples/Carcinogenesis.java 2008-02-08 09:04:00 UTC (rev 528) +++ trunk/src/dl-learner/org/dllearner/examples/Carcinogenesis.java 2008-02-08 10:25:23 UTC (rev 529) @@ -25,6 +25,7 @@ import org.dllearner.parser.ParseException; import org.dllearner.parser.PrologParser; +import org.dllearner.prolog.Program; import org.dllearner.utilities.Files; /** @@ -48,7 +49,8 @@ File file = new File(prologFile); String content = Files.readFile(file); PrologParser pp = new PrologParser(); - pp.parseProgram(content); + Program program = pp.parseProgram(content); + System.out.println(program.toPLString()); } catch (ParseException e) { e.printStackTrace(); } catch (FileNotFoundException e) { Modified: trunk/src/dl-learner/org/dllearner/parser/PrologParser.java =================================================================== --- trunk/src/dl-learner/org/dllearner/parser/PrologParser.java 2008-02-08 09:04:00 UTC (rev 528) +++ trunk/src/dl-learner/org/dllearner/parser/PrologParser.java 2008-02-08 10:25:23 UTC (rev 529) @@ -62,15 +62,15 @@ org.dllearner.prolog.Body body = null; head = atom(); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case 18: - jj_consume_token(18); + case 19: + jj_consume_token(19); body = body(); break; default: jj_la1[1] = jj_gen; ; } - jj_consume_token(19); + jj_consume_token(20); {if (true) return new org.dllearner.prolog.Clause(head, body);} throw new Error("Missing return statement in function"); } @@ -83,14 +83,14 @@ label_2: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case 20: + case 21: ; break; default: jj_la1[2] = jj_gen; break label_2; } - jj_consume_token(20); + jj_consume_token(21); l = literal(); b.addLiteral(l); } @@ -103,10 +103,10 @@ java.util.ArrayList arguments = new java.util.ArrayList() ; atom = jj_consume_token(IDENTIFIER); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case 21: - jj_consume_token(21); + case 22: + jj_consume_token(22); arguments = termList(); - jj_consume_token(22); + jj_consume_token(23); break; default: jj_la1[3] = jj_gen; @@ -171,11 +171,12 @@ Token f; java.util.ArrayList arguments = null; org.dllearner.prolog.Term l; + org.dllearner.prolog.Number n; if (jj_2_5(2)) { f = jj_consume_token(IDENTIFIER); - jj_consume_token(21); + jj_consume_token(22); arguments = termList(); - jj_consume_token(22); + jj_consume_token(23); {if (true) return new org.dllearner.prolog.Function(f.image, arguments);} } else if (jj_2_6(2)) { f = jj_consume_token(IDENTIFIER); @@ -186,16 +187,16 @@ v = jj_consume_token(VAR); {if (true) return new org.dllearner.prolog.Variable(v.image);} break; - case NUMBER: - v = jj_consume_token(NUMBER); + case DOUBLE: + v = jj_consume_token(DOUBLE); {if (true) return new org.dllearner.prolog.Number(v.image);} break; case STRINGCONSTANT: v = jj_consume_token(STRINGCONSTANT); {if (true) return new org.dllearner.prolog.StringConstant(v.image);} break; - case 23: case 24: + case 25: l = list(); {if (true) return l;} break; @@ -237,14 +238,14 @@ label_3: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case 20: + case 21: ; break; default: jj_la1[6] = jj_gen; break label_3; } - jj_consume_token(20); + jj_consume_token(21); t = term(); l.add(t); } @@ -257,23 +258,23 @@ org.dllearner.prolog.Term head; org.dllearner.prolog.List l; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case 23: - jj_consume_token(23); + case 24: + jj_consume_token(24); {if (true) return new org.dllearner.prolog.List();} break; default: jj_la1[7] = jj_gen; if (jj_2_7(3)) { - jj_consume_token(24); + jj_consume_token(25); head = term(); - jj_consume_token(25); + jj_consume_token(26); {if (true) return new org.dllearner.prolog.List(head, null);} } else if (jj_2_8(3)) { - jj_consume_token(24); + jj_consume_token(25); head = term(); + jj_consume_token(27); + l = list(); jj_consume_token(26); - l = list(); - jj_consume_token(25); {if (true) return new org.dllearner.prolog.List(head, l);} } else { jj_consume_token(-1); @@ -355,7 +356,7 @@ } final private boolean jj_3R_10() { - if (jj_scan_token(NUMBER)) return true; + if (jj_scan_token(DOUBLE)) return true; return false; } @@ -369,20 +370,11 @@ return false; } - final private boolean jj_3_8() { - if (jj_scan_token(24)) return true; - if (jj_3R_8()) return true; - if (jj_scan_token(26)) return true; - if (jj_3R_14()) return true; - if (jj_scan_token(25)) return true; - return false; - } - final private boolean jj_3_5() { if (jj_scan_token(IDENTIFIER)) return true; - if (jj_scan_token(21)) return true; + if (jj_scan_token(22)) return true; if (jj_3R_13()) return true; - if (jj_scan_token(22)) return true; + if (jj_scan_token(23)) return true; return false; } @@ -408,15 +400,24 @@ return false; } + final private boolean jj_3_8() { + if (jj_scan_token(25)) return true; + if (jj_3R_8()) return true; + if (jj_scan_token(27)) return true; + if (jj_3R_14()) return true; + if (jj_scan_token(26)) return true; + return false; + } + final private boolean jj_3_7() { - if (jj_scan_token(24)) return true; + if (jj_scan_token(25)) return true; if (jj_3R_8()) return true; - if (jj_scan_token(25)) return true; + if (jj_scan_token(26)) return true; return false; } final private boolean jj_3R_16() { - if (jj_scan_token(23)) return true; + if (jj_scan_token(24)) return true; return false; } @@ -439,7 +440,7 @@ } final private boolean jj_3R_15() { - if (jj_scan_token(20)) return true; + if (jj_scan_token(21)) return true; if (jj_3R_8()) return true; return false; } @@ -514,7 +515,7 @@ jj_la1_0(); } private static void jj_la1_0() { - jj_la1_0 = new int[] {0x1000,0x40000,0x100000,0x200000,0x1080,0x1800d00,0x100000,0x800000,}; + jj_la1_0 = new int[] {0x2000,0x80000,0x200000,0x400000,0x2080,0x3001900,0x200000,0x1000000,}; } final private JJCalls[] jj_2_rtns = new JJCalls[8]; private boolean jj_rescan = false; @@ -691,7 +692,7 @@ public ParseException generateParseException() { jj_expentries.removeAllElements(); - boolean[] la1tokens = new boolean[27]; + boolean[] la1tokens = new boolean[28]; if (jj_kind >= 0) { la1tokens[jj_kind] = true; jj_kind = -1; @@ -705,7 +706,7 @@ } } } - for (int i = 0; i < 27; i++) { + for (int i = 0; i < 28; i++) { if (la1tokens[i]) { jj_expentry = new int[1]; jj_expentry[0] = i; Modified: trunk/src/dl-learner/org/dllearner/parser/PrologParserConstants.java =================================================================== --- trunk/src/dl-learner/org/dllearner/parser/PrologParserConstants.java 2008-02-08 09:04:00 UTC (rev 528) +++ trunk/src/dl-learner/org/dllearner/parser/PrologParserConstants.java 2008-02-08 10:25:23 UTC (rev 529) @@ -6,16 +6,17 @@ int EOF = 0; int SINGLE_LINE_COMMENT = 6; int NOT = 7; - int NUMBER = 8; - int DIGIT = 9; - int STRINGCONSTANT = 10; - int VAR = 11; - int IDENTIFIER = 12; - int OPERATOR = 13; - int ANYCHAR = 14; - int LOCASE = 15; - int HICASE = 16; - int SPECIALCHAR = 17; + int DOUBLE = 8; + int NUMBER = 9; + int DIGIT = 10; + int STRINGCONSTANT = 11; + int VAR = 12; + int IDENTIFIER = 13; + int OPERATOR = 14; + int ANYCHAR = 15; + int LOCASE = 16; + int HICASE = 17; + int SPECIALCHAR = 18; int DEFAULT = 0; @@ -28,6 +29,7 @@ "\"\\f\"", "<SINGLE_LINE_COMMENT>", "\"not\"", + "<DOUBLE>", "<NUMBER>", "<DIGIT>", "<STRINGCONSTANT>", Modified: trunk/src/dl-learner/org/dllearner/parser/PrologParserTokenManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/parser/PrologParserTokenManager.java 2008-02-08 09:04:00 UTC (rev 528) +++ trunk/src/dl-learner/org/dllearner/parser/PrologParserTokenManager.java 2008-02-08 10:25:23 UTC (rev 529) @@ -12,16 +12,16 @@ case 0: if ((active0 & 0x80L) != 0L) { - jjmatchedKind = 12; - return 18; + jjmatchedKind = 13; + return 28; } return -1; case 1: if ((active0 & 0x80L) != 0L) { - jjmatchedKind = 12; + jjmatchedKind = 13; jjmatchedPos = 1; - return 18; + return 28; } return -1; default : @@ -51,24 +51,24 @@ switch(curChar) { case 40: - return jjStopAtPos(0, 21); + return jjStopAtPos(0, 22); case 41: - return jjStopAtPos(0, 22); + return jjStopAtPos(0, 23); case 44: + return jjStopAtPos(0, 21); + case 46: return jjStopAtPos(0, 20); - case 46: - return jjStopAtPos(0, 19); case 58: - return jjMoveStringLiteralDfa1_0(0x40000L); + return jjMoveStringLiteralDfa1_0(0x80000L); case 91: - jjmatchedKind = 24; - return jjMoveStringLiteralDfa1_0(0x800000L); + jjmatchedKind = 25; + return jjMoveStringLiteralDfa1_0(0x1000000L); case 93: - return jjStopAtPos(0, 25); + return jjStopAtPos(0, 26); case 110: return jjMoveStringLiteralDfa1_0(0x80L); case 124: - return jjStopAtPos(0, 26); + return jjStopAtPos(0, 27); default : return jjMoveNfa_0(0, 0); } @@ -83,12 +83,12 @@ switch(curChar) { case 45: - if ((active0 & 0x40000L) != 0L) - return jjStopAtPos(1, 18); + if ((active0 & 0x80000L) != 0L) + return jjStopAtPos(1, 19); break; case 93: - if ((active0 & 0x800000L) != 0L) - return jjStopAtPos(1, 23); + if ((active0 & 0x1000000L) != 0L) + return jjStopAtPos(1, 24); break; case 111: return jjMoveStringLiteralDfa2_0(active0, 0x80L); @@ -110,7 +110,7 @@ { case 116: if ((active0 & 0x80L) != 0L) - return jjStartNfaWithStates_0(2, 7, 18); + return jjStartNfaWithStates_0(2, 7, 28); break; default : break; @@ -154,7 +154,7 @@ { int[] nextStates; int startsAt = 0; - jjnewStateCnt = 18; + jjnewStateCnt = 28; int i = 1; jjstateSet[0] = startState; int j, kind = 0x7fffffff; @@ -169,18 +169,18 @@ { switch(jjstateSet[--i]) { - case 18: + case 28: if ((0x53ff2c0000000000L & l) != 0L) { - if (kind > 13) - kind = 13; - jjCheckNAdd(17); + if (kind > 14) + kind = 14; + jjCheckNAdd(16); } if ((0x3ff000000000000L & l) != 0L) { - if (kind > 12) - kind = 12; - jjCheckNAdd(15); + if (kind > 13) + kind = 13; + jjCheckNAdd(14); } break; case 0: @@ -188,24 +188,26 @@ { if (kind > 8) kind = 8; - jjCheckNAdd(5); + jjCheckNAddStates(0, 3); } else if ((0x50002c0000000000L & l) != 0L) { - if (kind > 13) - kind = 13; - jjCheckNAdd(17); + if (kind > 14) + kind = 14; + jjCheckNAdd(16); } else if (curChar == 34) - jjCheckNAddTwoStates(10, 11); + jjCheckNAddTwoStates(9, 10); else if (curChar == 39) - jjCheckNAddTwoStates(7, 8); + jjCheckNAddTwoStates(6, 7); else if (curChar == 37) - jjCheckNAddStates(0, 2); + jjCheckNAddStates(4, 6); + if (curChar == 45) + jjCheckNAddTwoStates(18, 21); break; case 1: if ((0xffffffffffffdbffL & l) != 0L) - jjCheckNAddStates(0, 2); + jjCheckNAddStates(4, 6); break; case 2: if ((0x2400L & l) != 0L && kind > 6) @@ -220,64 +222,125 @@ jjstateSet[jjnewStateCnt++] = 3; break; case 5: - if ((0x3ff000000000000L & l) == 0L) - break; - if (kind > 8) - kind = 8; - jjCheckNAdd(5); + if (curChar == 39) + jjCheckNAddTwoStates(6, 7); break; case 6: - if (curChar == 39) - jjCheckNAddTwoStates(7, 8); + if ((0xffffff7fffffdbffL & l) != 0L) + jjCheckNAddTwoStates(6, 7); break; case 7: - if ((0xffffff7fffffdbffL & l) != 0L) - jjCheckNAddTwoStates(7, 8); + if (curChar == 39 && kind > 11) + kind = 11; break; case 8: - if (curChar == 39 && kind > 10) - kind = 10; + if (curChar == 34) + jjCheckNAddTwoStates(9, 10); break; case 9: - if (curChar == 34) - jjCheckNAddTwoStates(10, 11); + if ((0xffffff7fffffdbffL & l) != 0L) + jjCheckNAddTwoStates(9, 10); break; case 10: - if ((0xffffff7fffffdbffL & l) != 0L) - jjCheckNAddTwoStates(10, 11); - break; - case 11: - if (curChar == 34 && kind > 10) - kind = 10; - break; - case 13: - if ((0x3ff000000000000L & l) == 0L) - break; - if (kind > 11) + if (curChar == 34 && kind > 11) kind = 11; - jjstateSet[jjnewStateCnt++] = 13; break; - case 15: + case 12: if ((0x3ff000000000000L & l) == 0L) break; if (kind > 12) kind = 12; - jjCheckNAdd(15); + jjstateSet[jjnewStateCnt++] = 12; break; - case 16: - if ((0x50002c0000000000L & l) == 0L) + case 14: + if ((0x3ff000000000000L & l) == 0L) break; if (kind > 13) kind = 13; - jjCheckNAdd(17); + jjCheckNAdd(14); break; - case 17: + case 15: + if ((0x50002c0000000000L & l) == 0L) + break; + if (kind > 14) + kind = 14; + jjCheckNAdd(16); + break; + case 16: if ((0x53ff2c0000000000L & l) == 0L) break; - if (kind > 13) - kind = 13; - jjCheckNAdd(17); + if (kind > 14) + kind = 14; + jjCheckNAdd(16); break; + case 17: + if (curChar == 45) + jjCheckNAddTwoStates(18, 21); + break; + case 18: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddTwoStates(18, 19); + break; + case 19: + if (curChar != 46) + break; + if (kind > 8) + kind = 8; + jjCheckNAdd(20); + break; + case 20: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 8) + kind = 8; + jjCheckNAdd(20); + break; + case 21: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 8) + kind = 8; + jjCheckNAdd(21); + break; + case 22: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 8) + kind = 8; + jjCheckNAddStates(0, 3); + break; + case 23: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddTwoStates(23, 24); + break; + case 24: + if (curChar != 46) + break; + if (kind > 8) + kind = 8; + jjCheckNAdd(25); + break; + case 25: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 8) + kind = 8; + jjCheckNAdd(25); + break; + case 26: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 8) + kind = 8; + jjCheckNAdd(26); + break; + case 27: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 9) + kind = 9; + jjCheckNAdd(27); + break; default : break; } } while(i != startsAt); @@ -289,93 +352,93 @@ { switch(jjstateSet[--i]) { - case 18: + case 28: if ((0x7fffffec7fffffeL & l) != 0L) { - if (kind > 13) - kind = 13; - jjCheckNAdd(17); + if (kind > 14) + kind = 14; + jjCheckNAdd(16); } if ((0x7fffffe87fffffeL & l) != 0L) { - if (kind > 12) - kind = 12; - jjCheckNAdd(15); + if (kind > 13) + kind = 13; + jjCheckNAdd(14); } break; case 0: if ((0x7fffffe40000000L & l) != 0L) { - if (kind > 13) - kind = 13; - jjCheckNAdd(17); + if (kind > 14) + kind = 14; + jjCheckNAdd(16); } else if ((0x87fffffeL & l) != 0L) { - if (kind > 11) - kind = 11; - jjCheckNAdd(13); + if (kind > 12) + kind = 12; + jjCheckNAdd(12); } if ((0x7fffffe00000000L & l) != 0L) { - if (kind > 12) - kind = 12; - jjCheckNAdd(15); + if (kind > 13) + kind = 13; + jjCheckNAdd(14); } break; case 1: - jjAddStates(0, 2); + jjAddStates(4, 6); break; - case 7: + case 6: if ((0xffffffffefffffffL & l) != 0L) - jjAddStates(3, 4); + jjAddStates(7, 8); break; - case 10: + case 9: if ((0xffffffffefffffffL & l) != 0L) - jjAddStates(5, 6); + jjAddStates(9, 10); break; - case 12: + case 11: if ((0x87fffffeL & l) == 0L) break; - if (kind > 11) - kind = 11; - jjCheckNAdd(13); - break; - case 13: - if ((0x7fffffe87fffffeL & l) == 0L) - break; - if (kind > 11) - kind = 11; - jjCheckNAdd(13); - break; - case 14: - if ((0x7fffffe00000000L & l) == 0L) - break; if (kind > 12) kind = 12; - jjCheckNAdd(15); + jjCheckNAdd(12); break; - case 15: + case 12: if ((0x7fffffe87fffffeL & l) == 0L) break; if (kind > 12) kind = 12; - jjCheckNAdd(15); + jjCheckNAdd(12); break; - case 16: - if ((0x7fffffe40000000L & l) == 0L) + case 13: + if ((0x7fffffe00000000L & l) == 0L) break; if (kind > 13) kind = 13; - jjCheckNAdd(17); + jjCheckNAdd(14); break; - case 17: - if ((0x7fffffec7fffffeL & l) == 0L) + case 14: + if ((0x7fffffe87fffffeL & l) == 0L) break; if (kind > 13) kind = 13; - jjCheckNAdd(17); + jjCheckNAdd(14); break; + case 15: + if ((0x7fffffe40000000L & l) == 0L) + break; + if (kind > 14) + kind = 14; + jjCheckNAdd(16); + break; + case 16: + if ((0x7fffffec7fffffeL & l) == 0L) + break; + if (kind > 14) + kind = 14; + jjCheckNAdd(16); + break; default : break; } } while(i != startsAt); @@ -390,15 +453,15 @@ { case 1: if ((jjbitVec0[i2] & l2) != 0L) - jjAddStates(0, 2); + jjAddStates(4, 6); break; - case 7: + case 6: if ((jjbitVec0[i2] & l2) != 0L) - jjAddStates(3, 4); + jjAddStates(7, 8); break; - case 10: + case 9: if ((jjbitVec0[i2] & l2) != 0L) - jjAddStates(5, 6); + jjAddStates(9, 10); break; default : break; } @@ -411,24 +474,24 @@ kind = 0x7fffffff; } ++curPos; - if ((i = jjnewStateCnt) == (startsAt = 18 - (jjnewStateCnt = startsAt))) + if ((i = jjnewStateCnt) == (startsAt = 28 - (jjnewStateCnt = startsAt))) return curPos; try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { return curPos; } } } static final int[] jjnextStates = { - 1, 2, 4, 7, 8, 10, 11, + 23, 24, 26, 27, 1, 2, 4, 6, 7, 9, 10, }; public static final String[] jjstrLiteralImages = { "", null, null, null, null, null, null, "\156\157\164", null, null, null, null, -null, null, null, null, null, null, "\72\55", "\56", "\54", "\50", "\51", +null, null, null, null, null, null, null, "\72\55", "\56", "\54", "\50", "\51", "\133\135", "\133", "\135", "\174", }; public static final String[] lexStateNames = { "DEFAULT", }; static final long[] jjtoToken = { - 0x7fc3d81L, + 0xff87b81L, }; static final long[] jjtoSkip = { 0x7eL, @@ -437,8 +500,8 @@ 0x40L, }; protected SimpleCharStream input_stream; -private final int[] jjrounds = new int[18]; -private final int[] jjstateSet = new int[36]; +private final int[] jjrounds = new int[28]; +private final int[] jjstateSet = new int[56]; protected char curChar; public PrologParserTokenManager(SimpleCharStream stream){ if (SimpleCharStream.staticFlag) @@ -460,7 +523,7 @@ { int i; jjround = 0x80000001; - for (i = 18; i-- > 0;) + for (i = 28; i-- > 0;) jjrounds[i] = 0x80000000; } public void ReInit(SimpleCharStream stream, int lexState) Modified: trunk/src/dl-learner/org/dllearner/parser/prolog.jj =================================================================== --- trunk/src/dl-learner/org/dllearner/parser/prolog.jj 2008-02-08 09:04:00 UTC (rev 528) +++ trunk/src/dl-learner/org/dllearner/parser/prolog.jj 2008-02-08 10:25:23 UTC (rev 529) @@ -84,7 +84,12 @@ TOKEN : /* constants */ { - < NUMBER: (<DIGIT>)+> + < DOUBLE: + "-" (<DIGIT>)+ "." (<DIGIT>)* | + (<DIGIT>)+ "." (<DIGIT>)* | + "-" (<DIGIT>)+ | + (<DIGIT>)+ > + | < NUMBER: (<DIGIT>)+> | < #DIGIT: ["0" - "9"] > | < STRINGCONSTANT: ("'" (~["'","\\","\n","\r"])* "'" | "\"" (~["'","\\","\n","\r"])* "\"" ) > } @@ -161,16 +166,16 @@ Token f; java.util.ArrayList arguments = null; org.dllearner.prolog.Term l; + org.dllearner.prolog.Number n; }{ LOOKAHEAD(2) f = <IDENTIFIER> "(" arguments = termList() ")" { return new org.dllearner.prolog.Function(f.image, arguments); } | LOOKAHEAD(2) f = <IDENTIFIER> { return new org.dllearner.prolog.PrologConstant(f.image); } | v = <VAR> { return new org.dllearner.prolog.Variable(v.image); } - | v = <NUMBER> { return new org.dllearner.prolog.Number(v.image); } + | v = <DOUBLE> { return new org.dllearner.prolog.Number(v.image); } | v = <STRINGCONSTANT> { return new org.dllearner.prolog.StringConstant(v.image); } | l = list() { return l; } } - String prefixOp() : { Token f; }{ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |