Skip to content

Package: QueryRunner

QueryRunner

nameinstructionbranchcomplexitylinemethod
QueryRunner(Logger)
M: 0 C: 4
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 2
100%
M: 0 C: 1
100%
executeUpdateRunsDeleteOnRepository()
M: 0 C: 37
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 9
100%
M: 0 C: 1
100%
executeUpdateRunsInsertOnRepository()
M: 0 C: 38
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 9
100%
M: 0 C: 1
100%
executeUpdateRunsUpdateOnRepository()
M: 0 C: 41
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 9
100%
M: 0 C: 1
100%
lambda$1(Query)
M: 4 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 1 C: 0
0%
M: 1 C: 0
0%
lambda$4(Map, OWLClassA)
M: 0 C: 8
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
lambda$5(Map, OWLClassA)
M: 0 C: 6
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
lambda$6(Map, OWLClassA)
M: 0 C: 6
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
lambda$7(Map, OWLClassD)
M: 0 C: 6
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
lambda$8(Map, OWLClassT)
M: 0 C: 6
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
querySupportsProcessingResultsUsingStream()
M: 0 C: 50
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 9
100%
M: 0 C: 1
100%
queryWithConstructorMappingReturnsCorrectInstances()
M: 0 C: 21
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 6
100%
M: 0 C: 1
100%
queryWithEntityMappingLoadsReferencedEntitiesAsWell()
M: 0 C: 77
100%
M: 0 C: 2
100%
M: 0 C: 2
100%
M: 0 C: 18
100%
M: 0 C: 1
100%
queryWithEntityMappingLoadsReferencedEntityAndInheritedAttributes()
M: 0 C: 90
100%
M: 0 C: 2
100%
M: 0 C: 2
100%
M: 0 C: 21
100%
M: 0 C: 1
100%
queryWithEntityMappingReturnsCorrectManagedInstances()
M: 0 C: 36
100%
M: 0 C: 2
100%
M: 0 C: 2
100%
M: 0 C: 8
100%
M: 0 C: 1
100%
queryWithMappingReturnsResultWithVariablesMappedAccordingly()
M: 0 C: 57
100%
M: 0 C: 2
100%
M: 0 C: 2
100%
M: 0 C: 13
100%
M: 0 C: 1
100%
selectWithOptionalReturnsNullInUnfilledColumns()
M: 4 C: 50
93%
M: 1 C: 3
75%
M: 1 C: 2
67%
M: 1 C: 14
93%
M: 0 C: 1
100%
settingStringParameterEscapesTheParameterValue()
M: 0 C: 20
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 6
100%
M: 0 C: 1
100%
testCreateNamedNativeQueryWithParameterSetting()
M: 0 C: 26
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 6
100%
M: 0 C: 1
100%
testGetSingleResult()
M: 0 C: 30
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 9
100%
M: 0 C: 1
100%
testGetSingleResultMultiples()
M: 0 C: 14
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 3
100%
M: 0 C: 1
100%
testGetSingleResultNoResult()
M: 0 C: 16
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 5
100%
M: 0 C: 1
100%
testSelectByDataProperty()
M: 0 C: 53
100%
M: 0 C: 2
100%
M: 0 C: 2
100%
M: 0 C: 14
100%
M: 0 C: 1
100%
testSelectByObjectProperty()
M: 0 C: 44
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 10
100%
M: 0 C: 1
100%
testSelectByType()
M: 0 C: 60
100%
M: 1 C: 5
83%
M: 1 C: 3
75%
M: 0 C: 16
100%
M: 0 C: 1
100%
testSelectQueryWithPositionalParameters()
M: 0 C: 30
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 9
100%
M: 0 C: 1
100%
testSelectTypes()
M: 1 C: 59
98%
M: 1 C: 3
75%
M: 1 C: 2
67%
M: 0 C: 11
100%
M: 0 C: 1
100%
testSetMaxResults()
M: 1 C: 40
98%
M: 1 C: 1
50%
M: 1 C: 1
50%
M: 0 C: 11
100%
M: 0 C: 1
100%
testSetMaxResultsNegative()
M: 0 C: 11
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 3
100%
M: 0 C: 1
100%
testSetMaxResultsZero()
M: 0 C: 18
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 6
100%
M: 0 C: 1
100%
verifyOWLClassAInstances(List, Map)
M: 0 C: 31
100%
M: 0 C: 2
100%
M: 0 C: 2
100%
M: 0 C: 6
100%
M: 0 C: 1
100%
verifyOwlClassAInstance(OWLClassA, OWLClassA)
M: 3 C: 20
87%
M: 1 C: 1
50%
M: 1 C: 1
50%
M: 2 C: 6
75%
M: 0 C: 1
100%

Coverage

1: /**
2: * Copyright (C) 2019 Czech Technical University in Prague
3: * <p>
4: * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public
5: * License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later
6: * version.
7: * <p>
8: * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
9: * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
10: * details. You should have received a copy of the GNU General Public License along with this program. If not, see
11: * <http://www.gnu.org/licenses/>.
12: */
13: package cz.cvut.kbss.jopa.test.query.runner;
14:
15: import cz.cvut.kbss.jopa.exceptions.NoResultException;
16: import cz.cvut.kbss.jopa.exceptions.NoUniqueResultException;
17: import cz.cvut.kbss.jopa.model.EntityManager;
18: import cz.cvut.kbss.jopa.model.annotations.OWLClass;
19: import cz.cvut.kbss.jopa.model.query.Query;
20: import cz.cvut.kbss.jopa.test.*;
21: import cz.cvut.kbss.jopa.test.environment.Generators;
22: import cz.cvut.kbss.jopa.test.query.QueryTestEnvironment;
23: import cz.cvut.kbss.jopa.vocabulary.RDFS;
24: import org.junit.jupiter.api.Test;
25: import org.slf4j.Logger;
26:
27: import java.net.URI;
28: import java.util.HashMap;
29: import java.util.List;
30: import java.util.Map;
31: import java.util.Set;
32: import java.util.stream.Collectors;
33:
34: import static org.hamcrest.MatcherAssert.assertThat;
35: import static org.hamcrest.Matchers.greaterThanOrEqualTo;
36: import static org.junit.jupiter.api.Assertions.*;
37:
38: public abstract class QueryRunner extends BaseQueryRunner {
39:
40: private static final String SELECT_E_BY_TYPE =
41: "SELECT ?x WHERE { ?x a <http://krizik.felk.cvut.cz/ontologies/jopa/entities#OWLClassE> . }";
42:
43: protected QueryRunner(Logger logger) {
44: super(logger);
45: }
46:
47: @Test
48: void testSelectByType() {
49: final String query = "SELECT ?x WHERE { ?x a <http://krizik.felk.cvut.cz/ontologies/jopa/entities#TypeA> . }";
50: final Query q = getEntityManager().createNativeQuery(query);
51: final List<OWLClassA> as = QueryTestEnvironment.getDataByContext(null, OWLClassA.class);
52: assertNotNull(q);
53:
54: final List res = q.getResultList();
55:
56: assertNotNull(res);
57: assertFalse(res.isEmpty());
58: assertEquals(as.size(), res.size());
59: boolean found;
60:• for (OWLClassA a : as) {
61: found = false;
62:• for (Object row : res) {
63:• if (a.getUri().equals(row)) {
64: found = true;
65: break;
66: }
67: }
68: assertTrue(found);
69: }
70: }
71:
72: @Test
73: void testSelectByDataProperty() {
74: final String query =
75: "SELECT ?y WHERE { ?x ?stringAtt ?y . }";
76: final Query q = getEntityManager().createNativeQuery(query)
77: .setParameter("stringAtt", URI.create(Vocabulary.P_B_STRING_ATTRIBUTE));
78: final Set<String> exp = QueryTestEnvironment.getDataByContext(null, OWLClassB.class).stream()
79: .map(OWLClassB::getStringAttribute).collect(Collectors.toSet());
80:
81: final List res = q.getResultList();
82:
83: assertNotNull(res);
84: assertFalse(res.isEmpty());
85: assertEquals(exp.size(), res.size());
86:• for (Object lst2 : res) {
87: assertTrue(lst2 instanceof String);
88: // False means we got the expected value
89: assertFalse(exp.add((String) lst2));
90: }
91: }
92:
93: @Test
94: void testSelectByObjectProperty() {
95: final OWLClassD d = QueryTestEnvironment.getData(OWLClassD.class).get(0);
96: final String query = "SELECT ?x WHERE { ?x a ?type ; ?hasA ?y . }";
97: final Query q = getEntityManager().createNativeQuery(query);
98: q.setParameter("type", URI.create(Vocabulary.C_OWL_CLASS_D))
99: .setParameter("hasA", URI.create(Vocabulary.P_HAS_OWL_CLASS_A)).setParameter("y", d.getOwlClassA().getUri());
100:
101: final List res = q.getResultList();
102:
103: assertEquals(1, res.size());
104: final Object subRes = res.get(0);
105: assertEquals(d.getUri(), subRes);
106: }
107:
108: @Test
109: void testSelectTypes() {
110: final OWLClassA a = QueryTestEnvironment.getData(OWLClassA.class).get(0);
111: final Set<String> types = a.getTypes();
112: types.add(a.getClass().getAnnotation(OWLClass.class).iri());
113: final String query = "SELECT ?x WHERE { ?instance a ?x . }";
114: final Query q = getEntityManager().createNativeQuery(query);
115: q.setParameter("instance", a.getUri());
116:
117: final List res = q.getResultList();
118: // The result can contain more types (inference)
119:• assertTrue(res.size() >= types.size());
120:• for (String type : types) {
121: assertTrue(res.contains(URI.create(type)));
122: }
123: }
124:
125: @Test
126: void testSetMaxResults() {
127: final Query q = getEntityManager().createNativeQuery(SELECT_E_BY_TYPE);
128: final int max = 5;
129:• assertTrue(max < QueryTestEnvironment.getData(OWLClassE.class).size());
130: assertEquals(Integer.MAX_VALUE, q.getMaxResults());
131: q.setMaxResults(max);
132: assertEquals(max, q.getMaxResults());
133:
134: final List res = q.getResultList();
135: assertNotNull(res);
136: assertFalse(res.isEmpty());
137: assertEquals(max, res.size());
138: }
139:
140: @Test
141: void testSetMaxResultsNegative() {
142: final Query q = getEntityManager().createNativeQuery(SELECT_E_BY_TYPE);
143: assertThrows(IllegalArgumentException.class, () -> q.setMaxResults(-1));
144: }
145:
146: @Test
147: void testSetMaxResultsZero() {
148: final Query q = getEntityManager().createNativeQuery(SELECT_E_BY_TYPE);
149: q.setMaxResults(0);
150:
151: final List res = q.getResultList();
152: assertNotNull(res);
153: assertTrue(res.isEmpty());
154: }
155:
156: @Test
157: void testGetSingleResult() {
158: final OWLClassA a = QueryTestEnvironment.getData(OWLClassA.class).get(0);
159: final String query =
160: "SELECT ?x WHERE { ?x <http://krizik.felk.cvut.cz/ontologies/jopa/attributes#A-stringAttribute> ?y .}";
161: final Query q = getEntityManager().createNativeQuery(query);
162: q.setParameter("y", a.getStringAttribute(), "en");
163:
164: final Object res = q.getSingleResult();
165: assertNotNull(res);
166: assertEquals(a.getUri(), res);
167: }
168:
169: @Test
170: void testGetSingleResultMultiples() {
171: final Query q = getEntityManager().createNativeQuery(SELECT_E_BY_TYPE);
172: assertThrows(NoUniqueResultException.class, q::getSingleResult);
173: }
174:
175: @Test
176: void testGetSingleResultNoResult() {
177: final String query =
178: "SELECT ?x WHERE { ?x a <http://krizik.felk.cvut.cz/ontologies/jopa/entities#OWLClassX> . }";
179: final Query q = getEntityManager().createNativeQuery(query);
180: assertThrows(NoResultException.class, q::getSingleResult);
181: }
182:
183: @Test
184: void testSelectQueryWithPositionalParameters() {
185: final OWLClassA a = QueryTestEnvironment.getData(OWLClassA.class).get(0);
186: final String query =
187: "SELECT ?x WHERE { ?x <http://krizik.felk.cvut.cz/ontologies/jopa/attributes#A-stringAttribute> $ .}";
188: final Query q = getEntityManager().createNativeQuery(query);
189: q.setParameter(1, a.getStringAttribute(), "en");
190:
191: final Object res = q.getSingleResult();
192: assertNotNull(res);
193: assertEquals(a.getUri(), res);
194: }
195:
196: @Test
197: public void selectWithOptionalReturnsNullInUnfilledColumns() {
198: final String query =
199: "SELECT ?x ?s WHERE { ?x a <http://krizik.felk.cvut.cz/ontologies/jopa/entities#OWLClassE> ." +
200: " OPTIONAL {?x <http://krizik.felk.cvut.cz/ontologies/jopa/attributes#E-stringAttribute> ?s . } }";
201: final OWLClassE e = new OWLClassE();
202: final EntityManager em = getEntityManager();
203: em.getTransaction().begin();
204: em.persist(e);
205: em.getTransaction().commit();
206: final Query q = em.createNativeQuery(query);
207:
208: final List result = q.getResultList();
209: assertFalse(result.isEmpty());
210:• for (Object row : result) {
211: final Object[] rowArr = (Object[]) row;
212:• if (rowArr[0].equals(e.getUri().toString())) {
213: assertNull(rowArr[1]);
214: }
215: }
216: }
217:
218: @Test
219: void testCreateNamedNativeQueryWithParameterSetting() {
220: final OWLClassA a = QueryTestEnvironment.getData(OWLClassA.class).get(0);
221: final List res = getEntityManager().createNamedQuery("OWLClassA.findByString")
222: .setParameter("str", a.getStringAttribute(), "en").getResultList();
223: assertFalse(res.isEmpty());
224: assertTrue(res.contains(a.getUri()));
225: }
226:
227: @Test
228: void queryWithMappingReturnsResultWithVariablesMappedAccordingly() {
229: final List res = getEntityManager().createNativeQuery("SELECT * WHERE {" +
230: "?x a <" + Vocabulary.C_OWL_CLASS_A + "> ;" +
231: "<" + Vocabulary.P_A_STRING_ATTRIBUTE + "> ?y ." +
232: "}", OWLClassA.VARIABLE_MAPPING).getResultList();
233: final Map<String, String> expected = new HashMap<>();
234: QueryTestEnvironment.getData(OWLClassA.class)
235: .forEach(a -> expected.put(a.getUri().toString(), a.getStringAttribute()));
236: assertEquals(expected.size(), res.size());
237:• for (Object row : res) {
238: assertTrue(row instanceof Object[]);
239: final Object[] elems = (Object[]) row;
240: assertEquals(2, elems.length);
241: assertTrue(expected.containsKey(elems[0]));
242: assertEquals(expected.get(elems[0]), elems[1]);
243: }
244: }
245:
246: @Test
247: void queryWithConstructorMappingReturnsCorrectInstances() {
248: final List res = getEntityManager().createNativeQuery("SELECT * WHERE {" +
249: "?x a <" + Vocabulary.C_OWL_CLASS_A + "> ;" +
250: "<" + Vocabulary.P_A_STRING_ATTRIBUTE + "> ?y ." +
251: "}", OWLClassA.CONSTRUCTOR_MAPPING).getResultList();
252: final Map<URI, OWLClassA> expected = new HashMap<>();
253: QueryTestEnvironment.getData(OWLClassA.class).forEach(a -> expected.put(a.getUri(), a));
254:
255: verifyOWLClassAInstances(res, expected);
256: }
257:
258: private void verifyOWLClassAInstances(List res, Map<URI, OWLClassA> expected) {
259:• for (Object item : res) {
260: assertTrue(item instanceof OWLClassA);
261: final OWLClassA a = (OWLClassA) item;
262: assertTrue(expected.containsKey(a.getUri()));
263: assertEquals(expected.get(a.getUri()).getStringAttribute(), a.getStringAttribute());
264: }
265: }
266:
267: @Test
268: void queryWithEntityMappingReturnsCorrectManagedInstances() {
269: final List res = getEntityManager().createNativeQuery("SELECT * WHERE {" +
270: "?x a <" + Vocabulary.C_OWL_CLASS_A + "> ;" +
271: "<" + Vocabulary.P_A_STRING_ATTRIBUTE + "> ?stringAttribute ." +
272: "}", OWLClassA.ENTITY_MAPPING).getResultList();
273: final Map<URI, OWLClassA> expected = new HashMap<>();
274: QueryTestEnvironment.getData(OWLClassA.class).forEach(a -> expected.put(a.getUri(), a));
275:
276: verifyOWLClassAInstances(res, expected);
277:• for (Object item : res) {
278: assertTrue(getEntityManager().contains(item));
279: }
280: }
281:
282: @Test
283: void queryWithEntityMappingLoadsReferencedEntitiesAsWell() {
284: final List res = getEntityManager().createNativeQuery("SELECT ?x ?y WHERE {" +
285: "?x a ?dType ;" +
286: "?hasA ?y . }", OWLClassD.MAPPING_NAME)
287: .setParameter("dType", URI.create(Vocabulary.C_OWL_CLASS_D))
288: .setParameter("hasA", URI.create(Vocabulary.P_HAS_OWL_CLASS_A))
289: .getResultList();
290: final Map<URI, OWLClassD> expected = new HashMap<>();
291: QueryTestEnvironment.getData(OWLClassD.class).forEach(d -> expected.put(d.getUri(), d));
292:
293: assertEquals(expected.size(), res.size());
294:• for (Object row : res) {
295: assertTrue(row instanceof OWLClassD);
296: final OWLClassD inst = (OWLClassD) row;
297: assertTrue(expected.containsKey(inst.getUri()));
298: assertNotNull(inst.getOwlClassA());
299: final OWLClassA expectedA = expected.get(inst.getUri()).getOwlClassA();
300: verifyOwlClassAInstance(expectedA, inst.getOwlClassA());
301: assertTrue(getEntityManager().contains(inst));
302: assertTrue(getEntityManager().contains(inst.getOwlClassA()));
303: }
304: }
305:
306: private void verifyOwlClassAInstance(OWLClassA expected, OWLClassA actual) {
307:• if (expected == null) {
308: assertNull(actual);
309: return;
310: }
311: assertNotNull(actual);
312: assertEquals(expected.getUri(), actual.getUri());
313: assertEquals(expected.getStringAttribute(), actual.getStringAttribute());
314: assertEquals(expected.getTypes(), actual.getTypes());
315: }
316:
317: @Test
318: public void queryWithEntityMappingLoadsReferencedEntityAndInheritedAttributes() {
319: final List res = getEntityManager().createNativeQuery("SELECT * WHERE {" +
320: "?x a ?type ;" +
321: "?hasA ?y ;" +
322: "?rdfsLabel ?label ;" +
323: "?hasDescription ?description ;" +
324: "?hasInt ?intAttribute ." +
325: "}", OWLClassT.MAPPING_NAME)
326: .setParameter("type", URI.create(Vocabulary.C_OWL_CLASS_T))
327: .setParameter("hasA", URI.create(Vocabulary.P_HAS_OWL_CLASS_A))
328: .setParameter("rdfsLabel", URI.create(RDFS.LABEL))
329: .setParameter("hasDescription", URI.create(Vocabulary.DC_DESCRIPTION))
330: .setParameter("hasInt", URI.create(Vocabulary.P_T_INTEGER_ATTRIBUTE))
331: .getResultList();
332: final Map<URI, OWLClassT> expected = new HashMap<>();
333: QueryTestEnvironment.getData(OWLClassT.class).forEach(t -> expected.put(t.getUri(), t));
334:
335: assertEquals(expected.size(), res.size());
336:• for (Object row : res) {
337: assertTrue(row instanceof OWLClassT);
338: final OWLClassT tActual = (OWLClassT) row;
339: assertTrue(expected.containsKey(tActual.getUri()));
340: final OWLClassT tExpected = expected.get(tActual.getUri());
341: assertEquals(tExpected.getName(), tActual.getName());
342: assertEquals(tExpected.getDescription(), tActual.getDescription());
343: assertEquals(tExpected.getIntAttribute(), tActual.getIntAttribute());
344: verifyOwlClassAInstance(tExpected.getOwlClassA(), tActual.getOwlClassA());
345: }
346: }
347:
348: @Test
349: public void executeUpdateRunsUpdateOnRepository() {
350: final EntityManager em = getEntityManager();
351: final OWLClassA instance = QueryTestEnvironment.getData(OWLClassA.class).get(0);
352: final String newValue = "UpdatedValue";
353: final String update = "DELETE { ?inst ?property ?origValue . }" +
354: "INSERT { ?inst ?property ?newValue . } WHERE {" +
355: "?inst ?property ?origValue . }";
356: em.createNativeQuery(update).setParameter("inst", instance.getUri()).setParameter("property", URI.create(
357: Vocabulary.P_A_STRING_ATTRIBUTE)).setParameter("newValue", newValue, "en").executeUpdate();
358:
359: final OWLClassA result = em.find(OWLClassA.class, instance.getUri());
360: assertEquals(newValue, result.getStringAttribute());
361: }
362:
363: @Test
364: public void executeUpdateRunsDeleteOnRepository() {
365: final EntityManager em = getEntityManager();
366: final OWLClassA instance = QueryTestEnvironment.getData(OWLClassA.class).get(0);
367: assertNotNull(instance.getStringAttribute());
368: final String update = "DELETE { ?inst ?property ?origValue . } WHERE {" +
369: "?inst ?property ?origValue . }";
370: em.createNativeQuery(update).setParameter("inst", instance.getUri())
371: .setParameter("property", URI.create(Vocabulary.P_A_STRING_ATTRIBUTE)).executeUpdate();
372:
373: final OWLClassA result = em.find(OWLClassA.class, instance.getUri());
374: assertNull(result.getStringAttribute());
375: }
376:
377: @Test
378: public void executeUpdateRunsInsertOnRepository() {
379: final EntityManager em = getEntityManager();
380: final URI newType = Generators.generateUri();
381: final OWLClassA instance = QueryTestEnvironment.getData(OWLClassA.class).get(0);
382: final String update = "INSERT DATA { ?inst a ?newType . }";
383: em.createNativeQuery(update).setParameter("inst", instance.getUri())
384: .setParameter("newType", newType).executeUpdate();
385:
386: final OWLClassA result = em.find(OWLClassA.class, instance.getUri());
387: assertTrue(result.getTypes().contains(newType.toString()));
388: }
389:
390: @Test
391: void settingStringParameterEscapesTheParameterValue() {
392: final EntityManager em = getEntityManager();
393: final String query = "PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> \n" +
394: "SELECT ?x WHERE { ?x rdfs:comment ?comment . }";
395: final String paramValue = "string\nWith\nNewlines";
396: final List result = em.createNativeQuery(query).setParameter("comment", paramValue, "en").getResultList();
397: assertTrue(result.isEmpty()); // The point here is that no exception is thrown and a result is returned
398: }
399:
400: @Test
401: void querySupportsProcessingResultsUsingStream() {
402: final OWLClassA a = QueryTestEnvironment.getData(OWLClassA.class).get(0);
403: final Set<String> types = a.getTypes();
404: types.add(a.getClass().getAnnotation(OWLClass.class).iri());
405: final String query = "SELECT ?x WHERE { ?instance a ?x . }";
406: final Query q = getEntityManager().createNativeQuery(query).setParameter("instance", a.getUri());
407:
408: final Set<String> result = (Set<String>) q.getResultStream().map(Object::toString).collect(Collectors.toSet());
409: assertTrue(result.containsAll(types));
410: assertThat(result.size(), greaterThanOrEqualTo(types.size()));
411: }
412: }