|
12 | 12 | package org.eclipse.rdf4j.sail.memory; |
13 | 13 |
|
14 | 14 | import static org.junit.jupiter.api.Assertions.assertEquals; |
| 15 | +import static org.junit.jupiter.api.Assertions.assertFalse; |
15 | 16 |
|
16 | 17 | import java.io.IOException; |
17 | 18 | import java.io.StringReader; |
|
25 | 26 | import org.eclipse.rdf4j.model.IRI; |
26 | 27 | import org.eclipse.rdf4j.model.Value; |
27 | 28 | import org.eclipse.rdf4j.query.BindingSet; |
| 29 | +import org.eclipse.rdf4j.query.QueryLanguage; |
28 | 30 | import org.eclipse.rdf4j.query.QueryResults; |
29 | 31 | import org.eclipse.rdf4j.query.TupleQuery; |
30 | 32 | import org.eclipse.rdf4j.query.TupleQueryResult; |
@@ -92,6 +94,29 @@ public void T21_not_exists_over_optional_is_always_false_here() throws IOExcepti |
92 | 94 | } |
93 | 95 | } |
94 | 96 |
|
| 97 | + @Test |
| 98 | + public void testSES2250BindErrors() { |
| 99 | + |
| 100 | + try (SailRepositoryConnection conn = repository.getConnection()) { |
| 101 | + |
| 102 | + conn.prepareUpdate(QueryLanguage.SPARQL, "insert data { <urn:test:subj> <urn:test:pred> _:blank }") |
| 103 | + .execute(); |
| 104 | + |
| 105 | + String qb = "SELECT * {\n" + |
| 106 | + " ?s1 ?p1 ?blank . " + |
| 107 | + " FILTER(isBlank(?blank))" + |
| 108 | + " BIND (iri(?blank) as ?biri)" + |
| 109 | + " ?biri ?p2 ?o2 ." + |
| 110 | + "}"; |
| 111 | + |
| 112 | + TupleQuery tq = conn.prepareTupleQuery(QueryLanguage.SPARQL, qb); |
| 113 | + try (TupleQueryResult evaluate = tq.evaluate()) { |
| 114 | + assertFalse(evaluate.hasNext(), |
| 115 | + "The query should not return a result: " + Arrays.toString(evaluate.stream().toArray())); |
| 116 | + } |
| 117 | + } |
| 118 | + } |
| 119 | + |
95 | 120 | private List<BindingSet> selectWithData(RepositoryConnection conn, String data, RDFFormat format, String body) |
96 | 121 | throws IOException { |
97 | 122 | String sparql = PREFIX + body; |
|
0 commit comments