diff --git a/.bzrignore b/.bzrignore
index 5ec98a1fbab419ced94b48ab801f42008f02d9df..27643b65a28943852cb72eaf98f13be2e3a4550a 100644
--- a/.bzrignore
+++ b/.bzrignore
@@ -7,4 +7,3 @@ plugins
 testontologies/ontologyV06_Jambalaya.properties
 siaras/Parser.java
 siaras/Siaras.ast
-siaras/Siaras.jjt
diff --git a/CompilerGeneration.jrag b/CompilerGeneration.jrag
index 9d931ed380127865d2daa610f6abd087fe44bc14..9ef6ae2b121e7019bb66dcfbc9205db67fe06e82 100644
--- a/CompilerGeneration.jrag
+++ b/CompilerGeneration.jrag
@@ -11,8 +11,36 @@ aspect AbsGrammarGeneration {
     }
 
     public void Start.genAbsGrammar(PrintStream pStream) {
-		pStream.println("Start ::= Device*;");
+		pStream.println("// Predefined types");
+		pStream.println("Start ::= Element*;");
 		pStream.println("abstract Thing ::=;");
+		pStream.println("abstract Element;");
+		pStream.println("ComplexElement ::= <IDENTIFIER> Attribute* Element*;");
+		pStream.println("abstract SimpleElement : Element;");
+		pStream.println("StringElement : SimpleElement ::= <IDENTIFIER>;");
+		pStream.println("IntElement : SimpleElement ::= <INTEGER_LITERAL>;");
+		pStream.println("FloatElement : SimpleElement ::= <FLOAT_LITERAL>;");
+		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("Value ::= <STRING_LITERAL>;");
+		pStream.println("AttrValue ::= <STRING_LITERAL>;");
+		pStream.println();
+		pStream.println("// Generated types");
 		super.genAbsGrammar(pStream);
     }
 
diff --git a/GenCompiler.java b/GenCompiler.java
index b6ef248dd5b7c448398eb6aded664728737af0ab..c58bc795a29b093beb53ebe67abd2a7ee1fbea5a 100644
--- a/GenCompiler.java
+++ b/GenCompiler.java
@@ -24,9 +24,9 @@ public class GenCompiler extends Parser {
 			PrintStream pStream = new PrintStream(new File(fileName));
 			ast.genAbsGrammar(pStream);
 			// Generate JavaCC configuration
-			fileName = "siaras/Siaras.jjt";
-			pStream = new PrintStream(new File(fileName));
-			ast.genJavaCC(pStream);
+// 			fileName = "siaras/Siaras.jjt";
+// 			pStream = new PrintStream(new File(fileName));
+// 			ast.genJavaCC(pStream);
 			// Generate Parser.java
 			fileName = "siaras/Parser.java";
 			pStream = new PrintStream(new File(fileName));
diff --git a/siaras/Siaras.jjt b/siaras/Siaras.jjt
new file mode 100644
index 0000000000000000000000000000000000000000..793d474ada090f9d87e7f31fdc1f63c4da400b46
--- /dev/null
+++ b/siaras/Siaras.jjt
@@ -0,0 +1,683 @@
+options {
+    MULTI                       = true;
+    VISITOR                     = true;
+    NODE_DEFAULT_VOID           = true;
+    NODE_SCOPE_HOOK             = false;
+    NODE_PREFIX                 = "";
+    JAVA_UNICODE_ESCAPE         = true;
+    STATIC                      = false;
+} // options
+
+
+PARSER_BEGIN(SiarasParser)
+package AST;
+public class SiarasParser {
+}
+PARSER_END(SiarasParser)
+
+
+//--------------------------------------------------------------------//
+//                           LEXICAL TOKENS                           //
+//--------------------------------------------------------------------//
+
+<DEFAULT, BOUNDS> SKIP : /* WHITE SPACE */
+{
+    " "
+    |
+    "\t"
+    |
+    "\n"
+    |
+    "\r"
+    |
+    "\f"
+}// WHITE SPACE
+
+
+// <DEFAULT,BOUNDS> SPECIAL_TOKEN : /* COMMENTS */
+// {
+//     <SLASH_SLASH_COMMENT :  "//" (~["\n","\r"])* >
+// }
+
+SPECIAL_TOKEN : /* COMMENTS */
+{
+//     <SLASH_STAR_COMMENT  :  "/*" (~["*"])* "*" ("*" | (~["*","/"] (~["*"])* "*"))* "/"  >
+< "<!--" ( ~["-"] | ( "-" ~["-"] ) )* "-->">
+	| < "<rdfs:comment" ( ~["<"] | ( "<" ~["/"] ) )* "</rdfs:comment>" >
+//     <XML_COMMENT  :  "<!--" (~["-","-",">"])* "-->"  >
+}// COMMENTS
+
+
+// <BOUNDS> TOKEN: {
+//     < BEGINCOMMENT : "<!--"     >
+//   | < ENDCOMMENT   : "-->"     >
+// }
+
+<DEFAULT, BOUNDS> TOKEN : /* RESERVED WORDS AND LITERALS */
+{
+//     < OWL_ALLVALUESFROM     : "owl:allValuesFrom" >
+//   | < OWL_ALLDIFFERENT      : "owl:AllDifferent" >
+//   | < OWL_CARDINALITY        : "owl:cardinality" >
+//   | < OWL_CLASS             : "owl:Class" >
+//   | < OWL_DATARANGE         : "owl:DataRange" >
+//   | < OWL_DATATYPEPROPERTY  : "owl:DatatypeProperty" >
+//   | < OWL_DISJOINTWITH      : "owl:disjointWith" >
+//   | < OWL_EQUIVALENTCLASS   : "owl:equivalentClass" >
+//   | < OWL_FUNCTIONALPROPERTY : "owl:FunctionalProperty" >
+//   | < OWL_IMPORTS            : "owl:imports" >
+//   | < OWL_INTERSECTIONOF     : "owl:intersectionOf" >
+//   | < OWL_INVERSEOF         : "owl:inverseOf" >
+//   | < OWL_MINCARDINALITY     : "owl:minCardinality" >
+//   | < OWL_OBJECTPROPERTY    : "owl:ObjectProperty" >
+//   | < OWL_ONPROPERTY        : "owl:onProperty" >
+//   | < OWL_ONEOF             : "owl:oneOf" >
+//   | < OWL_ONTOLOGY          : "owl:Ontology" >
+//   | < OWL_RESTRICTION       : "owl:Restriction" >
+//   | < OWL_SOMEVALUESFROM    : "owl:someValuesFrom" >
+//   | < OWL_UNIONOF           : "owl:unionOf" >
+//   | < RDF_RDF            : "rdf:RDF"      >
+    < RDF_ABOUT          : "rdf:about" >
+  | < RDF_DATATYPE          : "rdf:datatype" >
+  | < RDF_ID                : "rdf:ID" >
+//   | < RDF_FIRST             : "rdf:first" >
+//   | < RDF_REST              : "rdf:rest" >
+   | < RDF_PARSETYPE         : "rdf:parseType" >
+  | < RDF_RESOURCE          : "rdf:resource" >
+//   | < RDF_TYPE              : "rdf:type" >
+  | < RDFS_COMMENT          : "rdfs:comment" >
+//   | < RDFS_DOMAIN           : "rdfs:domain" >
+//   | < RDFS_RANGE            : "rdfs:range" >
+//   | < RDFS_SUBCLASSOF       : "rdfs:subClassOf" >
+//   | < RDFS_SUBPROPERTYOF     : "rdfs:subPropertyOf" >
+   | < VERSION               : "version" >
+//   | < XML                   : "xml"          >
+   | < XML_BASE              : "xml:base" >
+   | < XMLNS                 : "xmlns" >	 
+   | < XMLNS_DAML            : "xmlns:daml" >	 
+   | < XMLNS_DC              : "xmlns:dc" >	 
+   | < XMLNS_P1              : "xmlns:p1" >	 
+   | < XMLNS_PROTEGE         : "xmlns:protege" >	 
+   | < XMLNS_RDF             : "xmlns:rdf" >	 
+   | < XMLNS_XSD             : "xmlns:xsd" >	 
+   | < XMLNS_RDFS            : "xmlns:rdfs" >	 
+   | < XMLNS_OWL             : "xmlns:owl" >	 
+
+}// RESERVED WORDS AND LITERALS
+<DEFAULT, BOUNDS> TOKEN : /* LITERALS */
+{
+    < INTEGER_LITERAL:
+        <DECIMAL_LITERAL> (["l","L"])?
+        |
+        <HEX_LITERAL> (["l","L"])?
+        |
+        <OCTAL_LITERAL> (["l","L"])?
+    >
+    |
+    < #DECIMAL_LITERAL: ["1"-"9"] (["0"-"9"])* >
+    |
+    < #HEX_LITERAL: "0" ["x","X"] (["0"-"9","a"-"f","A"-"F"])+ >
+    |
+    < #OCTAL_LITERAL: "0" (["0"-"7"])* >
+    |
+    < FLOAT_LITERAL:
+        (["0"-"9"])+ "." (["0"-"9"])* (<EXPONENT>)? (["f","F","d","D"])?
+        |
+        "." (["0"-"9"])+ (<EXPONENT>)? (["f","F","d","D"])?
+        |
+        (["0"-"9"])+ <EXPONENT> (["f","F","d","D"])?
+        |
+        (["0"-"9"])+ (<EXPONENT>)? ["f","F","d","D"]
+    >
+    |
+    < #EXPONENT: ["e","E"] (["+","-"])? (["0"-"9"])+ >
+    |
+    < CHARACTER_LITERAL:
+        "'"
+        (   (~["'","\\","\n","\r"])
+            |
+            ("\\"
+                (   ["n","t","b","r","f","\\","'","\""]
+                    |
+                    ["0"-"7"] ( ["0"-"7"] )?
+                    |
+                    ["0"-"3"] ["0"-"7"] ["0"-"7"]
+                )
+            )
+        )
+        "'"
+    >
+    |
+    < STRING_LITERAL:
+        "\""
+        (   (~["\"","\\","\n","\r"])
+            |
+            ("\\"
+                (    ["n","t","b","r","f","\\","'","\""]
+                     |
+                     ["0"-"7"] ( ["0"-"7"] )?
+                     |
+                     ["0"-"3"] ["0"-"7"] ["0"-"7"]
+                )
+            )
+        )*
+        "\""
+    >
+//     |
+//     < TOKEN_LITERAL:
+//         (   (~[" ","\\","\n","\r"])
+//         )*
+//     >
+}// LITERALS
+
+<DEFAULT, BOUNDS> TOKEN : /* IDENTIFIERS */
+{
+    < IDENTIFIER: <LETTER> (<LETTER>|<DIGIT>|"-")* >
+    |
+    < #LETTER:
+        [
+        "\u0024",
+        "\u0041"-"\u005a",
+        "\u005f",
+        "\u0061"-"\u007a",
+        "\u00c0"-"\u00d6",
+        "\u00d8"-"\u00f6",
+        "\u00f8"-"\u00ff",
+        "\u0100"-"\u1fff",
+        "\u3040"-"\u318f",
+        "\u3300"-"\u337f",
+        "\u3400"-"\u3d2d",
+        "\u4e00"-"\u9fff",
+        "\uf900"-"\ufaff"
+        ]
+    >
+    |
+    < #DIGIT:
+        [
+        "\u0030"-"\u0039",
+        "\u0660"-"\u0669",
+        "\u06f0"-"\u06f9",
+        "\u0966"-"\u096f",
+        "\u09e6"-"\u09ef",
+        "\u0a66"-"\u0a6f",
+        "\u0ae6"-"\u0aef",
+        "\u0b66"-"\u0b6f",
+        "\u0be7"-"\u0bef",
+        "\u0c66"-"\u0c6f",
+        "\u0ce6"-"\u0cef",
+        "\u0d66"-"\u0d6f",
+        "\u0e50"-"\u0e59",
+        "\u0ed0"-"\u0ed9",
+        "\u1040"-"\u1049"
+        ]
+    >
+}// IDENTIFIERS
+
+<DEFAULT,BOUNDS> TOKEN : /* SEPARATORS */
+{
+//       < LPAREN               : "("    >
+//     | < RPAREN               : ")"    >
+     < LBRACE               : "{"    >
+    | < RBRACE               : "}"    >
+    | < LBRACKET             : "["    >
+    | < RBRACKET             : "]"    >
+    | < SEMICOLON            : ";"    >
+//     | < COMMA                : ","    >
+//     | < DOT                  : "."    >
+}// SEPARATORS
+
+
+<DEFAULT,BOUNDS> TOKEN : /* OPERATORS */
+{
+      < ASSIGN               : "="    >
+//     | < GT                   : ">"    >
+//     | < LT                   : "<"    >
+//     | < BANG                 : "!"    >
+//     | < TILDE                : "~"    >
+//     | < HOOK                 : "?"    >
+//     | < COLON                : ":"    >
+//     | < EQ                   : "=="   >
+//     | < LE                   : "<="   >
+//     | < GE                   : ">="   >
+//     | < NE                   : "!="   >
+//     | < SC_OR                : "||"   >
+//     | < SC_AND               : "&&"   >
+//     | < INCR                 : "++"   >
+//     | < DECR                 : "--"   >
+//     | < PLUS                 : "+"    >
+//     | < MINUS                : "-"    >
+//     | < STAR                 : "*"    >
+//     | < SLASH                : "/"    >
+//     | < BIT_AND              : "&"    >
+//     | < BIT_OR               : "|"    >
+//     | < XOR                  : "^"    >
+//     | < REM                  : "%"    >
+//     | < LSHIFT               : "<<"   >
+//     | < RSIGNEDSHIFT         : ">>"   >
+//     | < RUNSIGNEDSHIFT       : ">>>"  >
+//     | < PLUSASSIGN           : "+="   >
+//     | < MINUSASSIGN          : "-="   >
+//     | < STARASSIGN           : "*="   >
+//     | < SLASHASSIGN          : "/="   >
+//     | < ANDASSIGN            : "&="   >
+//     | < ORASSIGN             : "|="   >
+//     | < XORASSIGN            : "^="   >
+//     | < REMASSIGN            : "%="   >
+//     | < LSHIFTASSIGN         : "<<="  >
+//     | < RSIGNEDSHIFTASSIGN   : ">>="  >
+//     | < RUNSIGNEDSHIFTASSIGN : ">>>=" >
+}// OPERATORS
+
+
+// <DEFAULT,BOUNDS> TOKEN : /* TEXT */
+// {
+//     < TEXT : <LETTER> (~["<",">"])*    >
+// }// TEXT
+
+
+//--------------------------------------------------------------------//
+//                      THE OWL LANGUAGE GRAMMAR                     //
+//--------------------------------------------------------------------//
+
+Start Start() #Start : {}
+{
+	("<?xml version=\"1.0\"?>")?
+    ElementList()
+  { return jjtThis; }
+}
+
+// void Specification() #Specification : {}
+// {
+//     XmlHeader()
+// 	RdfDeclaration()
+// }
+
+// void XmlHeader() #XmlHeader : {}
+// {
+//     "<?" <XML> AttributeList() "?>"
+// }
+
+// void RdfDeclaration() #RdfDeclaration : {}
+// {
+//     "<"  <RDF_RDF> AttributeList() ">"
+// 	ElementList()
+//     "</" <RDF_RDF> ">"
+// }
+
+void ElementList() #List : {}
+{
+    (Element())*    
+}
+
+void AttributeList() #List : {}
+{
+    (Attribute())*    
+}
+
+void ComplexElement() #ComplexElement : {Token t;}
+{
+    "<" t=<IDENTIFIER>  AttributeList() 
+	(">" ElementList() "</" <IDENTIFIER> ">" | ElementList() "/>")
+		{jjtThis.setIDENTIFIER(t.image);}
+}
+
+
+void Element() : {}
+{
+	ComplexElement()
+	| SimpleElement()
+}
+
+void SimpleElement() : {}
+{
+    IntElement()
+	| FloatElement()
+	| StringElement()
+}
+
+void IntElement() #IntElement : { Token t; }
+{
+    t = <INTEGER_LITERAL>
+	{jjtThis.setINTEGER_LITERAL(t.image);}
+}
+
+void FloatElement() #FloatElement : { Token t; }
+{
+    t = <FLOAT_LITERAL>
+	{jjtThis.setFLOAT_LITERAL(t.image);}
+}
+
+void StringElement() #StringElement : { Token t; }
+{
+    t = <IDENTIFIER>
+	{jjtThis.setIDENTIFIER(t.image);}
+}
+
+// void OwlElement() : {}
+// {
+//     OwlOntology()
+// 	| OwlAllDifferent()
+// 	| OwlAllValuesFrom()
+// 	| OwlCardinality()
+// 	| OwlClass()
+// 	| OwlDataRange()
+// 	| OwlDatatypeProperty()
+// 	| OwlDisjointWith()
+// 	| OwlEquivalentClass()
+// 	| OwlFunctionalProperty()
+// 	| OwlImports()
+// 	| OwlIntersectionOf()
+// 	| OwlInverseOf()
+// 	| OwlMinCardinality()
+// 	| OwlObjectProperty()
+// 	| OwlOneOf()
+// 	| OwlOnProperty()
+// 	| OwlSomeValuesFrom()
+// 	| OwlRestriction()
+// 	| OwlUnionOf()
+// }
+
+// void OwlOntology() #OwlOntology : {}
+// {
+//     <OWL_ONTOLOGY> AttributeList() 
+// 	(">" ElementList() "</" <OWL_ONTOLOGY> ">" | ElementList() "/>")
+// }
+
+// void OwlAllDifferent() #OwlAllDifferent : {}
+// {
+//     <OWL_ALLDIFFERENT> AttributeList() 
+// 	(">" ElementList() "</" <OWL_ALLDIFFERENT> ">" | ElementList() "/>")
+// }
+
+// void OwlAllValuesFrom() #OwlAllValuesFrom : {}
+// {
+//     <OWL_ALLVALUESFROM> AttributeList() 
+// 	(">" ElementList() "</" <OWL_ALLVALUESFROM> ">" | ElementList() "/>")
+// }
+
+// void OwlCardinality() #OwlCardinality : {}
+// {
+//     <OWL_CARDINALITY> AttributeList() 
+// 	(">" ElementList() "</" <OWL_CARDINALITY> ">" | ElementList() "/>")
+// }
+
+// void OwlClass() #OwlClass : {}
+// {
+//     <OWL_CLASS> AttributeList() 
+// 	(">" ElementList() "</" <OWL_CLASS> ">" | ElementList() "/>")
+// }
+
+// void OwlDataRange() #OwlDataRange : {}
+// {
+//     <OWL_DATARANGE> AttributeList() 
+// 	(">" ElementList() "</" <OWL_DATARANGE> ">" | ElementList() "/>")
+// }
+
+// void OwlDatatypeProperty() #OwlDatatypeProperty : {}
+// {
+//     <OWL_DATATYPEPROPERTY> AttributeList() 
+// 	(">" ElementList() "</" <OWL_DATATYPEPROPERTY> ">" | ElementList() "/>")
+// }
+
+// void OwlDisjointWith() #OwlDisjointWith : {}
+// {
+//     <OWL_DISJOINTWITH> AttributeList() 
+// 	(">" ElementList() "</" <OWL_DISJOINTWITH> ">" | ElementList() "/>")
+// }
+
+// void OwlEquivalentClass() #OwlEquivalentClass : {}
+// {
+//     <OWL_EQUIVALENTCLASS> AttributeList() 
+// 	(">" ElementList() "</" <OWL_EQUIVALENTCLASS> ">" | ElementList() "/>")
+// }
+
+// void OwlFunctionalProperty() #OwlFunctionalProperty : {}
+// {
+//     <OWL_FUNCTIONALPROPERTY> AttributeList() 
+// 	(">" ElementList() "</" <OWL_FUNCTIONALPROPERTY> ">" | ElementList() "/>")
+// }
+
+// void OwlImports () #OwlImports  : {}
+// {
+//     <OWL_IMPORTS> AttributeList() 
+// 	(">" ElementList() "</" <OWL_IMPORTS> ">" | ElementList() "/>")
+// }
+
+// void OwlIntersectionOf () #OwlIntersectionOf  : {}
+// {
+//     <OWL_INTERSECTIONOF> AttributeList() 
+// 	(">" ElementList() "</" <OWL_INTERSECTIONOF> ">" | ElementList() "/>")
+// }
+
+// void OwlInverseOf () #OwlInverseOf  : {}
+// {
+//     <OWL_INVERSEOF> AttributeList() 
+// 	(">" ElementList() "</" <OWL_INVERSEOF> ">" | ElementList() "/>")
+// }
+
+// void OwlMinCardinality () #OwlMinCardinality  : {}
+// {
+//     <OWL_MINCARDINALITY> AttributeList() 
+// 	(">" ElementList() "</" <OWL_MINCARDINALITY> ">" | ElementList() "/>")
+// }
+
+// void OwlObjectProperty () #OwlObjectProperty  : {}
+// {
+//     <OWL_OBJECTPROPERTY> AttributeList() 
+// 	(">" ElementList() "</" <OWL_OBJECTPROPERTY> ">" | ElementList() "/>")
+// }
+
+// void OwlOneOf () #OwlOneOf  : {}
+// {
+//     <OWL_ONEOF> AttributeList() 
+// 	(">" ElementList() "</" <OWL_ONEOF> ">" | ElementList() "/>")
+// }
+
+// void OwlOnProperty () #OwlOnProperty  : {}
+// {
+//     <OWL_ONPROPERTY> AttributeList() 
+// 	(">" ElementList() "</" <OWL_ONPROPERTY> ">" | ElementList() "/>")
+// }
+
+// void OwlSomeValuesFrom () #OwlSomeValuesFrom  : {}
+// {
+//     <OWL_SOMEVALUESFROM> AttributeList() 
+// 	(">" ElementList() "</" <OWL_SOMEVALUESFROM> ">" | ElementList() "/>")
+// }
+
+// void OwlRestriction () #OwlRestriction  : {}
+// {
+//     <OWL_RESTRICTION> AttributeList() 
+// 	(">" ElementList() "</" <OWL_RESTRICTION> ">" | ElementList() "/>")
+// }
+
+// void OwlUnionOf () #OwlUnionOf  : {}
+// {
+//     <OWL_UNIONOF> AttributeList() 
+// 	(">" ElementList() "</" <OWL_UNIONOF> ">" | ElementList() "/>")
+// }
+
+// void RdfElement() : {}
+// {
+//     RdfType()
+// 	| RdfFirst()
+// 	| RdfRest()
+// 	| RdfsComment()
+// 	| RdfsDomain()
+// 	| RdfsRange()
+// 	| RdfsSubClassOf()
+// 	| RdfsSubPropertyOf()
+// }
+
+// void RdfType() #RdfType : {}
+// {
+//     <RDF_TYPE> AttributeList() 
+// 	(">" ElementList() "</" <RDF_TYPE> ">" | ElementList() "/>")
+// }
+
+// void RdfFirst() #RdfFirst : {}
+// {
+//     <RDF_FIRST> AttributeList() 
+// 	(">" ElementList() "</" <RDF_FIRST> ">" | ElementList() "/>")
+// }
+
+// void RdfRest() #RdfRest : {}
+// {
+//     <RDF_REST> AttributeList() 
+// 	(">" ElementList() "</" <RDF_REST> ">" | ElementList() "/>")
+// }
+
+// void RdfsComment() #RdfsComment : {}
+// {
+//     <RDFS_COMMENT> AttributeList() 
+// 	(">" ElementList() "</" <RDFS_COMMENT> ">" | ElementList() "/>")
+// }
+
+// void RdfsDomain() #RdfsDomain : {}
+// {
+//     <RDFS_DOMAIN> AttributeList() 
+// 	(">" ElementList() "</" <RDFS_DOMAIN> ">" | ElementList() "/>")
+// }
+
+// void RdfsRange() #RdfsRange : {}
+// {
+//     <RDFS_RANGE> AttributeList() 
+// 	(">" ElementList() "</" <RDFS_RANGE> ">" | ElementList() "/>")
+// }
+
+// void RdfsSubClassOf() #RdfsSubClassOf : {}
+// {
+//     <RDFS_SUBCLASSOF> AttributeList() 
+// 	(">" ElementList() "</" <RDFS_SUBCLASSOF> ">" | ElementList() "/>")
+// }
+
+// void RdfsSubPropertyOf() #RdfsSubPropertyOf : {}
+// {
+//     <RDFS_SUBPROPERTYOF> AttributeList() 
+// 	(">" ElementList() "</" <RDFS_SUBPROPERTYOF> ">" | ElementList() "/>")
+// }
+
+// void AttributeList() #List : {}
+// {
+//     (Attribute())*
+// }
+
+void Attribute() : {}
+{
+//       Version()
+ 	 RdfAttribute()
+//  	| XmlAttribute()
+// 	| XmlnsAttribute()
+}
+
+void Version() #Version : {}
+{
+    <VERSION> <ASSIGN> Value()
+}
+
+void RdfAttribute() : {}
+{
+//      RdfAbout()
+//  	| RdfDatatype()
+ 	 RdfId()
+//  	| RdfResource()
+//   	| RdfParseType()
+}
+
+void RdfAbout() #RdfAbout : {}
+{
+    <RDF_ABOUT> <ASSIGN> Value()
+}
+
+void RdfDatatype() #RdfDatatype : {}
+{
+    <RDF_DATATYPE> <ASSIGN> Value()
+}
+
+void RdfId() #RdfId : {}
+{
+    <RDF_ID> <ASSIGN> Value()
+}
+
+void RdfParseType() #RdfParseType : {}
+{
+    <RDF_PARSETYPE> <ASSIGN> Value()
+}
+
+void RdfResource() #RdfResource : {}
+{
+    <RDF_RESOURCE> <ASSIGN> Value()
+}
+
+void XmlAttribute() : {}
+{
+    XmlBase()
+}
+
+void XmlBase() #XmlBase : {}
+{
+    <XML_BASE> <ASSIGN> Value()
+}
+
+void XmlnsAttribute() : {}
+{
+    Xmlns()
+	| XmlnsDaml()
+	| XmlnsDc()
+	| XmlnsOwl()
+	| XmlnsP1()
+	| XmlnsProtege()
+	| XmlnsRdf()
+	| XmlnsRdfs()
+	| XmlnsXsd()
+}
+
+void Xmlns() #Xmlns : {}
+{
+    <XMLNS> <ASSIGN> Value()
+}
+
+void XmlnsDaml() #XmlnsDaml : {}
+{
+    <XMLNS_DAML> <ASSIGN> Value()
+}
+
+void XmlnsDc() #XmlnsDc : {}
+{
+    <XMLNS_DC> <ASSIGN> Value()
+}
+
+void XmlnsP1() #XmlnsP1 : {}
+{
+    <XMLNS_P1> <ASSIGN> Value()
+}
+
+void XmlnsProtege() #XmlnsProtege : {}
+{
+    <XMLNS_PROTEGE> <ASSIGN> Value()
+}
+
+void XmlnsRdf() #XmlnsRdf : {}
+{
+    <XMLNS_RDF> <ASSIGN> Value()
+}
+
+void XmlnsXsd() #XmlnsXsd : {}
+{
+    <XMLNS_XSD> <ASSIGN> Value()
+}
+
+void XmlnsRdfs() #XmlnsRdfs : {}
+{
+    <XMLNS_RDFS> <ASSIGN> Value()
+}
+
+void XmlnsOwl() #XmlnsOwl : {}
+{
+    <XMLNS_OWL> <ASSIGN> Value()
+}
+
+void Value() #Value : { Token t; }
+{
+    t = <STRING_LITERAL>
+	{jjtThis.setSTRING_LITERAL(t.image);}
+}
diff --git a/siaras/SiarasPrettyPrinter.java b/siaras/SiarasPrettyPrinter.java
new file mode 100644
index 0000000000000000000000000000000000000000..1e612cf83facf59c5c84cd3d762bb78fb6303624
--- /dev/null
+++ b/siaras/SiarasPrettyPrinter.java
@@ -0,0 +1,39 @@
+// package programs;
+
+import AST.Start;
+import java.io.File;
+import java.io.PrintStream;
+
+public class SiarasPrettyPrinter extends Parser {
+	public static void main(String args[]) {
+		Start ast = parse(args);
+
+		// Dump the AST
+// 		ast.dumpTree("  ", System.out);
+
+
+// 		File siarasDir = new File("siaras");
+// 		if (!siarasDir.isDirectory()) {
+// 			siarasDir.mkdir();
+// 		}
+		
+// 		String fileName = null;
+// 		try {
+// 			// Generate JastAdd abstract grammar
+// 			fileName = "siaras/Siaras.ast";
+// 			PrintStream pStream = new PrintStream(new File(fileName));
+// 			ast.genAbsGrammar(pStream);
+// 			// Generate JavaCC configuration
+// // 			fileName = "siaras/Siaras.jjt";
+// // 			pStream = new PrintStream(new File(fileName));
+// // 			ast.genJavaCC(pStream);
+// 			// Generate Parser.java
+// 			fileName = "siaras/Parser.java";
+// 			pStream = new PrintStream(new File(fileName));
+// 			ast.genParser(pStream);
+// 		} catch (java.io.FileNotFoundException e) {
+// 			System.out.println("Could not create file: "+fileName);
+// 			e.printStackTrace();
+// 		}
+	}
+}
diff --git a/testontologies/ontologyV07_instances.owl b/testontologies/ontologyV07_instances.owl
new file mode 100644
index 0000000000000000000000000000000000000000..b5532078e1413b15c5bd4f6dc1267327ad9c24a3
--- /dev/null
+++ b/testontologies/ontologyV07_instances.owl
@@ -0,0 +1,89 @@
+<VacuumGripper rdf:ID="Schmalz_FSGA_20_SI-55_M5-AG">
+   <hasSkill>
+      <AdjustVacuumToGrip rdf:ID="AdjustVacuumToGrip_16">
+	       <isSkillOf>
+              <VacuumGripper rdf:ID="Schmalz_FSGPL_200_NBR-55_G1-2-IG">
+                <hasProperty>
+                  <DiameterOfGripper rdf:ID="DiameterOfGripper_200">
+                    <value rdf:datatype="http://www.w3.org/2001/XMLSchema#float"
+                    >0.0</value>
+                    <isPropertyOf rdf:resource="#Schmalz_FSGPL_200_NBR-55_G1-2-IG"/>
+                  </DiameterOfGripper>
+                </hasProperty>
+                <hasSkill rdf:resource="#AdjustVacuumToGrip_16"/>
+                <hasProperty>
+                  <Material rdf:ID="Material_Perbunan">
+                    <isPropertyOf rdf:resource="#Schmalz_FSGPL_200_NBR-55_G1-2-IG"/>
+                    <value rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
+                    >Perbunan NBR 55+-5</value>
+                  </Material>
+                </hasProperty>
+                <hasProperty>
+                  <MaximumForce rdf:ID="MaximumForce_850">
+                    <value rdf:datatype="http://www.w3.org/2001/XMLSchema#float"
+                    >0.0</value>
+                    <isPropertyOf rdf:resource="#Schmalz_FSGPL_200_NBR-55_G1-2-IG"/>
+                  </MaximumForce>
+                </hasProperty>
+                <hasProperty>
+                  <Worm rdf:ID="Worm_22">
+                    <isPropertyOf rdf:resource="#Schmalz_FSGPL_200_NBR-55_G1-2-IG"/>
+                    <value rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
+                    >Inside</value>
+                  </Worm>
+                </hasProperty>
+                <hasProperty>
+                  <WormDiameter rdf:ID="WormDiameter_G1-2">
+                    <isPropertyOf rdf:resource="#Schmalz_FSGPL_200_NBR-55_G1-2-IG"/>
+                    <value rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
+                    >G1/2</value>
+                  </WormDiameter>
+                </hasProperty>
+                <hasSkill>
+                  <AdjustVacuumToRelease rdf:ID="AdjustVacuumToRelease_1">
+                    <isSkillOf rdf:resource="#Schmalz_FSGA_20_SI-55_M5-AG"/>
+                    <isSkillOf rdf:resource="#Schmalz_FSGPL_200_NBR-55_G1-2-IG"/>
+                  </AdjustVacuumToRelease>
+                </hasSkill>
+              </VacuumGripper>
+            </isSkillOf>
+            <isSkillOf rdf:resource="#Schmalz_FSGA_20_SI-55_M5-AG"/>
+          </AdjustVacuumToGrip>
+        </hasSkill>
+        <hasProperty>
+          <WormDiameter rdf:ID="WormDiameter_M5">
+            <value rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
+            >M5</value>
+            <isPropertyOf rdf:resource="#Schmalz_FSGA_20_SI-55_M5-AG"/>
+          </WormDiameter>
+        </hasProperty>
+        <hasProperty>
+          <DiameterOfGripper rdf:ID="DiameterOfGripper_20">
+            <value rdf:datatype="http://www.w3.org/2001/XMLSchema#float"
+            >0.0</value>
+            <isPropertyOf rdf:resource="#Schmalz_FSGA_20_SI-55_M5-AG"/>
+          </DiameterOfGripper>
+        </hasProperty>
+        <hasProperty>
+          <Material rdf:ID="Material_Silikon">
+            <isPropertyOf rdf:resource="#Schmalz_FSGA_20_SI-55_M5-AG"/>
+            <value rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
+            >Silikon SI 55+-5</value>
+          </Material>
+        </hasProperty>
+        <hasProperty>
+          <Worm rdf:ID="Worm_13">
+            <value rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
+            >Outside</value>
+            <isPropertyOf rdf:resource="#Schmalz_FSGA_20_SI-55_M5-AG"/>
+          </Worm>
+        </hasProperty>
+        <hasSkill rdf:resource="#AdjustVacuumToRelease_1"/>
+        <hasProperty>
+          <MaximumForce rdf:ID="MaximumForce_4.7">
+            <isPropertyOf rdf:resource="#Schmalz_FSGA_20_SI-55_M5-AG"/>
+            <value rdf:datatype="http://www.w3.org/2001/XMLSchema#float"
+            >0.0</value>
+          </MaximumForce>
+        </hasProperty>
+      </VacuumGripper>