more extensive Jena tests

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

Branch: refs/heads/master
Commit: 6fdc9903b70fe8c4cacd7c70c6ed012d93a7d8f9
Parents: 13464e2
Author: Stian Soiland-Reyes <st...@apache.org>
Authored: Wed Oct 26 12:10:32 2016 +0100
Committer: Stian Soiland-Reyes <st...@apache.org>
Committed: Wed Oct 26 12:10:32 2016 +0100

----------------------------------------------------------------------
 .../jena/TestJenaGraphToCommonsRDFGraph.java    | 93 +++++++++++++++++---
 1 file changed, 80 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/6fdc9903/jena/src/test/java/org/apache/commons/rdf/jena/TestJenaGraphToCommonsRDFGraph.java
----------------------------------------------------------------------
diff --git 
a/jena/src/test/java/org/apache/commons/rdf/jena/TestJenaGraphToCommonsRDFGraph.java
 
b/jena/src/test/java/org/apache/commons/rdf/jena/TestJenaGraphToCommonsRDFGraph.java
index 13ee7e7..050de4e 100644
--- 
a/jena/src/test/java/org/apache/commons/rdf/jena/TestJenaGraphToCommonsRDFGraph.java
+++ 
b/jena/src/test/java/org/apache/commons/rdf/jena/TestJenaGraphToCommonsRDFGraph.java
@@ -18,14 +18,22 @@
 
 package org.apache.commons.rdf.jena;
 
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
 import java.io.IOException;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.StandardCopyOption;
 
+import org.apache.commons.rdf.api.BlankNode;
+import org.apache.commons.rdf.api.BlankNodeOrIRI;
 import org.apache.commons.rdf.api.Graph ;
-import org.apache.commons.rdf.api.RDFTermFactory ;
-import org.apache.jena.riot.Lang ;
+import org.apache.commons.rdf.api.RDFTerm;
+import org.apache.commons.rdf.api.Triple;
+import org.apache.commons.rdf.simple.Types;
+import org.apache.jena.riot.Lang;
 import org.apache.jena.riot.RDFDataMgr ;
 import org.apache.jena.sparql.graph.GraphFactory ;
 import org.junit.After;
@@ -34,7 +42,8 @@ import org.junit.Test;
 
 /** Adapt a Jena Graph after parsing data into it */
 public class TestJenaGraphToCommonsRDFGraph {
-    private Path turtleFile;
+    private static final boolean DEBUG = false;
+       private Path turtleFile;
 
     
     @Before
@@ -55,19 +64,77 @@ public class TestJenaGraphToCommonsRDFGraph {
         org.apache.jena.graph.Graph jGraph = GraphFactory.createGraphMem() ;   
     
         RDFDataMgr.read(jGraph, turtleFile.toUri().toString()) ;
         
+        JenaFactory factory = new JenaFactory() ;
+        
         // "graph" is a CommonsRDF graph 
-        Graph graph = new JenaFactory().fromJena(jGraph) ;
+        Graph graph = factory.fromJena(jGraph) ;
+        
+        
+        
+        // The below check expected statements from D.ttl
+        
+        JenaIRI p = factory.createIRI("http://example.com/p";);
+               JenaIRI s = factory.createIRI("http://example.com/s";);
+               JenaLiteral literal123 = factory.createLiteral("123", 
Types.XSD_INTEGER);
+               assertTrue(graph.contains(s, p, literal123));
+        
+        JenaIRI p1 = factory.createIRI("http://example.com/p1";);
+        // Let's look up the BlankNode
+               BlankNodeOrIRI bnode1 = graph.stream(null, p1, null)
+                       .findFirst().map(Triple::getSubject).get();
+        assertTrue(bnode1 instanceof BlankNode);
+        
+        // Verify we can use BlankNode in query again
+        RDFTerm obj = graph.stream(bnode1, p1, 
null).findFirst().map(Triple::getObject).get();
+        
+        // Let's look up also that nested blank node
+        assertTrue(obj instanceof BlankNode);
+        BlankNode bnode2 = (BlankNode)obj;
         
+        
+        
+        JenaIRI q = factory.createIRI("http://example.com/q";);
+        JenaLiteral literalR = factory.createLiteral("r", "en");
+               assertTrue(graph.contains(bnode2, q, literalR));
+        
+
+               // Can we add the same triple again as s/p/o 
+               // without affecting graph size?
+               // Just to be evil we add a blanknode-iri-blanknode statement
+        assertEquals(3, graph.size());
+               graph.add(bnode1, p1, bnode2);
+               assertEquals(3, graph.size());
+        
+               // Add the same Triple again
+               
graph.stream(bnode2,null,null).findFirst().ifPresent(graph::add);
+               assertEquals(3, graph.size());
+               
+               
         // Add to CommonsRDF Graph
-        RDFTermFactory rft = new JenaFactory() ;
-        graph.add(rft.createIRI("http://example/s2";),
-                  rft.createIRI("http://example/p2";),
-                  rft.createLiteral("foo")) ;
-//        System.out.println("==== Write CommonsRDF graph\n") ;
-//        graph.stream().forEach(System.out::println) ;        
-//        System.out.println("\n==== Write Jena graph directly\n") ;
-        // And its in the Jena graph
-        RDFDataMgr.write(System.out, jGraph, Lang.TTL) ;
+        JenaIRI s2 = factory.createIRI("http://example/s2";);
+               JenaIRI p2 = factory.createIRI("http://example/p2";);
+               JenaLiteral foo = factory.createLiteral("foo");
+               graph.add(s2,
+                         p2,
+                         foo) ;
+               assertEquals(4, graph.size());
+               assertTrue(graph.contains(s2,p2,foo));
+        
+        // Verify the corresponding Jena Nodes are in Jena graph
+        assertTrue(jGraph.contains(s2.asJenaNode(), p2.asJenaNode(), 
foo.asJenaNode()));
+        
+        if (DEBUG) {
+               System.out.println("==== Write CommonsRDF graph\n") ;
+               graph.stream().forEach(System.out::println) ;        
+               // And its in the Jena graph
+               System.out.println("\n==== Write Jena graph directly\n") ;
+               RDFDataMgr.write(System.out, jGraph, Lang.TTL) ;
+        }
+        
+        // Can stream modify the jGraph? Let's try to remove..
+        assertFalse(jGraph.isEmpty());
+        graph.stream().forEach(graph::remove);
+        assertTrue(jGraph.isEmpty());
     }
 }
 

Reply via email to