From ee6481ddecc2aeb7c4e32236003c08fe7199d404 Mon Sep 17 00:00:00 2001 From: Anders Nilsson <anders.nilsson@cs.lth.se> Date: Fri, 27 Jun 2008 14:52:02 +0200 Subject: [PATCH] Some fixes --- CompilerGeneration.jrag | 41 ++++++++++++++++++++++++----- Dumper.java | 2 +- Names.jrag | 1 + Types.jrag | 58 +++++++++++++++++++++++++++++++++-------- owl.ast | 3 ++- owl.jjt | 14 ++++++++-- 6 files changed, 97 insertions(+), 22 deletions(-) diff --git a/CompilerGeneration.jrag b/CompilerGeneration.jrag index d3ab726..adabcaa 100644 --- a/CompilerGeneration.jrag +++ b/CompilerGeneration.jrag @@ -27,10 +27,10 @@ aspect AbsGrammarGeneration { pStream.println("ComplexElement : Element ::= OwlIdentifier Attribute* Element*;"); pStream.println("ValueElement : ComplexElement;"); pStream.println("RdfDeclaration : ComplexElement;"); - pStream.println("abstract SimpleElement : Element;"); - pStream.println("StringElement : SimpleElement ::= <LITERAL>;"); - pStream.println("IntElement : SimpleElement ::= <LITERAL>;"); - pStream.println("FloatElement : SimpleElement ::= <LITERAL>;"); + pStream.println("abstract SimpleElement : Element ::= <LITERAL>;"); + pStream.println("StringElement : SimpleElement ::=;"); + pStream.println("IntElement : SimpleElement ::=;"); + pStream.println("FloatElement : SimpleElement ::=;"); pStream.println("ClassUse : Thing ::= /decl:Thing/;"); pStream.println("Attribute ::= Value;"); pStream.println("RdfDatatype : Attribute ::= ;"); @@ -39,8 +39,11 @@ aspect AbsGrammarGeneration { pStream.println("XmlnsProtege : Attribute ::= ;"); pStream.println("XmlnsRdf : Attribute ::= ;"); pStream.println("XmlnsXsd : Attribute ::= ;"); + pStream.println("XmlnsXsp : Attribute ::= ;"); pStream.println("XmlnsRdfs : Attribute ::= ;"); pStream.println("XmlnsOwl : Attribute ::= ;"); + pStream.println("XmlnsSwrl : Attribute ::= ;"); + pStream.println("XmlnsSwrlb : Attribute ::= ;"); pStream.println("XmlnsDaml : Attribute ::= ;"); pStream.println("XmlnsP1 : Attribute ::= ;"); pStream.println("XmlnsDc : Attribute ::= ;"); @@ -61,8 +64,29 @@ aspect AbsGrammarGeneration { pStream.print(getId()); pStream.print(" : "+getSuperClass().getId()); pStream.print(" ::="); - getOwnRestrictions().genAbsGrammar(pStream); +// getOwnRestrictions().genAbsGrammar(pStream); + getProperties().genAbsGrammar(pStream); pStream.println(";"); +// Properties p = getProperties(); +// System.out.println(getId()); +// for (int i=0; i<p.getNumProperty(); i++) { +// System.out.println(" "+((ComplexElement) p.getProperty(i)).getId()); +// } + } + + void Properties.genAbsGrammar(PrintStream pStream) { + for (int i=0; i<getNumProperty(); i++) { + pStream.print(" "); + ((OwlProperty) getProperty(i)).genAbsGrammarEntry(pStream); + } + } + + void OwlProperty.genAbsGrammarEntry(PrintStream pStream) { + pStream.print(name()); + pStream.print(":Thing"); +// if (allValuesFrom()) { + pStream.print("*"); +// } } void Restrictions.genAbsGrammar(PrintStream pStream) { @@ -158,7 +182,10 @@ aspect GenPrettyPrinter { pStream.println(" eq XmlnsProtege.id() = \"xmlns:protege\";"); pStream.println(" eq XmlnsRdf.id() = \"xmlns:rdf\";"); pStream.println(" eq XmlnsRdfs.id() = \"xmlns:rdfs\";"); + pStream.println(" eq XmlnsSwrl.id() = \"xmlns:swrl\";"); + pStream.println(" eq XmlnsSwrlb.id() = \"xmlns:swrlb\";"); pStream.println(" eq XmlnsXsd.id() = \"xmlns:xsd\";"); + pStream.println(" eq XmlnsXsp.id() = \"xmlns:xsp\";"); pStream.println(" public void Attribute.prettyPrint(String indent, PrintStream pStream) {"); pStream.println(" System.out.print(\" \"+id()+\"=\"+getValue().getSTRING_LITERAL());"); pStream.println(" }\n"); @@ -411,7 +438,7 @@ aspect ParserGen { pStream.println("import java.io.InputStreamReader;"); pStream.println("import java.io.Reader;"); pStream.println(""); - pStream.println("import AST.SiarasParser;"); + pStream.println("import AST.OWLParser;"); pStream.println("import AST.ParseException;"); pStream.println("import AST.Start;"); pStream.println(""); @@ -421,7 +448,7 @@ aspect ParserGen { pStream.println(" Reader r = getReader(args);"); pStream.println(" Start ast = null;"); pStream.println(" try {"); - pStream.println(" SiarasParser parser = new SiarasParser(r);"); + pStream.println(" OWLParser parser = new OWLParser(r);"); pStream.println(); pStream.println(" ast = parser.Start();"); pStream.println(" } catch (ParseException e) {"); diff --git a/Dumper.java b/Dumper.java index 879deac..52ee591 100644 --- a/Dumper.java +++ b/Dumper.java @@ -9,7 +9,7 @@ import AST.Start; public class Dumper extends Parser { public static void main(String args[]) { - Start ast = parse(args); + Start ast = parse(args[0]); // Dump the AST ast.dumpTree(" ", System.out); diff --git a/Names.jrag b/Names.jrag index 3d0e59a..f59d1f3 100644 --- a/Names.jrag +++ b/Names.jrag @@ -8,5 +8,6 @@ aspect Names { syn String OClass.name() = getId(); + syn String OwlProperty.name() = getId(); syn String OwlRestriction.name() = getRestrictionClassId(); } diff --git a/Types.jrag b/Types.jrag index 0ea8810..8201e00 100644 --- a/Types.jrag +++ b/Types.jrag @@ -55,17 +55,19 @@ aspect Types { syn lazy Properties OwlClassDecl.getProperties() { List l = new List(); - // getTopElement().collectProperties(l); - collectProperties(l); - return new Properties(l); - // Properties p = new Properties(); - // for (int i=0; i<l.getNumChild(); i++) { - // OwlProperty op = (OwlProperty) l.getChild(i); - // if (op.domainIncludes(this)) { - // p.addProperty(op); - // } - // } - // return p; + getTopElement().collectProperties(l); +// collectProperties(l); +// return new Properties(l); + Properties p = new Properties(); + for (int i=0; i<l.getNumChild(); i++) { + OwlProperty op = (OwlProperty) l.getChild(i); + if (op.domainIncludes(this)) { + p.addProperty(op); + } else { +// System.out.println(op); + } + } + return p; } syn lazy ArrayList OClass.getSubClasses(); @@ -172,6 +174,24 @@ aspect Properties { return false; } + boolean OwlFunctionalProperty.domainIncludes(OClass clazz) { + for (int i=0; i<getNumElement(); i++) { + if (getElement(i) instanceof RdfsDomain) { + return ((RdfsDomain) getElement(i)).domainIncludes(clazz); + } + } + return false; + } + + boolean OwlDatatypeProperty.domainIncludes(OClass clazz) { + for (int i=0; i<getNumElement(); i++) { + if (getElement(i) instanceof RdfsDomain) { + return ((RdfsDomain) getElement(i)).domainIncludes(clazz); + } + } + return false; + } + boolean RdfsDomain.domainIncludes(OClass clazz) { for (int i=0; i<getNumElement(); i++) { if (getElement(i).domainIncludes(clazz)) { @@ -212,4 +232,20 @@ aspect Properties { } return null; } + eq OwlFunctionalProperty.range() { + for (int i=0; i<getNumElement(); i++) { + if (getElement(i) instanceof RdfsRange) { + return (RdfsRange) getElement(i); + } + } + return null; + } + eq OwlDatatypeProperty.range() { + for (int i=0; i<getNumElement(); i++) { + if (getElement(i) instanceof RdfsRange) { + return (RdfsRange) getElement(i); + } + } + return null; + } } diff --git a/owl.ast b/owl.ast index 0a5feff..8524e48 100644 --- a/owl.ast +++ b/owl.ast @@ -17,6 +17,7 @@ abstract ComplexElement : Element ::= Attribute* Element*; RdfDeclaration : ComplexElement; RdfDescription : ComplexElement; RdfFirst : ComplexElement; +RdfProperty : ComplexElement; RdfRest : ComplexElement; RdfType : ComplexElement; RdfsComment : ComplexElement; @@ -30,7 +31,7 @@ OwlAllValuesFrom : OwlValuesFrom; OwlCardinality : ComplexElement; OwlClass : ComplexElement; OwlDataRange : ComplexElement; -OwlDatatypeProperty : ComplexElement; +OwlDatatypeProperty : OwlProperty; OwlDisjointWith : ComplexElement; OwlDistinctMembers: ComplexElement; OwlEquivalentClass : ComplexElement; diff --git a/owl.jjt b/owl.jjt index c9d1674..c7c19ab 100644 --- a/owl.jjt +++ b/owl.jjt @@ -95,6 +95,7 @@ SPECIAL_TOKEN : /* COMMENTS */ | < RDF_DESCRIPTION : "rdf:Description" > | < RDF_ID : "rdf:ID" > | < RDF_FIRST : "rdf:first" > + | < RDF_PROPERTY : "rdf:Property" > | < RDF_REST : "rdf:rest" > | < RDF_PARSETYPE : "rdf:parseType" > | < RDF_RESOURCE : "rdf:resource" > @@ -204,6 +205,8 @@ SPECIAL_TOKEN : /* COMMENTS */ "+", "-", ",", + "[", + "]", "." ] > @@ -235,8 +238,8 @@ SPECIAL_TOKEN : /* COMMENTS */ // | < RPAREN : ")" > < LBRACE : "{" > | < RBRACE : "}" > - | < LBRACKET : "[" > - | < RBRACKET : "]" > +// | < LBRACKET : "[" > +// | < RBRACKET : "]" > | < SEMICOLON : ";" > | < QUOTE : "\"" > // | < COMMA : "," > @@ -577,6 +580,7 @@ void RdfElement() : {} RdfType() | RdfDescription() | RdfFirst() + | RdfProperty() | RdfRest() | RdfsComment() | RdfsDomain() @@ -603,6 +607,12 @@ void RdfFirst() #RdfFirst : {} (">" ElementList() "</" <RDF_FIRST> ">" | ElementList() "/>") } +void RdfProperty() #RdfProperty : {} +{ + <RDF_PROPERTY> AttributeList() + (">" ElementList() "</" <RDF_PROPERTY> ">" | ElementList() "/>") +} + void RdfRest() #RdfRest : {} { <RDF_REST> AttributeList() -- GitLab