You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commonsrdf.apache.org by st...@apache.org on 2016/09/12 22:29:11 UTC

[1/5] incubator-commonsrdf git commit: AllToAllTest

Repository: incubator-commonsrdf
Updated Branches:
  refs/heads/jena-jsonld-rdf4j-integration 97e3acd94 -> 2b51794e8


AllToAllTest


Project: http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/commit/1828c2ab
Tree: http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/tree/1828c2ab
Diff: http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/diff/1828c2ab

Branch: refs/heads/jena-jsonld-rdf4j-integration
Commit: 1828c2abf584958bf25de48d0827c825fd3bb21a
Parents: 97e3acd
Author: Stian Soiland-Reyes <st...@apache.org>
Authored: Fri Sep 9 17:36:32 2016 +0100
Committer: Stian Soiland-Reyes <st...@apache.org>
Committed: Fri Sep 9 17:36:41 2016 +0100

----------------------------------------------------------------------
 .../rdf/integrationtests/AllToAllTest.java      | 99 ++++++++++++++++++++
 .../rdf/integrationtests/JenaRDF4JTest.java     | 78 ---------------
 2 files changed, 99 insertions(+), 78 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/1828c2ab/integration-tests/src/test/java/org/apache/commons/rdf/integrationtests/AllToAllTest.java
----------------------------------------------------------------------
diff --git a/integration-tests/src/test/java/org/apache/commons/rdf/integrationtests/AllToAllTest.java b/integration-tests/src/test/java/org/apache/commons/rdf/integrationtests/AllToAllTest.java
new file mode 100644
index 0000000..a8cd1cd
--- /dev/null
+++ b/integration-tests/src/test/java/org/apache/commons/rdf/integrationtests/AllToAllTest.java
@@ -0,0 +1,99 @@
+package org.apache.commons.rdf.integrationtests;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import org.apache.commons.rdf.api.BlankNode;
+import org.apache.commons.rdf.api.Graph;
+import org.apache.commons.rdf.api.IRI;
+import org.apache.commons.rdf.api.Literal;
+import org.apache.commons.rdf.api.RDFTermFactory;
+import org.apache.commons.rdf.api.Triple;
+import org.apache.commons.rdf.jena.JenaRDFTermFactory;
+import org.apache.commons.rdf.jsonldjava.JsonLdRDFTermFactory;
+import org.apache.commons.rdf.rdf4j.RDF4JTermFactory;
+import org.apache.commons.rdf.simple.SimpleRDFTermFactory;
+import org.junit.Test;
+
+public class AllToAllTest {
+
+	private RDFTermFactory simpleFactory = new SimpleRDFTermFactory();
+	private RDFTermFactory jenaFactory = new JenaRDFTermFactory();
+	private RDFTermFactory rdf4jFactory = new RDF4JTermFactory();
+	private RDFTermFactory jsonldFactory = new JsonLdRDFTermFactory();
+
+	@Test
+	public void jenaToRdf4j() throws Exception {
+		nodesIntoOther(jenaFactory, rdf4jFactory);
+	}
+	@Test
+	public void jenaToJsonLd() throws Exception {
+		nodesIntoOther(jenaFactory, jsonldFactory);
+	}
+	@Test
+	public void jenaToSimple() throws Exception {
+		nodesIntoOther(jenaFactory, simpleFactory);
+	}
+	
+	@Test
+	public void rdf4jToJena() throws Exception {
+		nodesIntoOther(rdf4jFactory, jenaFactory);
+	}
+	@Test
+	public void rdf4jToJsonLd() throws Exception {
+		nodesIntoOther(rdf4jFactory, jsonldFactory);
+	}	
+	@Test
+	public void rdf4jToSimple() throws Exception {
+		nodesIntoOther(rdf4jFactory, simpleFactory);
+	}
+	
+	@Test
+	public void simpletoJena() throws Exception {
+		nodesIntoOther(simpleFactory, jenaFactory);
+	}
+	@Test
+	public void simpleToJsonLd() throws Exception {
+		nodesIntoOther(simpleFactory, jsonldFactory);
+	}
+	@Test
+	public void simpleToRdf4j() throws Exception {
+		nodesIntoOther(simpleFactory, rdf4jFactory);
+	}
+	
+	public void nodesIntoOther(RDFTermFactory fromFactory, RDFTermFactory toFactory) throws Exception {
+		Graph g = fromFactory.createGraph();
+		BlankNode s = toFactory.createBlankNode();
+		IRI p = toFactory.createIRI("http://example.com/p");
+		Literal o = toFactory.createLiteral("Hello");
+
+		g.add(s, p, o);
+
+		// blankNode should still work with g.contains()
+		assertTrue(g.contains(s, p, o));
+		Triple t1 = g.stream().findAny().get();
+
+		// Can't make assumptions about mappegetPredicated BlankNode equality
+		// assertEquals(s, t.getSubject());
+		assertEquals(p, t1.getPredicate());
+		assertEquals(o, t1.getObject());
+
+		IRI s2 = toFactory.createIRI("http://example.com/s2");
+		g.add(s2, p, s);
+		assertTrue(g.contains(s2, p, s));
+
+		// This should be mapped to the same BlankNode
+		// (even if it has a different identifier), e.g.
+		// we should be able to do:
+
+		Triple t2 = g.stream(s2, p, null).findAny().get();
+
+		BlankNode bnode = (BlankNode) t2.getObject();
+		// And that (possibly adapted) BlankNode object should
+		// match the subject of t1 statement
+		assertEquals(bnode, t1.getSubject());
+		// And can be used as a key:
+		Triple t3 = g.stream(bnode, p, null).findAny().get();
+		assertEquals(t1, t3);
+	}
+}

http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/1828c2ab/integration-tests/src/test/java/org/apache/commons/rdf/integrationtests/JenaRDF4JTest.java
----------------------------------------------------------------------
diff --git a/integration-tests/src/test/java/org/apache/commons/rdf/integrationtests/JenaRDF4JTest.java b/integration-tests/src/test/java/org/apache/commons/rdf/integrationtests/JenaRDF4JTest.java
deleted file mode 100644
index 50b5c68..0000000
--- a/integration-tests/src/test/java/org/apache/commons/rdf/integrationtests/JenaRDF4JTest.java
+++ /dev/null
@@ -1,78 +0,0 @@
-package org.apache.commons.rdf.integrationtests;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-
-import org.apache.commons.rdf.api.BlankNode;
-import org.apache.commons.rdf.api.Graph;
-import org.apache.commons.rdf.api.IRI;
-import org.apache.commons.rdf.api.Literal;
-import org.apache.commons.rdf.api.RDFTermFactory;
-import org.apache.commons.rdf.api.Triple;
-import org.apache.commons.rdf.jena.RDFTermFactoryJena;
-import org.apache.commons.rdf.rdf4j.RDF4JTermFactory;
-import org.apache.commons.rdf.simple.SimpleRDFTermFactory;
-import org.junit.Test;
-
-public class JenaRDF4JTest {
-
-	private RDFTermFactory simpleFactory = new SimpleRDFTermFactory();
-	private RDFTermFactory jenaFactory = new RDFTermFactoryJena();
-	private RDFTermFactory rdf4jFactory = new RDF4JTermFactory();
-
-	@Test
-	public void jenaToRdf4j() throws Exception {
-		nodesIntoOther(jenaFactory, rdf4jFactory);
-	}
-
-	@Test
-	public void rdf4jToJena() throws Exception {
-		nodesIntoOther(rdf4jFactory, jenaFactory);
-	}
-
-	@Test
-	public void simpletoJena() throws Exception {
-		nodesIntoOther(simpleFactory, jenaFactory);
-	}
-
-	@Test
-	public void simpleToRdf4j() throws Exception {
-		nodesIntoOther(simpleFactory, rdf4jFactory);
-	}
-
-	public void nodesIntoOther(RDFTermFactory fromFactory, RDFTermFactory toFactory) throws Exception {
-		Graph g = fromFactory.createGraph();
-		BlankNode s = toFactory.createBlankNode();
-		IRI p = toFactory.createIRI("http://example.com/p");
-		Literal o = toFactory.createLiteral("Hello");
-
-		g.add(s, p, o);
-
-		// blankNode should still work with g.contains()
-		assertTrue(g.contains(s, p, o));
-		Triple t1 = g.stream().findAny().get();
-
-		// Can't make assumptions about mappegetPredicated BlankNode equality
-		// assertEquals(s, t.getSubject());
-		assertEquals(p, t1.getPredicate());
-		assertEquals(o, t1.getObject());
-
-		IRI s2 = toFactory.createIRI("http://example.com/s2");
-		g.add(s2, p, s);
-		assertTrue(g.contains(s2, p, s));
-
-		// This should be mapped to the same BlankNode
-		// (even if it has a different identifier), e.g.
-		// we should be able to do:
-
-		Triple t2 = g.stream(s2, p, null).findAny().get();
-
-		BlankNode bnode = (BlankNode) t2.getObject();
-		// And that (possibly adapted) BlankNode object should
-		// match the subject of t1 statement
-		assertEquals(bnode, t1.getSubject());
-		// And can be used as a key:
-		Triple t3 = g.stream(bnode, p, null).findAny().get();
-		assertEquals(t1, t3);
-	}
-}


[5/5] incubator-commonsrdf git commit: Merge branch 'master' into jena-jsonld-rdf4j-integration

Posted by st...@apache.org.
Merge branch 'master' into jena-jsonld-rdf4j-integration


Project: http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/commit/2b51794e
Tree: http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/tree/2b51794e
Diff: http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/diff/2b51794e

Branch: refs/heads/jena-jsonld-rdf4j-integration
Commit: 2b51794e84caf64831c131f4cd84f34d3976dfa2
Parents: 112505d de7fe8a
Author: Stian Soiland-Reyes <st...@apache.org>
Authored: Mon Sep 12 19:03:47 2016 +0100
Committer: Stian Soiland-Reyes <st...@apache.org>
Committed: Mon Sep 12 19:03:47 2016 +0100

----------------------------------------------------------------------
 .../apache/commons/rdf/simple/GraphImpl.java    | 39 +++++++++++---------
 1 file changed, 21 insertions(+), 18 deletions(-)
----------------------------------------------------------------------



[2/5] incubator-commonsrdf git commit: addTermsFromOtherFactory

Posted by st...@apache.org.
addTermsFromOtherFactory


Project: http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/commit/b8ff697a
Tree: http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/tree/b8ff697a
Diff: http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/diff/b8ff697a

Branch: refs/heads/jena-jsonld-rdf4j-integration
Commit: b8ff697a9bab3804ac59d7764c26ab76fda4ba23
Parents: 1828c2a
Author: Stian Soiland-Reyes <st...@apache.org>
Authored: Fri Sep 9 17:42:27 2016 +0100
Committer: Stian Soiland-Reyes <st...@apache.org>
Committed: Fri Sep 9 17:44:30 2016 +0100

----------------------------------------------------------------------
 .../rdf/integrationtests/AllToAllTest.java      | 46 ++++++++++++--------
 1 file changed, 29 insertions(+), 17 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/b8ff697a/integration-tests/src/test/java/org/apache/commons/rdf/integrationtests/AllToAllTest.java
----------------------------------------------------------------------
diff --git a/integration-tests/src/test/java/org/apache/commons/rdf/integrationtests/AllToAllTest.java b/integration-tests/src/test/java/org/apache/commons/rdf/integrationtests/AllToAllTest.java
index a8cd1cd..b9ea397 100644
--- a/integration-tests/src/test/java/org/apache/commons/rdf/integrationtests/AllToAllTest.java
+++ b/integration-tests/src/test/java/org/apache/commons/rdf/integrationtests/AllToAllTest.java
@@ -7,6 +7,7 @@ import org.apache.commons.rdf.api.BlankNode;
 import org.apache.commons.rdf.api.Graph;
 import org.apache.commons.rdf.api.IRI;
 import org.apache.commons.rdf.api.Literal;
+import org.apache.commons.rdf.api.RDFTerm;
 import org.apache.commons.rdf.api.RDFTermFactory;
 import org.apache.commons.rdf.api.Triple;
 import org.apache.commons.rdf.jena.JenaRDFTermFactory;
@@ -24,48 +25,57 @@ public class AllToAllTest {
 
 	@Test
 	public void jenaToRdf4j() throws Exception {
-		nodesIntoOther(jenaFactory, rdf4jFactory);
+		addTermsFromOtherFactory(jenaFactory, rdf4jFactory);
 	}
 	@Test
 	public void jenaToJsonLd() throws Exception {
-		nodesIntoOther(jenaFactory, jsonldFactory);
+		addTermsFromOtherFactory(jenaFactory, jsonldFactory);
 	}
 	@Test
 	public void jenaToSimple() throws Exception {
-		nodesIntoOther(jenaFactory, simpleFactory);
+		addTermsFromOtherFactory(jenaFactory, simpleFactory);
 	}
 	
 	@Test
 	public void rdf4jToJena() throws Exception {
-		nodesIntoOther(rdf4jFactory, jenaFactory);
+		addTermsFromOtherFactory(rdf4jFactory, jenaFactory);
 	}
 	@Test
 	public void rdf4jToJsonLd() throws Exception {
-		nodesIntoOther(rdf4jFactory, jsonldFactory);
+		addTermsFromOtherFactory(rdf4jFactory, jsonldFactory);
 	}	
 	@Test
 	public void rdf4jToSimple() throws Exception {
-		nodesIntoOther(rdf4jFactory, simpleFactory);
+		addTermsFromOtherFactory(rdf4jFactory, simpleFactory);
 	}
 	
 	@Test
 	public void simpletoJena() throws Exception {
-		nodesIntoOther(simpleFactory, jenaFactory);
+		addTermsFromOtherFactory(simpleFactory, jenaFactory);
 	}
 	@Test
 	public void simpleToJsonLd() throws Exception {
-		nodesIntoOther(simpleFactory, jsonldFactory);
+		addTermsFromOtherFactory(simpleFactory, jsonldFactory);
 	}
 	@Test
 	public void simpleToRdf4j() throws Exception {
-		nodesIntoOther(simpleFactory, rdf4jFactory);
+		addTermsFromOtherFactory(simpleFactory, rdf4jFactory);
 	}
 	
-	public void nodesIntoOther(RDFTermFactory fromFactory, RDFTermFactory toFactory) throws Exception {
-		Graph g = fromFactory.createGraph();
-		BlankNode s = toFactory.createBlankNode();
-		IRI p = toFactory.createIRI("http://example.com/p");
-		Literal o = toFactory.createLiteral("Hello");
+	/**
+	 * This test creates a {@link Graph} with the first
+	 * {@link RDFTermFactory}, then inserts/queries with
+	 * triples using {@link RDFTerm}s created with the second factory.
+	 * 
+	 * @param graphFactory Factory to create {@link Graph}
+	 * @param nodeFactory
+	 * @throws Exception
+	 */
+	public void addTermsFromOtherFactory(RDFTermFactory nodeFactory, RDFTermFactory graphFactory) throws Exception {
+		Graph g = graphFactory.createGraph();
+		BlankNode s = nodeFactory.createBlankNode();
+		IRI p = nodeFactory.createIRI("http://example.com/p");
+		Literal o = nodeFactory.createLiteral("Hello");
 
 		g.add(s, p, o);
 
@@ -73,12 +83,14 @@ public class AllToAllTest {
 		assertTrue(g.contains(s, p, o));
 		Triple t1 = g.stream().findAny().get();
 
-		// Can't make assumptions about mappegetPredicated BlankNode equality
+		// Can't make assumptions about BlankNode equality - it might
+		// have been mapped to a different BlankNode.uniqueReference()
 		// assertEquals(s, t.getSubject());
+		
 		assertEquals(p, t1.getPredicate());
 		assertEquals(o, t1.getObject());
 
-		IRI s2 = toFactory.createIRI("http://example.com/s2");
+		IRI s2 = nodeFactory.createIRI("http://example.com/s2");
 		g.add(s2, p, s);
 		assertTrue(g.contains(s2, p, s));
 
@@ -94,6 +106,6 @@ public class AllToAllTest {
 		assertEquals(bnode, t1.getSubject());
 		// And can be used as a key:
 		Triple t3 = g.stream(bnode, p, null).findAny().get();
-		assertEquals(t1, t3);
+		assertEquals(t1, t3);		
 	}
 }


[4/5] incubator-commonsrdf git commit: internally map on simple graph.contains()

Posted by st...@apache.org.
internally map on simple graph.contains()

.. so we get consistent BlankNode mapping


Project: http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/commit/de7fe8a2
Tree: http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/tree/de7fe8a2
Diff: http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/diff/de7fe8a2

Branch: refs/heads/jena-jsonld-rdf4j-integration
Commit: de7fe8a2bfccc3619c87c7f3903a09f95870ab60
Parents: 9782a58
Author: Stian Soiland-Reyes <st...@apache.org>
Authored: Mon Sep 12 19:01:17 2016 +0100
Committer: Stian Soiland-Reyes <st...@apache.org>
Committed: Mon Sep 12 19:01:17 2016 +0100

----------------------------------------------------------------------
 .../apache/commons/rdf/simple/GraphImpl.java    | 39 +++++++++++---------
 1 file changed, 21 insertions(+), 18 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/de7fe8a2/simple/src/main/java/org/apache/commons/rdf/simple/GraphImpl.java
----------------------------------------------------------------------
diff --git a/simple/src/main/java/org/apache/commons/rdf/simple/GraphImpl.java b/simple/src/main/java/org/apache/commons/rdf/simple/GraphImpl.java
index 1f19d57..779b1ad 100644
--- a/simple/src/main/java/org/apache/commons/rdf/simple/GraphImpl.java
+++ b/simple/src/main/java/org/apache/commons/rdf/simple/GraphImpl.java
@@ -55,21 +55,7 @@ final class GraphImpl implements Graph {
 
     @Override
     public void add(Triple triple) {
-        BlankNodeOrIRI newSubject = (BlankNodeOrIRI) internallyMap(triple
-                .getSubject());
-        IRI newPredicate = (IRI) internallyMap(triple.getPredicate());
-        RDFTerm newObject = internallyMap(triple.getObject());
-        // Check if any of the object references changed during the mapping, to
-        // avoid creating a new Triple object if possible
-        if (newSubject == triple.getSubject()
-                && newPredicate == triple.getPredicate()
-                && newObject == triple.getObject()) {
-            triples.add(triple);
-        } else {
-            Triple result = factory.createTriple(newSubject, newPredicate,
-                    newObject);
-            triples.add(result);
-        }
+    	triples.add(internallyMap(triple));
     }
 
     private <T extends RDFTerm> RDFTerm internallyMap(T object) {
@@ -103,6 +89,23 @@ final class GraphImpl implements Graph {
         }
     }
 
+    private Triple internallyMap(Triple triple) {
+        BlankNodeOrIRI newSubject = (BlankNodeOrIRI) internallyMap(triple
+                .getSubject());
+        IRI newPredicate = (IRI) internallyMap(triple.getPredicate());
+        RDFTerm newObject = internallyMap(triple.getObject());
+        // Check if any of the object references changed during the mapping, to
+        // avoid creating a new Triple object if possible
+        if (newSubject == triple.getSubject()
+                && newPredicate == triple.getPredicate()
+                && newObject == triple.getObject()) {
+            return triple;
+        } else {
+            return factory.createTriple(newSubject, newPredicate,
+                    newObject);
+        }
+    }
+
     @Override
     public void clear() {
         triples.clear();
@@ -116,10 +119,10 @@ final class GraphImpl implements Graph {
 
     @Override
     public boolean contains(Triple triple) {
-        return triples.contains(Objects.requireNonNull(triple));
+    	return triples.contains(internallyMap(triple));
     }
-
-    @Override
+    
+	@Override
     public Stream<Triple> stream() {
         return triples.parallelStream().unordered();
     }


[3/5] incubator-commonsrdf git commit: Also test adding Triple instances

Posted by st...@apache.org.
Also test adding Triple instances

Project: http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/commit/112505df
Tree: http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/tree/112505df
Diff: http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/diff/112505df

Branch: refs/heads/jena-jsonld-rdf4j-integration
Commit: 112505dfe488889b1ad16dca1120bd6c59ae8075
Parents: b8ff697
Author: Stian Soiland-Reyes <st...@apache.org>
Authored: Mon Sep 12 18:59:33 2016 +0100
Committer: Stian Soiland-Reyes <st...@apache.org>
Committed: Mon Sep 12 18:59:33 2016 +0100

----------------------------------------------------------------------
 .../rdf/integrationtests/AllToAllTest.java      | 64 +++++++++++++++++++-
 1 file changed, 63 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/112505df/integration-tests/src/test/java/org/apache/commons/rdf/integrationtests/AllToAllTest.java
----------------------------------------------------------------------
diff --git a/integration-tests/src/test/java/org/apache/commons/rdf/integrationtests/AllToAllTest.java b/integration-tests/src/test/java/org/apache/commons/rdf/integrationtests/AllToAllTest.java
index b9ea397..0d65f05 100644
--- a/integration-tests/src/test/java/org/apache/commons/rdf/integrationtests/AllToAllTest.java
+++ b/integration-tests/src/test/java/org/apache/commons/rdf/integrationtests/AllToAllTest.java
@@ -26,40 +26,49 @@ public class AllToAllTest {
 	@Test
 	public void jenaToRdf4j() throws Exception {
 		addTermsFromOtherFactory(jenaFactory, rdf4jFactory);
+		addTriplesFromOtherFactory(jenaFactory, rdf4jFactory);
 	}
 	@Test
 	public void jenaToJsonLd() throws Exception {
 		addTermsFromOtherFactory(jenaFactory, jsonldFactory);
+		addTriplesFromOtherFactory( jenaFactory, jsonldFactory );
 	}
 	@Test
 	public void jenaToSimple() throws Exception {
 		addTermsFromOtherFactory(jenaFactory, simpleFactory);
+		addTriplesFromOtherFactory( jenaFactory, simpleFactory );
 	}
 	
 	@Test
 	public void rdf4jToJena() throws Exception {
 		addTermsFromOtherFactory(rdf4jFactory, jenaFactory);
+		addTriplesFromOtherFactory( rdf4jFactory, jenaFactory );
 	}
 	@Test
 	public void rdf4jToJsonLd() throws Exception {
 		addTermsFromOtherFactory(rdf4jFactory, jsonldFactory);
+		addTriplesFromOtherFactory( rdf4jFactory, jenaFactory );
 	}	
 	@Test
 	public void rdf4jToSimple() throws Exception {
 		addTermsFromOtherFactory(rdf4jFactory, simpleFactory);
+		addTriplesFromOtherFactory(rdf4jFactory, simpleFactory  );
 	}
 	
 	@Test
 	public void simpletoJena() throws Exception {
 		addTermsFromOtherFactory(simpleFactory, jenaFactory);
+		addTriplesFromOtherFactory( simpleFactory, jenaFactory);
 	}
 	@Test
 	public void simpleToJsonLd() throws Exception {
 		addTermsFromOtherFactory(simpleFactory, jsonldFactory);
+		addTriplesFromOtherFactory( simpleFactory, jsonldFactory );
 	}
 	@Test
 	public void simpleToRdf4j() throws Exception {
 		addTermsFromOtherFactory(simpleFactory, rdf4jFactory);
+		addTriplesFromOtherFactory( simpleFactory, rdf4jFactory );
 	}
 	
 	/**
@@ -67,8 +76,8 @@ public class AllToAllTest {
 	 * {@link RDFTermFactory}, then inserts/queries with
 	 * triples using {@link RDFTerm}s created with the second factory.
 	 * 
+	 * @param nodeFactory Factory to create {@link RDFTerm} instances
 	 * @param graphFactory Factory to create {@link Graph}
-	 * @param nodeFactory
 	 * @throws Exception
 	 */
 	public void addTermsFromOtherFactory(RDFTermFactory nodeFactory, RDFTermFactory graphFactory) throws Exception {
@@ -108,4 +117,57 @@ public class AllToAllTest {
 		Triple t3 = g.stream(bnode, p, null).findAny().get();
 		assertEquals(t1, t3);		
 	}
+	
+
+	/**
+	 * This is a variation of {@link #addTermsFromOtherFactory(RDFTermFactory, RDFTermFactory)}, 
+	 * but here {@link Triple} is created in the "foreign" nodeFactory before adding to the graph.
+	 * 
+	 * @param nodeFactory Factory to create {@link RDFTerm} and {@link Triple}s
+	 * @param graphFactory Factory to create {@link Graph}
+	 * @throws Exception
+	 */
+	public void addTriplesFromOtherFactory(RDFTermFactory nodeFactory, RDFTermFactory graphFactory) throws Exception {
+		Graph g = graphFactory.createGraph();
+		BlankNode s = nodeFactory.createBlankNode();
+		IRI p = nodeFactory.createIRI("http://example.com/p");
+		Literal o = nodeFactory.createLiteral("Hello");
+		
+		Triple srcT1 = nodeFactory.createTriple(s, p, o);
+		// This should work even with BlankNode as they are from the same factory
+		assertEquals(s, srcT1.getSubject());
+		assertEquals(p, srcT1.getPredicate());
+		assertEquals(o, srcT1.getObject());
+		g.add(srcT1);
+		
+		// what about the blankNode within?
+		assertTrue(g.contains(srcT1));
+		Triple t1 = g.stream().findAny().get();
+
+		// Can't make assumptions about BlankNode equality - it might
+		// have been mapped to a different BlankNode.uniqueReference()
+		//assertEquals(srcT1, t1);
+		//assertEquals(s, t1.getSubject());
+		assertEquals(p, t1.getPredicate());
+		assertEquals(o, t1.getObject());
+
+		IRI s2 = nodeFactory.createIRI("http://example.com/s2");
+		Triple srcT2 = nodeFactory.createTriple(s2, p, s);
+		g.add(srcT2);
+		assertTrue(g.contains(srcT2));
+
+		// This should be mapped to the same BlankNode
+		// (even if it has a different identifier), e.g.
+		// we should be able to do:
+
+		Triple t2 = g.stream(s2, p, null).findAny().get();
+
+		BlankNode bnode = (BlankNode) t2.getObject();
+		// And that (possibly adapted) BlankNode object should
+		// match the subject of t1 statement
+		assertEquals(bnode, t1.getSubject());
+		// And can be used as a key:
+		Triple t3 = g.stream(bnode, p, null).findAny().get();
+		assertEquals(t1, t3);		
+	}	
 }