diff options
author | Kristóf Marussy <kristof@marussy.com> | 2023-04-20 20:10:20 +0200 |
---|---|---|
committer | Kristóf Marussy <kristof@marussy.com> | 2023-04-21 02:31:09 +0200 |
commit | 8cece6d200225bbc200fdb4bca6650456f4bcd43 (patch) | |
tree | 4c58176e102974b2ac3468c322a3b626eed501b3 /subprojects/store-query/src/main | |
parent | chore(deps): downgrade to Java 17 (diff) | |
download | refinery-8cece6d200225bbc200fdb4bca6650456f4bcd43.tar.gz refinery-8cece6d200225bbc200fdb4bca6650456f4bcd43.tar.zst refinery-8cece6d200225bbc200fdb4bca6650456f4bcd43.zip |
refactor: lambda-based Dnf and Query factory
* Helps keeping variable scoping clear by limiting variable scopes to the body
of the corresponding lambda.
* Overloads for convenience where variables are automatically created for lambda
parameters.
Diffstat (limited to 'subprojects/store-query/src/main')
31 files changed, 770 insertions, 86 deletions
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/AbstractQueryBuilder.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/AbstractQueryBuilder.java new file mode 100644 index 00000000..ddd69b9f --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/AbstractQueryBuilder.java | |||
@@ -0,0 +1,151 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.dnf; | ||
7 | |||
8 | import tools.refinery.store.query.dnf.callback.*; | ||
9 | import tools.refinery.store.query.literal.Literal; | ||
10 | import tools.refinery.store.query.term.NodeVariable; | ||
11 | import tools.refinery.store.query.term.Variable; | ||
12 | |||
13 | import java.util.Collection; | ||
14 | import java.util.List; | ||
15 | import java.util.Set; | ||
16 | |||
17 | public abstract class AbstractQueryBuilder<T extends AbstractQueryBuilder<T>> { | ||
18 | protected final DnfBuilder dnfBuilder; | ||
19 | |||
20 | protected AbstractQueryBuilder(DnfBuilder dnfBuilder) { | ||
21 | this.dnfBuilder = dnfBuilder; | ||
22 | } | ||
23 | |||
24 | protected abstract T self(); | ||
25 | |||
26 | public NodeVariable parameter() { | ||
27 | return dnfBuilder.parameter(); | ||
28 | } | ||
29 | |||
30 | public NodeVariable parameter(String name) { | ||
31 | return dnfBuilder.parameter(name); | ||
32 | } | ||
33 | |||
34 | public T parameter(NodeVariable variable) { | ||
35 | dnfBuilder.parameter(variable); | ||
36 | return self(); | ||
37 | } | ||
38 | |||
39 | public T parameters(NodeVariable... variables) { | ||
40 | dnfBuilder.parameters(variables); | ||
41 | return self(); | ||
42 | } | ||
43 | |||
44 | public T parameters(List<NodeVariable> variables) { | ||
45 | dnfBuilder.parameters(variables); | ||
46 | return self(); | ||
47 | } | ||
48 | |||
49 | public T functionalDependencies(Collection<FunctionalDependency<Variable>> functionalDependencies) { | ||
50 | dnfBuilder.functionalDependencies(functionalDependencies); | ||
51 | return self(); | ||
52 | } | ||
53 | |||
54 | public T functionalDependency(FunctionalDependency<Variable> functionalDependency) { | ||
55 | dnfBuilder.functionalDependency(functionalDependency); | ||
56 | return self(); | ||
57 | } | ||
58 | |||
59 | public T functionalDependency(Set<? extends Variable> forEach, Set<? extends Variable> unique) { | ||
60 | dnfBuilder.functionalDependency(forEach, unique); | ||
61 | return self(); | ||
62 | } | ||
63 | |||
64 | public T clause(ClauseCallback0 callback) { | ||
65 | dnfBuilder.clause(callback); | ||
66 | return self(); | ||
67 | } | ||
68 | |||
69 | public T clause(ClauseCallback1Data0 callback) { | ||
70 | dnfBuilder.clause(callback); | ||
71 | return self(); | ||
72 | } | ||
73 | |||
74 | public <U1> T clause(Class<U1> type1, ClauseCallback1Data1<U1> callback) { | ||
75 | dnfBuilder.clause(type1, callback); | ||
76 | return self(); | ||
77 | } | ||
78 | |||
79 | public T clause(ClauseCallback2Data0 callback) { | ||
80 | dnfBuilder.clause(callback); | ||
81 | return self(); | ||
82 | } | ||
83 | |||
84 | public <U1> T clause(Class<U1> type1, ClauseCallback2Data1<U1> callback) { | ||
85 | dnfBuilder.clause(type1, callback); | ||
86 | return self(); | ||
87 | } | ||
88 | |||
89 | public <U1, U2> T clause(Class<U1> type1, Class<U2> type2, ClauseCallback2Data2<U1, U2> callback) { | ||
90 | dnfBuilder.clause(type1, type2, callback); | ||
91 | return self(); | ||
92 | } | ||
93 | |||
94 | public T clause(ClauseCallback3Data0 callback) { | ||
95 | dnfBuilder.clause(callback); | ||
96 | return self(); | ||
97 | } | ||
98 | |||
99 | public <U1> T clause(Class<U1> type1, ClauseCallback3Data1<U1> callback) { | ||
100 | dnfBuilder.clause(type1, callback); | ||
101 | return self(); | ||
102 | } | ||
103 | |||
104 | public <U1, U2> T clause(Class<U1> type1, Class<U2> type2, ClauseCallback3Data2<U1, U2> callback) { | ||
105 | dnfBuilder.clause(type1, type2, callback); | ||
106 | return self(); | ||
107 | } | ||
108 | |||
109 | public <U1, U2, U3> T clause(Class<U1> type1, Class<U2> type2, Class<U3> type3, | ||
110 | ClauseCallback3Data3<U1, U2, U3> callback) { | ||
111 | dnfBuilder.clause(type1, type2, type3, callback); | ||
112 | return self(); | ||
113 | } | ||
114 | |||
115 | public T clause(ClauseCallback4Data0 callback) { | ||
116 | dnfBuilder.clause(callback); | ||
117 | return self(); | ||
118 | } | ||
119 | |||
120 | public <U1> T clause(Class<U1> type1, ClauseCallback4Data1<U1> callback) { | ||
121 | dnfBuilder.clause(type1, callback); | ||
122 | return self(); | ||
123 | } | ||
124 | |||
125 | public <U1, U2> T clause(Class<U1> type1, Class<U2> type2, ClauseCallback4Data2<U1, U2> callback) { | ||
126 | dnfBuilder.clause(type1, type2, callback); | ||
127 | return self(); | ||
128 | } | ||
129 | |||
130 | public <U1, U2, U3> T clause(Class<U1> type1, Class<U2> type2, Class<U3> type3, | ||
131 | ClauseCallback4Data3<U1, U2, U3> callback) { | ||
132 | dnfBuilder.clause(type1, type2, type3, callback); | ||
133 | return self(); | ||
134 | } | ||
135 | |||
136 | public <U1, U2, U3, U4> T clause(Class<U1> type1, Class<U2> type2, Class<U3> type3, Class<U4> type4, | ||
137 | ClauseCallback4Data4<U1, U2, U3, U4> callback) { | ||
138 | dnfBuilder.clause(type1, type2, type3, type4, callback); | ||
139 | return self(); | ||
140 | } | ||
141 | |||
142 | public T clause(Literal... literals) { | ||
143 | dnfBuilder.clause(literals); | ||
144 | return self(); | ||
145 | } | ||
146 | |||
147 | public T clause(Collection<? extends Literal> literals) { | ||
148 | dnfBuilder.clause(literals); | ||
149 | return self(); | ||
150 | } | ||
151 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/Dnf.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/Dnf.java index 3321a10f..8de5079d 100644 --- a/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/Dnf.java +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/Dnf.java | |||
@@ -16,6 +16,7 @@ import java.util.Collection; | |||
16 | import java.util.HashSet; | 16 | import java.util.HashSet; |
17 | import java.util.List; | 17 | import java.util.List; |
18 | import java.util.Set; | 18 | import java.util.Set; |
19 | import java.util.function.Consumer; | ||
19 | 20 | ||
20 | public final class Dnf implements Constraint { | 21 | public final class Dnf implements Constraint { |
21 | private static final String INDENTATION = " "; | 22 | private static final String INDENTATION = " "; |
@@ -196,4 +197,14 @@ public final class Dnf implements Constraint { | |||
196 | public static DnfBuilder builder(String name) { | 197 | public static DnfBuilder builder(String name) { |
197 | return new DnfBuilder(name); | 198 | return new DnfBuilder(name); |
198 | } | 199 | } |
200 | |||
201 | public static Dnf of(Consumer<DnfBuilder> callback) { | ||
202 | return of(null, callback); | ||
203 | } | ||
204 | |||
205 | public static Dnf of(String name, Consumer<DnfBuilder> callback) { | ||
206 | var builder = builder(name); | ||
207 | callback.accept(builder); | ||
208 | return builder.build(); | ||
209 | } | ||
199 | } | 210 | } |
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/DnfBuilder.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/DnfBuilder.java index 4f920f8f..a42ae558 100644 --- a/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/DnfBuilder.java +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/DnfBuilder.java | |||
@@ -5,8 +5,10 @@ | |||
5 | */ | 5 | */ |
6 | package tools.refinery.store.query.dnf; | 6 | package tools.refinery.store.query.dnf; |
7 | 7 | ||
8 | import tools.refinery.store.query.dnf.callback.*; | ||
8 | import tools.refinery.store.query.literal.Literal; | 9 | import tools.refinery.store.query.literal.Literal; |
9 | import tools.refinery.store.query.term.DataVariable; | 10 | import tools.refinery.store.query.term.DataVariable; |
11 | import tools.refinery.store.query.term.NodeVariable; | ||
10 | import tools.refinery.store.query.term.Variable; | 12 | import tools.refinery.store.query.term.Variable; |
11 | 13 | ||
12 | import java.util.*; | 14 | import java.util.*; |
@@ -25,6 +27,26 @@ public final class DnfBuilder { | |||
25 | this.name = name; | 27 | this.name = name; |
26 | } | 28 | } |
27 | 29 | ||
30 | public NodeVariable parameter() { | ||
31 | return parameter((String) null); | ||
32 | } | ||
33 | |||
34 | public NodeVariable parameter(String name) { | ||
35 | var variable = Variable.of(name); | ||
36 | parameter(variable); | ||
37 | return variable; | ||
38 | } | ||
39 | |||
40 | public <T> DataVariable<T> parameter(Class<T> type) { | ||
41 | return parameter(null, type); | ||
42 | } | ||
43 | |||
44 | public <T> DataVariable<T> parameter(String name, Class<T> type) { | ||
45 | var variable = Variable.of(name, type); | ||
46 | parameter(variable); | ||
47 | return variable; | ||
48 | } | ||
49 | |||
28 | public DnfBuilder parameter(Variable variable) { | 50 | public DnfBuilder parameter(Variable variable) { |
29 | if (parameters.contains(variable)) { | 51 | if (parameters.contains(variable)) { |
30 | throw new IllegalArgumentException("Duplicate parameter: " + variable); | 52 | throw new IllegalArgumentException("Duplicate parameter: " + variable); |
@@ -56,6 +78,74 @@ public final class DnfBuilder { | |||
56 | return functionalDependency(new FunctionalDependency<>(Set.copyOf(forEach), Set.copyOf(unique))); | 78 | return functionalDependency(new FunctionalDependency<>(Set.copyOf(forEach), Set.copyOf(unique))); |
57 | } | 79 | } |
58 | 80 | ||
81 | public DnfBuilder clause(ClauseCallback0 callback) { | ||
82 | return clause(callback.toLiterals()); | ||
83 | } | ||
84 | |||
85 | public DnfBuilder clause(ClauseCallback1Data0 callback) { | ||
86 | return clause(callback.toLiterals(Variable.of("v1"))); | ||
87 | } | ||
88 | |||
89 | public <T> DnfBuilder clause(Class<T> type1, ClauseCallback1Data1<T> callback) { | ||
90 | return clause(callback.toLiterals(Variable.of("v1", type1))); | ||
91 | } | ||
92 | |||
93 | public DnfBuilder clause(ClauseCallback2Data0 callback) { | ||
94 | return clause(callback.toLiterals(Variable.of("v1"), Variable.of("v2"))); | ||
95 | } | ||
96 | |||
97 | public <T> DnfBuilder clause(Class<T> type1, ClauseCallback2Data1<T> callback) { | ||
98 | return clause(callback.toLiterals(Variable.of("v1"), Variable.of("d1", type1))); | ||
99 | } | ||
100 | |||
101 | public <T1, T2> DnfBuilder clause(Class<T1> type1, Class<T2> type2, ClauseCallback2Data2<T1, T2> callback) { | ||
102 | return clause(callback.toLiterals(Variable.of("d1", type1), Variable.of("d2", type2))); | ||
103 | } | ||
104 | |||
105 | public DnfBuilder clause(ClauseCallback3Data0 callback) { | ||
106 | return clause(callback.toLiterals(Variable.of("v1"), Variable.of("v2"), Variable.of("v3"))); | ||
107 | } | ||
108 | |||
109 | public <T> DnfBuilder clause(Class<T> type1, ClauseCallback3Data1<T> callback) { | ||
110 | return clause(callback.toLiterals(Variable.of("v1"), Variable.of("v2"), Variable.of("d1", type1))); | ||
111 | } | ||
112 | |||
113 | public <T1, T2> DnfBuilder clause(Class<T1> type1, Class<T2> type2, ClauseCallback3Data2<T1, T2> callback) { | ||
114 | return clause(callback.toLiterals(Variable.of("v1"), Variable.of("d1", type1), Variable.of("d2", type2))); | ||
115 | } | ||
116 | |||
117 | public <T1, T2, T3> DnfBuilder clause(Class<T1> type1, Class<T2> type2, Class<T3> type3, | ||
118 | ClauseCallback3Data3<T1, T2, T3> callback) { | ||
119 | return clause(callback.toLiterals(Variable.of("d1", type1), Variable.of("d2", type2), | ||
120 | Variable.of("d3", type3))); | ||
121 | } | ||
122 | |||
123 | public DnfBuilder clause(ClauseCallback4Data0 callback) { | ||
124 | return clause(callback.toLiterals(Variable.of("v1"), Variable.of("v2"), Variable.of("v3"), Variable.of("v4"))); | ||
125 | } | ||
126 | |||
127 | public <T> DnfBuilder clause(Class<T> type1, ClauseCallback4Data1<T> callback) { | ||
128 | return clause(callback.toLiterals(Variable.of("v1"), Variable.of("v2"), Variable.of("v3"), Variable.of("d1", | ||
129 | type1))); | ||
130 | } | ||
131 | |||
132 | public <T1, T2> DnfBuilder clause(Class<T1> type1, Class<T2> type2, ClauseCallback4Data2<T1, T2> callback) { | ||
133 | return clause(callback.toLiterals(Variable.of("v1"), Variable.of("v2"), Variable.of("d1", type1), | ||
134 | Variable.of("d2", type2))); | ||
135 | } | ||
136 | |||
137 | public <T1, T2, T3> DnfBuilder clause(Class<T1> type1, Class<T2> type2, Class<T3> type3, | ||
138 | ClauseCallback4Data3<T1, T2, T3> callback) { | ||
139 | return clause(callback.toLiterals(Variable.of("v1"), Variable.of("d1", type1), Variable.of("d2", type2), | ||
140 | Variable.of("d3", type3))); | ||
141 | } | ||
142 | |||
143 | public <T1, T2, T3, T4> DnfBuilder clause(Class<T1> type1, Class<T2> type2, Class<T3> type3, Class<T4> type4, | ||
144 | ClauseCallback4Data4<T1, T2, T3, T4> callback) { | ||
145 | return clause(callback.toLiterals(Variable.of("d1", type1), Variable.of("d2", type2), | ||
146 | Variable.of("d3", type3), Variable.of("d4", type4))); | ||
147 | } | ||
148 | |||
59 | public DnfBuilder clause(Literal... literals) { | 149 | public DnfBuilder clause(Literal... literals) { |
60 | clause(List.of(literals)); | 150 | clause(List.of(literals)); |
61 | return this; | 151 | return this; |
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/FunctionalQueryBuilder.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/FunctionalQueryBuilder.java index 63580676..d1cd7ba8 100644 --- a/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/FunctionalQueryBuilder.java +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/FunctionalQueryBuilder.java | |||
@@ -5,47 +5,25 @@ | |||
5 | */ | 5 | */ |
6 | package tools.refinery.store.query.dnf; | 6 | package tools.refinery.store.query.dnf; |
7 | 7 | ||
8 | import tools.refinery.store.query.literal.Literal; | 8 | import tools.refinery.store.query.term.DataVariable; |
9 | import tools.refinery.store.query.term.Variable; | ||
10 | 9 | ||
11 | import java.util.Collection; | 10 | public final class FunctionalQueryBuilder<T> extends AbstractQueryBuilder<FunctionalQueryBuilder<T>> { |
12 | import java.util.Set; | 11 | private final DataVariable<T> outputVariable; |
13 | |||
14 | public final class FunctionalQueryBuilder<T> { | ||
15 | private final DnfBuilder dnfBuilder; | ||
16 | private final Class<T> type; | 12 | private final Class<T> type; |
17 | 13 | ||
18 | FunctionalQueryBuilder(DnfBuilder dnfBuilder, Class<T> type) { | 14 | FunctionalQueryBuilder(DataVariable<T> outputVariable, DnfBuilder dnfBuilder, Class<T> type) { |
19 | this.dnfBuilder = dnfBuilder; | 15 | super(dnfBuilder); |
16 | this.outputVariable = outputVariable; | ||
20 | this.type = type; | 17 | this.type = type; |
21 | } | 18 | } |
22 | 19 | ||
23 | public FunctionalQueryBuilder<T> functionalDependencies(Collection<FunctionalDependency<Variable>> functionalDependencies) { | 20 | @Override |
24 | dnfBuilder.functionalDependencies(functionalDependencies); | 21 | protected FunctionalQueryBuilder<T> self() { |
25 | return this; | ||
26 | } | ||
27 | |||
28 | public FunctionalQueryBuilder<T> functionalDependency(FunctionalDependency<Variable> functionalDependency) { | ||
29 | dnfBuilder.functionalDependency(functionalDependency); | ||
30 | return this; | ||
31 | } | ||
32 | |||
33 | public FunctionalQueryBuilder<T> functionalDependency(Set<? extends Variable> forEach, Set<? extends Variable> unique) { | ||
34 | dnfBuilder.functionalDependency(forEach, unique); | ||
35 | return this; | ||
36 | } | ||
37 | |||
38 | public FunctionalQueryBuilder<T> clause(Literal... literals) { | ||
39 | dnfBuilder.clause(literals); | ||
40 | return this; | ||
41 | } | ||
42 | |||
43 | public FunctionalQueryBuilder<T> clause(Collection<? extends Literal> literals) { | ||
44 | dnfBuilder.clause(literals); | ||
45 | return this; | 22 | return this; |
46 | } | 23 | } |
47 | 24 | ||
48 | public FunctionalQuery<T> build() { | 25 | public FunctionalQuery<T> build() { |
26 | dnfBuilder.output(outputVariable); | ||
49 | return dnfBuilder.build().asFunction(type); | 27 | return dnfBuilder.build().asFunction(type); |
50 | } | 28 | } |
51 | } | 29 | } |
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/Query.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/Query.java index d3de475f..e94c0c6b 100644 --- a/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/Query.java +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/Query.java | |||
@@ -5,17 +5,130 @@ | |||
5 | */ | 5 | */ |
6 | package tools.refinery.store.query.dnf; | 6 | package tools.refinery.store.query.dnf; |
7 | 7 | ||
8 | import tools.refinery.store.query.dnf.callback.*; | ||
9 | import tools.refinery.store.query.term.Variable; | ||
10 | |||
8 | public sealed interface Query<T> extends AnyQuery permits RelationalQuery, FunctionalQuery { | 11 | public sealed interface Query<T> extends AnyQuery permits RelationalQuery, FunctionalQuery { |
12 | String OUTPUT_VARIABLE_NAME = "output"; | ||
13 | |||
9 | @Override | 14 | @Override |
10 | Class<T> valueType(); | 15 | Class<T> valueType(); |
11 | 16 | ||
12 | T defaultValue(); | 17 | T defaultValue(); |
13 | 18 | ||
14 | static QueryBuilder builder() { | 19 | static QueryBuilder builder() { |
15 | return new QueryBuilder(); | 20 | return builder(null); |
16 | } | 21 | } |
17 | 22 | ||
18 | static QueryBuilder builder(String name) { | 23 | static QueryBuilder builder(String name) { |
19 | return new QueryBuilder(name); | 24 | return new QueryBuilder(name); |
20 | } | 25 | } |
26 | |||
27 | static RelationalQuery of(QueryCallback0 callback) { | ||
28 | return of(null, callback); | ||
29 | } | ||
30 | |||
31 | static RelationalQuery of(String name, QueryCallback0 callback) { | ||
32 | var builder = builder(name); | ||
33 | callback.accept(builder); | ||
34 | return builder.build(); | ||
35 | } | ||
36 | |||
37 | static RelationalQuery of(QueryCallback1 callback) { | ||
38 | return of(null, callback); | ||
39 | } | ||
40 | |||
41 | static RelationalQuery of(String name, QueryCallback1 callback) { | ||
42 | var builder = builder(name); | ||
43 | callback.accept(builder, builder.parameter("p1")); | ||
44 | return builder.build(); | ||
45 | } | ||
46 | |||
47 | static RelationalQuery of(QueryCallback2 callback) { | ||
48 | return of(null, callback); | ||
49 | } | ||
50 | |||
51 | static RelationalQuery of(String name, QueryCallback2 callback) { | ||
52 | var builder = builder(name); | ||
53 | callback.accept(builder, builder.parameter("p1"), builder.parameter("p2")); | ||
54 | return builder.build(); | ||
55 | } | ||
56 | |||
57 | static RelationalQuery of(QueryCallback3 callback) { | ||
58 | return of(null, callback); | ||
59 | } | ||
60 | |||
61 | static RelationalQuery of(String name, QueryCallback3 callback) { | ||
62 | var builder = builder(name); | ||
63 | callback.accept(builder, builder.parameter("p1"), builder.parameter("p2"), builder.parameter("p3")); | ||
64 | return builder.build(); | ||
65 | } | ||
66 | |||
67 | static RelationalQuery of(QueryCallback4 callback) { | ||
68 | return of(null, callback); | ||
69 | } | ||
70 | |||
71 | static RelationalQuery of(String name, QueryCallback4 callback) { | ||
72 | var builder = builder(name); | ||
73 | callback.accept(builder, builder.parameter("p1"), builder.parameter("p2"), builder.parameter("p3"), | ||
74 | builder.parameter("p4")); | ||
75 | return builder.build(); | ||
76 | } | ||
77 | |||
78 | static <T> FunctionalQuery<T> of(Class<T> type, FunctionalQueryCallback0<T> callback) { | ||
79 | return of(null, type, callback); | ||
80 | } | ||
81 | |||
82 | static <T> FunctionalQuery<T> of(String name, Class<T> type, FunctionalQueryCallback0<T> callback) { | ||
83 | var outputVariable = Variable.of(OUTPUT_VARIABLE_NAME, type); | ||
84 | var builder = builder(name).output(outputVariable); | ||
85 | callback.accept(builder, outputVariable); | ||
86 | return builder.build(); | ||
87 | } | ||
88 | |||
89 | static <T> FunctionalQuery<T> of(Class<T> type, FunctionalQueryCallback1<T> callback) { | ||
90 | return of(null, type, callback); | ||
91 | } | ||
92 | |||
93 | static <T> FunctionalQuery<T> of(String name, Class<T> type, FunctionalQueryCallback1<T> callback) { | ||
94 | var outputVariable = Variable.of(OUTPUT_VARIABLE_NAME, type); | ||
95 | var builder = builder(name).output(outputVariable); | ||
96 | callback.accept(builder, builder.parameter("p1"), outputVariable); | ||
97 | return builder.build(); | ||
98 | } | ||
99 | |||
100 | static <T> FunctionalQuery<T> of(Class<T> type, FunctionalQueryCallback2<T> callback) { | ||
101 | return of(null, type, callback); | ||
102 | } | ||
103 | |||
104 | static <T> FunctionalQuery<T> of(String name, Class<T> type, FunctionalQueryCallback2<T> callback) { | ||
105 | var outputVariable = Variable.of(OUTPUT_VARIABLE_NAME, type); | ||
106 | var builder = builder(name).output(outputVariable); | ||
107 | callback.accept(builder, builder.parameter("p1"), builder.parameter("p2"), outputVariable); | ||
108 | return builder.build(); | ||
109 | } | ||
110 | |||
111 | static <T> FunctionalQuery<T> of(Class<T> type, FunctionalQueryCallback3<T> callback) { | ||
112 | return of(null, type, callback); | ||
113 | } | ||
114 | |||
115 | static <T> FunctionalQuery<T> of(String name, Class<T> type, FunctionalQueryCallback3<T> callback) { | ||
116 | var outputVariable = Variable.of(OUTPUT_VARIABLE_NAME, type); | ||
117 | var builder = builder(name).output(outputVariable); | ||
118 | callback.accept(builder, builder.parameter("p1"), builder.parameter("p2"), builder.parameter("p3"), | ||
119 | outputVariable); | ||
120 | return builder.build(); | ||
121 | } | ||
122 | |||
123 | static <T> FunctionalQuery<T> of(Class<T> type, FunctionalQueryCallback4<T> callback) { | ||
124 | return of(null, type, callback); | ||
125 | } | ||
126 | |||
127 | static <T> FunctionalQuery<T> of(String name, Class<T> type, FunctionalQueryCallback4<T> callback) { | ||
128 | var outputVariable = Variable.of(OUTPUT_VARIABLE_NAME, type); | ||
129 | var builder = builder(name).output(outputVariable); | ||
130 | callback.accept(builder, builder.parameter("p1"), builder.parameter("p2"), builder.parameter("p3"), | ||
131 | builder.parameter("p4"), outputVariable); | ||
132 | return builder.build(); | ||
133 | } | ||
21 | } | 134 | } |
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/QueryBuilder.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/QueryBuilder.java index f925c9ac..138911bc 100644 --- a/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/QueryBuilder.java +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/QueryBuilder.java | |||
@@ -5,69 +5,20 @@ | |||
5 | */ | 5 | */ |
6 | package tools.refinery.store.query.dnf; | 6 | package tools.refinery.store.query.dnf; |
7 | 7 | ||
8 | import tools.refinery.store.query.literal.Literal; | ||
9 | import tools.refinery.store.query.term.DataVariable; | 8 | import tools.refinery.store.query.term.DataVariable; |
10 | import tools.refinery.store.query.term.NodeVariable; | ||
11 | import tools.refinery.store.query.term.Variable; | ||
12 | |||
13 | import java.util.Collection; | ||
14 | import java.util.List; | ||
15 | import java.util.Set; | ||
16 | |||
17 | public final class QueryBuilder { | ||
18 | private final DnfBuilder dnfBuilder; | ||
19 | 9 | ||
10 | public final class QueryBuilder extends AbstractQueryBuilder<QueryBuilder> { | ||
20 | QueryBuilder(String name) { | 11 | QueryBuilder(String name) { |
21 | dnfBuilder = Dnf.builder(name); | 12 | super(Dnf.builder(name)); |
22 | } | ||
23 | |||
24 | QueryBuilder() { | ||
25 | dnfBuilder = Dnf.builder(); | ||
26 | } | ||
27 | |||
28 | public QueryBuilder parameter(NodeVariable variable) { | ||
29 | dnfBuilder.parameter(variable); | ||
30 | return this; | ||
31 | } | 13 | } |
32 | 14 | ||
33 | public QueryBuilder parameters(NodeVariable... variables) { | 15 | @Override |
34 | dnfBuilder.parameters(variables); | 16 | protected QueryBuilder self() { |
35 | return this; | ||
36 | } | ||
37 | |||
38 | public QueryBuilder parameters(List<NodeVariable> variables) { | ||
39 | dnfBuilder.parameters(variables); | ||
40 | return this; | 17 | return this; |
41 | } | 18 | } |
42 | 19 | ||
43 | public <T> FunctionalQueryBuilder<T> output(DataVariable<T> outputVariable) { | 20 | public <T> FunctionalQueryBuilder<T> output(DataVariable<T> outputVariable) { |
44 | dnfBuilder.output(outputVariable); | 21 | return new FunctionalQueryBuilder<>(outputVariable, dnfBuilder, outputVariable.getType()); |
45 | return new FunctionalQueryBuilder<>(dnfBuilder, outputVariable.getType()); | ||
46 | } | ||
47 | |||
48 | public QueryBuilder functionalDependencies(Collection<FunctionalDependency<Variable>> functionalDependencies) { | ||
49 | dnfBuilder.functionalDependencies(functionalDependencies); | ||
50 | return this; | ||
51 | } | ||
52 | |||
53 | public QueryBuilder functionalDependency(FunctionalDependency<Variable> functionalDependency) { | ||
54 | dnfBuilder.functionalDependency(functionalDependency); | ||
55 | return this; | ||
56 | } | ||
57 | |||
58 | public QueryBuilder functionalDependency(Set<? extends Variable> forEach, Set<? extends Variable> unique) { | ||
59 | dnfBuilder.functionalDependency(forEach, unique); | ||
60 | return this; | ||
61 | } | ||
62 | |||
63 | public QueryBuilder clause(Literal... literals) { | ||
64 | dnfBuilder.clause(literals); | ||
65 | return this; | ||
66 | } | ||
67 | |||
68 | public QueryBuilder clause(Collection<? extends Literal> literals) { | ||
69 | dnfBuilder.clause(literals); | ||
70 | return this; | ||
71 | } | 22 | } |
72 | 23 | ||
73 | public RelationalQuery build() { | 24 | public RelationalQuery build() { |
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback0.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback0.java new file mode 100644 index 00000000..d98dda2e --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback0.java | |||
@@ -0,0 +1,15 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.dnf.callback; | ||
7 | |||
8 | import tools.refinery.store.query.literal.Literal; | ||
9 | |||
10 | import java.util.Collection; | ||
11 | |||
12 | @FunctionalInterface | ||
13 | public interface ClauseCallback0 { | ||
14 | Collection<Literal> toLiterals(); | ||
15 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback1Data0.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback1Data0.java new file mode 100644 index 00000000..4c01a527 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback1Data0.java | |||
@@ -0,0 +1,16 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.dnf.callback; | ||
7 | |||
8 | import tools.refinery.store.query.literal.Literal; | ||
9 | import tools.refinery.store.query.term.NodeVariable; | ||
10 | |||
11 | import java.util.Collection; | ||
12 | |||
13 | @FunctionalInterface | ||
14 | public interface ClauseCallback1Data0 { | ||
15 | Collection<Literal> toLiterals(NodeVariable v1); | ||
16 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback1Data1.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback1Data1.java new file mode 100644 index 00000000..2c0cb6eb --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback1Data1.java | |||
@@ -0,0 +1,16 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.dnf.callback; | ||
7 | |||
8 | import tools.refinery.store.query.literal.Literal; | ||
9 | import tools.refinery.store.query.term.DataVariable; | ||
10 | |||
11 | import java.util.Collection; | ||
12 | |||
13 | @FunctionalInterface | ||
14 | public interface ClauseCallback1Data1<T> { | ||
15 | Collection<Literal> toLiterals(DataVariable<T> d1); | ||
16 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback2Data0.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback2Data0.java new file mode 100644 index 00000000..d764bdba --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback2Data0.java | |||
@@ -0,0 +1,16 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.dnf.callback; | ||
7 | |||
8 | import tools.refinery.store.query.literal.Literal; | ||
9 | import tools.refinery.store.query.term.NodeVariable; | ||
10 | |||
11 | import java.util.Collection; | ||
12 | |||
13 | @FunctionalInterface | ||
14 | public interface ClauseCallback2Data0 { | ||
15 | Collection<Literal> toLiterals(NodeVariable v1, NodeVariable v2); | ||
16 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback2Data1.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback2Data1.java new file mode 100644 index 00000000..140af03a --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback2Data1.java | |||
@@ -0,0 +1,17 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.dnf.callback; | ||
7 | |||
8 | import tools.refinery.store.query.literal.Literal; | ||
9 | import tools.refinery.store.query.term.DataVariable; | ||
10 | import tools.refinery.store.query.term.NodeVariable; | ||
11 | |||
12 | import java.util.Collection; | ||
13 | |||
14 | @FunctionalInterface | ||
15 | public interface ClauseCallback2Data1<T> { | ||
16 | Collection<Literal> toLiterals(NodeVariable v1, DataVariable<T> x1); | ||
17 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback2Data2.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback2Data2.java new file mode 100644 index 00000000..bfc8637c --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback2Data2.java | |||
@@ -0,0 +1,16 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.dnf.callback; | ||
7 | |||
8 | import tools.refinery.store.query.literal.Literal; | ||
9 | import tools.refinery.store.query.term.DataVariable; | ||
10 | |||
11 | import java.util.Collection; | ||
12 | |||
13 | @FunctionalInterface | ||
14 | public interface ClauseCallback2Data2<T1, T2> { | ||
15 | Collection<Literal> toLiterals(DataVariable<T1> x1, DataVariable<T2> x2); | ||
16 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback3Data0.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback3Data0.java new file mode 100644 index 00000000..074df65b --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback3Data0.java | |||
@@ -0,0 +1,16 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.dnf.callback; | ||
7 | |||
8 | import tools.refinery.store.query.literal.Literal; | ||
9 | import tools.refinery.store.query.term.NodeVariable; | ||
10 | |||
11 | import java.util.Collection; | ||
12 | |||
13 | @FunctionalInterface | ||
14 | public interface ClauseCallback3Data0 { | ||
15 | Collection<Literal> toLiterals(NodeVariable v1, NodeVariable v2, NodeVariable v3); | ||
16 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback3Data1.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback3Data1.java new file mode 100644 index 00000000..24ba5187 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback3Data1.java | |||
@@ -0,0 +1,17 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.dnf.callback; | ||
7 | |||
8 | import tools.refinery.store.query.literal.Literal; | ||
9 | import tools.refinery.store.query.term.DataVariable; | ||
10 | import tools.refinery.store.query.term.NodeVariable; | ||
11 | |||
12 | import java.util.Collection; | ||
13 | |||
14 | @FunctionalInterface | ||
15 | public interface ClauseCallback3Data1<T> { | ||
16 | Collection<Literal> toLiterals(NodeVariable v1, NodeVariable v2, DataVariable<T> d1); | ||
17 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback3Data2.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback3Data2.java new file mode 100644 index 00000000..2a2e837a --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback3Data2.java | |||
@@ -0,0 +1,17 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.dnf.callback; | ||
7 | |||
8 | import tools.refinery.store.query.literal.Literal; | ||
9 | import tools.refinery.store.query.term.DataVariable; | ||
10 | import tools.refinery.store.query.term.NodeVariable; | ||
11 | |||
12 | import java.util.Collection; | ||
13 | |||
14 | @FunctionalInterface | ||
15 | public interface ClauseCallback3Data2<T1, T2> { | ||
16 | Collection<Literal> toLiterals(NodeVariable v1, DataVariable<T1> d1, DataVariable<T2> d2); | ||
17 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback3Data3.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback3Data3.java new file mode 100644 index 00000000..8f4bdd01 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback3Data3.java | |||
@@ -0,0 +1,16 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.dnf.callback; | ||
7 | |||
8 | import tools.refinery.store.query.literal.Literal; | ||
9 | import tools.refinery.store.query.term.DataVariable; | ||
10 | |||
11 | import java.util.Collection; | ||
12 | |||
13 | @FunctionalInterface | ||
14 | public interface ClauseCallback3Data3<T1, T2, T3> { | ||
15 | Collection<Literal> toLiterals(DataVariable<T1> d1, DataVariable<T2> d2, DataVariable<T3> d3); | ||
16 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback4Data0.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback4Data0.java new file mode 100644 index 00000000..ed0f87b2 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback4Data0.java | |||
@@ -0,0 +1,16 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.dnf.callback; | ||
7 | |||
8 | import tools.refinery.store.query.literal.Literal; | ||
9 | import tools.refinery.store.query.term.NodeVariable; | ||
10 | |||
11 | import java.util.Collection; | ||
12 | |||
13 | @FunctionalInterface | ||
14 | public interface ClauseCallback4Data0 { | ||
15 | Collection<Literal> toLiterals(NodeVariable v1, NodeVariable v2, NodeVariable v3, NodeVariable v4); | ||
16 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback4Data1.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback4Data1.java new file mode 100644 index 00000000..9b27e2e1 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback4Data1.java | |||
@@ -0,0 +1,17 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.dnf.callback; | ||
7 | |||
8 | import tools.refinery.store.query.literal.Literal; | ||
9 | import tools.refinery.store.query.term.DataVariable; | ||
10 | import tools.refinery.store.query.term.NodeVariable; | ||
11 | |||
12 | import java.util.Collection; | ||
13 | |||
14 | @FunctionalInterface | ||
15 | public interface ClauseCallback4Data1<T> { | ||
16 | Collection<Literal> toLiterals(NodeVariable v1, NodeVariable v2, NodeVariable v3, DataVariable<T> d1); | ||
17 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback4Data2.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback4Data2.java new file mode 100644 index 00000000..cbc4808e --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback4Data2.java | |||
@@ -0,0 +1,17 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.dnf.callback; | ||
7 | |||
8 | import tools.refinery.store.query.literal.Literal; | ||
9 | import tools.refinery.store.query.term.DataVariable; | ||
10 | import tools.refinery.store.query.term.NodeVariable; | ||
11 | |||
12 | import java.util.Collection; | ||
13 | |||
14 | @FunctionalInterface | ||
15 | public interface ClauseCallback4Data2<T1, T2> { | ||
16 | Collection<Literal> toLiterals(NodeVariable v1, NodeVariable v2, DataVariable<T1> d1, DataVariable<T2> d2); | ||
17 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback4Data3.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback4Data3.java new file mode 100644 index 00000000..a6258f36 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback4Data3.java | |||
@@ -0,0 +1,17 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.dnf.callback; | ||
7 | |||
8 | import tools.refinery.store.query.literal.Literal; | ||
9 | import tools.refinery.store.query.term.DataVariable; | ||
10 | import tools.refinery.store.query.term.NodeVariable; | ||
11 | |||
12 | import java.util.Collection; | ||
13 | |||
14 | @FunctionalInterface | ||
15 | public interface ClauseCallback4Data3<T1, T2, T3> { | ||
16 | Collection<Literal> toLiterals(NodeVariable v1, DataVariable<T1> d1, DataVariable<T2> d2, DataVariable<T3> d3); | ||
17 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback4Data4.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback4Data4.java new file mode 100644 index 00000000..b52a911a --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback4Data4.java | |||
@@ -0,0 +1,16 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.dnf.callback; | ||
7 | |||
8 | import tools.refinery.store.query.literal.Literal; | ||
9 | import tools.refinery.store.query.term.DataVariable; | ||
10 | |||
11 | import java.util.Collection; | ||
12 | |||
13 | @FunctionalInterface | ||
14 | public interface ClauseCallback4Data4<T1, T2, T3, T4> { | ||
15 | Collection<Literal> toLiterals(DataVariable<T1> d1, DataVariable<T2> d2, DataVariable<T3> d3, DataVariable<T4> d4); | ||
16 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/FunctionalQueryCallback0.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/FunctionalQueryCallback0.java new file mode 100644 index 00000000..63b3eee6 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/FunctionalQueryCallback0.java | |||
@@ -0,0 +1,14 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.dnf.callback; | ||
7 | |||
8 | import tools.refinery.store.query.dnf.FunctionalQueryBuilder; | ||
9 | import tools.refinery.store.query.term.DataVariable; | ||
10 | |||
11 | @FunctionalInterface | ||
12 | public interface FunctionalQueryCallback0<T> { | ||
13 | void accept(FunctionalQueryBuilder<T> builder, DataVariable<T> output); | ||
14 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/FunctionalQueryCallback1.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/FunctionalQueryCallback1.java new file mode 100644 index 00000000..1295a118 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/FunctionalQueryCallback1.java | |||
@@ -0,0 +1,15 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.dnf.callback; | ||
7 | |||
8 | import tools.refinery.store.query.dnf.FunctionalQueryBuilder; | ||
9 | import tools.refinery.store.query.term.DataVariable; | ||
10 | import tools.refinery.store.query.term.NodeVariable; | ||
11 | |||
12 | @FunctionalInterface | ||
13 | public interface FunctionalQueryCallback1<T> { | ||
14 | void accept(FunctionalQueryBuilder<T> builder, NodeVariable p1, DataVariable<T> output); | ||
15 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/FunctionalQueryCallback2.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/FunctionalQueryCallback2.java new file mode 100644 index 00000000..d5b7f9ff --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/FunctionalQueryCallback2.java | |||
@@ -0,0 +1,15 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.dnf.callback; | ||
7 | |||
8 | import tools.refinery.store.query.dnf.FunctionalQueryBuilder; | ||
9 | import tools.refinery.store.query.term.DataVariable; | ||
10 | import tools.refinery.store.query.term.NodeVariable; | ||
11 | |||
12 | @FunctionalInterface | ||
13 | public interface FunctionalQueryCallback2<T> { | ||
14 | void accept(FunctionalQueryBuilder<T> builder, NodeVariable p1, NodeVariable p2, DataVariable<T> output); | ||
15 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/FunctionalQueryCallback3.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/FunctionalQueryCallback3.java new file mode 100644 index 00000000..dc8404a0 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/FunctionalQueryCallback3.java | |||
@@ -0,0 +1,16 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.dnf.callback; | ||
7 | |||
8 | import tools.refinery.store.query.dnf.FunctionalQueryBuilder; | ||
9 | import tools.refinery.store.query.term.DataVariable; | ||
10 | import tools.refinery.store.query.term.NodeVariable; | ||
11 | |||
12 | @FunctionalInterface | ||
13 | public interface FunctionalQueryCallback3<T> { | ||
14 | void accept(FunctionalQueryBuilder<T> builder, NodeVariable p1, NodeVariable p2, NodeVariable p3, | ||
15 | DataVariable<T> output); | ||
16 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/FunctionalQueryCallback4.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/FunctionalQueryCallback4.java new file mode 100644 index 00000000..b6d3ddb0 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/FunctionalQueryCallback4.java | |||
@@ -0,0 +1,16 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.dnf.callback; | ||
7 | |||
8 | import tools.refinery.store.query.dnf.FunctionalQueryBuilder; | ||
9 | import tools.refinery.store.query.term.DataVariable; | ||
10 | import tools.refinery.store.query.term.NodeVariable; | ||
11 | |||
12 | @FunctionalInterface | ||
13 | public interface FunctionalQueryCallback4<T> { | ||
14 | void accept(FunctionalQueryBuilder<T> builder, NodeVariable p1, NodeVariable p2, NodeVariable p3, NodeVariable p4, | ||
15 | DataVariable<T> output); | ||
16 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/QueryCallback0.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/QueryCallback0.java new file mode 100644 index 00000000..3cf1de48 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/QueryCallback0.java | |||
@@ -0,0 +1,13 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.dnf.callback; | ||
7 | |||
8 | import tools.refinery.store.query.dnf.QueryBuilder; | ||
9 | |||
10 | @FunctionalInterface | ||
11 | public interface QueryCallback0 { | ||
12 | void accept(QueryBuilder builder); | ||
13 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/QueryCallback1.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/QueryCallback1.java new file mode 100644 index 00000000..0a150955 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/QueryCallback1.java | |||
@@ -0,0 +1,14 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.dnf.callback; | ||
7 | |||
8 | import tools.refinery.store.query.dnf.QueryBuilder; | ||
9 | import tools.refinery.store.query.term.NodeVariable; | ||
10 | |||
11 | @FunctionalInterface | ||
12 | public interface QueryCallback1 { | ||
13 | void accept(QueryBuilder builder, NodeVariable p1); | ||
14 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/QueryCallback2.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/QueryCallback2.java new file mode 100644 index 00000000..9493a7b4 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/QueryCallback2.java | |||
@@ -0,0 +1,14 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.dnf.callback; | ||
7 | |||
8 | import tools.refinery.store.query.dnf.QueryBuilder; | ||
9 | import tools.refinery.store.query.term.NodeVariable; | ||
10 | |||
11 | @FunctionalInterface | ||
12 | public interface QueryCallback2 { | ||
13 | void accept(QueryBuilder builder, NodeVariable p1, NodeVariable p2); | ||
14 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/QueryCallback3.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/QueryCallback3.java new file mode 100644 index 00000000..358c7da7 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/QueryCallback3.java | |||
@@ -0,0 +1,14 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.dnf.callback; | ||
7 | |||
8 | import tools.refinery.store.query.dnf.QueryBuilder; | ||
9 | import tools.refinery.store.query.term.NodeVariable; | ||
10 | |||
11 | @FunctionalInterface | ||
12 | public interface QueryCallback3 { | ||
13 | void accept(QueryBuilder builder, NodeVariable p1, NodeVariable p2, NodeVariable p3); | ||
14 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/QueryCallback4.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/QueryCallback4.java new file mode 100644 index 00000000..890dda16 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/QueryCallback4.java | |||
@@ -0,0 +1,14 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.dnf.callback; | ||
7 | |||
8 | import tools.refinery.store.query.dnf.QueryBuilder; | ||
9 | import tools.refinery.store.query.term.NodeVariable; | ||
10 | |||
11 | @FunctionalInterface | ||
12 | public interface QueryCallback4 { | ||
13 | void accept(QueryBuilder builder, NodeVariable p1, NodeVariable p2, NodeVariable p3, NodeVariable p4); | ||
14 | } | ||