You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by an...@apache.org on 2015/08/24 10:13:30 UTC

[21/50] jena git commit: Add 4 tests of the combinations of 2 types of construct query strings and 2 kinds of query methods (exeContructTriples(), exeConstructQuads) for ARQ.

Add 4 tests of the combinations of 2 types of construct query strings
and 2 kinds of query methods (exeContructTriples(), exeConstructQuads)
for ARQ.

Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/03a321ff
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/03a321ff
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/03a321ff

Branch: refs/heads/master
Commit: 03a321ffde733ac2d493200e82b1f31d7529fe3f
Parents: f27623d
Author: confidencesun <co...@gmail.com>
Authored: Fri Aug 14 16:31:08 2015 +0800
Committer: confidencesun <co...@gmail.com>
Committed: Fri Aug 14 16:31:08 2015 +0800

----------------------------------------------------------------------
 .../org/apache/jena/sparql/api/TestAPI.java     | 134 +++++++++++++++++--
 1 file changed, 125 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/03a321ff/jena-arq/src/test/java/org/apache/jena/sparql/api/TestAPI.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/test/java/org/apache/jena/sparql/api/TestAPI.java b/jena-arq/src/test/java/org/apache/jena/sparql/api/TestAPI.java
index 370507c..5393cda 100644
--- a/jena-arq/src/test/java/org/apache/jena/sparql/api/TestAPI.java
+++ b/jena-arq/src/test/java/org/apache/jena/sparql/api/TestAPI.java
@@ -18,16 +18,36 @@
 
 package org.apache.jena.sparql.api;
 
-import java.util.Iterator ;
+import java.util.Iterator;
 
-import org.apache.jena.atlas.junit.BaseTest ;
-import org.apache.jena.graph.Triple ;
-import org.apache.jena.query.* ;
-import org.apache.jena.rdf.model.* ;
-import org.apache.jena.sparql.graph.GraphFactory ;
-import org.apache.jena.vocabulary.OWL ;
-import org.apache.jena.vocabulary.RDF ;
-import org.junit.Test ;
+import org.apache.jena.atlas.junit.BaseTest;
+import org.apache.jena.graph.Triple;
+import org.apache.jena.query.Dataset;
+import org.apache.jena.query.DatasetFactory;
+import org.apache.jena.query.Query;
+import org.apache.jena.query.QueryExecution;
+import org.apache.jena.query.QueryExecutionFactory;
+import org.apache.jena.query.QueryFactory;
+import org.apache.jena.query.QuerySolution;
+import org.apache.jena.query.QuerySolutionMap;
+import org.apache.jena.query.ResultSet;
+import org.apache.jena.query.ResultSetFormatter;
+import org.apache.jena.query.Syntax;
+import org.apache.jena.rdf.model.Model;
+import org.apache.jena.rdf.model.ModelFactory;
+import org.apache.jena.rdf.model.Property;
+import org.apache.jena.rdf.model.Resource;
+import org.apache.jena.rdf.model.ResourceFactory;
+import org.apache.jena.rdf.model.Statement;
+import org.apache.jena.sparql.core.DatasetGraph;
+import org.apache.jena.sparql.core.DatasetGraphFactory;
+import org.apache.jena.sparql.core.Quad;
+import org.apache.jena.sparql.graph.GraphFactory;
+import org.apache.jena.sparql.util.IsoMatcher;
+import org.apache.jena.sparql.util.ModelUtils;
+import org.apache.jena.vocabulary.OWL;
+import org.apache.jena.vocabulary.RDF;
+import org.junit.Test;
 
 public class TestAPI extends BaseTest
 {
@@ -38,10 +58,19 @@ public class TestAPI extends BaseTest
     static Property p1 = m.createProperty(ns+"p1") ;
     static Property p2 = m.createProperty(ns+"p2") ;
     static Property p3 = m.createProperty(ns+"p3") ;
+    static Model dft = GraphFactory.makeJenaDefaultModel() ;
+    static Resource s = dft.createResource(ns+"s") ;
+    static Property p = dft.createProperty(ns+"p") ;
+    static Resource o = dft.createResource(ns+"o") ;
+    static Resource g1 = dft.createResource(ns+"g1") ;
+    static Dataset d = null;
     static  {
         m.add(r1, p1, "x1") ;
         m.add(r1, p2, "X2") ; // NB Capital
         m.add(r1, p3, "y1") ;
+        dft.add(s, p, o) ;
+        d = DatasetFactory.create(dft);
+        d.addNamedModel(g1.getURI(), m);
     }
     
     @Test public void testInitialBindingsConstruct1()
@@ -298,6 +327,93 @@ public class TestAPI extends BaseTest
 //        }
 //    }
     
+    // ARQ Construct Quad Tests:
+    // Two types of query strings: a) construct triple string; b) construct quad string;
+    // Two kinds of query methods: 1) execTriples(); 2) execQuads();
+    
+    // Test a)+1)
+    @Test public void testARQConstructQuad_a_1() {
+        String queryString = "CONSTRUCT { ?s ?p ?o } WHERE { GRAPH ?g { ?s ?p ?o } }";
+        Query q = QueryFactory.create(queryString, Syntax.syntaxARQ);
+        
+        QueryExecution qExec = QueryExecutionFactory.create(q, d);
+        
+        Iterator<Triple> ts = qExec.execConstructTriples();
+        Model result = ModelFactory.createDefaultModel();
+        while (ts.hasNext()) {
+            Triple t = ts.next();
+            Statement stmt = ModelUtils.tripleToStatement(result, t);
+            if ( stmt != null )
+                result.add(stmt);
+        }
+        assertEquals(3, result.size());
+        assertTrue(m.isIsomorphicWith(result));
+    }
+    
+    // Test b)+2)
+    @Test public void testARQConstructQuad_b_2() {
+        String queryString = "CONSTRUCT { GRAPH ?g1 {?s ?p ?o} } WHERE { ?s ?p ?o. GRAPH ?g1 {?s1 ?p1 'x1'} }";
+        Query q = QueryFactory.create(queryString, Syntax.syntaxARQ);
+        
+        QueryExecution qExec = QueryExecutionFactory.create(q, d);
+        
+        Iterator<Quad> ts = qExec.execConstructQuads();
+        DatasetGraph result = DatasetGraphFactory.createMem();
+        long count = 0;
+        while (ts.hasNext()) {
+            count++;
+            Quad qd = ts.next();
+            result.add(qd);
+        }
+        
+        DatasetGraph expected = DatasetGraphFactory.createMem();
+        expected.add(g1.asNode(), s.asNode(), p.asNode(), o.asNode());
+        
+        assertEquals(1, count); // 3 duplicated quads
+        assertTrue(IsoMatcher.isomorphic( expected, result) );
+        
+    }
+    
+    // Test a)+2): Quads constructed in the default graph
+    @Test public void testARQConstructQuad_a_2() {
+        String queryString = "CONSTRUCT { ?s ?p ?o } WHERE { ?s ?p ?o }";
+        Query q = QueryFactory.create(queryString, Syntax.syntaxARQ);
+        
+        QueryExecution qExec = QueryExecutionFactory.create(q, d);
+        
+        Iterator<Quad> ts = qExec.execConstructQuads();
+        DatasetGraph result = DatasetGraphFactory.createMem();
+        long count = 0;
+        while (ts.hasNext()) {
+            count++;
+            result.add( ts.next() );
+        }
+        DatasetGraph expected = DatasetGraphFactory.createMem();
+        expected.add(Quad.defaultGraphNodeGenerated, s.asNode(), p.asNode(), o.asNode());
+        assertEquals(1, count);
+        assertTrue(IsoMatcher.isomorphic( expected, result) );
+        
+    }
+    
+    // Test b)+1): Projection on default graph, ignoring constructing named graphs
+    @Test public void testARQConstructQuad_b_1() {
+        String queryString = "CONSTRUCT { ?s ?p ?o GRAPH ?g1 { ?s1 ?p1 ?o1 } } WHERE { ?s ?p ?o. GRAPH ?g1 { ?s1 ?p1 ?o1 } }";
+        Query q = QueryFactory.create(queryString, Syntax.syntaxARQ);
+        
+        QueryExecution qExec = QueryExecutionFactory.create(q, d);
+        
+        Iterator<Triple> ts = qExec.execConstructTriples();
+        Model result = ModelFactory.createDefaultModel();
+        while (ts.hasNext()) {
+            Triple t = ts.next();
+            Statement stmt = ModelUtils.tripleToStatement(result, t);
+            if ( stmt != null )
+                result.add(stmt);
+        }
+        assertEquals(1, result.size());
+        assertTrue(dft.isIsomorphicWith(result));
+    }
+    
     private QueryExecution makeQExec(String queryString)
     {
         Query q = QueryFactory.create(queryString) ;