Skip to content

Commit b40e73f

Browse files
committed
wip
1 parent 1dc8888 commit b40e73f

1 file changed

Lines changed: 61 additions & 52 deletions

File tree

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

Lines changed: 61 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -46,94 +46,104 @@ public class SparqlUoOptimizerVisualizationTest {
4646
private static final Dataset DATASET = new SimpleDataset();
4747
private static final BindingSet BINDINGS = EmptyBindingSet.getInstance();
4848

49+
private static final List<Example> COUNTER_EXAMPLES = List.of(
50+
new Example("counter_union_no_shared_subject_or_object",
51+
PREFIXES + "SELECT * WHERE {\n" +
52+
" ?s ex:p1 ?o .\n" +
53+
" { ?x ex:p2 ?y } UNION { ?a ex:p3 ?b }\n" +
54+
"}\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+
" }"),
61+
new Example("counter_union_only_predicate_shared",
62+
PREFIXES + "SELECT * WHERE {\n" +
63+
" ?s ?p ?o .\n" +
64+
" { ?x ?p ?y } UNION { ?x ?p ?z }\n" +
65+
"}\n",
66+
PREFIXES + ""),
67+
new Example("counter_optional_no_shared_subject_or_object",
68+
PREFIXES + "SELECT * WHERE {\n" +
69+
" ?s ex:p1 ?o\n" +
70+
" OPTIONAL { ?x ex:p2 ?y }\n" +
71+
"}\n",
72+
PREFIXES + "SELECT ?s ?o ?x ?y WHERE {\n" +
73+
" ?s ex:p1 ?o .\n" +
74+
" OPTIONAL {\n" +
75+
" ?x ex:p2 ?y .\n" +
76+
" }\n" +
77+
"}"),
78+
new Example("counter_optional_with_filter_barrier",
79+
PREFIXES + "SELECT * WHERE {\n" +
80+
" ?s ex:p1 ?o\n" +
81+
" OPTIONAL { FILTER(?o > 5) ?s ex:p2 ?o2 }\n" +
82+
"}\n",
83+
PREFIXES + ""),
84+
new Example("counter_union_with_filter_barrier",
85+
PREFIXES + "SELECT * WHERE {\n" +
86+
" ?s ex:p1 ?o .\n" +
87+
" { FILTER(?o > 5) ?s ex:p2 ?o2 } UNION { FILTER(?o > 5) ?s ex:p3 ?o3 }\n" +
88+
"}\n",
89+
PREFIXES + ""),
90+
new Example("counter_service_barrier",
91+
PREFIXES + "SELECT * WHERE {\n" +
92+
" ?s ex:p1 ?o\n" +
93+
" SERVICE <http://example.org/svc> { ?s ex:p2 ?o2 }\n" +
94+
"}\n",
95+
"")
96+
);
97+
4998
private static final List<Example> EXAMPLES = List.of(
5099
new Example("merge_simple_union",
51100
PREFIXES + "SELECT * WHERE {\n" +
52101
" ?s ex:p1 ?o .\n" +
53102
" { ?s ex:p2 ?o2 } UNION { ?s ex:p3 ?o3 }\n" +
54103
"}\n",
55-
true),
104+
PREFIXES + ""),
56105
new Example("merge_union_with_longer_branch",
57106
PREFIXES + "SELECT * WHERE {\n" +
58107
" ?s ex:p1 ?o .\n" +
59108
" { ?s ex:p2 ?o2 . ?o2 ex:p4 ?x } UNION { ?s ex:p3 ?o3 }\n" +
60109
"}\n",
61-
true),
110+
PREFIXES + ""),
62111
new Example("merge_union_shared_object",
63112
PREFIXES + "SELECT * WHERE {\n" +
64113
" ?s ex:p1 ?o .\n" +
65114
" { ?x ex:p2 ?o } UNION { ?y ex:p3 ?o }\n" +
66115
"}\n",
67-
true),
116+
PREFIXES + ""),
68117
new Example("merge_three_union_branches",
69118
PREFIXES + "SELECT * WHERE {\n" +
70119
" ?s ex:p1 ?o .\n" +
71120
" { ?s ex:p2 ?o2 } UNION { ?s ex:p3 ?o3 } UNION { ?s ex:p4 ?o4 }\n" +
72121
"}\n",
73-
true),
122+
PREFIXES + ""),
74123
new Example("inject_simple_optional",
75124
PREFIXES + "SELECT * WHERE {\n" +
76125
" ?s ex:p1 ?o\n" +
77126
" OPTIONAL { ?s ex:p2 ?o2 }\n" +
78127
"}\n",
79-
true),
128+
PREFIXES + ""),
80129
new Example("inject_optional_multi_bgp",
81130
PREFIXES + "SELECT * WHERE {\n" +
82131
" ?s ex:p1 ?o\n" +
83132
" OPTIONAL { ?s ex:p2 ?o2 . ?o2 ex:p3 ?x }\n" +
84133
"}\n",
85-
true),
134+
PREFIXES + ""),
86135
new Example("inject_optional_with_union_and_bgp",
87136
PREFIXES + "SELECT * WHERE {\n" +
88137
" ?s ex:p1 ?o\n" +
89138
" OPTIONAL { ?s ex:p2 ?o2 . { ?s ex:p3 ?o3 } UNION { ?s ex:p4 ?o4 } }\n" +
90139
"}\n",
91-
true),
140+
PREFIXES + ""),
92141
new Example("inject_nested_optional",
93142
PREFIXES + "SELECT * WHERE {\n" +
94143
" ?s ex:p1 ?o\n" +
95144
" OPTIONAL { ?s ex:p2 ?o2 OPTIONAL { ?s ex:p3 ?o3 } }\n" +
96145
"}\n",
97-
true)
98-
);
99-
100-
private static final List<Example> COUNTER_EXAMPLES = List.of(
101-
new Example("counter_union_no_shared_subject_or_object",
102-
PREFIXES + "SELECT * WHERE {\n" +
103-
" ?s ex:p1 ?o .\n" +
104-
" { ?x ex:p2 ?y } UNION { ?a ex:p3 ?b }\n" +
105-
"}\n",
106-
false),
107-
new Example("counter_union_only_predicate_shared",
108-
PREFIXES + "SELECT * WHERE {\n" +
109-
" ?s ?p ?o .\n" +
110-
" { ?x ?p ?y } UNION { ?x ?p ?z }\n" +
111-
"}\n",
112-
false),
113-
new Example("counter_optional_no_shared_subject_or_object",
114-
PREFIXES + "SELECT * WHERE {\n" +
115-
" ?s ex:p1 ?o\n" +
116-
" OPTIONAL { ?x ex:p2 ?y }\n" +
117-
"}\n",
118-
false),
119-
new Example("counter_optional_with_filter_barrier",
120-
PREFIXES + "SELECT * WHERE {\n" +
121-
" ?s ex:p1 ?o\n" +
122-
" OPTIONAL { FILTER(?o > 5) ?s ex:p2 ?o2 }\n" +
123-
"}\n",
124-
false),
125-
new Example("counter_union_with_filter_barrier",
126-
PREFIXES + "SELECT * WHERE {\n" +
127-
" ?s ex:p1 ?o .\n" +
128-
" { FILTER(?o > 5) ?s ex:p2 ?o2 } UNION { FILTER(?o > 5) ?s ex:p3 ?o3 }\n" +
129-
"}\n",
130-
false),
131-
new Example("counter_service_barrier",
132-
PREFIXES + "SELECT * WHERE {\n" +
133-
" ?s ex:p1 ?o\n" +
134-
" SERVICE <http://example.org/svc> { ?s ex:p2 ?o2 }\n" +
135-
"}\n",
136-
false)
146+
"")
137147
);
138148

139149
@TestFactory
@@ -153,7 +163,7 @@ private static void runExample(Example example, TupleExprIRRenderer.Config style
153163

154164
writeArtifacts(example.name, example.sparql, before, after, original, optimized);
155165

156-
assertThat(after).isEqualTo(example.expected);
166+
assertThat(after).isEqualTo(example.expectedSparqlAfterOptimization);
157167

158168
}
159169

@@ -204,13 +214,12 @@ private static void writeFile(Path path, String content) throws IOException {
204214
private static final class Example {
205215
private final String name;
206216
private final String sparql;
207-
private final boolean expectChange;
208-
public String expected;
217+
public final String expectedSparqlAfterOptimization;
209218

210-
private Example(String name, String sparql, boolean expectChange) {
219+
private Example(String name, String sparql, String expectedSparqlAfterOptimization) {
211220
this.name = name;
212221
this.sparql = sparql;
213-
this.expectChange = expectChange;
222+
this.expectedSparqlAfterOptimization = expectedSparqlAfterOptimization;
214223
}
215224
}
216225

0 commit comments

Comments
 (0)