From: <jen...@us...> - 2011-11-02 12:27:00
|
Revision: 3359 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=3359&view=rev Author: jenslehmann Date: 2011-11-02 12:26:53 +0000 (Wed, 02 Nov 2011) Log Message: ----------- - wrote Manchester syntax parser - added a unit test for it - integrated support for using class expressions in conf files (via property editor) Modified Paths: -------------- trunk/components-core/src/main/java/org/dllearner/algorithms/celoe/CELOE.java trunk/components-core/src/main/java/org/dllearner/core/config/ClassExpressionPropertyEditor.java trunk/components-core/src/main/java/org/dllearner/core/owl/StringValueRestriction.java trunk/components-core/src/main/java/org/dllearner/utilities/owl/ManchesterOWLSyntaxParser.java trunk/components-core/src/test/java/org/dllearner/test/junit/OWLAPITests.java trunk/components-core/src/test/java/org/dllearner/test/junit/ParserTests.java trunk/examples/father.conf Added Paths: ----------- trunk/components-core/src/main/java/org/dllearner/parser/ManchesterSyntaxParser.java trunk/components-core/src/main/java/org/dllearner/parser/ManchesterSyntaxParserConstants.java trunk/components-core/src/main/java/org/dllearner/parser/ManchesterSyntaxParserTokenManager.java trunk/components-core/src/main/java/org/dllearner/parser/manchester.jj Modified: trunk/components-core/src/main/java/org/dllearner/algorithms/celoe/CELOE.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/algorithms/celoe/CELOE.java 2011-11-02 09:08:56 UTC (rev 3358) +++ trunk/components-core/src/main/java/org/dllearner/algorithms/celoe/CELOE.java 2011-11-02 12:26:53 UTC (rev 3359) @@ -49,6 +49,8 @@ import org.dllearner.core.owl.Individual; import org.dllearner.core.owl.Intersection; import org.dllearner.core.owl.NamedClass; +import org.dllearner.core.owl.ObjectProperty; +import org.dllearner.core.owl.ObjectSomeRestriction; import org.dllearner.core.owl.Restriction; import org.dllearner.core.owl.Thing; import org.dllearner.learningproblems.ClassLearningProblem; @@ -262,7 +264,10 @@ minimizer = new DescriptionMinimizer(reasoner); - startClass = Thing.instance; + // start at owl:Thing by default + if(startClass == null) { + startClass = Thing.instance; + } // singleSuggestionMode = configurator.getSingleSuggestionMode(); Modified: trunk/components-core/src/main/java/org/dllearner/core/config/ClassExpressionPropertyEditor.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/core/config/ClassExpressionPropertyEditor.java 2011-11-02 09:08:56 UTC (rev 3358) +++ trunk/components-core/src/main/java/org/dllearner/core/config/ClassExpressionPropertyEditor.java 2011-11-02 12:26:53 UTC (rev 3359) @@ -7,6 +7,8 @@ import java.beans.PropertyEditor; import org.dllearner.core.owl.Description; +import org.dllearner.parser.ManchesterSyntaxParser; +import org.dllearner.parser.ParseException; import org.dllearner.utilities.owl.ManchesterOWLSyntaxParser; import org.semanticweb.owlapi.expression.ParserException; @@ -68,14 +70,12 @@ @Override public void setAsText(String arg0) throws IllegalArgumentException { - System.out.println(arg0); // we assume that the start class string is given in Manchester syntax try { - description = ManchesterOWLSyntaxParser.getDescription(arg0); - } catch (ParserException e) { + description = ManchesterSyntaxParser.parseClassExpression(arg0); + } catch (ParseException e) { throw new IllegalArgumentException(e); } - System.out.println(description); } @Override Modified: trunk/components-core/src/main/java/org/dllearner/core/owl/StringValueRestriction.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/core/owl/StringValueRestriction.java 2011-11-02 09:08:56 UTC (rev 3358) +++ trunk/components-core/src/main/java/org/dllearner/core/owl/StringValueRestriction.java 2011-11-02 12:26:53 UTC (rev 3359) @@ -42,7 +42,7 @@ @Override public String toManchesterSyntaxString(String baseURI, Map<String,String> prefixes) { - return restrictedPropertyExpression.toString(baseURI, prefixes) + " value " +"\"" +value.toManchesterSyntaxString(baseURI, prefixes)+"\""; + return restrictedPropertyExpression.toString(baseURI, prefixes) + " value " + value.toManchesterSyntaxString(baseURI, prefixes); } @Override Added: trunk/components-core/src/main/java/org/dllearner/parser/ManchesterSyntaxParser.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/parser/ManchesterSyntaxParser.java (rev 0) +++ trunk/components-core/src/main/java/org/dllearner/parser/ManchesterSyntaxParser.java 2011-11-02 12:26:53 UTC (rev 3359) @@ -0,0 +1,641 @@ +/* Generated By:JavaCC: Do not edit this line. ManchesterSyntaxParser.java */ +package org.dllearner.parser; + +import org.dllearner.core.owl.*; +import java.io.*; +import java.net.URL; + +public class ManchesterSyntaxParser implements ManchesterSyntaxParserConstants { + + public static Description parseClassExpression(String classExpression) throws ParseException { + ManchesterSyntaxParser parser = new ManchesterSyntaxParser(new StringReader(classExpression)); + return parser.ClassExpression(); + } + + final public Description ClassExpression() throws ParseException { + Description c,c1,c2; + String s,s1,s2; + int i; + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case TOP: + jj_consume_token(TOP); + {if (true) return new Thing();} + break; + case BOTTOM: + jj_consume_token(BOTTOM); + {if (true) return new Nothing();} + break; + default: + jj_la1[0] = jj_gen; + if (jj_2_1(2147483647)) { + jj_consume_token(21); + c1 = ClassExpression(); + jj_consume_token(AND); + c2 = ClassExpression(); + jj_consume_token(22); + {if (true) return new Intersection(c1,c2);} + } else if (jj_2_2(2147483647)) { + jj_consume_token(21); + c1 = ClassExpression(); + jj_consume_token(OR); + c2 = ClassExpression(); + jj_consume_token(22); + {if (true) return new Union(c1,c2);} + } else if (jj_2_3(2147483647)) { + s = URI(); + jj_consume_token(SOME); + c = ClassExpression(); + {if (true) return new ObjectSomeRestriction(new ObjectProperty(s),c);} + } else if (jj_2_4(2147483647)) { + s = URI(); + jj_consume_token(ONLY); + c = ClassExpression(); + {if (true) return new ObjectAllRestriction(new ObjectProperty(s),c);} + } else { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case NOT: + jj_consume_token(NOT); + c = ClassExpression(); + {if (true) return new Negation(c);} + break; + case GE: + jj_consume_token(GE); + i = Integer(); + s = URI(); + jj_consume_token(23); + c = ClassExpression(); + {if (true) return new ObjectMinCardinalityRestriction(i,new ObjectProperty(s),c);} + break; + case LE: + jj_consume_token(LE); + i = Integer(); + s = URI(); + jj_consume_token(23); + c = ClassExpression(); + {if (true) return new ObjectMaxCardinalityRestriction(i,new ObjectProperty(s),c);} + break; + default: + jj_la1[1] = jj_gen; + if (jj_2_5(4)) { + jj_consume_token(21); + s1 = URI(); + jj_consume_token(24); + s2 = URI(); + jj_consume_token(22); + {if (true) return new ObjectValueRestriction(new ObjectProperty(s1), new Individual(s2));} + } else if (jj_2_6(4)) { + jj_consume_token(21); + s1 = URI(); + jj_consume_token(24); + s2 = String(); + jj_consume_token(22); + {if (true) return new StringValueRestriction(new DatatypeProperty(s1), s2);} + } else { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case URI: + s = URI(); + {if (true) return new NamedClass(s);} + break; + default: + jj_la1[2] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + } + } + } + } + throw new Error("Missing return statement in function"); + } + + final public double Double() throws ParseException { + Token t; + t = jj_consume_token(DOUBLE); + {if (true) return new Double(t.image);} + throw new Error("Missing return statement in function"); + } + + final public int Integer() throws ParseException { + Token t; + t = jj_consume_token(NUMBER); + {if (true) return new Integer(t.image);} + throw new Error("Missing return statement in function"); + } + + final public String String() throws ParseException { + Token t; + String s; + t = jj_consume_token(STRING); + // cut quotes + s = t.image; + s = s.substring(1, s.length() - 1); + {if (true) return s;} + throw new Error("Missing return statement in function"); + } + + final public String URI() throws ParseException { + Token t; + String s; + t = jj_consume_token(URI); + // cut "<" and ">" + s = t.image; + s = s.substring(1, s.length() - 1); + {if (true) return s;} + throw new Error("Missing return statement in function"); + } + + private boolean jj_2_1(int xla) { + jj_la = xla; jj_lastpos = jj_scanpos = token; + try { return !jj_3_1(); } + catch(LookaheadSuccess ls) { return true; } + finally { jj_save(0, xla); } + } + + private boolean jj_2_2(int xla) { + jj_la = xla; jj_lastpos = jj_scanpos = token; + try { return !jj_3_2(); } + catch(LookaheadSuccess ls) { return true; } + finally { jj_save(1, xla); } + } + + private boolean jj_2_3(int xla) { + jj_la = xla; jj_lastpos = jj_scanpos = token; + try { return !jj_3_3(); } + catch(LookaheadSuccess ls) { return true; } + finally { jj_save(2, xla); } + } + + private boolean jj_2_4(int xla) { + jj_la = xla; jj_lastpos = jj_scanpos = token; + try { return !jj_3_4(); } + catch(LookaheadSuccess ls) { return true; } + finally { jj_save(3, xla); } + } + + private boolean jj_2_5(int xla) { + jj_la = xla; jj_lastpos = jj_scanpos = token; + try { return !jj_3_5(); } + catch(LookaheadSuccess ls) { return true; } + finally { jj_save(4, xla); } + } + + private boolean jj_2_6(int xla) { + jj_la = xla; jj_lastpos = jj_scanpos = token; + try { return !jj_3_6(); } + catch(LookaheadSuccess ls) { return true; } + finally { jj_save(5, xla); } + } + + private boolean jj_3R_3() { + if (jj_scan_token(STRING)) return true; + return false; + } + + private boolean jj_3R_8() { + if (jj_3R_2()) return true; + if (jj_scan_token(SOME)) return true; + if (jj_3R_1()) return true; + return false; + } + + private boolean jj_3R_7() { + if (jj_scan_token(21)) return true; + if (jj_3R_1()) return true; + if (jj_scan_token(OR)) return true; + if (jj_3R_1()) return true; + if (jj_scan_token(22)) return true; + return false; + } + + private boolean jj_3R_6() { + if (jj_scan_token(21)) return true; + if (jj_3R_1()) return true; + if (jj_scan_token(AND)) return true; + if (jj_3R_1()) return true; + if (jj_scan_token(22)) return true; + return false; + } + + private boolean jj_3R_5() { + if (jj_scan_token(BOTTOM)) return true; + return false; + } + + private boolean jj_3R_1() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_4()) { + jj_scanpos = xsp; + if (jj_3R_5()) { + jj_scanpos = xsp; + if (jj_3R_6()) { + jj_scanpos = xsp; + if (jj_3R_7()) { + jj_scanpos = xsp; + if (jj_3R_8()) { + jj_scanpos = xsp; + if (jj_3R_9()) { + jj_scanpos = xsp; + if (jj_3R_10()) { + jj_scanpos = xsp; + if (jj_3R_11()) { + jj_scanpos = xsp; + if (jj_3R_12()) { + jj_scanpos = xsp; + if (jj_3_5()) { + jj_scanpos = xsp; + if (jj_3_6()) { + jj_scanpos = xsp; + if (jj_3R_13()) return true; + } + } + } + } + } + } + } + } + } + } + } + return false; + } + + private boolean jj_3R_4() { + if (jj_scan_token(TOP)) return true; + return false; + } + + private boolean jj_3R_14() { + if (jj_scan_token(NUMBER)) return true; + return false; + } + + private boolean jj_3R_13() { + if (jj_3R_2()) return true; + return false; + } + + private boolean jj_3R_2() { + if (jj_scan_token(URI)) return true; + return false; + } + + private boolean jj_3_6() { + if (jj_scan_token(21)) return true; + if (jj_3R_2()) return true; + if (jj_scan_token(24)) return true; + if (jj_3R_3()) return true; + if (jj_scan_token(22)) return true; + return false; + } + + private boolean jj_3_4() { + if (jj_3R_2()) return true; + if (jj_scan_token(ONLY)) return true; + return false; + } + + private boolean jj_3_5() { + if (jj_scan_token(21)) return true; + if (jj_3R_2()) return true; + if (jj_scan_token(24)) return true; + if (jj_3R_2()) return true; + if (jj_scan_token(22)) return true; + return false; + } + + private boolean jj_3_3() { + if (jj_3R_2()) return true; + if (jj_scan_token(SOME)) return true; + return false; + } + + private boolean jj_3R_12() { + if (jj_scan_token(LE)) return true; + if (jj_3R_14()) return true; + if (jj_3R_2()) return true; + if (jj_scan_token(23)) return true; + if (jj_3R_1()) return true; + return false; + } + + private boolean jj_3_2() { + if (jj_scan_token(21)) return true; + if (jj_3R_1()) return true; + if (jj_scan_token(OR)) return true; + return false; + } + + private boolean jj_3R_11() { + if (jj_scan_token(GE)) return true; + if (jj_3R_14()) return true; + if (jj_3R_2()) return true; + if (jj_scan_token(23)) return true; + if (jj_3R_1()) return true; + return false; + } + + private boolean jj_3R_10() { + if (jj_scan_token(NOT)) return true; + if (jj_3R_1()) return true; + return false; + } + + private boolean jj_3_1() { + if (jj_scan_token(21)) return true; + if (jj_3R_1()) return true; + if (jj_scan_token(AND)) return true; + return false; + } + + private boolean jj_3R_9() { + if (jj_3R_2()) return true; + if (jj_scan_token(ONLY)) return true; + if (jj_3R_1()) return true; + return false; + } + + /** Generated Token Manager. */ + public ManchesterSyntaxParserTokenManager token_source; + SimpleCharStream jj_input_stream; + /** Current token. */ + public Token token; + /** Next token. */ + public Token jj_nt; + private int jj_ntk; + private Token jj_scanpos, jj_lastpos; + private int jj_la; + private int jj_gen; + final private int[] jj_la1 = new int[3]; + static private int[] jj_la1_0; + static { + jj_la1_init_0(); + } + private static void jj_la1_init_0() { + jj_la1_0 = new int[] {0xc00,0x70000,0x100000,}; + } + final private JJCalls[] jj_2_rtns = new JJCalls[6]; + private boolean jj_rescan = false; + private int jj_gc = 0; + + /** Constructor with InputStream. */ + public ManchesterSyntaxParser(java.io.InputStream stream) { + this(stream, null); + } + /** Constructor with InputStream and supplied encoding */ + public ManchesterSyntaxParser(java.io.InputStream stream, String encoding) { + try { jj_input_stream = new SimpleCharStream(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); } + token_source = new ManchesterSyntaxParserTokenManager(jj_input_stream); + token = new Token(); + jj_ntk = -1; + jj_gen = 0; + for (int i = 0; i < 3; i++) jj_la1[i] = -1; + for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); + } + + /** Reinitialise. */ + public void ReInit(java.io.InputStream stream) { + ReInit(stream, null); + } + /** Reinitialise. */ + public void ReInit(java.io.InputStream stream, String encoding) { + try { jj_input_stream.ReInit(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); } + token_source.ReInit(jj_input_stream); + token = new Token(); + jj_ntk = -1; + jj_gen = 0; + for (int i = 0; i < 3; i++) jj_la1[i] = -1; + for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); + } + + /** Constructor. */ + public ManchesterSyntaxParser(java.io.Reader stream) { + jj_input_stream = new SimpleCharStream(stream, 1, 1); + token_source = new ManchesterSyntaxParserTokenManager(jj_input_stream); + token = new Token(); + jj_ntk = -1; + jj_gen = 0; + for (int i = 0; i < 3; i++) jj_la1[i] = -1; + for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); + } + + /** Reinitialise. */ + public void ReInit(java.io.Reader stream) { + jj_input_stream.ReInit(stream, 1, 1); + token_source.ReInit(jj_input_stream); + token = new Token(); + jj_ntk = -1; + jj_gen = 0; + for (int i = 0; i < 3; i++) jj_la1[i] = -1; + for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); + } + + /** Constructor with generated Token Manager. */ + public ManchesterSyntaxParser(ManchesterSyntaxParserTokenManager tm) { + token_source = tm; + token = new Token(); + jj_ntk = -1; + jj_gen = 0; + for (int i = 0; i < 3; i++) jj_la1[i] = -1; + for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); + } + + /** Reinitialise. */ + public void ReInit(ManchesterSyntaxParserTokenManager tm) { + token_source = tm; + token = new Token(); + jj_ntk = -1; + jj_gen = 0; + for (int i = 0; i < 3; i++) jj_la1[i] = -1; + for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); + } + + private Token jj_consume_token(int kind) throws ParseException { + Token oldToken; + if ((oldToken = token).next != null) token = token.next; + else token = token.next = token_source.getNextToken(); + jj_ntk = -1; + if (token.kind == kind) { + jj_gen++; + if (++jj_gc > 100) { + jj_gc = 0; + for (int i = 0; i < jj_2_rtns.length; i++) { + JJCalls c = jj_2_rtns[i]; + while (c != null) { + if (c.gen < jj_gen) c.first = null; + c = c.next; + } + } + } + return token; + } + token = oldToken; + jj_kind = kind; + throw generateParseException(); + } + + static private final class LookaheadSuccess extends java.lang.Error { } + final private LookaheadSuccess jj_ls = new LookaheadSuccess(); + private boolean jj_scan_token(int kind) { + if (jj_scanpos == jj_lastpos) { + jj_la--; + if (jj_scanpos.next == null) { + jj_lastpos = jj_scanpos = jj_scanpos.next = token_source.getNextToken(); + } else { + jj_lastpos = jj_scanpos = jj_scanpos.next; + } + } else { + jj_scanpos = jj_scanpos.next; + } + if (jj_rescan) { + int i = 0; Token tok = token; + while (tok != null && tok != jj_scanpos) { i++; tok = tok.next; } + if (tok != null) jj_add_error_token(kind, i); + } + if (jj_scanpos.kind != kind) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) throw jj_ls; + return false; + } + + +/** Get the next Token. */ + final public Token getNextToken() { + if (token.next != null) token = token.next; + else token = token.next = token_source.getNextToken(); + jj_ntk = -1; + jj_gen++; + return token; + } + +/** Get the specific Token. */ + final public Token getToken(int index) { + Token t = token; + for (int i = 0; i < index; i++) { + if (t.next != null) t = t.next; + else t = t.next = token_source.getNextToken(); + } + return t; + } + + private int jj_ntk() { + if ((jj_nt=token.next) == null) + return (jj_ntk = (token.next=token_source.getNextToken()).kind); + else + return (jj_ntk = jj_nt.kind); + } + + private java.util.List<int[]> jj_expentries = new java.util.ArrayList<int[]>(); + private int[] jj_expentry; + private int jj_kind = -1; + private int[] jj_lasttokens = new int[100]; + private int jj_endpos; + + private void jj_add_error_token(int kind, int pos) { + if (pos >= 100) return; + if (pos == jj_endpos + 1) { + jj_lasttokens[jj_endpos++] = kind; + } else if (jj_endpos != 0) { + jj_expentry = new int[jj_endpos]; + for (int i = 0; i < jj_endpos; i++) { + jj_expentry[i] = jj_lasttokens[i]; + } + jj_entries_loop: for (java.util.Iterator<?> it = jj_expentries.iterator(); it.hasNext();) { + int[] oldentry = (int[])(it.next()); + if (oldentry.length == jj_expentry.length) { + for (int i = 0; i < jj_expentry.length; i++) { + if (oldentry[i] != jj_expentry[i]) { + continue jj_entries_loop; + } + } + jj_expentries.add(jj_expentry); + break jj_entries_loop; + } + } + if (pos != 0) jj_lasttokens[(jj_endpos = pos) - 1] = kind; + } + } + + /** Generate ParseException. */ + public ParseException generateParseException() { + jj_expentries.clear(); + boolean[] la1tokens = new boolean[25]; + if (jj_kind >= 0) { + la1tokens[jj_kind] = true; + jj_kind = -1; + } + for (int i = 0; i < 3; 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; + } + } + } + } + for (int i = 0; i < 25; i++) { + if (la1tokens[i]) { + jj_expentry = new int[1]; + jj_expentry[0] = i; + jj_expentries.add(jj_expentry); + } + } + jj_endpos = 0; + jj_rescan_token(); + jj_add_error_token(0, 0); + int[][] exptokseq = new int[jj_expentries.size()][]; + for (int i = 0; i < jj_expentries.size(); i++) { + exptokseq[i] = jj_expentries.get(i); + } + return new ParseException(token, exptokseq, tokenImage); + } + + /** Enable tracing. */ + final public void enable_tracing() { + } + + /** Disable tracing. */ + final public void disable_tracing() { + } + + private void jj_rescan_token() { + jj_rescan = true; + for (int i = 0; i < 6; i++) { + try { + JJCalls p = jj_2_rtns[i]; + do { + if (p.gen > jj_gen) { + jj_la = p.arg; jj_lastpos = jj_scanpos = p.first; + switch (i) { + case 0: jj_3_1(); break; + case 1: jj_3_2(); break; + case 2: jj_3_3(); break; + case 3: jj_3_4(); break; + case 4: jj_3_5(); break; + case 5: jj_3_6(); break; + } + } + p = p.next; + } while (p != null); + } catch(LookaheadSuccess ls) { } + } + jj_rescan = false; + } + + private void jj_save(int index, int xla) { + JJCalls p = jj_2_rtns[index]; + while (p.gen > jj_gen) { + if (p.next == null) { p = p.next = new JJCalls(); break; } + p = p.next; + } + p.gen = jj_gen + xla - jj_la; p.first = token; p.arg = xla; + } + + static final class JJCalls { + int gen; + Token first; + int arg; + JJCalls next; + } + +} Added: trunk/components-core/src/main/java/org/dllearner/parser/ManchesterSyntaxParserConstants.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/parser/ManchesterSyntaxParserConstants.java (rev 0) +++ trunk/components-core/src/main/java/org/dllearner/parser/ManchesterSyntaxParserConstants.java 2011-11-02 12:26:53 UTC (rev 3359) @@ -0,0 +1,78 @@ +/* Generated By:JavaCC: Do not edit this line. ManchesterSyntaxParserConstants.java */ +package org.dllearner.parser; + + +/** + * Token literal values and constants. + * Generated by org.javacc.parser.OtherFilesGen#start() + */ +public interface ManchesterSyntaxParserConstants { + + /** End of File. */ + int EOF = 0; + /** RegularExpression Id. */ + int SINGLE_LINE_COMMENT = 5; + /** RegularExpression Id. */ + int FORMAL_COMMENT = 6; + /** RegularExpression Id. */ + int MULTI_LINE_COMMENT = 7; + /** RegularExpression Id. */ + int NUMBER = 8; + /** RegularExpression Id. */ + int DOUBLE = 9; + /** RegularExpression Id. */ + int TOP = 10; + /** RegularExpression Id. */ + int BOTTOM = 11; + /** RegularExpression Id. */ + int AND = 12; + /** RegularExpression Id. */ + int OR = 13; + /** RegularExpression Id. */ + int SOME = 14; + /** RegularExpression Id. */ + int ONLY = 15; + /** RegularExpression Id. */ + int NOT = 16; + /** RegularExpression Id. */ + int GE = 17; + /** RegularExpression Id. */ + int LE = 18; + /** RegularExpression Id. */ + int STRING = 19; + /** RegularExpression Id. */ + int URI = 20; + + /** Lexical state. */ + int DEFAULT = 0; + + /** Literal token values. */ + String[] tokenImage = { + "<EOF>", + "\" \"", + "\"\\t\"", + "\"\\n\"", + "\"\\r\"", + "<SINGLE_LINE_COMMENT>", + "<FORMAL_COMMENT>", + "<MULTI_LINE_COMMENT>", + "<NUMBER>", + "<DOUBLE>", + "\"TOP\"", + "\"BOTTOM\"", + "\"and\"", + "\"or\"", + "\"some\"", + "\"only\"", + "\"not\"", + "\">=\"", + "\"<=\"", + "<STRING>", + "<URI>", + "\"(\"", + "\")\"", + "\".\"", + "\"value\"", + }; + +} Added: trunk/components-core/src/main/java/org/dllearner/parser/ManchesterSyntaxParserTokenManager.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/parser/ManchesterSyntaxParserTokenManager.java (rev 0) +++ trunk/components-core/src/main/java/org/dllearner/parser/ManchesterSyntaxParserTokenManager.java 2011-11-02 12:26:53 UTC (rev 3359) @@ -0,0 +1,692 @@ +/* Generated By:JavaCC: Do not edit this line. ManchesterSyntaxParserTokenManager.java */ +package org.dllearner.parser; +import org.dllearner.core.owl.*; +import java.io.*; +import java.net.URL; + +/** Token Manager. */ +public class ManchesterSyntaxParserTokenManager implements ManchesterSyntaxParserConstants +{ + + /** Debug output. */ + public java.io.PrintStream debugStream = System.out; + /** Set debug output. */ + public void setDebugStream(java.io.PrintStream ds) { debugStream = ds; } +private final int jjStopStringLiteralDfa_0(int pos, long active0) +{ + switch (pos) + { + case 0: + if ((active0 & 0x40000L) != 0L) + return 31; + return -1; + case 1: + if ((active0 & 0x40000L) != 0L) + return 31; + return -1; + default : + return -1; + } +} +private final int jjStartNfa_0(int pos, long active0) +{ + return jjMoveNfa_0(jjStopStringLiteralDfa_0(pos, active0), pos + 1); +} +private int jjStopAtPos(int pos, int kind) +{ + jjmatchedKind = kind; + jjmatchedPos = pos; + return pos + 1; +} +private int jjMoveStringLiteralDfa0_0() +{ + switch(curChar) + { + case 40: + return jjStopAtPos(0, 21); + case 41: + return jjStopAtPos(0, 22); + case 46: + return jjStopAtPos(0, 23); + case 60: + return jjMoveStringLiteralDfa1_0(0x40000L); + case 62: + return jjMoveStringLiteralDfa1_0(0x20000L); + case 66: + return jjMoveStringLiteralDfa1_0(0x800L); + case 84: + return jjMoveStringLiteralDfa1_0(0x400L); + case 97: + return jjMoveStringLiteralDfa1_0(0x1000L); + case 110: + return jjMoveStringLiteralDfa1_0(0x10000L); + case 111: + return jjMoveStringLiteralDfa1_0(0xa000L); + case 115: + return jjMoveStringLiteralDfa1_0(0x4000L); + case 118: + return jjMoveStringLiteralDfa1_0(0x1000000L); + default : + return jjMoveNfa_0(0, 0); + } +} +private int jjMoveStringLiteralDfa1_0(long active0) +{ + try { curChar = input_stream.readChar(); } + catch(java.io.IOException e) { + jjStopStringLiteralDfa_0(0, active0); + return 1; + } + switch(curChar) + { + case 61: + if ((active0 & 0x20000L) != 0L) + return jjStopAtPos(1, 17); + else if ((active0 & 0x40000L) != 0L) + return jjStartNfaWithStates_0(1, 18, 31); + break; + case 79: + return jjMoveStringLiteralDfa2_0(active0, 0xc00L); + case 97: + return jjMoveStringLiteralDfa2_0(active0, 0x1000000L); + case 110: + return jjMoveStringLiteralDfa2_0(active0, 0x9000L); + case 111: + return jjMoveStringLiteralDfa2_0(active0, 0x14000L); + case 114: + if ((active0 & 0x2000L) != 0L) + return jjStopAtPos(1, 13); + break; + default : + break; + } + return jjStartNfa_0(0, active0); +} +private int jjMoveStringLiteralDfa2_0(long old0, long active0) +{ + if (((active0 &= old0)) == 0L) + return jjStartNfa_0(0, old0); + try { curChar = input_stream.readChar(); } + catch(java.io.IOException e) { + jjStopStringLiteralDfa_0(1, active0); + return 2; + } + switch(curChar) + { + case 80: + if ((active0 & 0x400L) != 0L) + return jjStopAtPos(2, 10); + break; + case 84: + return jjMoveStringLiteralDfa3_0(active0, 0x800L); + case 100: + if ((active0 & 0x1000L) != 0L) + return jjStopAtPos(2, 12); + break; + case 108: + return jjMoveStringLiteralDfa3_0(active0, 0x1008000L); + case 109: + return jjMoveStringLiteralDfa3_0(active0, 0x4000L); + case 116: + if ((active0 & 0x10000L) != 0L) + return jjStopAtPos(2, 16); + break; + default : + break; + } + return jjStartNfa_0(1, active0); +} +private int jjMoveStringLiteralDfa3_0(long old0, long active0) +{ + if (((active0 &= old0)) == 0L) + return jjStartNfa_0(1, old0); + try { curChar = input_stream.readChar(); } + catch(java.io.IOException e) { + jjStopStringLiteralDfa_0(2, active0); + return 3; + } + switch(curChar) + { + case 84: + return jjMoveStringLiteralDfa4_0(active0, 0x800L); + case 101: + if ((active0 & 0x4000L) != 0L) + return jjStopAtPos(3, 14); + break; + case 117: + return jjMoveStringLiteralDfa4_0(active0, 0x1000000L); + case 121: + if ((active0 & 0x8000L) != 0L) + return jjStopAtPos(3, 15); + break; + default : + break; + } + return jjStartNfa_0(2, active0); +} +private int jjMoveStringLiteralDfa4_0(long old0, long active0) +{ + if (((active0 &= old0)) == 0L) + return jjStartNfa_0(2, old0); + try { curChar = input_stream.readChar(); } + catch(java.io.IOException e) { + jjStopStringLiteralDfa_0(3, active0); + return 4; + } + switch(curChar) + { + case 79: + return jjMoveStringLiteralDfa5_0(active0, 0x800L); + case 101: + if ((active0 & 0x1000000L) != 0L) + return jjStopAtPos(4, 24); + break; + default : + break; + } + return jjStartNfa_0(3, active0); +} +private int jjMoveStringLiteralDfa5_0(long old0, long active0) +{ + if (((active0 &= old0)) == 0L) + return jjStartNfa_0(3, old0); + try { curChar = input_stream.readChar(); } + catch(java.io.IOException e) { + jjStopStringLiteralDfa_0(4, active0); + return 5; + } + switch(curChar) + { + case 77: + if ((active0 & 0x800L) != 0L) + return jjStopAtPos(5, 11); + break; + default : + break; + } + return jjStartNfa_0(4, active0); +} +private int jjStartNfaWithStates_0(int pos, int kind, int state) +{ + jjmatchedKind = kind; + jjmatchedPos = pos; + try { curChar = input_stream.readChar(); } + catch(java.io.IOException e) { return pos + 1; } + return jjMoveNfa_0(state, pos + 1); +} +static final long[] jjbitVec0 = { + 0x0L, 0x0L, 0xffffffffffffffffL, 0xffffffffffffffffL +}; +private int jjMoveNfa_0(int startState, int curPos) +{ + int startsAt = 0; + jjnewStateCnt = 31; + int i = 1; + jjstateSet[0] = startState; + int kind = 0x7fffffff; + for (;;) + { + if (++jjround == 0x7fffffff) + ReInitRounds(); + if (curChar < 64) + { + long l = 1L << curChar; + do + { + switch(jjstateSet[--i]) + { + case 31: + if ((0xbfffffffffffdbffL & l) != 0L) + jjCheckNAddTwoStates(4, 5); + else if (curChar == 62) + { + if (kind > 20) + kind = 20; + } + break; + case 0: + if ((0x3fe000000000000L & l) != 0L) + { + if (kind > 8) + kind = 8; + jjCheckNAddStates(0, 2); + } + else if (curChar == 48) + { + if (kind > 8) + kind = 8; + jjCheckNAdd(28); + } + else if (curChar == 47) + jjAddStates(3, 5); + else if (curChar == 60) + jjCheckNAddTwoStates(4, 5); + else if (curChar == 34) + jjCheckNAddTwoStates(1, 2); + break; + case 1: + if ((0xfffffffbffffdbffL & l) != 0L) + jjCheckNAddTwoStates(1, 2); + break; + case 2: + if (curChar == 34 && kind > 19) + kind = 19; + break; + case 3: + if (curChar == 60) + jjCheckNAddTwoStates(4, 5); + break; + case 4: + if ((0xbfffffffffffdbffL & l) != 0L) + jjCheckNAddTwoStates(4, 5); + break; + case 5: + if (curChar == 62 && kind > 20) + kind = 20; + break; + case 6: + if (curChar == 47) + jjAddStates(3, 5); + break; + case 7: + if (curChar == 47) + jjCheckNAddStates(6, 8); + break; + case 8: + if ((0xffffffffffffdbffL & l) != 0L) + jjCheckNAddStates(6, 8); + break; + case 9: + if ((0x2400L & l) != 0L && kind > 5) + kind = 5; + break; + case 10: + if (curChar == 10 && kind > 5) + kind = 5; + break; + case 11: + if (curChar == 13) + jjstateSet[jjnewStateCnt++] = 10; + break; + case 12: + if (curChar == 42) + jjCheckNAddTwoStates(13, 14); + break; + case 13: + if ((0xfffffbffffffffffL & l) != 0L) + jjCheckNAddTwoStates(13, 14); + break; + case 14: + if (curChar == 42) + jjCheckNAddStates(9, 11); + break; + case 15: + if ((0xffff7bffffffffffL & l) != 0L) + jjCheckNAddTwoStates(16, 14); + break; + case 16: + if ((0xfffffbffffffffffL & l) != 0L) + jjCheckNAddTwoStates(16, 14); + break; + case 17: + if (curChar == 47 && kind > 6) + kind = 6; + break; + case 18: + if (curChar == 42) + jjstateSet[jjnewStateCnt++] = 12; + break; + case 19: + if (curChar == 42) + jjCheckNAddTwoStates(20, 21); + break; + case 20: + if ((0xfffffbffffffffffL & l) != 0L) + jjCheckNAddTwoStates(20, 21); + break; + case 21: + if (curChar == 42) + jjCheckNAddStates(12, 14); + break; + case 22: + if ((0xffff7bffffffffffL & l) != 0L) + jjCheckNAddTwoStates(23, 21); + break; + case 23: + if ((0xfffffbffffffffffL & l) != 0L) + jjCheckNAddTwoStates(23, 21); + break; + case 24: + if (curChar == 47 && kind > 7) + kind = 7; + break; + case 25: + if ((0x3fe000000000000L & l) == 0L) + break; + if (kind > 8) + kind = 8; + jjCheckNAddStates(0, 2); + break; + case 26: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 8) + kind = 8; + jjCheckNAdd(26); + break; + case 27: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddTwoStates(27, 28); + break; + case 28: + if (curChar != 46) + break; + if (kind > 9) + kind = 9; + jjCheckNAdd(29); + break; + case 29: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 9) + kind = 9; + jjCheckNAdd(29); + break; + case 30: + if (curChar != 48) + break; + if (kind > 8) + kind = 8; + jjCheckNAdd(28); + break; + default : break; + } + } while(i != startsAt); + } + else if (curChar < 128) + { + long l = 1L << (curChar & 077); + do + { + switch(jjstateSet[--i]) + { + case 31: + case 4: + if ((0xffffffffefffffffL & l) != 0L) + jjCheckNAddTwoStates(4, 5); + break; + case 1: + if ((0xffffffffefffffffL & l) != 0L) + jjAddStates(15, 16); + break; + case 8: + jjAddStates(6, 8); + break; + case 13: + jjCheckNAddTwoStates(13, 14); + break; + case 15: + case 16: + jjCheckNAddTwoStates(16, 14); + break; + case 20: + jjCheckNAddTwoStates(20, 21); + break; + case 22: + case 23: + jjCheckNAddTwoStates(23, 21); + break; + default : break; + } + } while(i != startsAt); + } + else + { + int i2 = (curChar & 0xff) >> 6; + long l2 = 1L << (curChar & 077); + do + { + switch(jjstateSet[--i]) + { + case 31: + case 4: + if ((jjbitVec0[i2] & l2) != 0L) + jjCheckNAddTwoStates(4, 5); + break; + case 1: + if ((jjbitVec0[i2] & l2) != 0L) + jjAddStates(15, 16); + break; + case 8: + if ((jjbitVec0[i2] & l2) != 0L) + jjAddStates(6, 8); + break; + case 13: + if ((jjbitVec0[i2] & l2) != 0L) + jjCheckNAddTwoStates(13, 14); + break; + case 15: + case 16: + if ((jjbitVec0[i2] & l2) != 0L) + jjCheckNAddTwoStates(16, 14); + break; + case 20: + if ((jjbitVec0[i2] & l2) != 0L) + jjCheckNAddTwoStates(20, 21); + break; + case 22: + case 23: + if ((jjbitVec0[i2] & l2) != 0L) + jjCheckNAddTwoStates(23, 21); + break; + default : break; + } + } while(i != startsAt); + } + if (kind != 0x7fffffff) + { + jjmatchedKind = kind; + jjmatchedPos = curPos; + kind = 0x7fffffff; + } + ++curPos; + if ((i = jjnewStateCnt) == (startsAt = 31 - (jjnewStateCnt = startsAt))) + return curPos; + try { curChar = input_stream.readChar(); } + catch(java.io.IOException e) { return curPos; } + } +} +static final int[] jjnextStates = { + 26, 27, 28, 7, 18, 19, 8, 9, 11, 14, 15, 17, 21, 22, 24, 1, + 2, +}; + +/** Token literal values. */ +public static final String[] jjstrLiteralImages = { +"", null, null, null, null, null, null, null, null, null, "\124\117\120", +"\102\117\124\124\117\115", "\141\156\144", "\157\162", "\163\157\155\145", "\157\156\154\171", +"\156\157\164", "\76\75", "\74\75", null, null, "\50", "\51", "\56", "\166\141\154\165\145", }; + +/** Lexer state names. */ +public static final String[] lexStateNames = { + "DEFAULT", +}; +static final long[] jjtoToken = { + 0x1ffff01L, +}; +static final long[] jjtoSkip = { + 0xfeL, +}; +protected SimpleCharStream input_stream; +private final int[] jjrounds = new int[31]; +private final int[] jjstateSet = new int[62]; +protected char curChar; +/** Constructor. */ +public ManchesterSyntaxParserTokenManager(SimpleCharStream stream){ + if (SimpleCharStream.staticFlag) + throw new Error("ERROR: Cannot use a static CharStream class with a non-static lexical analyzer."); + input_stream = stream; +} + +/** Constructor. */ +public ManchesterSyntaxParserTokenManager(SimpleCharStream stream, int lexState){ + this(stream); + SwitchTo(lexState); +} + +/** Reinitialise parser. */ +public void ReInit(SimpleCharStream stream) +{ + jjmatchedPos = jjnewStateCnt = 0; + curLexState = defaultLexState; + input_stream = stream; + ReInitRounds(); +} +private void ReInitRounds() +{ + int i; + jjround = 0x80000001; + for (i = 31; i-- > 0;) + jjrounds[i] = 0x80000000; +} + +/** Reinitialise parser. */ +public void ReInit(SimpleCharStream stream, int lexState) +{ + ReInit(stream); + SwitchTo(lexState); +} + +/** Switch to specified lex state. */ +public void SwitchTo(int lexState) +{ + if (lexState >= 1 || lexState < 0) + throw new TokenMgrError("Error: Ignoring invalid lexical state : " + lexState + ". State unchanged.", TokenMgrError.INVALID_LEXICAL_STATE); + else + curLexState = lexState; +} + +protected Token jjFillToken() +{ + final Token t; + final String curTokenImage; + final int beginLine; + final int endLine; + final int beginColumn; + final int endColumn; + String im = jjstrLiteralImages[jjmatchedKind]; + curTokenImage = (im == null) ? input_stream.GetImage() : im; + beginLine = input_stream.getBeginLine(); + beginColumn = input_stream.getBeginColumn(); + endLine = input_stream.getEndLine(); + endColumn = input_stream.getEndColumn(); + t = Token.newToken(jjmatchedKind, curTokenImage); + + t.beginLine = beginLine; + t.endLine = endLine; + t.beginColumn = beginColumn; + t.endColumn = endColumn; + + return t; +} + +int curLexState = 0; +int defaultLexState = 0; +int jjnewStateCnt; +int jjround; +int jjmatchedPos; +int jjmatchedKind; + +/** Get the next Token. */ +public Token getNextToken() +{ + Token matchedToken; + int curPos = 0; + + EOFLoop : + for (;;) + { + try + { + curChar = input_stream.BeginToken(); + } + catch(java.io.IOException e) + { + jjmatchedKind = 0; + matchedToken = jjFillToken(); + return matchedToken; + } + + try { input_stream.backup(0); + while (curChar <= 32 && (0x100002600L & (1L << curChar)) != 0L) + curChar = input_stream.BeginToken(); + } + catch (java.io.IOException e1) { continue EOFLoop; } + jjmatchedKind = 0x7fffffff; + jjmatchedPos = 0; + curPos = jjMoveStringLiteralDfa0_0(); + if (jjmatchedKind != 0x7fffffff) + { + if (jjmatchedPos + 1 < curPos) + input_stream.backup(curPos - jjmatchedPos - 1); + if ((jjtoToken[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 077))) != 0L) + { + matchedToken = jjFillToken(); + return matchedToken; + } + else + { + continue EOFLoop; + } + } + int error_line = input_stream.getEndLine(); + int error_column = input_stream.getEndColumn(); + String error_after = null; + boolean EOFSeen = false; + try { input_stream.readChar(); input_stream.backup(1); } + catch (java.io.IOException e1) { + EOFSeen = true; + error_after = curPos <= 1 ? "" : input_stream.GetImage(); + if (curChar == '\n' || curChar == '\r') { + error_line++; + error_column = 0; + } + else + error_column++; + } + if (!EOFSeen) { + input_stream.backup(1); + error_after = curPos <= 1 ? "" : input_stream.GetImage(); + } + throw new TokenMgrError(EOFSeen, curLexState, error_line, error_column, error_after, curChar, TokenMgrError.LEXICAL_ERROR); + } +} + +private void jjCheckNAdd(int state) +{ + if (jjrounds[state] != jjround) + { + jjstateSet[jjnewStateCnt++] = state; + jjrounds[state] = jjround; + } +} +private void jjAddStates(int start, int end) +{ + do { + jjstateSet[jjnewStateCnt++] = jjnextStates[start]; + } while (start++ != end); +} +private void jjCheckNAddTwoStates(int state1, int state2) +{ + jjCheckNAdd(state1); + jjCheckNAdd(state2); +} + +private void jjCheckNAddStates(int start, int end) +{ + do { + jjCheckNAdd(jjnextStates[start]); + } while (start++ != end); +} + +} Added: trunk/components-core/src/main/java/org/dllearner/parser/manchester.jj =================================================================== --- trunk/components-core/src/main/java/org/dllearner/parser/manchester.jj (rev 0) +++ trunk/components-core/src/main/java/org/dllearner/parser/manchester.jj 2011-11-02 12:26:53 UTC (rev 3359) @@ -0,0 +1,159 @@ +/** + * Copyright (C) 2011, 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/>. + * + */ + +options { + JDK_VERSION = "1.5"; + STATIC = false; +} + +PARSER_BEGIN(ManchesterSyntaxParser) +package org.dllearner.parser; + +import org.dllearner.core.owl.*; +import java.io.*; +import java.net.URL; + +public class ManchesterSyntaxParser { + + public static Description parseClassExpression(String classExpression) throws ParseException { + ManchesterSyntaxParser parser = new ManchesterSyntaxParser(new StringReader(classExpression)); + return parser.ClassExpression(); + } + +} +PARSER_END(ManchesterSyntaxParser) + +SKIP : +{ + " " +| "\t" +| "\n" +| "\r" +| <SINGLE_LINE_COMMENT: "//" (~["\n","\r"])* ("\n"|"\r"|"\r\n")> +| <FORMAL_COMMENT: "/**" (~["*"])* "*" ("*" | (~["*","/"] (~["*"])* "*"))* "/"> +| <MULTI_LINE_COMMENT: "/*" (~["*"])* "*" ("*" | (~["*","/"] (~["*"])* "*"))* "/"> +} + +TOKEN : +{ + < NUMBER: (["1"-"9"] (["0"-"9"])* | "0") > + | < DOUBLE: (["1"-"9"] (["0"-"9"])* | "0") "." (["0"-"9"])* > + | < TOP: "TOP" > + | < BOTTOM: "BOTTOM" > + | < AND: "and" > + | < OR: "or" > + | < SOME: "some" > + | < ONLY: "only" > + | < NOT: "not" > + | < GE: ">=" > + | < LE: "<=" > + | < STRING: "\"" (~["\"","\\","\n","\r"])* "\"" > + | < URI: "<" (~[">","\\","\n","\r"])* ">" > +} + +Description ClassExpression() : +{ + Description c,c1,c2; + String s,s1,s2; + int i; +} +{ + <TOP> {return new Thing();} + | <BOTTOM> {return new Nothing();} + // parse until next AND or OR + | LOOKAHEAD( "(" ClassExpression() <AND>) + "(" c1=ClassExpression() <AND> c2=ClassExpression() ")" + {return new Intersection(c1,c2);} + | LOOKAHEAD( "(" ClassExpression() <OR>) + "(" c1=ClassExpression() <OR> c2=ClassExpression() ")" + {return new Union(c1,c2);} + | LOOKAHEAD( URI() <SOME>) + s=URI() <SOME> c=ClassExpression() + {return new ObjectSomeRestriction(new ObjectProperty(s),c); } + | LOOKAHEAD( URI() <ONLY>) + s=URI() <ONLY> c=ClassExpression() + {return new ObjectAllRestriction(new ObjectProperty(s),c); } + | <NOT> c=ClassExpression() + {return new Negation(c); } + | <GE> i=Integer() s=URI() "." c=ClassExpression() + {return new ObjectMinCardinalityRestriction(i,new ObjectProperty(s),c);} + | <LE> i=Integer() s=URI() "." c=ClassExpression() + {return new ObjectMaxCardinalityRestriction(i,new ObjectProperty(s),c);} + | LOOKAHEAD(4) + "(" s1=URI() "value" s2=URI() ")" + { return new ObjectValueRestriction(new ObjectProperty(s1), new Individual(s2)); } + | LOOKAHEAD(4) + "(" s1=URI() "value" s2=String() ")" + { return new StringValueRestriction(new DatatypeProperty(s1), s2); } + // if none of the other cases matches, it is just a named class + | s = URI() {return new NamedClass(s);} +} + +double Double() : +{ + Token t; +} +{ + t=<DOUBLE> + { + return new Double(t.image); + } +} + +int Integer() : +{ + Token t; +} +{ + t=<NUMBER> + { + return new Integer(t.image); + } +} + +String String() : +{ + Token t; + String s; +} +{ + t=<STRING> + { + // cut quotes + s = t.image; + s = s.substring(1, s.length() - 1); + return s; + } +} + +String URI() : +{ + Token t; + String s; +} +{ + t=<URI> + { + // cut "<" and ">" + s = t.image; + s = s.substring(1, s.length() - 1); + return s; + } +} \ No newline at end of file Modified: trunk/components-core/src/main/java/org/dllearner/utilities/owl/ManchesterOWLSyntaxParser.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/utilities/owl/ManchesterOWLSyntaxParser.java 2011-11-02 09:08:56 UTC (rev 3358) +++ trunk/components-core/src/main/java/org/dllearner/utilities/owl/ManchesterOWLSyntaxParser.java 2011-11-02 12:26:53 UTC (rev 3359) @@ -22,6 +22,8 @@ import org.coode.owlapi.manchesterowlsyntax.ManchesterOWLSyntaxEditorParser; import org.dllearner.core.owl.Description; import org.dllearner.kb.sparql.SparqlQueryDescriptionConvertVisitor; +import org.dllearner.parser.ManchesterSyntaxParser; +import org.dllearner.parser.ParseException; import org.semanticweb.owlapi.apibinding.OWLManager; import org.semanticweb.owlapi.expression.ParserException; import org.semanticweb.owlapi.model.OWLClassExpression; @@ -42,14 +44,16 @@ return parser.parseClassExpression(); } - public static Description getDescription(String manchesterSyntaxDescription) throws ParserException { - OWLClassExpression d = getOWLAPIDescription(manchesterSyntaxDescription); - return DLLearnerDescriptionConvertVisitor.getDLLearnerDescription(d); + public static Description getDescription(String manchesterSyntaxDescription) throws ParseException { +// OWLClassExpression d = getOWLAPIDescription(manchesterSyntaxDescription); +// return DLLearnerDescriptionConvertVisitor.getDLLearnerDescription(d); + return ManchesterSyntaxParser.parseClassExpression(manchesterSyntaxDescription); } + - public static void main(String args[]) throws ParserException { - Description d = ManchesterOWLSyntaxParser.getDescription("hasP SOME A"); - SparqlQueryDescriptionConvertVisitor.getSparqlQuery(d, 10, false, false); - } +// public static void main(String args[]) throws ParserException { +// Description d = ManchesterOWLSyntaxParser.getDescription("hasP SOME A"); +// SparqlQueryDescriptionConvertVisitor.getSparqlQuery(d, 10, false, false); +// } } Modified: trunk/components-core/src/test/java/org/dllearner/test/junit/OWLAPITests.java =================================================================== --- trunk/components-core/src/test/java/org/dllearner/test/junit/OWLAPITests.java 2011-11-02 09:08:56 UTC (rev 3358) +++ trunk/components-core/src/test/java/org/dllearner/test/junit/OWLAPITests.java 2011-11-02 12:26:53 UTC (rev 3359) @@ -20,9 +20,9 @@ package org.dllearner.test.junit; import org.dllearner.core.owl.Description; +import org.dllearner.parser.ParseException; import org.dllearner.utilities.owl.ManchesterOWLSyntaxParser; import org.junit.Test; -import org.semanticweb.owlapi.expression.ParserException; /** * @@ -34,7 +34,7 @@ public class OWLAPITests { @Test - public void testManchesterSyntaxParser() throws ParserException { + public void testManchesterSyntaxParser() throws ParseException { // String s = "BIGPROP SOME smallclass"; // String s = "<http://test.de/prop> some <http://test.de/Class>"; String s = "<http://test.de/Class>"; Modified: trunk/components-core/src/test/java/org/dllearner/test/junit/ParserTests.java =================================================================== --- trunk/components-core/src/test/java/org/dllearner/test/junit/ParserTests.java 2011-11-02 09:08:56 UTC (rev 3358) +++ trunk/components-core/src/test/java/org/dllearner/test/junit/ParserTests.java 2011-11-02 12:26:53 UTC (rev 3359) @@ -24,6 +24,7 @@ import org.dllearner.core.owl.Description; import org.dllearner.kb.sparql.SparqlQueryDescriptionConvertVisitor; import org.dllearner.parser.KBParser; +import org.dllearner.parser.ManchesterSyntaxParser; import org.dllearner.parser.ParseException; import org.junit.Test; @@ -47,6 +48,36 @@ } @Test + public void ManchesterParserTest() throws ParseException { + String[] tests = new String[] { + // simple URI + "<http://example.com/foo>", + // existential restriction + "<http://example.com/prop> some <http://example.com/class>", + // universal restriction + "<http://example.com/prop> only <http://example.com/class>", + // intersection + "(<http://example.com/class1> and <http://example.com/class2>)", + // disjunction + "(<http://example.com/class1> or <http://example.com/class2>)", + // has value + "(<http://example.com/prop> value <http://example.com/ind>)", + // has value with string + "(<http://example.com/prop> value \"string\")", + // nested expression + "<http://example.com/prop> some (<http://example.com/class1> and <http://example.com/class2>)", + }; + + // loop through all test cases + for(String test : tests) { + System.out.print(test + " --> "); + Description d = ManchesterSyntaxParser.parseClassExpression(test); + System.out.println(d.toManchesterSyntaxString(null, null)); + } + + } + + @Test public void ParseAndSPARQLConvertTest() throws ParseException { // add your test strings here (do not use prefixes) String[] kbArray = new String[] { Modified: trunk/examples/father.conf =================================================================== --- trunk/examples/father.conf 2011-11-02 09:08:56 UTC (rev 3358) +++ trunk/examples/father.conf 2011-11-02 12:26:53 UTC (rev 3359) @@ -25,4 +25,3 @@ // create learning algorithm to run alg.type = "ocel" - This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |