Skip to content

Commit bb1798e

Browse files
committed
wip
1 parent 5316527 commit bb1798e

1 file changed

Lines changed: 158 additions & 18 deletions

File tree

core/queryrender/src/test/java/org/eclipse/rdf4j/queryrender/SparqlUoOptimizerVisualizationTest.java

Lines changed: 158 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -52,18 +52,31 @@ public class SparqlUoOptimizerVisualizationTest {
5252
" ?s ex:p1 ?o .\n" +
5353
" { ?x ex:p2 ?y } UNION { ?a ex:p3 ?b }\n" +
5454
"}\n",
55-
PREFIXES + "SELECT ?s ?o ?x ?y WHERE {\n" +
56-
" ?s ex:p1 ?o .\n" +
57-
" OPTIONAL {\n" +
58-
" ?x ex:p2 ?y .\n" +
59-
" }\n" +
60-
" }"),
55+
PREFIXES + "SELECT ?s ?o ?x ?y ?a ?b WHERE {\n" +
56+
" ?s ex:p1 ?o .\n" +
57+
" {\n" +
58+
" ?x ex:p2 ?y .\n" +
59+
" }\n" +
60+
" UNION\n" +
61+
" {\n" +
62+
" ?a ex:p3 ?b .\n" +
63+
" }\n" +
64+
"}"),
6165
new Example("counter_union_only_predicate_shared",
6266
PREFIXES + "SELECT * WHERE {\n" +
6367
" ?s ?p ?o .\n" +
6468
" { ?x ?p ?y } UNION { ?x ?p ?z }\n" +
6569
"}\n",
66-
PREFIXES + ""),
70+
PREFIXES + "SELECT ?s ?p ?o ?x ?y ?z WHERE {\n" +
71+
" ?s ?p ?o .\n" +
72+
" {\n" +
73+
" ?x ?p ?y .\n" +
74+
" }\n" +
75+
" UNION\n" +
76+
" {\n" +
77+
" ?x ?p ?z .\n" +
78+
" }\n" +
79+
"}"),
6780
new Example("counter_optional_no_shared_subject_or_object",
6881
PREFIXES + "SELECT * WHERE {\n" +
6982
" ?s ex:p1 ?o\n" +
@@ -80,19 +93,41 @@ public class SparqlUoOptimizerVisualizationTest {
8093
" ?s ex:p1 ?o\n" +
8194
" OPTIONAL { FILTER(?o > 5) ?s ex:p2 ?o2 }\n" +
8295
"}\n",
83-
PREFIXES + ""),
96+
PREFIXES + "SELECT ?s ?o ?o2 WHERE {\n" +
97+
" ?s ex:p1 ?o .\n" +
98+
" OPTIONAL {\n" +
99+
" ?s ex:p2 ?o2 .\n" +
100+
" FILTER (?o > 5)\n" +
101+
" }\n" +
102+
"}"),
84103
new Example("counter_union_with_filter_barrier",
85104
PREFIXES + "SELECT * WHERE {\n" +
86105
" ?s ex:p1 ?o .\n" +
87106
" { FILTER(?o > 5) ?s ex:p2 ?o2 } UNION { FILTER(?o > 5) ?s ex:p3 ?o3 }\n" +
88107
"}\n",
89-
PREFIXES + ""),
108+
PREFIXES + "SELECT ?s ?o ?o2 ?o3 WHERE {\n" +
109+
" ?s ex:p1 ?o .\n" +
110+
" {\n" +
111+
" ?s ex:p2 ?o2 .\n" +
112+
" FILTER (?o > 5)\n" +
113+
" }\n" +
114+
" UNION\n" +
115+
" {\n" +
116+
" ?s ex:p3 ?o3 .\n" +
117+
" FILTER (?o > 5)\n" +
118+
" }\n" +
119+
"}"),
90120
new Example("counter_service_barrier",
91121
PREFIXES + "SELECT * WHERE {\n" +
92122
" ?s ex:p1 ?o\n" +
93123
" SERVICE <http://example.org/svc> { ?s ex:p2 ?o2 }\n" +
94124
"}\n",
95-
"")
125+
PREFIXES + "SELECT ?s ?o ?o2 WHERE {\n" +
126+
" ?s ex:p1 ?o .\n" +
127+
" SERVICE ex:svc {\n" +
128+
" ?s ex:p2 ?o2 .\n" +
129+
" }\n" +
130+
"}")
96131
);
97132

98133
private static final List<Example> EXAMPLES = List.of(
@@ -101,49 +136,154 @@ public class SparqlUoOptimizerVisualizationTest {
101136
" ?s ex:p1 ?o .\n" +
102137
" { ?s ex:p2 ?o2 } UNION { ?s ex:p3 ?o3 }\n" +
103138
"}\n",
104-
PREFIXES + ""),
139+
PREFIXES + "SELECT ?s ?o ?o2 ?o3 WHERE {\n" +
140+
" {\n" +
141+
" ?s ex:p1 ?o .\n" +
142+
" {\n" +
143+
" ?s ex:p2 ?o2 .\n" +
144+
" }\n" +
145+
" }\n" +
146+
" UNION\n" +
147+
" {\n" +
148+
" ?s ex:p1 ?o .\n" +
149+
" {\n" +
150+
" ?s ex:p3 ?o3 .\n" +
151+
" }\n" +
152+
" }\n" +
153+
"}"),
105154
new Example("merge_union_with_longer_branch",
106155
PREFIXES + "SELECT * WHERE {\n" +
107156
" ?s ex:p1 ?o .\n" +
108157
" { ?s ex:p2 ?o2 . ?o2 ex:p4 ?x } UNION { ?s ex:p3 ?o3 }\n" +
109158
"}\n",
110-
PREFIXES + ""),
159+
PREFIXES + "SELECT ?s ?o ?o2 ?x ?o3 WHERE {\n" +
160+
" {\n" +
161+
" ?s ex:p1 ?o .\n" +
162+
" ?s ex:p2 ?o2 .\n" +
163+
" ?o2 ex:p4 ?x .\n" +
164+
" }\n" +
165+
" UNION\n" +
166+
" {\n" +
167+
" ?s ex:p1 ?o .\n" +
168+
" {\n" +
169+
" ?s ex:p3 ?o3 .\n" +
170+
" }\n" +
171+
" }\n" +
172+
"}"),
111173
new Example("merge_union_shared_object",
112174
PREFIXES + "SELECT * WHERE {\n" +
113175
" ?s ex:p1 ?o .\n" +
114176
" { ?x ex:p2 ?o } UNION { ?y ex:p3 ?o }\n" +
115177
"}\n",
116-
PREFIXES + ""),
178+
PREFIXES + "SELECT ?s ?o ?x ?y WHERE {\n" +
179+
" {\n" +
180+
" ?s ex:p1 ?o .\n" +
181+
" {\n" +
182+
" ?x ex:p2 ?o .\n" +
183+
" }\n" +
184+
" }\n" +
185+
" UNION\n" +
186+
" {\n" +
187+
" ?s ex:p1 ?o .\n" +
188+
" {\n" +
189+
" ?y ex:p3 ?o .\n" +
190+
" }\n" +
191+
" }\n" +
192+
"}"),
117193
new Example("merge_three_union_branches",
118194
PREFIXES + "SELECT * WHERE {\n" +
119195
" ?s ex:p1 ?o .\n" +
120196
" { ?s ex:p2 ?o2 } UNION { ?s ex:p3 ?o3 } UNION { ?s ex:p4 ?o4 }\n" +
121197
"}\n",
122-
PREFIXES + ""),
198+
PREFIXES + "SELECT ?s ?o ?o2 ?o3 ?o4 WHERE {\n" +
199+
" {\n" +
200+
" {\n" +
201+
" ?s ex:p1 ?o .\n" +
202+
" {\n" +
203+
" ?s ex:p2 ?o2 .\n" +
204+
" }\n" +
205+
" }\n" +
206+
" UNION\n" +
207+
" {\n" +
208+
" ?s ex:p1 ?o .\n" +
209+
" {\n" +
210+
" ?s ex:p3 ?o3 .\n" +
211+
" }\n" +
212+
" }\n" +
213+
" }\n" +
214+
" UNION\n" +
215+
" {\n" +
216+
" ?s ex:p1 ?o .\n" +
217+
" {\n" +
218+
" ?s ex:p4 ?o4 .\n" +
219+
" }\n" +
220+
" }\n" +
221+
"}"),
123222
new Example("inject_simple_optional",
124223
PREFIXES + "SELECT * WHERE {\n" +
125224
" ?s ex:p1 ?o\n" +
126225
" OPTIONAL { ?s ex:p2 ?o2 }\n" +
127226
"}\n",
128-
PREFIXES + ""),
227+
PREFIXES + "SELECT ?s ?o ?o2 WHERE {\n" +
228+
" ?s ex:p1 ?o .\n" +
229+
" OPTIONAL {\n" +
230+
" ?s ex:p1 ?o .\n" +
231+
" ?s ex:p2 ?o2 .\n" +
232+
" }\n" +
233+
"}"),
129234
new Example("inject_optional_multi_bgp",
130235
PREFIXES + "SELECT * WHERE {\n" +
131236
" ?s ex:p1 ?o\n" +
132237
" OPTIONAL { ?s ex:p2 ?o2 . ?o2 ex:p3 ?x }\n" +
133238
"}\n",
134-
PREFIXES + ""),
239+
PREFIXES + "SELECT ?s ?o ?o2 ?x WHERE {\n" +
240+
" ?s ex:p1 ?o .\n" +
241+
" OPTIONAL {\n" +
242+
" ?s ex:p1 ?o .\n" +
243+
" ?s ex:p2 ?o2 .\n" +
244+
" ?o2 ex:p3 ?x .\n" +
245+
" }\n" +
246+
"}"),
135247
new Example("inject_optional_with_union_and_bgp",
136248
PREFIXES + "SELECT * WHERE {\n" +
137249
" ?s ex:p1 ?o\n" +
138250
" OPTIONAL { ?s ex:p2 ?o2 . { ?s ex:p3 ?o3 } UNION { ?s ex:p4 ?o4 } }\n" +
139251
"}\n",
140-
PREFIXES + ""),
252+
PREFIXES + "SELECT ?s ?o ?o2 ?o3 ?o4 WHERE {\n" +
253+
" ?s ex:p1 ?o .\n" +
254+
" OPTIONAL {\n" +
255+
" ?s ex:p1 ?o .\n" +
256+
" {\n" +
257+
" ?s ex:p2 ?o2 .\n" +
258+
" {\n" +
259+
" ?s ex:p3 ?o3 .\n" +
260+
" }\n" +
261+
" }\n" +
262+
" UNION\n" +
263+
" {\n" +
264+
" ?s ex:p2 ?o2 .\n" +
265+
" {\n" +
266+
" ?s ex:p4 ?o4 .\n" +
267+
" }\n" +
268+
" }\n" +
269+
" }\n" +
270+
"}"),
141271
new Example("inject_nested_optional",
142272
PREFIXES + "SELECT * WHERE {\n" +
143273
" ?s ex:p1 ?o\n" +
144274
" OPTIONAL { ?s ex:p2 ?o2 OPTIONAL { ?s ex:p3 ?o3 } }\n" +
145275
"}\n",
146-
"")
276+
PREFIXES + "SELECT ?s ?o ?o2 ?o3 WHERE {\n" +
277+
" ?s ex:p1 ?o .\n" +
278+
" OPTIONAL {\n" +
279+
" ?s ex:p1 ?o .\n" +
280+
" ?s ex:p2 ?o2 .\n" +
281+
" OPTIONAL {\n" +
282+
" ?s ex:p2 ?o2 .\n" +
283+
" ?s ex:p3 ?o3 .\n" +
284+
" }\n" +
285+
" }\n" +
286+
"}")
147287
);
148288

149289
@TestFactory

0 commit comments

Comments
 (0)