diff --git a/CompilerGeneration.jrag b/CompilerGeneration.jrag index a155ba6933c363acb94226f42710ffcb4be39c61..de75849cdcff24775329b20d6cddda5fad51c2f0 100644 --- a/CompilerGeneration.jrag +++ b/CompilerGeneration.jrag @@ -102,8 +102,8 @@ aspect AbsGrammarGeneration { // Thing is handled explicitly return; } - System.out.println(name()); - dumpTree(" ",System.out); + // System.out.println(name()); + // dumpTree(" ",System.out); pStream.print(name()); pStream.print(" : "+getSuperClass().name()); pStream.print(" ::="); @@ -120,17 +120,25 @@ aspect AbsGrammarGeneration { void OwlProperty.genAbsGrammarEntry(PrintStream pStream) { pStream.print(name()); - pStream.print(":Thing"); -// if (allValuesFrom()) { - pStream.print("*"); + pStream.print(":"+range().type()+"*"); +// pStream.print(":Thing"); +// // if (allValuesFrom()) { +// pStream.print("*"); // } } + void OwlDatatypeProperty.genAbsGrammarEntry(PrintStream pStream) { + pStream.print("<"+name()); + pStream.print(":String>"); + // pStream.print(":"+range().type()+"*"); + } + void Element.genAbsGrammarEntry(PrintStream pStream) {} void ObjectPropertyDomain.genAbsGrammarEntry(PrintStream pStream) { pStream.print(objectProperty().name()); - pStream.print(":Thing*"); + pStream.print(domain().name()+"*"); + // pStream.print(":Thing*"); } void DataPropertyDomain.genAbsGrammarEntry(PrintStream pStream) { diff --git a/Names.jrag b/Names.jrag index c5b6a402566c59d8073c568312656f4a0f16d865..93bd45ea582bb119b96b621c71721e85dee46a6d 100644 --- a/Names.jrag +++ b/Names.jrag @@ -23,6 +23,7 @@ aspect Names { syn String Element.name() = ""; eq OClass.name() = getId(); eq OwlProperty.name() = getId(); + eq RdfsDomain.name() = getId(); eq OwlRestriction.name() = getRestrictionClassId(); eq Declaration.name() = getElement(0).name(); eq Clazz.name() = iri().trim(); diff --git a/Rewrites.jrag b/Rewrites.jrag index 3bbd2aa7ffd6491000325a804977d935a8781444..f15cbb9c46f6ed234408d1f398f5465b571c280f 100644 --- a/Rewrites.jrag +++ b/Rewrites.jrag @@ -51,6 +51,9 @@ aspect MiscUtilities { if (s.indexOf('#') > -1) { s = s.substring(s.indexOf('#')+1,s.length()).trim(); } + if (s.indexOf(';') > -1) { + s = s.substring(s.indexOf(';')+1,s.length()).trim(); + } if (s.equals("string")) { s = "String"; } @@ -172,6 +175,11 @@ aspect MiscUtilities { return "_Unknown_"; } + // eq RdfsDomain.getId() { + // System.out.println(((OwlClassUse) getElement(0)).getId()); + // return ((OwlClassUse)getElement(0)).getId(); + // } + syn lazy String Element.type() = null; eq RdfsRange.type() { @@ -190,7 +198,7 @@ aspect MiscUtilities { } // Fall through. Could not find Id, so let's return something // well known - return "_Unknown_"; + return "Thing"; } eq OwlDataRange.type() { @@ -231,7 +239,6 @@ aspect MiscUtilities { } syn boolean Declaration.isClassDecl() { - dumpTree(" ",System.out); return getElement(0).isClass(); } eq OwlClassDecl.isClassDecl() = true; diff --git a/Types.jrag b/Types.jrag index 9084961f07102a348b41cbac813caa8e272cf70c..443204c1dbf608358b06d4d1366bdcec07989b38 100644 --- a/Types.jrag +++ b/Types.jrag @@ -340,15 +340,56 @@ aspect Properties { return false; } + syn lazy RdfsDomain Element.domain() = null; + + eq OwlObjectProperty.domain() { + for (int i=0; i<getNumElement(); i++) { + // getElement(i).dumpTree("",System.out); + // System.out.println("Checking "+getElement(i)); + if (getElement(i) instanceof RdfsDomain) { + // System.out.println("Yes"); + return (RdfsDomain) getElement(i); + } + } + return null; + } + eq OwlFunctionalProperty.domain() { + for (int i=0; i<getNumElement(); i++) { + if (getElement(i) instanceof RdfsDomain) { + return (RdfsDomain) getElement(i); + } + } + return null; + } + eq OwlDatatypeProperty.domain() { + for (int i=0; i<getNumElement(); i++) { + if (getElement(i) instanceof RdfsDomain) { + return (RdfsDomain) getElement(i); + } + } + return null; + } + syn lazy RdfsRange Element.range() = null; + eq OwlProperty.range() { + for (int i=0; i<getNumElement(); i++) { + if (getElement(i) instanceof RdfsRange) { + return (RdfsRange) getElement(i); + } + } + // Default to Thing + System.out.println("* Default range to Thing"); + return new RdfsRange(new List().add(new RdfResource(new Value("Thing"))),new List()); + } eq OwlObjectProperty.range() { for (int i=0; i<getNumElement(); i++) { if (getElement(i) instanceof RdfsRange) { return (RdfsRange) getElement(i); } } - return null; + // Default to Thing + return new RdfsRange(new List().add(new RdfResource(new Value("Thing"))),new List()); } eq OwlFunctionalProperty.range() { for (int i=0; i<getNumElement(); i++) { @@ -356,7 +397,8 @@ aspect Properties { return (RdfsRange) getElement(i); } } - return null; + // return null; + return new RdfsRange(new List().add(new RdfResource(new Value("Thing"))),new List()); } eq OwlDatatypeProperty.range() { for (int i=0; i<getNumElement(); i++) { @@ -364,7 +406,8 @@ aspect Properties { return (RdfsRange) getElement(i); } } - return null; + return new RdfsRange(new List().add(new RdfResource(new Value("Thing"))),new List()); + // return null; } syn ObjectProperty ObjectPropertyDomain.objectProperty() {