diff --git a/lib/align.jar b/lib/align.jar
index 66121e2c98c9def27c5b33a9b1f72016337f5e1d..b11673b722d89c952078d9a064c6d1d9d79d65a8 100644
Binary files a/lib/align.jar and b/lib/align.jar differ
diff --git a/lib/align.pom b/lib/align.pom
index bf4766d9ce03e1be53f42df647d316d5c17f70bc..51d7841591d6a02a319f125b4a0e0bcb01c2e13f 100644
--- a/lib/align.pom
+++ b/lib/align.pom
@@ -17,7 +17,7 @@
   <groupId>org.semanticweb.owl</groupId>
   <artifactId>align</artifactId>
   <version>4.6</version>
-  <!-- Rev 1970M 30/09/2014 -->
+  <!-- Rev 2002M 26/11/2014 -->
   <name>The Alignment API</name>
   <description>The Alignment API is an API for manipulating ontology alignments.</description>
   <url>http://alignapi.gforge.inria.fr</url>
diff --git a/lib/alignsvc.jar b/lib/alignsvc.jar
index 8d27f201b1a488d2a3e1662862e5223a71c3d317..89a38a3e3a1525e0af474a6d8c38a96295b8ed47 100644
Binary files a/lib/alignsvc.jar and b/lib/alignsvc.jar differ
diff --git a/lib/alignsvc.pom b/lib/alignsvc.pom
index ee44c82f6b52de4804626cdc3406b385243ccfa0..4c542c279eccb689a717c74eab6aff500fb03566 100644
--- a/lib/alignsvc.pom
+++ b/lib/alignsvc.pom
@@ -17,7 +17,7 @@
   <groupId>fr.inrialpes.exmo.align</groupId>
   <artifactId>alignsvc</artifactId>
   <version>4.6</version>
-  <!-- Rev 1970M 30/09/2014 -->
+  <!-- Rev 2002M 26/11/2014 -->
   <name>Alignment server</name>
   <description>A server for storing and sharing ontology alignments.</description>
   <url>http://alignapi.gforge.inria.fr</url>
diff --git a/lib/ontowrap.jar b/lib/ontowrap.jar
index 9743744fcbec5be588e54fe3465448415b1d73c9..c388eb0293e68cb45996cdea1a0ab031c21971b3 100644
Binary files a/lib/ontowrap.jar and b/lib/ontowrap.jar differ
diff --git a/lib/ontowrap.pom b/lib/ontowrap.pom
index e819f6291dc8ed809836d83bf7ac1d5c9d65ff59..5648f62ed7d4bc42d7e699db09f5687e6e064852 100644
--- a/lib/ontowrap.pom
+++ b/lib/ontowrap.pom
@@ -17,7 +17,7 @@
   <groupId>fr.inrialpes.exmo</groupId>
   <artifactId>ontowrap</artifactId>
   <version>4.6</version>
-  <!-- Rev 1970M 30/09/2014 -->
+  <!-- Rev 2002M 26/11/2014 -->
   <name>Ontology wrapping API</name>
   <description>An ontology wrapping API and library.</description>
   <url>http://alignapi.gforge.inria.fr</url>
diff --git a/lib/procalign.jar b/lib/procalign.jar
index 60843d890039c13d56d24baa5a6c6e80ab49ee07..d6fadfd5321032db55a8c1e66298e3d57df06003 100644
Binary files a/lib/procalign.jar and b/lib/procalign.jar differ
diff --git a/lib/procalign.pom b/lib/procalign.pom
index 92c9b3bc77b156c525d48dc8da5027f586df4612..ed0e321323e2f6864f120996e0c3fa19c032a7fe 100644
--- a/lib/procalign.pom
+++ b/lib/procalign.pom
@@ -17,7 +17,7 @@
   <groupId>fr.inrialpes.exmo.align</groupId>
   <artifactId>procalign</artifactId>
   <version>4.6</version>
-  <!-- Rev 1970M 30/09/2014 -->
+  <!-- Rev 2002M 26/11/2014 -->
   <name>Reference implementation of the Alignment API</name>
   <description>Implementation of the Alignment API for manipulating ontology alignments.</description>
   <url>http://alignapi.gforge.inria.fr</url>
diff --git a/src/fr/inrialpes/exmo/align/impl/renderer/GraphPatternRendererVisitor.java b/src/fr/inrialpes/exmo/align/impl/renderer/GraphPatternRendererVisitor.java
index 88f9ce4c8e5181b4680a03c7818cd7d4d5ccbfe5..5be60b129b2042d3a194674643f6cbd5b7167e2f 100644
--- a/src/fr/inrialpes/exmo/align/impl/renderer/GraphPatternRendererVisitor.java
+++ b/src/fr/inrialpes/exmo/align/impl/renderer/GraphPatternRendererVisitor.java
@@ -110,7 +110,7 @@ public abstract class GraphPatternRendererVisitor extends IndentedRendererVisito
     private Set<String> objectsRestriction = null;
     protected Hashtable<String, String> prefixList = null;
 
-    private int varsIndexcount = 1;
+    protected int varsIndexcount = 1;
 
     private boolean split = false;                                  // split each query in a file, not on the writer
     private String splitdir = "";                                   // directory where to put query files
@@ -133,7 +133,7 @@ public abstract class GraphPatternRendererVisitor extends IndentedRendererVisito
         objectsRestriction.clear();
         flagRestriction = false;
     }
-
+    
     protected void resetVariables(Expression expr, String s, String o) throws AlignmentException {
         if (expr instanceof ClassExpression) {
             resetVariables((ClassExpression) expr, s, o);
diff --git a/src/fr/inrialpes/exmo/align/impl/renderer/SPARQLSelectRendererVisitor.java b/src/fr/inrialpes/exmo/align/impl/renderer/SPARQLSelectRendererVisitor.java
index e748cfc4044bc9288e5587f2e177dd8ff665e63c..26531faebf75df1aec1ea750642bb71044008481 100644
--- a/src/fr/inrialpes/exmo/align/impl/renderer/SPARQLSelectRendererVisitor.java
+++ b/src/fr/inrialpes/exmo/align/impl/renderer/SPARQLSelectRendererVisitor.java
@@ -161,56 +161,38 @@ public class SPARQLSelectRendererVisitor extends GraphPatternRendererVisitor imp
      */
     public void visit(final LinkkeyEquals linkkeyEquals) throws AlignmentException {
         //Main part for selection
-//        resetVariables("?s1", "?o1");
-//        resetS1("?o1");
+        resetS1("?o1");
         Expression expr1 = linkkeyEquals.getExpression1();
         expr1.accept(this);
-//        resetVariables("?s2", "?o2");
-//        resetS2("?o2");
+        resetS2("?o1");
         Expression expr2 = linkkeyEquals.getExpression2();
         expr2.accept(this);
-        //Retrieving intersect elements
-        addToGP("MINUS { " + NL
-                + "SELECT DISTINCT ?s1 ?s2 " + NL
-                + "WHERE " + NL
-                + "{ " + NL);
-//        resetVariables("?s1", "?o1");
-//        resetS1("?o1");
+        //First part 
+        addToGP("MINUS { " + NL);
+        resetS1("?o1");
         expr1.accept(this);
-//        resetVariables("?s1", "?o2");
-//        resetS1("?o2");
+        resetS1("?o2");
         expr1.accept(this);
-//        resetVariables("?s2", "?o3");
-//        resetS2("?o3");
+        resetS2("?o1");
         expr2.accept(this);
-        addToGP("FILTER(?s1 != ?s2 && ?o2 != ?o1 && ?o3 = ?o1 && NOT EXISTS {" + NL);
-//        resetVariables("?s2", "?o2");
-//        resetS2("?o2");
+        addToGP("FILTER(?s1 != ?s2 && ?o2 != ?o1 && NOT EXISTS {" + NL);
+        resetS2("?o2");
         expr2.accept(this);
         addToGP("}) " + NL);
         addToGP("} " + NL);
-        addToGP("} " + NL);
         //Second part
-        addToGP("MINUS {" + NL
-                + "SELECT DISTINCT ?s1 ?s2 " + NL
-                + "WHERE " + NL
-                + "{ " + NL);
-//        resetVariables("?s1", "?o1");
-//        resetS1("?o1");
+        addToGP("MINUS {" + NL);
+        resetS1("?o1");
         expr1.accept(this);
-//        resetVariables("?s2", "?o2");
-//        resetS2("?o2");
+        resetS2("?o1");
         expr2.accept(this);
-//        resetVariables("?s2", "?o3");
-//        resetS2("?o3");
+        resetS2("?o2");
         expr2.accept(this);
-        addToGP("FILTER(?s1 != ?s2 && ?o2 != ?o3 && ?o2 = ?o1 && NOT EXISTS {" + NL);
-//        resetVariables("?s1", "?o3");
-//        resetS1("?o3");
+        addToGP("FILTER(?s1 != ?s2 && ?o1 != ?o2 && NOT EXISTS {" + NL);
+        resetS1("?o2");
         expr1.accept(this);
-        addToGP("})" + NL);
-        addToGP("}" + NL);
-        addToGP("}" + NL);
+        addToGP("}) " + NL);
+        addToGP("} " + NL);
     }
 
     /**
diff --git a/test/input/people_relation_equals_alignment.rdf b/test/input/people_relation_equals_alignment.rdf
index 6c608667bd9ede042b8cb23998494f57ccf656c2..d3368ae62cae8784feabed92248a1a58314c2ab7 100644
--- a/test/input/people_relation_equals_alignment.rdf
+++ b/test/input/people_relation_equals_alignment.rdf
@@ -54,14 +54,14 @@
                                     <edoal:Property>
                                         <edoal:compose rdf:parseType="Collection">
                                             <edoal:Relation>
-                                                <edoal:compose rdf:parseType="Collection">
+                                                <edoal:and rdf:parseType="Collection">
                                                     <edoal:RelationCoDomainRestriction>
                                                         <edoal:class>
                                                             <edoal:Class rdf:about="http://xmlns.com/foaf/0.1/Person"/>
                                                         </edoal:class>
                                                     </edoal:RelationCoDomainRestriction>
                                                     <edoal:Relation rdf:about="http://xmlns.com/foaf/0.1/knows" />
-                                                </edoal:compose>
+                                                </edoal:and>
                                             </edoal:Relation>
                                             <edoal:Property rdf:about="http://xmlns.com/foaf/0.1/givenName" />
                                         </edoal:compose>
diff --git a/test/input/people_relation_intersects_alignment.rdf b/test/input/people_relation_intersects_alignment.rdf
index fa72e0f1ff5c7e2ed6f2d81fdc2c670bcd391edd..abd8f08cf7b3165ccbeca8758d4b3c5d98c125f0 100644
--- a/test/input/people_relation_intersects_alignment.rdf
+++ b/test/input/people_relation_intersects_alignment.rdf
@@ -33,7 +33,7 @@
                 </formalism>
             </Ontology>
         </onto2>
-        <map>
+          <map>
             <Cell rdf:about="http://exmo.inrialpes.fr/connectors#cell1">
                 <entity1>
                     <edoal:Class rdf:about="http://exmo.inrialpes.fr/connectors-core/Personne"/>
@@ -43,7 +43,7 @@
                 </entity2>
                 <relation>=</relation>
                 <measure rdf:datatype='http://www.w3.org/2001/XMLSchema#float'>1.0</measure>
-                <edoal:linkkey> 
+                <edoal:linkkey>
                     <edoal:Linkkey>
                         <edoal:binding>
                             <edoal:Intersects>
@@ -54,14 +54,14 @@
                                     <edoal:Property>
                                         <edoal:compose rdf:parseType="Collection">
                                             <edoal:Relation>
-                                                <edoal:compose rdf:parseType="Collection">
+                                                <edoal:and rdf:parseType="Collection">
                                                     <edoal:RelationCoDomainRestriction>
                                                         <edoal:class>
                                                             <edoal:Class rdf:about="http://xmlns.com/foaf/0.1/Person"/>
                                                         </edoal:class>
                                                     </edoal:RelationCoDomainRestriction>
                                                     <edoal:Relation rdf:about="http://xmlns.com/foaf/0.1/knows" />
-                                                </edoal:compose>
+                                                </edoal:and>
                                             </edoal:Relation>
                                             <edoal:Property rdf:about="http://xmlns.com/foaf/0.1/givenName" />
                                         </edoal:compose>
diff --git a/test/src/SPARQLSelectRendererVisitorTest.java b/test/src/SPARQLSelectRendererVisitorTest.java
index 0515d5f3c8eac831d1d92c9cb2971396bce0bb13..ad3844e6012d2322c7ac34f5d057b7cd5b0de185 100644
--- a/test/src/SPARQLSelectRendererVisitorTest.java
+++ b/test/src/SPARQLSelectRendererVisitorTest.java
@@ -35,6 +35,7 @@ import java.util.Properties;
 import org.semanticweb.owl.align.Cell;
 import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.assertTrue;
+import static org.testng.Assert.fail;
 import org.testng.annotations.Test;
 
 /**
@@ -152,165 +153,164 @@ public class SPARQLSelectRendererVisitorTest {
         }
     }
 
-//    @Test(groups = {"full", "impl", "raw"}, dependsOnMethods = {"QueryFromWithoutLinkkey", "QueryFromSimpleLinkkeyAndIntersects"})
-//    public void QueryFromSimpleLinkkeyAndEquals() throws Exception {
-//        String alignmentFileName = "people_equals_alignment.rdf";
-//        EDOALAlignment alignment = Utils.loadAlignement(alignmentFileName);
-//        StringWriter stringWriter = new StringWriter();
-//        PrintWriter writer = new PrintWriter(stringWriter);
-//        SPARQLSelectRendererVisitor renderer = new SPARQLSelectRendererVisitor(writer);
-//        Properties properties = new Properties();
-//        renderer.init(properties);
-//        alignment.render(renderer);
-//
-//        assertEquals(alignment.nbCells(), 1);
-//        Enumeration<Cell> cells = alignment.getElements();
-//        Cell cell = cells.nextElement();
-//
-//        String expectedQuery = "PREFIX rdf:<http://www.w3.org/1999/02/22-rdf-syntax-ns#>\n"
-//                + "PREFIX ns0:<http://exmo.inrialpes.fr/connectors-core/>\n"
-//                + "PREFIX ns1:<http://xmlns.com/foaf/0.1/>\n"
-//                + "SELECT DISTINCT ?s1 ?s2 \n"
-//                + "WHERE {\n"
-//                + "?s1 rdf:type ns0:Personne .\n"
-//                + "?s2 rdf:type ns1:Person .\n"
-//                + "?s1 ns0:nom ?o1 .\n"
-//                + "?s2 ns1:givenName ?o1 .\n"
-//                + "MINUS { \n"
-//                + "?s1 ns0:nom ?o1 .\n"
-//                + "?s1 ns0:nom ?o2 .\n"
-//                + "?s2 ns1:givenName ?o1 .\n"
-//                + "FILTER(?s1 != ?s2 && ?o2 != ?o1 && NOT EXISTS {\n"
-//                + "?s2 ns1:givenName ?o2 .\n"
-//                + "}) \n"
-//                + "}\n"
-//                + "MINUS {\n"
-//                + "?s1 ns0:nom ?o1 .\n"
-//                + "?s2 ns1:givenName ?o1 .\n"
-//                + "?s2 ns1:givenName ?o2 .\n"
-//                + "FILTER(?s1 != ?s2 && ?o2 != ?o1 && NOT EXISTS {\n"
-//                + "?s1 ns0:nom ?o2 .\n"
-//                + "})\n"
-//                + "}\n"
-//                + "FILTER(?s1 != ?s2)\n"
-//                + "}\n";
-//        String query = renderer.getQueryFromOnto1ToOnto2(cell);
+    @Test(groups = {"full", "impl", "raw"}, dependsOnMethods = {"QueryFromWithoutLinkkey", "QueryFromSimpleLinkkeyAndIntersects"})
+    public void QueryFromSimpleLinkkeyAndEquals() throws Exception {
+        String alignmentFileName = "people_equals_alignment.rdf";
+        EDOALAlignment alignment = Utils.loadAlignement(alignmentFileName);
+        StringWriter stringWriter = new StringWriter();
+        PrintWriter writer = new PrintWriter(stringWriter);
+        SPARQLSelectRendererVisitor renderer = new SPARQLSelectRendererVisitor(writer);
+        Properties properties = new Properties();
+        renderer.init(properties);
+        alignment.render(renderer);
+
+        assertEquals(alignment.nbCells(), 1);
+        Enumeration<Cell> cells = alignment.getElements();
+        Cell cell = cells.nextElement();
+
+        String expectedQuery = "PREFIX rdf:<http://www.w3.org/1999/02/22-rdf-syntax-ns#>\n"
+                + "PREFIX ns0:<http://exmo.inrialpes.fr/connectors-core/>\n"
+                + "PREFIX ns1:<http://xmlns.com/foaf/0.1/>\n"
+                + "SELECT DISTINCT ?s1 ?s2 \n"
+                + "WHERE {\n"
+                + "?s1 rdf:type ns0:Personne .\n"
+                + "?s2 rdf:type ns1:Person .\n"
+                + "?s1 ns0:nom ?o1 .\n"
+                + "?s2 ns1:givenName ?o1 .\n"
+                + "MINUS { \n"
+                + "?s1 ns0:nom ?o1 .\n"
+                + "?s1 ns0:nom ?o2 .\n"
+                + "?s2 ns1:givenName ?o1 .\n"
+                + "FILTER(?s1 != ?s2 && ?o2 != ?o1 && NOT EXISTS {\n"
+                + "?s2 ns1:givenName ?o2 .\n"
+                + "}) \n"
+                + "} \n"
+                + "MINUS {\n"
+                + "?s1 ns0:nom ?o1 .\n"
+                + "?s2 ns1:givenName ?o1 .\n"
+                + "?s2 ns1:givenName ?o2 .\n"
+                + "FILTER(?s1 != ?s2 && ?o1 != ?o2 && NOT EXISTS {\n"
+                + "?s1 ns0:nom ?o2 .\n"
+                + "}) \n"
+                + "} \n"
+                + "FILTER(?s1 != ?s2)\n"
+                + "}\n";
+        String query = renderer.getQueryFromOnto1ToOnto2(cell);
 //        System.out.println("QueryFromSimpleLinkkeyFromEquals expected Query : " + expectedQuery);
-////        assertEquals(query, expectedQuery);
-//
-//        Model values = Utils.loadValues(new String[]{"equals_people_1.rdf", "equals_people_2.rdf"});
-//        Query selectQuery = QueryFactory.create(query);
-//        String[] expectedS1 = {
-//            "http://exmo.inrialpes.fr/connectors-data/people#alice_c1_1"};
-//        String[] expectedS2 = {
-//            "http://exmo.inrialpes.fr/connectors-data/people#alice_c1_2",};
-//        HashMap<String, Collection<String>> allResultValues = Utils.getResultValues(QueryExecutionFactory.create(selectQuery, values).execSelect());
-//        Collection<String> resultValues = allResultValues.get("s1");
-//        assertEquals(resultValues.size(), expectedS1.length);
-//        for (String expected : expectedS1) {
-//            assertTrue(resultValues.contains(expected), "For expected : " + expected);
-//        }
-//
-//        resultValues = allResultValues.get("s2");
-//        assertEquals(resultValues.size(), expectedS2.length);
-//        for (String expected : expectedS2) {
-//            assertTrue(resultValues.contains(expected), "For expected : " + expected);
-//        }
-//
-//        //With from onto2ToOnto1
-//        query = renderer.getQueryFromOnto2ToOnto1(cell);//Where ?p1 is in onto2
-//        values = Utils.loadValues(new String[]{"equals_people_1.rdf", "equals_people_2.rdf"});
-//        selectQuery = QueryFactory.create(query);
-//        allResultValues = Utils.getResultValues(QueryExecutionFactory.create(selectQuery, values).execSelect());
-//
-//        resultValues = allResultValues.get("s1");
-//        assertEquals(resultValues.size(), expectedS1.length);
-//        for (String expected : expectedS2) {//Change here
-//            assertTrue(resultValues.contains(expected), "For expected : " + expected);
-//        }
-//
-//        resultValues = allResultValues.get("s2");
-//        assertEquals(resultValues.size(), expectedS2.length);
-//        for (String expected : expectedS1) {//Change here
-//            assertTrue(resultValues.contains(expected), "For expected : " + expected);
-//        }
-//    }
-//
-//    @Test(groups = {"full", "impl", "raw"}, dependsOnMethods = {"QueryFromSimpleLinkkeyAndIntersects"})
-//    public void QueryFromRelationLinkkeyAndIntersects() throws Exception {
-//        String alignmentFileName = "people_relation_intersects_alignment.rdf";
-//        EDOALAlignment alignment = Utils.loadAlignement(alignmentFileName);
-//        StringWriter stringWriter = new StringWriter();
-//        PrintWriter writer = new PrintWriter(stringWriter);
-//        SPARQLSelectRendererVisitor renderer = new SPARQLSelectRendererVisitor(writer);
-//        Properties properties = new Properties();
-//        renderer.init(properties);
-//        alignment.render(renderer);
-//
-//        assertEquals(alignment.nbCells(), 1);
-//        Enumeration<Cell> cells = alignment.getElements();
-//        Cell cell = cells.nextElement();
-//
-//        Model values = Utils.loadValues(new String[]{"intersects_people_1.rdf", "intersects_people_2.rdf"});
-//
-//        String query = renderer.getQueryFromOnto1ToOnto2(cell);
-//        String expectedQuery = "PREFIX rdf:<http://www.w3.org/1999/02/22-rdf-syntax-ns#>\n"
-//                + "PREFIX ns0:<http://exmo.inrialpes.fr/connectors-core/>\n"
-//                + "PREFIX ns1:<http://xmlns.com/foaf/0.1/>\n"
-//                + "SELECT DISTINCT ?s1 ?s2 \n"
-//                + "WHERE {\n"
-//                + "?s1 rdf:type ns0:Personne .\n"
-//                + "?s2 rdf:type ns1:Person .\n"
-//                + "?s1 ns0:connait ?o1 .\n"
-//                + "?s2 ns1:knows ?o2 .\n"
-//                + "?o2 rdf:type ns1:Person .\n"
-//                + "?o2 ns1:givenName ?o1 .\n"
-//                + "FILTER(?s1 != ?s2)\n"
-//                + "}";
-//        System.out.println("QueryFromRelationLinkkeyAndIntersects expectedQuery : " + expectedQuery);
-//        System.out.println("query : " + query);
-//        assertEquals(expectedQuery, query);
-//        Query selectQuery = QueryFactory.create(query);
-//        QueryExecution selectQueryExec = QueryExecutionFactory.create(selectQuery, values);
-//        ResultSet results = selectQueryExec.execSelect();
-//        String[] expectedS1 = {
-//            "http://exmo.inrialpes.fr/connectors-data/people#alice_c1_1",
-//            "http://exmo.inrialpes.fr/connectors-data/people#alice_c2_1"};
-//        String[] expectedS2 = {
-//            "http://exmo.inrialpes.fr/connectors-data/people#alice_c1_2",
-//            "http://exmo.inrialpes.fr/connectors-data/people#alice_c2_2"};
-//
-//        HashMap<String, Collection<String>> allResultValues = Utils.getResultValues(results);
-//        Collection<String> resultValues = allResultValues.get("s1");
-//        assertEquals(resultValues.size(), expectedS1.length);
-//        for (String expected : expectedS1) {
-//            assertTrue(resultValues.contains(expected));
-//        }
-//
-//        resultValues = allResultValues.get("s2");
-//        assertEquals(resultValues.size(), expectedS2.length);
-//        for (String expected : expectedS2) {
-//            assertTrue(resultValues.contains(expected));
-//        }
-//        //On other sens : 
-//        query = renderer.getQueryFromOnto2ToOnto1(cell);
-//        selectQuery = QueryFactory.create(query);
-//        selectQueryExec = QueryExecutionFactory.create(selectQuery, values);
-//        results = selectQueryExec.execSelect();
-//
-//        allResultValues = Utils.getResultValues(results);
-//        resultValues = allResultValues.get("s1");
-//        assertEquals(resultValues.size(), expectedS2.length);
-//        for (String expected : expectedS2) {
-//            assertTrue(resultValues.contains(expected));
-//        }
-//
-//        resultValues = allResultValues.get("s2");
-//        assertEquals(resultValues.size(), expectedS1.length);
-//        for (String expected : expectedS1) {
-//            assertTrue(resultValues.contains(expected));
-//        }
-//    }
+//        System.out.println("QueryFromSimpleLinkkeyFromEquals returned Query : " + query);
+//        assertEquals(query, expectedQuery);
+
+        Model values = Utils.loadValues(new String[]{"equals_people_1.rdf", "equals_people_2.rdf"});
+        Query selectQuery = QueryFactory.create(query);
+        String[] expectedS1 = {
+            "http://exmo.inrialpes.fr/connectors-data/people#alice_c1_1"};
+        String[] expectedS2 = {
+            "http://exmo.inrialpes.fr/connectors-data/people#alice_c1_2",};
+        HashMap<String, Collection<String>> allResultValues = Utils.getResultValues(QueryExecutionFactory.create(selectQuery, values).execSelect());
+        Collection<String> resultValues = allResultValues.get("s1");
+        assertEquals(resultValues.size(), expectedS1.length);
+        for (String expected : expectedS1) {
+            assertTrue(resultValues.contains(expected), "For expected : " + expected);
+        }
+
+        resultValues = allResultValues.get("s2");
+        assertEquals(resultValues.size(), expectedS2.length);
+        for (String expected : expectedS2) {
+            assertTrue(resultValues.contains(expected), "For expected : " + expected);
+        }
+
+        //With from onto2ToOnto1
+        query = renderer.getQueryFromOnto2ToOnto1(cell);//Where ?p1 is in onto2
+        values = Utils.loadValues(new String[]{"equals_people_1.rdf", "equals_people_2.rdf"});
+        selectQuery = QueryFactory.create(query);
+        allResultValues = Utils.getResultValues(QueryExecutionFactory.create(selectQuery, values).execSelect());
+
+        resultValues = allResultValues.get("s1");
+        assertEquals(resultValues.size(), expectedS1.length);
+        for (String expected : expectedS2) {//Change here
+            assertTrue(resultValues.contains(expected), "For expected : " + expected);
+        }
+
+        resultValues = allResultValues.get("s2");
+        assertEquals(resultValues.size(), expectedS2.length);
+        for (String expected : expectedS1) {//Change here
+            assertTrue(resultValues.contains(expected), "For expected : " + expected);
+        }
+    }
+    @Test(groups = {"full", "impl", "raw"}, dependsOnMethods = {"QueryFromSimpleLinkkeyAndIntersects"})
+    public void QueryFromRelationLinkkeyAndIntersects() throws Exception {
+        String alignmentFileName = "people_relation_intersects_alignment.rdf";
+        EDOALAlignment alignment = Utils.loadAlignement(alignmentFileName);
+        StringWriter stringWriter = new StringWriter();
+        PrintWriter writer = new PrintWriter(stringWriter);
+        SPARQLSelectRendererVisitor renderer = new SPARQLSelectRendererVisitor(writer);
+        Properties properties = new Properties();
+        renderer.init(properties);
+        alignment.render(renderer);
+
+        assertEquals(alignment.nbCells(), 1);
+        Enumeration<Cell> cells = alignment.getElements();
+        Cell cell = cells.nextElement();
+
+        Model values = Utils.loadValues(new String[]{"intersects_people_1.rdf", "intersects_people_2.rdf"});
+
+        String query = renderer.getQueryFromOnto1ToOnto2(cell);
+        String expectedQuery = "PREFIX rdf:<http://www.w3.org/1999/02/22-rdf-syntax-ns#>\n"
+                + "PREFIX ns0:<http://exmo.inrialpes.fr/connectors-core/>\n"
+                + "PREFIX ns1:<http://xmlns.com/foaf/0.1/>\n"
+                + "SELECT DISTINCT ?s1 ?s2 \n"
+                + "WHERE {\n"
+                + "?s1 rdf:type ns0:Personne .\n"
+                + "?s2 rdf:type ns1:Person .\n"
+                + "?s1 ns0:connait ?o1 .\n"
+                + "?o2 rdf:type ns1:Person .\n"
+                + "?s2 ns1:knows ?o2 .\n"
+                + "?o2 ns1:givenName ?o1 .\n"
+                + "FILTER(?s1 != ?s2)\n"
+                + "}\n"
+                + "";
+        assertEquals(expectedQuery, query);
+        Query selectQuery = QueryFactory.create(query);
+        QueryExecution selectQueryExec = QueryExecutionFactory.create(selectQuery, values);
+        ResultSet results = selectQueryExec.execSelect();
+        String[] expectedS1 = {
+            "http://exmo.inrialpes.fr/connectors-data/people#alice_c1_1",
+            "http://exmo.inrialpes.fr/connectors-data/people#alice_c2_1"};
+        String[] expectedS2 = {
+            "http://exmo.inrialpes.fr/connectors-data/people#alice_c1_2",
+            "http://exmo.inrialpes.fr/connectors-data/people#alice_c2_2"};
+
+        HashMap<String, Collection<String>> allResultValues = Utils.getResultValues(results);
+        Collection<String> resultValues = allResultValues.get("s1");
+        assertEquals(resultValues.size(), expectedS1.length);
+        for (String expected : expectedS1) {
+            assertTrue(resultValues.contains(expected));
+        }
+
+        resultValues = allResultValues.get("s2");
+        assertEquals(resultValues.size(), expectedS2.length);
+        for (String expected : expectedS2) {
+            assertTrue(resultValues.contains(expected));
+        }
+        //On other sens : 
+        query = renderer.getQueryFromOnto2ToOnto1(cell);
+        selectQuery = QueryFactory.create(query);
+        selectQueryExec = QueryExecutionFactory.create(selectQuery, values);
+        results = selectQueryExec.execSelect();
+
+        allResultValues = Utils.getResultValues(results);
+        resultValues = allResultValues.get("s1");
+        assertEquals(resultValues.size(), expectedS2.length);
+        for (String expected : expectedS2) {
+            assertTrue(resultValues.contains(expected));
+        }
+
+        resultValues = allResultValues.get("s2");
+        assertEquals(resultValues.size(), expectedS1.length);
+        for (String expected : expectedS1) {
+            assertTrue(resultValues.contains(expected));
+        }
+    }
 //
 //    @Test(groups = {"full", "impl", "raw"}, dependsOnMethods = {"QueryFromSimpleLinkkeyAndEquals"})
 //    public void QueryFromRelationLinkkeyAndEquals() throws Exception {
@@ -330,40 +330,44 @@ public class SPARQLSelectRendererVisitorTest {
 //        String expectedQuery = "PREFIX rdf:<http://www.w3.org/1999/02/22-rdf-syntax-ns#>\n"
 //                + "PREFIX ns0:<http://exmo.inrialpes.fr/connectors-core/>\n"
 //                + "PREFIX ns1:<http://xmlns.com/foaf/0.1/>\n"
-//                + "SELECT DISTINCT ?s1 ?s2\n"
+//                + "SELECT DISTINCT ?s1 ?s2 \n"
 //                + "WHERE {\n"
 //                + "?s1 rdf:type ns0:Personne .\n"
 //                + "?s2 rdf:type ns1:Person .\n"
 //                + "?s1 ns0:connait ?o1 .\n"
-//                + "?s2 ns1:knows ?o2 .\n"
 //                + "?o2 rdf:type ns1:Person .\n"
+//                + "?s2 ns1:knows ?o2 .\n"
 //                + "?o2 ns1:givenName ?o1 .\n"
 //                + "MINUS { \n"
 //                + "?s1 ns0:connait ?o1 .\n"
 //                + "?s1 ns0:connait ?o2 .\n"
-//                + "?s2 ns1:knows ?o3 .\n"
-//                + "?o3 ns1:givenName ?o1 .\n"
-//                + "FILTER(?s1 != ?s2 && ?o2 != ?o1 && NOT EXISTS {\n"
+//                + "?o4 rdf:type ns1:Person .\n"
 //                + "?s2 ns1:knows ?o4 .\n"
-//                + "?o4 ns1:givenName ?o2 .\n"
+//                + "?o4 ns1:givenName ?o1 .\n"
+//                + "FILTER(?s1 != ?s2 && ?o2 != ?o1 && NOT EXISTS {\n"
+//                + "?o6 rdf:type ns1:Person .\n"
+//                + "?s2 ns1:knows ?o6 .\n"
+//                + "?o6 ns1:givenName ?o2 .\n"
 //                + "}) \n"
-//                + "}\n"
+//                + "} \n"
 //                + "MINUS {\n"
 //                + "?s1 ns0:connait ?o1 .\n"
-//                + "?s2 ns1:knows ?o2 .\n"
-//                + "?o2 ns1:givenName ?o1 .\n"
-//                + "?s2 ns1:knows ?o3 .\n"
-//                + "?o3 ns1:givenName ?o4 .\n"
+//                + "?o8 rdf:type ns1:Person .\n"
+//                + "?s2 ns1:knows ?o8 .\n"
+//                + "?o8 ns1:givenName ?o1 .\n"
+//                + "?o10 rdf:type ns1:Person .\n"
+//                + "?s2 ns1:knows ?o10 .\n"
+//                + "?o10 ns1:givenName ?o4 .\n"
 //                + "FILTER(?s1 != ?s2 && ?o1 != ?o4 && NOT EXISTS {\n"
 //                + "?s1 ns0:connait ?o4 .\n"
-//                + "})\n"
-//                + "}\n"
+//                + "}) \n"
+//                + "} \n"
 //                + "FILTER(?s1 != ?s2)\n"
 //                + "}";
 //
 //        String query = renderer.getQueryFromOnto1ToOnto2(cell);
 //        System.out.println("QueryFromRelationLinkkeyAndEquals expectedQuery : " + expectedQuery);
-////        System.out.println("QueryFromRelationLinkkeyAndEquals : " + query);
+//        System.out.println("QueryFromRelationLinkkeyAndEquals Query : " + query);
 //        assertEquals(query, expectedQuery);
 //        Model values = Utils.loadValues(new String[]{"equals_people_1.rdf", "equals_people_2.rdf"});
 //