From 9091ab3087497d54ffceba81b8216e82ba9fc6b1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Euzenat?= <Jerome.Euzenat@inria.fr>
Date: Wed, 31 Mar 2010 13:57:07 +0000
Subject: [PATCH] - tweaked EDOAL parser

---
 examples/omwg/total.xml                       | 277 +++++++++++++++++-
 .../impl/edoal/RelationConstruction.java      |   4 +-
 .../impl/renderer/RDFRendererVisitor.java     |  36 +--
 .../exmo/align/parser/RDFParser.java          | 141 +++------
 .../exmo/align/parser/SyntaxElement.java      |  17 +-
 test/src/EDOALExportTest.java                 |  38 +--
 6 files changed, 362 insertions(+), 151 deletions(-)

diff --git a/examples/omwg/total.xml b/examples/omwg/total.xml
index 57c83e7d..c54e37cb 100644
--- a/examples/omwg/total.xml
+++ b/examples/omwg/total.xml
@@ -97,20 +97,20 @@
 		<edoal:or rdf:parseType="Collection">
 		  <edoal:Class>
 		    <edoal:not>
-		      <edoal:Class rdf:about="&wine;Bordeaux5"/>
+		      <edoal:Class rdf:about="&vin;Bordeaux5"/>
 		    </edoal:not>
 		  </edoal:Class>
-		  <edoal:Class rdf:about="&wine;Bordeaux6"/>
+		  <edoal:Class rdf:about="&vin;Bordeaux6"/>
 		</edoal:or>
 	      </edoal:Class>
 	      <edoal:Class>
 		<edoal:and rdf:parseType="Collection">
 		  <edoal:Class>
 		    <edoal:not>
-		      <edoal:Class rdf:about="&wine;Bordeaux7"/>
+		      <edoal:Class rdf:about="&vin;Bordeaux7"/>
 		    </edoal:not>
 		  </edoal:Class>
-		  <edoal:Class rdf:about="&wine;Bordeaux7"/>
+		  <edoal:Class rdf:about="&vin;Bordeaux7"/>
 		</edoal:and>
 	      </edoal:Class>
 	    </edoal:and>
@@ -127,7 +127,7 @@
 	  <edoal:Class>
 	    <edoal:or rdf:parseType="Collection">
 	      <edoal:Class rdf:about="&wine;Vin"/>
-	      <edoal:RelationDomainRestriction> 
+	      <edoal:AttributeDomainRestriction> 
 		<edoal:onAttribute>
 		  <edoal:Relation>
 		    <edoal:compose rdf:parseType="Collection">
@@ -137,8 +137,8 @@
 		  </edoal:Relation>
 		</edoal:onAttribute>
   		<edoal:class><edoal:Class rdf:about="&wine;FrenchRegion"/></edoal:class>
-	      </edoal:RelationDomainRestriction>	  
-	      <edoal:PropertyTypeRestriction> 
+	      </edoal:AttributeDomainRestriction>	  
+	      <edoal:AttributeTypeRestriction> 
 		<edoal:onAttribute>
 		  <edoal:Property>
 		    <edoal:compose rdf:parseType="Collection">
@@ -148,7 +148,7 @@
 		  </edoal:Property>
 		</edoal:onAttribute>
   		<edoal:datatype>An-integer-as-datatype</edoal:datatype>
-	      </edoal:PropertyTypeRestriction>	  
+	      </edoal:AttributeTypeRestriction>	  
 	      <edoal:AttributeOccurenceRestriction> 
 		<edoal:onAttribute>
 		  <edoal:Relation>
@@ -288,7 +288,7 @@
 			</edoal:arguments>
 		      </edoal:Apply>
 		      <edoal:Relation rdf:about="&vin;hasTerroir"/>
-		      <edoal:Instance rdf:about="&wine;Bordelais"/>
+		      <edoal:Instance rdf:about="&vin;Bordelais"/>
 		    </edoal:arguments>
 		  </edoal:Apply>
 		</edoal:value>
@@ -311,7 +311,142 @@
       </Cell>
     </map>
     <!-- rel const: and or not compose inverse trans refl sym -->
+    <map>
+      <Cell rdf:about="MappingRule_rel_const">
+	<entity1>
+	  <edoal:Relation>
+	    <edoal:not>
+	      <edoal:Relation>
+		<edoal:and rdf:parseType="Collection">
+		  <edoal:Relation>
+		    <edoal:or rdf:parseType="Collection">
+		      <edoal:Relation>
+			<edoal:and rdf:parseType="Collection">
+			  <edoal:Relation rdf:about="&wine;loc1"/>
+			  <edoal:Relation rdf:about="&wine;loc2"/>
+			</edoal:and>
+		      </edoal:Relation>
+		      <edoal:Relation>
+			<edoal:not>
+			  <edoal:Relation rdf:about="&wine;loc3"/>
+			</edoal:not>
+		      </edoal:Relation>
+		      <edoal:Relation>
+			<edoal:transitive>
+			  <edoal:Relation>
+			    <edoal:compose rdf:parseType="Collection">
+			      <edoal:Relation rdf:about="&wine;loc3"/>
+			      <edoal:Relation rdf:about="&wine;loc5"/>
+			    </edoal:compose>
+			  </edoal:Relation>
+			</edoal:transitive>
+		      </edoal:Relation>
+		      <edoal:Relation>
+			<edoal:reflexive>
+			  <edoal:Relation rdf:about="&wine;loc6"/>
+			</edoal:reflexive>
+		      </edoal:Relation>
+		      <edoal:Relation>
+			<edoal:symmetric>
+			  <edoal:Relation rdf:about="&wine;loc7"/>
+			</edoal:symmetric>
+		      </edoal:Relation>
+		    </edoal:or>
+		  </edoal:Relation>
+		  <edoal:Relation>
+		    <edoal:not>
+		      <edoal:Relation>
+			<edoal:inverse>
+			  <edoal:Relation rdf:about="&wine;loc4"/>
+			</edoal:inverse>
+		      </edoal:Relation>
+		    </edoal:not>
+		  </edoal:Relation>
+		</edoal:and>
+	      </edoal:Relation>
+	    </edoal:not>
+	  </edoal:Relation>
+	</entity1>
+	<entity2> 
+	  <edoal:Relation>
+	    <edoal:and rdf:parseType="Collection">
+	      <edoal:Relation rdf:about="&vin;place3"/>
+	      <edoal:Relation>
+		<edoal:or rdf:parseType="Collection">
+		  <edoal:Relation>
+		    <edoal:not>
+		      <edoal:Relation rdf:about="&vin;place5"/>
+		    </edoal:not>
+		  </edoal:Relation>
+		  <edoal:Relation rdf:about="&vin;place6"/>
+		</edoal:or>
+	      </edoal:Relation>
+	      <edoal:Relation>
+		<edoal:and rdf:parseType="Collection">
+		  <edoal:Relation>
+		    <edoal:compose rdf:parseType="Collection">
+		      <edoal:Relation>
+			<edoal:symmetric>
+			  <edoal:Relation rdf:about="&vin;place1"/>
+			</edoal:symmetric>
+		      </edoal:Relation>
+		      <edoal:Relation rdf:about="&vin;place2"/>
+		    </edoal:compose>
+		  </edoal:Relation>
+		  <edoal:Relation rdf:about="&vin;place7"/>
+		</edoal:and>
+	      </edoal:Relation>
+	    </edoal:and>
+	  </edoal:Relation>
+        </entity2>
+	<measure rdf:datatype='&xsd;float'>1.</measure>
+	<relation>SubsumedBy</relation>
+      </Cell>
+    </map>
     <!-- rel rest: att-type... -->
+    <map>
+      <Cell rdf:about="MappingRule_rel_rest">
+	<entity1>
+	  <edoal:Relation>
+	    <edoal:or rdf:parseType="Collection">
+	      <edoal:RelationDomainRestriction> 
+  		<edoal:class><edoal:Class rdf:about="&wine;Bordeaux1"/></edoal:class>
+	      </edoal:RelationDomainRestriction>	  
+	      <edoal:RelationCoDomainRestriction> 
+  		<edoal:class><edoal:Class rdf:about="&wine;Bordeaux2"/></edoal:class>
+	      </edoal:RelationCoDomainRestriction>
+	    </edoal:or>
+	  </edoal:Relation>
+	</entity1>
+	<entity2> 
+	  <edoal:Relation>
+	    <edoal:and rdf:parseType="Collection">
+	      <edoal:RelationDomainRestriction> 
+  		<edoal:class>
+		  <edoal:Class>
+		    <edoal:and rdf:parseType="Collection">
+		      <edoal:Class rdf:about="&vin;Bordeaux5"/>
+		      <edoal:Class rdf:about="&vin;Bordeaux6"/>
+		    </edoal:and>
+		  </edoal:Class>
+                </edoal:class>
+	      </edoal:RelationDomainRestriction>	  
+	      <edoal:RelationCoDomainRestriction> 
+  		<edoal:class>
+		  <edoal:Class>
+		    <edoal:not>
+		      <edoal:Class rdf:about="&vin;Bordeaux7"/>
+		    </edoal:not>
+		  </edoal:Class>
+                </edoal:class>
+	      </edoal:RelationCoDomainRestriction>	  
+	    </edoal:and>
+	  </edoal:Relation>
+        </entity2>
+	<measure rdf:datatype='&xsd;float'>1.</measure>
+	<relation>SubsumedBy</relation>
+      </Cell>
+    </map>
     <!-- rel const and rest -->
     <!-- prop basis -->
     <map>
@@ -323,7 +458,129 @@
       </Cell>
     </map>
     <!-- prop const: and or not compose -->
+    <map>
+      <Cell rdf:about="MappingRule_prop_const">
+	<entity1>
+	  <edoal:Property>
+	    <edoal:not>
+	      <edoal:Property>
+		<edoal:and rdf:parseType="Collection">
+		  <edoal:Property>
+		    <edoal:or rdf:parseType="Collection">
+		      <edoal:Property>
+			<edoal:and rdf:parseType="Collection">
+			  <edoal:Property rdf:about="&wine;number1"/>
+			  <edoal:Property rdf:about="&wine;number2"/>
+			</edoal:and>
+		      </edoal:Property>
+		      <edoal:Property>
+			<edoal:not>
+			  <edoal:Property rdf:about="&wine;number3"/>
+			</edoal:not>
+		      </edoal:Property>
+		      <edoal:Property>
+			<edoal:not>
+			  <edoal:Property>
+			    <edoal:compose rdf:parseType="Collection">
+			      <edoal:Relation rdf:about="&wine;loc3"/>
+			      <edoal:Relation rdf:about="&wine;loc5"/>
+			      <edoal:Property rdf:about="&wine;number5"/>
+			    </edoal:compose>
+			  </edoal:Property>
+			</edoal:not>
+		      </edoal:Property>
+		    </edoal:or>
+		  </edoal:Property>
+		  <edoal:Property>
+		    <edoal:not>
+		      <edoal:Property rdf:about="&wine;number4"/>
+		    </edoal:not>
+		  </edoal:Property>
+		</edoal:and>
+	      </edoal:Property>
+	    </edoal:not>
+	  </edoal:Property>
+	</entity1>
+	<entity2> 
+	  <edoal:Property>
+	    <edoal:and rdf:parseType="Collection">
+	      <edoal:Property rdf:about="&vin;dpt3"/>
+	      <edoal:Property>
+		<edoal:or rdf:parseType="Collection">
+		  <edoal:Property>
+		    <edoal:not>
+		      <edoal:Property rdf:about="&vin;dpt5"/>
+		    </edoal:not>
+		  </edoal:Property>
+		  <edoal:Property rdf:about="&vin;dpt6"/>
+		</edoal:or>
+	      </edoal:Property>
+	      <edoal:Property>
+		<edoal:and rdf:parseType="Collection">
+		  <edoal:Property>
+		    <edoal:compose rdf:parseType="Collection">
+		      <edoal:Relation>
+			<edoal:symmetric>
+			  <edoal:Relation rdf:about="&vin;place1"/>
+			</edoal:symmetric>
+		      </edoal:Relation>
+		      <edoal:Relation rdf:about="&vin;place2"/>
+		      <edoal:Property rdf:about="&vin;dpt2"/>
+		    </edoal:compose>
+		  </edoal:Property>
+		  <edoal:Property rdf:about="&vin;dpt7"/>
+		</edoal:and>
+	      </edoal:Property>
+	    </edoal:and>
+	  </edoal:Property>
+        </entity2>
+	<measure rdf:datatype='&xsd;float'>1.</measure>
+	<relation>SubsumedBy</relation>
+      </Cell>
+    </map>
     <!-- prop rest: att-type... -->
+    <map>
+      <Cell rdf:about="MappingRule_prop_rest">
+	<entity1>
+	  <edoal:Property>
+	    <edoal:or rdf:parseType="Collection">
+	      <edoal:PropertyDomainRestriction> 
+  		<edoal:class><edoal:Class rdf:about="&wine;Bordeaux1"/></edoal:class>
+	      </edoal:PropertyDomainRestriction>	  
+	      <!--edoal:PropertyTypeRestriction> 
+  		<edoal:type><edoal:Datatype rdf:about="&wine;Bordeaux2"/></edoal:type>
+	      </edoal:PropertyTypeRestriction-->
+	      <edoal:PropertyValueRestriction> 
+		<edoal:comparator rdf:resource="http://www.w3.org/2001/XMLSchema#equals"/>
+  		<edoal:value><edoal:Literal edoal:string="Bordeaux"/></edoal:value>
+	      </edoal:PropertyValueRestriction>
+	    </edoal:or>
+	  </edoal:Property>
+	</entity1>
+	<entity2> 
+	  <edoal:Property>
+	    <edoal:and rdf:parseType="Collection">
+	      <edoal:PropertyDomainRestriction> 
+  		<edoal:class>
+		  <edoal:Class>
+		    <edoal:and rdf:parseType="Collection">
+		      <edoal:Class rdf:about="&vin;Bordeaux5"/>
+		      <edoal:Class rdf:about="&vin;Bordeaux6"/>
+		    </edoal:and>
+		  </edoal:Class>
+                </edoal:class>
+	      </edoal:PropertyDomainRestriction>	  
+	      <!--edoal:PropertyValueRestriction> 
+		  <edoal:comparator rdf:resource="http://www.w3.org/2001/XMLSchema#equals"/>
+  		<edoal:value><edoal:Apply edoal:operator="http://example.org/gensym"/></edoal:value>
+	      </edoal:PropertyValueRestriction-->
+	    </edoal:and>
+	  </edoal:Property>
+        </entity2>
+	<measure rdf:datatype='&xsd;float'>1.</measure>
+	<relation>SubsumedBy</relation>
+      </Cell>
+    </map>
     <!-- prop const and rest -->
     <!-- instance -->
     <map>
@@ -387,7 +644,7 @@
 	<entity2>
           <edoal:Class>
             <edoal:not>
-              <edoal:Class rdf:about="&wine;WineFlavor"/>
+              <edoal:Class rdf:about="&vin;WineFlavor"/>
 	    </edoal:not>
 	  </edoal:Class>
 	</entity2>
diff --git a/src/fr/inrialpes/exmo/align/impl/edoal/RelationConstruction.java b/src/fr/inrialpes/exmo/align/impl/edoal/RelationConstruction.java
index 6c7cf10c..b67829f7 100644
--- a/src/fr/inrialpes/exmo/align/impl/edoal/RelationConstruction.java
+++ b/src/fr/inrialpes/exmo/align/impl/edoal/RelationConstruction.java
@@ -46,8 +46,6 @@ import org.semanticweb.owl.align.Visitable;
  * @version $Revision: 1.5 $ $Date: 2010-03-07 20:40:05 +0100 (Sun, 07 Mar 2010) $
  */
 
-// JE2010: Should it be abstract with RelationConjunction??
-
 public class RelationConstruction extends RelationExpression {
 
     /** Holds all expressions. */
@@ -96,7 +94,7 @@ public class RelationConstruction extends RelationExpression {
 	return components;
     }
 
-    public void addComponents( RelationExpression exp ) {
+    public void addComponents( PathExpression exp ) {
 	components.add( exp );
     }
 
diff --git a/src/fr/inrialpes/exmo/align/impl/renderer/RDFRendererVisitor.java b/src/fr/inrialpes/exmo/align/impl/renderer/RDFRendererVisitor.java
index a8201d99..915206b3 100644
--- a/src/fr/inrialpes/exmo/align/impl/renderer/RDFRendererVisitor.java
+++ b/src/fr/inrialpes/exmo/align/impl/renderer/RDFRendererVisitor.java
@@ -405,7 +405,7 @@ public class RDFRendererVisitor implements AlignmentVisitor {
 
     // DONE+TESTED
     public void visit( final ClassValueRestriction c ) throws AlignmentException {
-	indentedOutput("<"+SyntaxElement.PROPERTY_VALUE_COND.print(DEF));
+	indentedOutput("<"+SyntaxElement.VALUE_COND.print(DEF));
 	if ( isPattern ) renderVariables( c );
 	writer.print(">"+NL);
 	increaseIndent();
@@ -423,12 +423,12 @@ public class RDFRendererVisitor implements AlignmentVisitor {
 	visit( c.getValue() );
 	writer.print("</"+SyntaxElement.VALUE.print(DEF)+">"+NL);
 	decreaseIndent();
-	indentedOutput("</"+SyntaxElement.PROPERTY_VALUE_COND.print(DEF)+">");
+	indentedOutput("</"+SyntaxElement.VALUE_COND.print(DEF)+">");
     }
 
     // DONE+TESTED
     public void visit( final ClassTypeRestriction c ) throws AlignmentException {
-	indentedOutput("<"+SyntaxElement.PROPERTY_TYPE_COND.print(DEF));
+	indentedOutput("<"+SyntaxElement.TYPE_COND.print(DEF));
 	if ( isPattern ) renderVariables( c );
 	writer.print(">"+NL);
 	increaseIndent();
@@ -441,12 +441,12 @@ public class RDFRendererVisitor implements AlignmentVisitor {
 	visit( c.getType() );
 	decreaseIndent();
 	writer.print(NL);
-	indentedOutput("</"+SyntaxElement.PROPERTY_TYPE_COND.print(DEF)+">");
+	indentedOutput("</"+SyntaxElement.TYPE_COND.print(DEF)+">");
     }
 
     // DONE+TESTED
     public void visit( final ClassDomainRestriction c ) throws AlignmentException {
-	indentedOutput("<"+SyntaxElement.RELATION_DOMAIN_COND.print(DEF));
+	indentedOutput("<"+SyntaxElement.DOMAIN_RESTRICTION.print(DEF));
 	if ( isPattern ) renderVariables( c );
 	writer.print(">"+NL);
 	increaseIndent();
@@ -463,12 +463,12 @@ public class RDFRendererVisitor implements AlignmentVisitor {
 	decreaseIndent();
 	indentedOutput("</"+SyntaxElement.TOCLASS.print(DEF)+">"+NL);
 	decreaseIndent();
-	indentedOutput("</"+SyntaxElement.RELATION_DOMAIN_COND.print(DEF)+">");
+	indentedOutput("</"+SyntaxElement.DOMAIN_RESTRICTION.print(DEF)+">");
     }
 
     // DONE+TESTED
     public void visit( final ClassOccurenceRestriction c ) throws AlignmentException {
-	indentedOutput("<"+SyntaxElement.PROPERTY_OCCURENCE_COND.print(DEF));
+	indentedOutput("<"+SyntaxElement.OCCURENCE_COND.print(DEF));
 	if ( isPattern ) renderVariables( c );
 	writer.print(">"+NL);
 	increaseIndent();
@@ -486,7 +486,7 @@ public class RDFRendererVisitor implements AlignmentVisitor {
 	writer.print(c.getOccurence());
 	writer.print("</"+SyntaxElement.VALUE.print(DEF)+">"+NL);
 	decreaseIndent();
-	indentedOutput("</"+SyntaxElement.PROPERTY_OCCURENCE_COND.print(DEF)+">");
+	indentedOutput("</"+SyntaxElement.OCCURENCE_COND.print(DEF)+">");
     }
     
     // DONE
@@ -552,7 +552,7 @@ public class RDFRendererVisitor implements AlignmentVisitor {
 	
     // DONE
     public void visit(final PropertyValueRestriction c) throws AlignmentException {
-	indentedOutput("<"+SyntaxElement.VALUE_COND.print(DEF));
+	indentedOutput("<"+SyntaxElement.PROPERTY_VALUE_COND.print(DEF));
 	if ( isPattern ) renderVariables( c );
 	writer.print(">"+NL);
 	increaseIndent();
@@ -564,12 +564,12 @@ public class RDFRendererVisitor implements AlignmentVisitor {
 	visit( c.getValue() );
 	writer.print("</"+SyntaxElement.VALUE.print(DEF)+">"+NL);
 	decreaseIndent();
-	indentedOutput("</"+SyntaxElement.VALUE_COND.print(DEF)+">");
+	indentedOutput("</"+SyntaxElement.PROPERTY_VALUE_COND.print(DEF)+">");
     }
 
     // DONE
     public void visit(final PropertyDomainRestriction c) throws AlignmentException {
-	indentedOutput("<"+SyntaxElement.DOMAIN_RESTRICTION.print(DEF));
+	indentedOutput("<"+SyntaxElement.PROPERTY_DOMAIN_COND.print(DEF));
 	if ( isPattern ) renderVariables( c );
 	writer.print(">"+NL);
 	increaseIndent();
@@ -580,18 +580,18 @@ public class RDFRendererVisitor implements AlignmentVisitor {
 	decreaseIndent();
 	indentedOutput("</"+SyntaxElement.TOCLASS.print(DEF)+">"+NL);
 	decreaseIndent();
-	indentedOutput("</"+SyntaxElement.DOMAIN_RESTRICTION.print(DEF)+">"+NL);
+	indentedOutput("</"+SyntaxElement.PROPERTY_DOMAIN_COND.print(DEF)+">"+NL);
     }
 
     // DONE
     public void visit(final PropertyTypeRestriction c) throws AlignmentException {
-	indentedOutput("<"+SyntaxElement.TYPE_COND.print(DEF));
+	indentedOutput("<"+SyntaxElement.PROPERTY_TYPE_COND.print(DEF));
 	if ( isPattern ) renderVariables( c );
 	writer.print(">"+NL);
 	increaseIndent();
 	visit( c.getType() );
 	decreaseIndent();
-	indentedOutput("</"+SyntaxElement.TYPE_COND.print(DEF)+">");
+	indentedOutput("</"+SyntaxElement.PROPERTY_TYPE_COND.print(DEF)+">");
     }
     
     // DONE
@@ -651,7 +651,7 @@ public class RDFRendererVisitor implements AlignmentVisitor {
 	
     // DONE
     public void visit(final RelationCoDomainRestriction c) throws AlignmentException {
-	indentedOutput("<"+SyntaxElement.CODOMAIN_RESTRICTION.print(DEF));
+	indentedOutput("<"+SyntaxElement.RELATION_CODOMAIN_COND.print(DEF));
 	if ( isPattern ) renderVariables( c );
 	writer.print(">"+NL);
 	increaseIndent();
@@ -662,12 +662,12 @@ public class RDFRendererVisitor implements AlignmentVisitor {
 	decreaseIndent();
 	writer.print("</"+SyntaxElement.TOCLASS.print(DEF)+">"+NL);
 	decreaseIndent();
-	indentedOutput("</"+SyntaxElement.CODOMAIN_RESTRICTION.print(DEF)+">");
+	indentedOutput("</"+SyntaxElement.RELATION_CODOMAIN_COND.print(DEF)+">");
     }
 
     // DONE
     public void visit(final RelationDomainRestriction c) throws AlignmentException {
-	indentedOutput("<"+SyntaxElement.DOMAIN_RESTRICTION.print(DEF));
+	indentedOutput("<"+SyntaxElement.RELATION_DOMAIN_COND.print(DEF));
 	if ( isPattern ) renderVariables( c );
 	writer.print(">"+NL);
 	increaseIndent();
@@ -678,7 +678,7 @@ public class RDFRendererVisitor implements AlignmentVisitor {
 	decreaseIndent();
 	writer.print("</"+SyntaxElement.TOCLASS.print(DEF)+">"+NL);
 	decreaseIndent();
-	indentedOutput("</"+SyntaxElement.DOMAIN_RESTRICTION.print(DEF)+">");
+	indentedOutput("</"+SyntaxElement.RELATION_DOMAIN_COND.print(DEF)+">");
     }
     
     // DONE
diff --git a/src/fr/inrialpes/exmo/align/parser/RDFParser.java b/src/fr/inrialpes/exmo/align/parser/RDFParser.java
index dc8cbde2..f43e1f4c 100644
--- a/src/fr/inrialpes/exmo/align/parser/RDFParser.java
+++ b/src/fr/inrialpes/exmo/align/parser/RDFParser.java
@@ -272,7 +272,6 @@ public class RDFParser {
 	    if ( stmtIt.hasNext() ) {
 		final String arity = stmtIt.nextStatement().getString();
 		if ((arity != null) && (!arity.equals(""))) {
-		    // JE2009: Certainly some control checking should be useful
 		    alignment.setType( arity );
 		}
 	    } else {
@@ -283,16 +282,15 @@ public class RDFParser {
 	    while (stmtIt.hasNext()) {
 		Statement stmt = stmtIt.nextStatement();
 		if ( debug > 0 ) System.err.println( "  ---------------> "+stmt );
-		//alignment.addRule(parseCell(stmt.getResource()));
 		try { alignment.addAlignCell( parseCell( stmt.getResource() ) ); }
 		catch ( AlignmentException ae ) {
 		    System.err.println( "Error "+ae );
 		    ae.printStackTrace();
 		}
-		// rdf:type must be forgotten
 	    }
 
 	    // Remaining resources...
+	    // rdf:type must be forgotten
 	    //else if ( !pred.equals( SyntaxElement.getResource("rdftype") ) ) { // Unknown is annotation
 	    //	parseAnnotation( stmt, alignment );
 	    //}
@@ -358,7 +356,7 @@ public class RDFParser {
 	    throw new NullPointerException("The node must not be null");
 	}
 	try {
-	    // JE2009: Should be better to use AlignmentAPI relation recognition
+	    // Should be better to use Alignment API relation recognition
 	    // determine the relation, the relation shall be Literal
 	    final String relation = node.getProperty((Property)SyntaxElement.RULE_RELATION.resource).getString();
 	    //Get the relation
@@ -403,19 +401,19 @@ public class RDFParser {
 	Expression result;
 	Resource rdfType = node.getProperty( RDF.type ).getResource();
 	if ( rdfType.equals( SyntaxElement.CLASS_EXPR.resource ) ||
-	     rdfType.equals( SyntaxElement.PROPERTY_OCCURENCE_COND.resource ) ||
-	     rdfType.equals( SyntaxElement.PROPERTY_TYPE_COND.resource ) ||
-	     rdfType.equals( SyntaxElement.RELATION_DOMAIN_COND.resource ) ||
-	     rdfType.equals( SyntaxElement.PROPERTY_VALUE_COND.resource ) ) {
+	     rdfType.equals( SyntaxElement.OCCURENCE_COND.resource ) ||
+	     rdfType.equals( SyntaxElement.DOMAIN_RESTRICTION.resource ) ||
+	     rdfType.equals( SyntaxElement.TYPE_COND.resource ) ||
+	     rdfType.equals( SyntaxElement.VALUE_COND.resource ) ) {
 	    result = parseClass( node );
 	} else if ( rdfType.equals( SyntaxElement.PROPERTY_EXPR.resource ) ||
-		    rdfType.equals( SyntaxElement.DOMAIN_RESTRICTION.resource ) ||
-		    rdfType.equals( SyntaxElement.TYPE_COND.resource ) ||
-		    rdfType.equals( SyntaxElement.VALUE_COND.resource ) ) {
+		    rdfType.equals( SyntaxElement.PROPERTY_DOMAIN_COND.resource ) ||
+		    rdfType.equals( SyntaxElement.PROPERTY_TYPE_COND.resource ) ||
+		    rdfType.equals( SyntaxElement.PROPERTY_VALUE_COND.resource ) ) {
 	    result = parseProperty( node );
 	} else if ( rdfType.equals( SyntaxElement.RELATION_EXPR.resource ) ||
-		    rdfType.equals( SyntaxElement.DOMAIN_RESTRICTION.resource ) || // JE 2010: no chance
-		    rdfType.equals( SyntaxElement.CODOMAIN_RESTRICTION.resource ) ) {
+		    rdfType.equals( SyntaxElement.RELATION_DOMAIN_COND.resource ) || // JE 2010: no chance
+		    rdfType.equals( SyntaxElement.RELATION_CODOMAIN_COND.resource ) ) {
 	    result = parseRelation( node );
 	} else if ( rdfType.equals( SyntaxElement.INSTANCE_EXPR.resource ) ) {
 	    result = parseInstance( node );
@@ -466,24 +464,22 @@ public class RDFParser {
 			throw new AlignmentException( "Class statement must containt one constructor or Id : "+node );
 		    }
 		}
-		//JE2010MUSTCHECK
-		Resource coll = stmt.getResource(); //JE2010MUSTCHECK
+		Resource coll = stmt.getResource(); // MUSTCHECK
 		if ( op == SyntaxElement.NOT.getOperator() ) {
 		    clexpr.add( parseClass( coll ) );
 		} else { // Jena encode these collections as first/rest statements
-		    // THIS IS HORRIBLE BUT I DID NOT FOUND BETTER!
-		    while ( !RDF.nil.getURI().equals( coll.getURI() ) ) {
+		    while ( !RDF.nil.getURI().equals( coll.getURI() ) ) { // THIS IS HORRIBLE
 			clexpr.add( parseClass( coll.getProperty( RDF.first ).getResource() ) );
-			coll = coll.getProperty( RDF.rest ).getResource();
+			coll = coll.getProperty( RDF.rest ).getResource(); // MUSTCHECK
 		    }
 		}
 		return new ClassConstruction( op, clexpr );
 	    }
 	} else {
-	    if ( !rdfType.equals( SyntaxElement.PROPERTY_OCCURENCE_COND.resource ) &&
-		 !rdfType.equals( SyntaxElement.PROPERTY_TYPE_COND.resource ) &&
-		 !rdfType.equals( SyntaxElement.RELATION_DOMAIN_COND.resource ) &&
-		 !rdfType.equals( SyntaxElement.PROPERTY_VALUE_COND.resource ) ) {
+	    if ( !rdfType.equals( SyntaxElement.OCCURENCE_COND.resource ) &&
+		 !rdfType.equals( SyntaxElement.DOMAIN_RESTRICTION.resource ) &&
+		 !rdfType.equals( SyntaxElement.TYPE_COND.resource ) &&
+		 !rdfType.equals( SyntaxElement.VALUE_COND.resource ) ) {
 		throw new AlignmentException( "Bad class restriction type : "+rdfType );
 	    }
 	    PathExpression pe;
@@ -491,10 +487,9 @@ public class RDFParser {
 	    // Find onAttribute
 	    Statement stmt = node.getProperty( (Property)SyntaxElement.ONPROPERTY.resource );
 	    if ( stmt == null ) throw new AlignmentException( "Required edoal:onAttribute property" );
-	    //JE2010MUSTCHECK
-	    pe = parsePathExpression( stmt.getResource() );
-	    if ( rdfType.equals( SyntaxElement.PROPERTY_TYPE_COND.resource ) ) {
-		// JEZ010: check that pe is a Property / Relation
+	    pe = parsePathExpression( stmt.getResource() ); // MUSTCHECK
+	    if ( rdfType.equals( SyntaxElement.TYPE_COND.resource ) ) {
+		// Check that pe is a Property / Relation
 		// ==> different treatment
 		// Datatype could also be defined as objets...? (like rdf:resource="")
 		stmt = node.getProperty( (Property)SyntaxElement.DATATYPE.resource );
@@ -505,7 +500,7 @@ public class RDFParser {
 		} else {
 		    throw new AlignmentException( "Bad edoal:datatype value" );
 		}
-	    } else if ( rdfType.equals( SyntaxElement.RELATION_DOMAIN_COND.resource ) ) {
+	    } else if ( rdfType.equals( SyntaxElement.DOMAIN_RESTRICTION.resource ) ) {
 		stmt = node.getProperty( (Property)SyntaxElement.TOCLASS.resource );
 		if ( stmt == null ) throw new AlignmentException( "Required edoal:class property" );
 		RDFNode nn = stmt.getObject();
@@ -521,7 +516,7 @@ public class RDFParser {
 		URI id = getNodeId( stmt.getResource() );
 		if ( id != null ) comp = new Comparator( id );
 		else throw new AlignmentException("edoal:comparator requires an URI");
-		if ( rdfType.equals( SyntaxElement.PROPERTY_OCCURENCE_COND.resource ) ) {
+		if ( rdfType.equals( SyntaxElement.OCCURENCE_COND.resource ) ) {
 		    stmt = node.getProperty( (Property)SyntaxElement.VALUE.resource );
 		    if ( stmt == null ) throw new AlignmentException( "Required edoal:value property" );
 		    RDFNode nn = stmt.getObject();
@@ -530,28 +525,11 @@ public class RDFParser {
 		    } else {
 			throw new AlignmentException( "Bad occurence specification : "+nn );
 		    }
-		} else if ( rdfType.equals( SyntaxElement.PROPERTY_VALUE_COND.resource ) ) {
+		} else if ( rdfType.equals( SyntaxElement.VALUE_COND.resource ) ) {
 		    stmt = node.getProperty( (Property)SyntaxElement.VALUE.resource );
 		    if ( stmt == null ) throw new AlignmentException( "Required edoal:value property" );
 		    ValueExpression v = parseValue( stmt.getObject() );
 		    return new ClassValueRestriction( pe, comp, v );
-		    /* TO SUPPRESS
-		    RDFNode nn = stmt.getObject();
-		    if ( nn.isLiteral() ) {
-			return new ClassValueRestriction( pe, comp, new Value( ((Literal)nn).getString() ) );
-		    } else if ( nn.isResource() ) {
-			// get the type
-			Resource nnType = ((Resource)nn).getProperty(RDF.type).getResource();
-			if ( nnType.equals( SyntaxElement.INSTANCE_EXPR.resource ) ) {
-			    // JE2010: Check that pe is a Relation
-			    return new ClassValueRestriction( pe, comp, parseInstance( (Resource)nn ) );
-			} else {
-			    // JE2010: Check that pe is a Property
-			    return new ClassValueRestriction( pe, comp, parsePathExpression( (Resource)nn ) );
-			} // This one will raise the error
-		    } else {
-			throw new AlignmentException( "Bad edoal:value value" );
-			}*/
 		}
 	    }
 	}
@@ -562,13 +540,13 @@ public class RDFParser {
     protected PathExpression parsePathExpression( final Resource node ) throws AlignmentException {
 	Resource rdfType = node.getProperty(RDF.type).getResource();
 	if ( rdfType.equals( SyntaxElement.PROPERTY_EXPR.resource ) ||
-	     rdfType.equals( SyntaxElement.DOMAIN_RESTRICTION.resource ) ||
-	     rdfType.equals( SyntaxElement.TYPE_COND.resource ) ||
-	     rdfType.equals( SyntaxElement.VALUE_COND.resource ) ) {
+	     rdfType.equals( SyntaxElement.PROPERTY_DOMAIN_COND.resource ) ||
+	     rdfType.equals( SyntaxElement.PROPERTY_TYPE_COND.resource ) ||
+	     rdfType.equals( SyntaxElement.PROPERTY_VALUE_COND.resource ) ) {
 	    return parseProperty( node );
 	} else if ( rdfType.equals( SyntaxElement.RELATION_EXPR.resource ) ||
-	     rdfType.equals( SyntaxElement.CODOMAIN_RESTRICTION.resource ) ||
-	     rdfType.equals( SyntaxElement.VALUE_COND.resource ) ) {
+	     rdfType.equals( SyntaxElement.RELATION_CODOMAIN_COND.resource ) ||
+	     rdfType.equals( SyntaxElement.RELATION_DOMAIN_COND.resource ) ) {
 	    return parseRelation( node );
 	} else throw new AlignmentException( "Cannot parse path expression ("+rdfType+"): "+node );
 	
@@ -605,15 +583,13 @@ public class RDFParser {
 			throw new AlignmentException( "Property statement must containt one constructor or Id : "+node );
 		    }
 		}
-		Resource coll = stmt.getResource(); //JE2010MUSTCHECK
+		Resource coll = stmt.getResource(); // MUSTCHECK
 		if ( op == SyntaxElement.NOT.getOperator() ) {
 		    clexpr.add( parseProperty( coll ) );
 		} else if ( op == SyntaxElement.COMPOSE.getOperator() ) {
-		    // THIS IS HORRIBLE BUT I DID NOT FOUND BETTER!
-		    while ( !RDF.nil.getURI().equals( coll.getURI() ) ) {
-			// In this present case, I have to parse a series of Relations
-			// followed by a Property
-			Resource newcoll = coll.getProperty( RDF.rest ).getResource(); //JE2010MUSTCHECK
+		    while ( !RDF.nil.getURI().equals( coll.getURI() ) ) { // THIS IS HORRIBLE
+			// In this present case, it is a series of Relations followed by a Property
+			Resource newcoll = coll.getProperty( RDF.rest ).getResource(); // MUSTCHECK
 			if ( !RDF.nil.getURI().equals( newcoll.getURI() ) ) {
 			    clexpr.add( parseRelation( coll.getProperty( RDF.first ).getResource() ) );
 			} else {
@@ -622,16 +598,14 @@ public class RDFParser {
 			coll = newcoll;
 		    }
 		} else { // This is a first/rest statements
-		    // THIS IS HORRIBLE BUT I DID NOT FOUND BETTER!
-		    while ( !RDF.nil.getURI().equals( coll.getURI() ) ) {
-			//JE2010MUSTCHECK
+		    while ( !RDF.nil.getURI().equals( coll.getURI() ) ) { // THIS IS HORRIBLE
 			clexpr.add( parseProperty( coll.getProperty( RDF.first ).getResource() ) );
-			coll = coll.getProperty( RDF.rest ).getResource();
+			coll = coll.getProperty( RDF.rest ).getResource(); // MUSTCHECK
 		    }
 		}
 		return new PropertyConstruction( op, clexpr );
 	    }
-	} else if ( rdfType.equals( SyntaxElement.DOMAIN_RESTRICTION.resource ) ) {
+	} else if ( rdfType.equals( SyntaxElement.PROPERTY_DOMAIN_COND.resource ) ) {
 	    stmt = node.getProperty( (Property)SyntaxElement.TOCLASS.resource );
 	    if ( stmt == null ) throw new AlignmentException( "Required edoal:toClass property" );
 	    RDFNode nn = stmt.getObject();
@@ -640,7 +614,7 @@ public class RDFParser {
 	    } else {
 		throw new AlignmentException( "Incorrect class expression "+nn );
 	    } 
-	} else if ( rdfType.equals( SyntaxElement.TYPE_COND.resource ) ) {
+	} else if ( rdfType.equals( SyntaxElement.PROPERTY_TYPE_COND.resource ) ) {
 	    // Datatype could also be defined as objets...? (like rdf:resource="")
 	    // Or classes? OF COURSE????
 	    stmt = node.getProperty( (Property)SyntaxElement.DATATYPE.resource );
@@ -651,9 +625,8 @@ public class RDFParser {
 	    } else {
 		throw new AlignmentException( "Bad edoal:datatype value" );
 	    }
-	} else if ( rdfType.equals( SyntaxElement.VALUE_COND.resource ) ) {
+	} else if ( rdfType.equals( SyntaxElement.PROPERTY_VALUE_COND.resource ) ) {
 	    // Find comparator
-	    // JE2010: This is not good as comparator management...
 	    stmt = node.getProperty( (Property)SyntaxElement.COMPARATOR.resource );
 	    if ( stmt == null ) throw new AlignmentException( "Required edoal:comparator property" );
 	    URI id = getNodeId( stmt.getResource() );
@@ -663,22 +636,6 @@ public class RDFParser {
 	    if ( stmt == null ) throw new AlignmentException( "Required edoal:value property" );
 	    ValueExpression v = parseValue( stmt.getObject() );
 	    return new PropertyValueRestriction( comp, v );
-	    /*
-	    RDFNode nn = stmt.getObject();
-	    if ( nn.isLiteral() ) {
-		return new PropertyValueRestriction( comp, new Value( ((Literal)nn).getString() ) );
-	    } else if ( nn.isResource() ) {
-		// get the type
-		Resource nnType = ((Resource)nn).getProperty(RDF.type).getResource();
-		if ( nnType.equals( SyntaxElement.INSTANCE_EXPR.resource ) ) {
-		    return new PropertyValueRestriction( comp, parseInstance( (Resource)nn ) );
-		} else {
-		    //return new ClassValueRestriction( pe, comp, parsePathExpression( (Resource)nn ) );
-		    throw new AlignmentException( "Connot restrict value to "+nnType );
-		} 
-	    } else {
-		throw new AlignmentException( "Bad edoal:value value" );
-		}*/
 	} else {
 	    throw new AlignmentException("There is no pasrser for entity "+rdfType.getLocalName());
 	}
@@ -693,7 +650,7 @@ public class RDFParser {
 		return new RelationId( id );
 	    } else {
 		Constructor op = null;
-		// JE2010: does not compile with RelationExpression !!
+		// Remains a PathExpression (that this is a relation is checked by typing)
 		List<PathExpression> clexpr = new LinkedList<PathExpression>();
 		if ( node.hasProperty( (Property)SyntaxElement.AND.resource ) ) {
 		    op = SyntaxElement.AND.getOperator();
@@ -726,7 +683,7 @@ public class RDFParser {
 			throw new AlignmentException( "Relation statement must containt one constructor or Id : "+node );
 		    }
 		}
-		Resource coll = stmt.getResource(); //JE2010MUSTCHECK
+		Resource coll = stmt.getResource(); // MUSTCHECK
 		if ( op == SyntaxElement.NOT.getOperator() ||
 		     op == SyntaxElement.INVERSE.getOperator() || 
 		     op == SyntaxElement.REFLEXIVE.getOperator() || 
@@ -734,16 +691,14 @@ public class RDFParser {
 		     op == SyntaxElement.TRANSITIVE.getOperator() ) {
 		    clexpr.add( parseRelation( coll ) );
 		} else { // This is a first/rest statements
-		    // THIS IS HORRIBLE BUT I DID NOT FOUND BETTER!
-		    while ( !RDF.nil.getURI().equals( coll.getURI() ) ) {
-			//JE2010MUSTCHECK
+		    while ( !RDF.nil.getURI().equals( coll.getURI() ) ) { // THIS IS HORRIBLE
 			clexpr.add( parseRelation( coll.getProperty( RDF.first ).getResource() ) );
-			coll = coll.getProperty( RDF.rest ).getResource();
+			coll = coll.getProperty( RDF.rest ).getResource(); // MUSTCHECK
 		    }
 		}
 		return new RelationConstruction( op, clexpr );
 	    }
-	} else if ( rdfType.equals( SyntaxElement.DOMAIN_RESTRICTION.resource ) ) {
+	} else if ( rdfType.equals( SyntaxElement.RELATION_DOMAIN_COND.resource ) ) {
 	    stmt = node.getProperty( (Property)SyntaxElement.TOCLASS.resource );
 	    if ( stmt == null ) throw new AlignmentException( "Required edoal:toClass property" );
 	    RDFNode nn = stmt.getObject();
@@ -752,7 +707,7 @@ public class RDFParser {
 	    } else {
 		throw new AlignmentException( "Incorrect class expression "+nn );
 	    } 
-	} else if ( rdfType.equals( SyntaxElement.CODOMAIN_RESTRICTION.resource ) ) {
+	} else if ( rdfType.equals( SyntaxElement.RELATION_CODOMAIN_COND.resource ) ) {
 	    stmt = node.getProperty( (Property)SyntaxElement.TOCLASS.resource );
 	    if ( stmt == null ) throw new AlignmentException( "Required edoal:toClass property" );
 	    RDFNode nn = stmt.getObject();
@@ -817,14 +772,14 @@ public class RDFParser {
 		List<ValueExpression> valexpr = new LinkedList<ValueExpression>();
 		if ( ((Resource)node).hasProperty( (Property)SyntaxElement.ARGUMENTS.resource ) ) {
 		    Statement stmt = ((Resource)node).getProperty( (Property)SyntaxElement.ARGUMENTS.resource );
-		    Resource coll = stmt.getResource(); //JE2010MUSTCHECK
+		    Resource coll = stmt.getResource(); // MUSTCHECK
 		    while ( !RDF.nil.getURI().equals( coll.getURI() ) ) {
 			valexpr.add( parseValue( coll.getProperty( RDF.first ).getResource() ) );
 			coll = coll.getProperty( RDF.rest ).getResource();
 		    }
 		}
 		return new Apply( op, valexpr );
-	    } else { // JE2010: Check that pe is a Path
+	    } else { // Check that pe is a Path??
 		return parsePathExpression( (Resource)node );
 	    }
 	} else {
@@ -870,11 +825,11 @@ public class RDFParser {
 		    name = prefix.substring( pos+1 );
 		    prefix = prefix.substring( 0, pos+1 );
 		} else { prefix += "#"; }
-		// JE: this will not work for stuff like dc:creator which has no fragment!
+		// This will not work for stuff like dc:creator which has no fragment!
 		al.setExtension( prefix, name, anno );
 	    }
 	} catch (Exception e1) {
-	    // JE2009: Would be better to silently ignore annotations
+	    // It would be better to silently ignore annotations
 	    // Or report them in a bunch
 	    throw new AlignmentException("The annotation is not correct", e1);
 	}
diff --git a/src/fr/inrialpes/exmo/align/parser/SyntaxElement.java b/src/fr/inrialpes/exmo/align/parser/SyntaxElement.java
index beaa68c4..2b7a230c 100644
--- a/src/fr/inrialpes/exmo/align/parser/SyntaxElement.java
+++ b/src/fr/inrialpes/exmo/align/parser/SyntaxElement.java
@@ -93,11 +93,10 @@ public enum SyntaxElement {
 	ARGUMENTS(      Namespace.EDOAL, "arguments"),
 	ATTR_TRANSF(    Namespace.EDOAL, "transf"),
 	CLASS_EXPR(     Namespace.EDOAL, "Class", true),//ALIGNMENT
-	CODOMAIN_RESTRICTION(Namespace.EDOAL, "CodomainRestriction", true),
 	COMPARATOR(     Namespace.EDOAL, "comparator"),
 	COMPOSE(        Namespace.EDOAL, "compose", Constructor.COMP),
 	DATATYPE(       Namespace.EDOAL, "datatype"),
-	DOMAIN_RESTRICTION(Namespace.EDOAL, "DomainRestriction", true),
+	DOMAIN_RESTRICTION(Namespace.EDOAL, "AttributeDomainRestriction", true),
 	//ID(             Namespace.EDOAL, "Id", true), // Useless
 	INSTANCE_EXPR(  Namespace.EDOAL, "Instance", true),
 	INVERSE(        Namespace.EDOAL, "inverse", Constructor.INVERSE),
@@ -107,12 +106,14 @@ public enum SyntaxElement {
 	OPERATOR(       Namespace.EDOAL, "operator"),
 	OR(             Namespace.EDOAL, "or", Constructor.OR),
 	//PARAMETERS(     Namespace.EDOAL, "parameters"),
-	PROPERTY(       Namespace.EDOAL, "Property", true),
-	PROPERTY_EXPR(  Namespace.EDOAL, "Property"), // ??
-	PROPERTY_OCCURENCE_COND(Namespace.EDOAL, "AttributeOccurenceRestriction", true),
+	//PROPERTY(       Namespace.EDOAL, "Property", true), // ??
+	PROPERTY_EXPR(  Namespace.EDOAL, "Property"),
+	OCCURENCE_COND(Namespace.EDOAL, "AttributeOccurenceRestriction", true),
 	PROPERTY_TYPE_COND(Namespace.EDOAL, "PropertyTypeRestriction", true),
+	PROPERTY_DOMAIN_COND(Namespace.EDOAL, "PropertyDomainRestriction", true),
+	PROPERTY_VALUE_COND(     Namespace.EDOAL, "PropertyValueRestriction", true),
 	RELATION_DOMAIN_COND(Namespace.EDOAL, "RelationDomainRestriction", true),
-	PROPERTY_VALUE_COND(Namespace.EDOAL, "AttributeValueRestriction", true),
+	RELATION_CODOMAIN_COND(Namespace.EDOAL, "RelationCoDomainRestriction", true),
 	REFLEXIVE(      Namespace.EDOAL, "reflexive", Constructor.REFLEXIVE),
 	RELATION_EXPR(  Namespace.EDOAL, "Relation", true),
 	//SERVICE(        Namespace.EDOAL, "service"),
@@ -121,10 +122,10 @@ public enum SyntaxElement {
 	TOCLASS(        Namespace.EDOAL, "class"),
 	TRANSF(         Namespace.EDOAL, "transf"),
 	TRANSITIVE(     Namespace.EDOAL, "transitive", Constructor.TRANSITIVE),
-	TYPE_COND(      Namespace.EDOAL, "TypeRestriction", true),
+	TYPE_COND(Namespace.EDOAL, "AttributeTypeRestriction", true), // undocumented
 	VALUE(          Namespace.EDOAL, "value"),
 	VAR(            Namespace.EDOAL, "var"),
-	VALUE_COND(     Namespace.EDOAL, "ValueRestriction", true),
+	VALUE_COND(Namespace.EDOAL, "AttributeValueRestriction", true),
 	    ;
 
     /** Operator to determine how to combine the expressions */
diff --git a/test/src/EDOALExportTest.java b/test/src/EDOALExportTest.java
index da505fc7..a4f445b5 100644
--- a/test/src/EDOALExportTest.java
+++ b/test/src/EDOALExportTest.java
@@ -205,11 +205,11 @@ Does bot work anymore because not visitable
 	    + "<edoal:value><edoal:Literal edoal:string=\"18\"/></edoal:value>"
 			  + "</edoal:AttributeValueRestriction>" );
 	toExport = new ClassTypeRestriction( new PropertyId(new URI("http://my.sister#age")), new Datatype("integer-under-100"));
-	assertEquals( render( toExport ), "<edoal:PropertyTypeRestriction>"
+	assertEquals( render( toExport ), "<edoal:AttributeTypeRestriction>"
 	    + "<edoal:onAttribute><edoal:Property rdf:about=\"http://my.sister#age\"/></edoal:onAttribute>"
 	    //+ "<edoal:comparator rdf:resource=\"http://www.w3.org/2001/XMLSchema#equals\"/>"
 	    + "<edoal:datatype>integer-under-100</edoal:datatype>"
-		+ "</edoal:PropertyTypeRestriction>" );
+		+ "</edoal:AttributeTypeRestriction>" );
 	toExport = new ClassOccurenceRestriction( new PropertyId(new URI("http://my.sister#age")), Comparator.GREATER, 18);
 	assertEquals( render( toExport ), "<edoal:AttributeOccurenceRestriction>"
 	    + "<edoal:onAttribute><edoal:Property rdf:about=\"http://my.sister#age\"/></edoal:onAttribute>"
@@ -283,16 +283,16 @@ Does bot work anymore because not visitable
     @Test(groups = { "full", "omwg", "raw" }, dependsOnMethods = {"setUp"})
     public void testExportPropertyCond() throws Exception {
 	assertEquals( render( new PropertyDomainRestriction(new ClassId("http://meine/tolle/restriction")) ),
-		      "<edoal:DomainRestriction><edoal:class>"
+		      "<edoal:PropertyDomainRestriction><edoal:class>"
 		      + "<edoal:Class rdf:about=\"http://meine/tolle/restriction\"/>"
-		      + "</edoal:class></edoal:DomainRestriction>" );
+		      + "</edoal:class></edoal:PropertyDomainRestriction>" );
 	assertEquals( render( new PropertyValueRestriction( Comparator.EQUAL, new Value("18"))),
-		      "<edoal:ValueRestriction>"
+		      "<edoal:PropertyValueRestriction>"
 		      + "<edoal:comparator rdf:resource=\"http://www.w3.org/2001/XMLSchema#equals\"/>"
 		      + "<edoal:value><edoal:Literal edoal:string=\"18\"/></edoal:value>"
-		      + "</edoal:ValueRestriction>" );
+		      + "</edoal:PropertyValueRestriction>" );
 	assertEquals( render( new PropertyTypeRestriction(new Datatype("int"))),
-		      "<edoal:TypeRestriction><edoal:datatype>int</edoal:datatype></edoal:TypeRestriction>" );
+		      "<edoal:PropertyTypeRestriction><edoal:datatype>int</edoal:datatype></edoal:PropertyTypeRestriction>" );
     }
     
     @Test(groups = { "full", "omwg", "raw" }, dependsOnMethods = {"setUp"})
@@ -331,9 +331,9 @@ Does bot work anymore because not visitable
 		      + "<edoal:Property rdf:about=\"http://mein/super/property0\"/>"
 		      + "<edoal:Property rdf:about=\"http://mein/super/property1\"/>"
 		      + "</edoal:or></edoal:Property>"
-		      + "<edoal:ValueRestriction>"
+		      + "<edoal:PropertyValueRestriction>"
 		      + "<edoal:comparator rdf:resource=\"http://www.w3.org/2001/XMLSchema#equals\"/>"
-		      + "<edoal:value><edoal:Literal edoal:string=\"5\"/></edoal:value></edoal:ValueRestriction>"
+		      + "<edoal:value><edoal:Literal edoal:string=\"5\"/></edoal:value></edoal:PropertyValueRestriction>"
 		      + "</edoal:and></edoal:Property>");
 	toExport = new PropertyConstruction( Constructor.NOT, Collections.singleton((PathExpression)new PropertyId(new URI("http://mein/super/property"))));
 	// JE2009-ERROR-HERE
@@ -352,13 +352,13 @@ Does bot work anymore because not visitable
     @Test(groups = { "full", "omwg", "raw" }, dependsOnMethods = {"setUp"})
     public void testExportRelationCondCond() throws Exception {
 	RelationRestriction toExport = new RelationDomainRestriction(new ClassId("http://my/super/class"));
-	assertEquals( render( toExport), "<edoal:DomainRestriction><edoal:class>"
+	assertEquals( render( toExport), "<edoal:RelationDomainRestriction><edoal:class>"
 		      + "<edoal:Class rdf:about=\"http://my/super/class\"/>"
-		      + "</edoal:class></edoal:DomainRestriction>");
+		      + "</edoal:class></edoal:RelationDomainRestriction>");
     toExport = new RelationCoDomainRestriction(new ClassId("http://my/super/class"));
-	assertEquals( render( toExport), "<edoal:CodomainRestriction><edoal:class>"
+	assertEquals( render( toExport), "<edoal:RelationCoDomainRestriction><edoal:class>"
 	    + "<edoal:Class rdf:about=\"http://my/super/class\"/>"
-		      + "</edoal:class></edoal:CodomainRestriction>");
+		      + "</edoal:class></edoal:RelationCoDomainRestriction>");
     }
 
     @Test(groups = { "full", "omwg", "raw" }, dependsOnMethods = {"setUp"})
@@ -395,9 +395,9 @@ Does bot work anymore because not visitable
 	    + "<edoal:and rdf:parseType=\"Collection\">"
 	    + "<edoal:Relation rdf:about=\"http://my/super/relation0\"/>"
 	    + "<edoal:Relation rdf:about=\"http://my/super/relation1\"/>"
-	    + "<edoal:DomainRestriction><edoal:class>"
+	    + "<edoal:RelationDomainRestriction><edoal:class>"
 	    + "<edoal:Class rdf:about=\"http://my/super/class\"/>"
-	    + "</edoal:class></edoal:DomainRestriction>" 
+	    + "</edoal:class></edoal:RelationDomainRestriction>" 
 	    + "</edoal:and>" + "</edoal:Relation>");
 	toExport = new RelationConstruction( Constructor.OR, expressions );
 	assertEquals( render( toExport ), 
@@ -405,9 +405,9 @@ Does bot work anymore because not visitable
 	    + "<edoal:or rdf:parseType=\"Collection\">"
 	    + "<edoal:Relation rdf:about=\"http://my/super/relation0\"/>"
 	    + "<edoal:Relation rdf:about=\"http://my/super/relation1\"/>"
-	    + "<edoal:DomainRestriction><edoal:class>"
+	    + "<edoal:RelationDomainRestriction><edoal:class>"
 	    + "<edoal:Class rdf:about=\"http://my/super/class\"/>"
-	    + "</edoal:class></edoal:DomainRestriction>" 
+	    + "</edoal:class></edoal:RelationDomainRestriction>" 
 		      + "</edoal:or>" + "</edoal:Relation>");
 
 	final Set<PathExpression> expressions2 = new LinkedHashSet<PathExpression>();
@@ -421,9 +421,9 @@ Does bot work anymore because not visitable
 	    + "<edoal:Relation><edoal:not>"
 	    + "<edoal:Relation rdf:about=\"http://my/super/relation\"/>"
 	    + "</edoal:not></edoal:Relation>" 
-	    + "<edoal:CodomainRestriction><edoal:class>"
+	    + "<edoal:RelationCoDomainRestriction><edoal:class>"
 	    + "<edoal:Class rdf:about=\"http://my/super/class\"/>"
-	    + "</edoal:class></edoal:CodomainRestriction>" 
+	    + "</edoal:class></edoal:RelationCoDomainRestriction>" 
 	    + "</edoal:and>" + "</edoal:Relation>");
 	toExport = new RelationConstruction( Constructor.INVERSE, Collections.singleton((PathExpression)new RelationId("http://my/super/relation")));
 	assertEquals( render( toExport ), 
-- 
GitLab