diff --git a/CompilerGeneration.jrag b/CompilerGeneration.jrag
index ec60320fafa02226179f5707f9834286dfb49306..314eefb600d24ff32c7541f2cfc3b3c5ef7ede64 100644
--- a/CompilerGeneration.jrag
+++ b/CompilerGeneration.jrag
@@ -18,7 +18,9 @@ aspect AbsGrammarGeneration {
 
     public void Start.genAbsGrammar(PrintStream pStream) {
 		pStream.println("// Predefined types");
-		pStream.println("Start ::= Element*;");
+		pStream.println("Start ::= Specification;");
+        pStream.println("Specification ::= XmlHeader Element*;");
+        pStream.println("XmlHeader ::=;");
 		pStream.println("abstract Thing : ComplexElement ::=;");
 		pStream.println("abstract Element;");
  		pStream.println("ComplexElement : Element ::=  OwlIdentifier Attribute* Element*;");
@@ -27,24 +29,24 @@ aspect AbsGrammarGeneration {
 		pStream.println("StringElement : SimpleElement ::= <IDENTIFIER>;");
 		pStream.println("IntElement : SimpleElement ::= <INTEGER_LITERAL>;");
 		pStream.println("FloatElement : SimpleElement ::= <FLOAT_LITERAL>;");
-		pStream.println("ClassUse : Thing  ::= /decl:Thing/;");
+// 		pStream.println("ClassUse : Thing  ::= /decl:Thing/;");
 		pStream.println("Attribute ::= Value;");
-		pStream.println("RdfDatatype : Attribute ::= ;");
-		pStream.println("RdfId : Attribute ::= ;");
-		pStream.println("Xmlns : Attribute ::= ;");
-		pStream.println("XmlnsProtege : Attribute ::= ;");
-		pStream.println("XmlnsRdf : Attribute ::= ;");
-		pStream.println("XmlnsXsd : Attribute ::= ;");
-		pStream.println("XmlnsRdfs : Attribute ::= ;");
-		pStream.println("XmlnsOwl : Attribute ::= ;");
-		pStream.println("XmlnsDaml : Attribute ::= ;");
-		pStream.println("XmlnsP1 : Attribute ::= ;");
-		pStream.println("XmlnsDc : Attribute ::= ;");
-		pStream.println("XmlBase : Attribute ::= ;");
-		pStream.println("RdfResource : Attribute ::= ;");
-		pStream.println("RdfAbout : Attribute ::= ;");
-		pStream.println("RdfParseType : Attribute ::= ;");
-		pStream.println("Version : Attribute ::= ;");
+// 		pStream.println("RdfDatatype : Attribute ::= ;");
+// 		pStream.println("RdfId : Attribute ::= ;");
+// 		pStream.println("Xmlns : Attribute ::= ;");
+// 		pStream.println("XmlnsProtege : Attribute ::= ;");
+// 		pStream.println("XmlnsRdf : Attribute ::= ;");
+// 		pStream.println("XmlnsXsd : Attribute ::= ;");
+// 		pStream.println("XmlnsRdfs : Attribute ::= ;");
+// 		pStream.println("XmlnsOwl : Attribute ::= ;");
+// 		pStream.println("XmlnsDaml : Attribute ::= ;");
+// 		pStream.println("XmlnsP1 : Attribute ::= ;");
+// 		pStream.println("XmlnsDc : Attribute ::= ;");
+// 		pStream.println("XmlBase : Attribute ::= ;");
+// 		pStream.println("RdfResource : Attribute ::= ;");
+// 		pStream.println("RdfAbout : Attribute ::= ;");
+// 		pStream.println("RdfParseType : Attribute ::= ;");
+// 		pStream.println("Version : Attribute ::= ;");
 		pStream.println("Value ::= <STRING_LITERAL>;");
 		pStream.println("OwlIdentifier ::= <IDENTIFIER>;");
 		pStream.println("AttrValue ::= <STRING_LITERAL>;");
@@ -64,8 +66,59 @@ aspect GenJavaCC {
 	}
 
 	public void Start.genJavaCC(PrintStream pStream) {
-
+        genJavaCCHeader(pStream);
+        genJavaCCLiterals(pStream);
+        genJavaCCIdentifiers(pStream);
+        genJavaCCSeparators(pStream);
+        genJavaCCOperators(pStream);
+        pStream.println("Start Start() #Start : {}");
+        pStream.println("{");
+        pStream.println("  Specification()");
+        pStream.println("  { return jjThis; }");
+        pStream.println("}");
+        pStream.println();
+        pStream.println("void Specification() #Specification : {}");
+        pStream.println("{");
+        pStream.println("  XmlHeader()");
+        pStream.println("  ElementList()");
+        pStream.println("}");
+        pStream.println();
+        pStream.println("void XmlHeader() #XmlHeader : {}");
+        pStream.println("{");
+        pStream.println("  \"<?\" <XML> AttributeList() \"?>\"");
+        pStream.println("}");
+        pStream.println();
+        pStream.println("void ElementList() #List : {}");
+        pStream.println("{");
+        pStream.println("  (Element())*");
+        pStream.println("}");
+        pStream.println();
+        pStream.println("void AttributeList() #List : {}");
+        pStream.println("{");
+        pStream.println("  (Attribute())*");
+        pStream.println("}");
+        pStream.println();
+        pStream.println("void Element()  : {}");
+        pStream.println("{");
+        pStream.println("  ");
+        pStream.println("}");
+        pStream.println();
+        pStream.println("void Attribute()  : {}");
+        pStream.println("{");
+        pStream.println("  ");
+        pStream.println("}");
 	}
+
+    void XsElement.genJavaCC(PrintStream pStream) {
+        String name = getName();
+        pStream.println("void "+name+"() #"+name+" : {}");
+        pStream.println("{");
+        pStream.println("  \"<\" <"+name.toUpperCase()+"> AttributeList() \">\"");
+        pStream.println("  ElementList()");
+        pStream.println("  \"</\" <"+name.toUpperCase()+">  \">\"");
+        pStream.println("}");
+    }
+
 }
 
 // aspect GenAspects {
diff --git a/JavaCCChunks.jrag b/JavaCCChunks.jrag
index 1031131a7b007f1f23420d4a4e7b291ec137ed00..23fb7323c9935437b8c07b0025a3ba644347b740 100644
--- a/JavaCCChunks.jrag
+++ b/JavaCCChunks.jrag
@@ -18,11 +18,11 @@ aspect JavaCCChunks {
 		pStream.println("    STATIC                      = false;");
 		pStream.println("} ");
 		pStream.println();
-		pStream.println("PARSER_BEGIN(SiarasParser)");
+		pStream.println("PARSER_BEGIN(XmlParser)");
 		pStream.println("    package AST;");
-		pStream.println("    public class SiarasParser {");
+		pStream.println("    public class XmlParser {");
 		pStream.println("}");
-		pStream.println("PARSER_END(SiarasParser)");
+		pStream.println("PARSER_END(XmlParser)");
 		pStream.println();
 		pStream.println("//----------------------------------------------//");
 		pStream.println("//                LEXICAL TOKENS                //");
@@ -43,7 +43,6 @@ aspect JavaCCChunks {
 		pStream.println("SPECIAL_TOKEN : /* COMMENTS */ ");
 		pStream.println("{");
 		pStream.println("    < \"<!--\" ( ~[\"-\"] | ( \"-\" ~[\"-\"] ) )* \"-->\">");
-		pStream.println("  | < \"<rdfs:comment\" ( ~[\"<\"] | ( \"<\" ~[\"/\"] ) )* \"</rdfs:comment>\" >");
 		pStream.println("}// COMMENTS");
 		pStream.println();
 	}
diff --git a/x3d/build.xml b/x3d/build.xml
new file mode 100644
index 0000000000000000000000000000000000000000..763f39333cb363d9f4dff067c3751bfad6634cdf
--- /dev/null
+++ b/x3d/build.xml
@@ -0,0 +1,113 @@
+<!--
+    Targets for working from terminal window:
+    build (default) - generates java files and compiles them
+    clean           - removes all generated files and class files
+    Targets for working from Eclipse:
+    gen             - generates java files
+    genClean        - removes all generated files and their class files
+  -->
+<project name="OntologyCompiler" default="build" basedir=".">
+
+  <!-- "package" is the directory where generated files will be stored -->
+  <property name="package" value="AST"/>
+
+  <!-- "tools" is the directory where generators and libraries are located. -->
+  <property name="tools" value="../tools"/>
+
+  <property name="javacc.home" value="../tools/javacc-4.0"/>
+  
+  <property name="parser.name" value="Parser"/>
+  
+  <!-- "jflex" is an ant task class for the scanner generator in JFlex.jar -->
+<!--   <taskdef name="jflex" classname="JFlex.anttask.JFlexTask" classpath="tools/JFlex.jar"/> -->
+  <!-- "beaver" is an ant task class for the parser generator in beaver.jar -->
+<!--   <taskdef name="beaver" classname="beaver.comp.run.AntTask" classpath="tools/beaver.jar"/> -->
+  <!-- "jastadd" is an ant task class in jastadd2.jar -->
+  <taskdef name="jastadd" classname="jastadd.JastAddTask" classpath="../tools/jastadd2.jar"/>
+
+  <!-- compile sources -->
+  <target name="build" depends="gen">
+    <javac compiler="jikes" debug="true" nowarn="true" srcdir="." includes="**/*.java" excludes="tools/** siaras/**" classpath=".:${tools}/beaver-rt.jar:${tools}/junit.jar"/>
+  </target>
+  
+  <!-- generate compiler source files -->
+  <target name="gen" description="Generate compiler source files">
+    <!-- create AST node types and weave aspect modules -->
+    <echo message = "Running JastAdd"/>
+<!--     <jastadd package="${package}" rewrite="true" beaver="true" novisitcheck="true"> -->
+    <jastadd package="${package}" grammar="${parser.name}" rewrite="true" jjtree="true">
+      <fileset dir=".">
+	<include name="*.ast"/>
+	<include name="*.jrag"/>
+	<include name="*.jadd"/>
+      </fileset>
+    </jastadd>
+    <jjtree 
+       target="x3d.jjt" 
+       outputdirectory="${package}" 
+       javacchome="${javacc.home}"
+       buildnodefiles="true"
+       static="false"
+       multi="true"
+       visitor="true"
+       nodedefaultvoid="true"
+       nodeprefix='""'
+       nodepackage="${package}"
+       />
+    <javacc
+       target="${package}/x3d.jj"
+       outputdirectory="${package}"
+       javacchome="${javacc.home}"
+       buildparser="true"
+       buildtokenmanager="true"
+       static="false"
+       />
+
+    <!-- generate the scanner -->
+<!--     <echo message = "Running jflex"/> -->
+<!--     <jflex file="parser/java14.flex" outdir="parser" nobak="yes"/> -->
+    <!-- generate the scanner -->
+<!--     <jflex file="parser/unicode.flex" outdir="parser" nobak="yes"/> -->
+    <!-- generate the parser phase 1, create a full .lalr specification from fragments-->
+<!--     <echo message = "Running parser phase 1"/> -->
+<!--     <concat destfile="parser/JavaParser.all" binary="true"> -->
+<!--       <fileset dir="."> -->
+<!-- 	<include name="parser/java14.parser"/> -->
+<!--       </fileset> -->
+<!--     </concat> -->
+    <!-- generate the parser phase 2, translating .lalr to .beaver -->
+<!--     <java classpath="${tools}/proj.jar:${tools}/beaver-rt.jar" classname="Main"> -->
+<!--       <arg line="parser/JavaParser.all parser/JavaParser.beaver"/> -->
+<!--     </java> -->
+    <!-- generate the parser phase 3, translating .beaver to .java -->
+<!--     <beaver file="parser/JavaParser.beaver" terminalNames="yes" compress="no" useSwitch="yes"/> -->
+  </target>
+
+  <target name="test" depends="build">
+    <java classname="GenCompiler" classpath=".">
+      <arg value="GripperOntology_experimental3.owl" />
+    </java>
+  </target>
+
+  <!-- remove generated source files and .class files -->
+  <target name="clean" depends="cleanGen">
+    <!-- delete all .class files recursively -->
+    <delete>
+      <fileset dir="." includes="**/*.class" excludes="beaver/*.class"/>
+    </delete>
+  </target>
+
+  <target name="jar" depends="build">
+    <jar destfile="X3DCompiler.jar" basedir="." includes="**/*.class" excludes="test/**">
+      <manifest>
+	<attribute name="Main-Class" value="GenOntology"/>
+      </manifest>
+    </jar>
+  </target>
+
+  <!-- remove generated source files and their .class files -->
+  <target name="cleanGen">
+    <delete dir="${package}"/>
+  </target>
+</project>
+
diff --git a/xmlschema.jjt b/xmlschema.jjt
index 3c5076860ae5e32b4e499e1edbe49ce99e27cabf..068cc8e72685df5fe85377cabec60afd1dd21c6c 100644
--- a/xmlschema.jjt
+++ b/xmlschema.jjt
@@ -299,7 +299,7 @@ SPECIAL_TOKEN : /* COMMENTS */
 
 
 //--------------------------------------------------------------------//
-//                      THE OWL LANGUAGE GRAMMAR                     //
+//                      THE XMLSCHEMA GRAMMAR                         //
 //--------------------------------------------------------------------//
 
 Start Start() #Start : {}