Add more tests of construct quad: 1) duplication; 3) prefix; 3) short form Project: http://git-wip-us.apache.org/repos/asf/jena/repo Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/fcbbf9b6 Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/fcbbf9b6 Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/fcbbf9b6
Branch: refs/heads/master Commit: fcbbf9b6549ccabcc9786a9fb59f2f2bde42c2f6 Parents: 54e48f3 Author: confidencesun <[email protected]> Authored: Fri Aug 14 22:25:41 2015 +0800 Committer: confidencesun <[email protected]> Committed: Fri Aug 14 22:25:41 2015 +0800 ---------------------------------------------------------------------- .../org/apache/jena/sparql/api/TestAPI.java | 83 ++++++++++++++++++++ 1 file changed, 83 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/jena/blob/fcbbf9b6/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 ecc576a..5630804 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 @@ -28,6 +28,7 @@ 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.QueryParseException; import org.apache.jena.query.QuerySolution; import org.apache.jena.query.QuerySolutionMap; import org.apache.jena.query.ResultSet; @@ -448,6 +449,88 @@ public class TestAPI extends BaseTest assertTrue(IsoMatcher.isomorphic( expected, result.asDatasetGraph()) ); } + // Allow duplicated template quads in execConstructQuads() + @Test public void testARQConstructQuad_Duplicate_3() { + String queryString = "CONSTRUCT { GRAPH ?g1 {?s ?p ?o} GRAPH ?g1 {?s ?p ?o} } WHERE { ?s ?p ?o. GRAPH ?g1 {?s1 ?p1 ?o1} }"; + Query q = QueryFactory.create(queryString, Syntax.syntaxARQ); + + QueryExecution qExec = QueryExecutionFactory.create(q, d); + + Iterator<Quad> ts = qExec.execConstructQuads(); + long count = 0; + Quad expected = Quad.create( g1.asNode(), s.asNode(), p.asNode(), o.asNode()); + while (ts.hasNext()) { + count++; + Quad qd = ts.next(); + assertEquals(expected, qd); + } + assertEquals(6, count); // 6 duplicated quads + } + + // Allow duplicated template quads in execConstructQuads() + @Test public void testARQConstructQuad_Prefix() { + String queryString = "PREFIX : <http://example/ns#> CONSTRUCT { GRAPH :g1 { ?s :p ?o} } WHERE { ?s ?p ?o }"; + Query q = QueryFactory.create(queryString, Syntax.syntaxARQ); + + QueryExecution qExec = QueryExecutionFactory.create(q, d); + + Iterator<Quad> quads = qExec.execConstructQuads(); + DatasetGraph result = DatasetGraphFactory.createMem(); + long count = 0; + while (quads.hasNext()) { + count++; + Quad qd = quads.next(); + result.add(qd); + } + + DatasetGraph expected = DatasetGraphFactory.createMem(); + expected.add(g1.asNode(), s.asNode(), p.asNode(), o.asNode()); + + assertEquals(1, count); + assertTrue(IsoMatcher.isomorphic( expected, result) ); + + } + + // Test construct triple short form: + @Test public void testARQConstructQuad_ShortForm_1() { + String queryString = "CONSTRUCT WHERE {?s ?p ?o }"; + Query q = QueryFactory.create(queryString, Syntax.syntaxARQ); + + QueryExecution qExec = QueryExecutionFactory.create(q, d); + + Model result = ModelFactory.createDefaultModel(); + qExec.execConstruct(result); + + assertEquals(1, result.size()); + assertTrue(dft.isIsomorphicWith(result)); + } + + // Test construct quad short form: + @Test public void testARQConstructQuad_ShortForm_2() { + String queryString = "CONSTRUCT WHERE { GRAPH ?g {?s ?p ?o} }"; + Query q = QueryFactory.create(queryString, Syntax.syntaxARQ); + + QueryExecution qExec = QueryExecutionFactory.create(q, d); + Dataset result = qExec.execConstructDataset(); + + Dataset expected = DatasetFactory.createMem(); + expected.addNamedModel(g1.getURI(), m); + + assertTrue(IsoMatcher.isomorphic( expected.asDatasetGraph(), result.asDatasetGraph()) ); + } + + // Test bad construct quad short form: + @Test public void testARQConstructQuad_ShortForm_bad() { + String queryString = "CONSTRUCT WHERE { GRAPH ?g {?s ?p ?o. FILTER isIRI(?o)} }"; + try { + QueryFactory.create(queryString, Syntax.syntaxARQ); + }catch (QueryParseException e){ + return; + } + fail("Short form of construct quad MUST be simple graph patterns!"); + } + + private QueryExecution makeQExec(String queryString) { Query q = QueryFactory.create(queryString) ;
