diff options
author | Kristóf Marussy <kristof@marussy.com> | 2023-07-19 01:51:35 +0200 |
---|---|---|
committer | Kristóf Marussy <kristof@marussy.com> | 2023-07-20 15:54:50 +0200 |
commit | 0f77d138484aaa508ba60ebba4b3b2b329df9dc3 (patch) | |
tree | 3b34725e4e4fa00ffd65e5d204cb58b9fc0d4acc /subprojects/store-query/src/main | |
parent | feat: basic partial interpretation infrastructure (diff) | |
download | refinery-0f77d138484aaa508ba60ebba4b3b2b329df9dc3.tar.gz refinery-0f77d138484aaa508ba60ebba4b3b2b329df9dc3.tar.zst refinery-0f77d138484aaa508ba60ebba4b3b2b329df9dc3.zip |
feat: multi-object based EQUALS and EXISTS
Adds translator for EQUALS and EXISTS symbols based on the multi-object
formalism. Only diagonal equality links are supported (e.g., distinct nodes may
not be EQUALS with each other).
Also introduces initial model seeds to separate partial interpreter construction
and graph initialization better.
Diffstat (limited to 'subprojects/store-query/src/main')
3 files changed, 17 insertions, 3 deletions
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/FunctionalQuery.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/FunctionalQuery.java index aaebfcc2..bf7651ad 100644 --- a/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/FunctionalQuery.java +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/FunctionalQuery.java | |||
@@ -55,10 +55,15 @@ public final class FunctionalQuery<T> extends Query<T> { | |||
55 | } | 55 | } |
56 | 56 | ||
57 | @Override | 57 | @Override |
58 | protected Query<T> withDnfInternal(Dnf newDnf) { | 58 | protected FunctionalQuery<T> withDnfInternal(Dnf newDnf) { |
59 | return newDnf.asFunction(type); | 59 | return newDnf.asFunction(type); |
60 | } | 60 | } |
61 | 61 | ||
62 | @Override | ||
63 | public FunctionalQuery<T> withDnf(Dnf newDnf) { | ||
64 | return (FunctionalQuery<T>) super.withDnf(newDnf); | ||
65 | } | ||
66 | |||
62 | public AssignedValue<T> call(List<NodeVariable> arguments) { | 67 | public AssignedValue<T> call(List<NodeVariable> arguments) { |
63 | return targetVariable -> { | 68 | return targetVariable -> { |
64 | var argumentsWithTarget = new ArrayList<Variable>(arguments.size() + 1); | 69 | var argumentsWithTarget = new ArrayList<Variable>(arguments.size() + 1); |
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/RelationalQuery.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/RelationalQuery.java index c1892ee1..618fb595 100644 --- a/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/RelationalQuery.java +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/RelationalQuery.java | |||
@@ -41,10 +41,15 @@ public final class RelationalQuery extends Query<Boolean> { | |||
41 | } | 41 | } |
42 | 42 | ||
43 | @Override | 43 | @Override |
44 | protected Query<Boolean> withDnfInternal(Dnf newDnf) { | 44 | protected RelationalQuery withDnfInternal(Dnf newDnf) { |
45 | return newDnf.asRelation(); | 45 | return newDnf.asRelation(); |
46 | } | 46 | } |
47 | 47 | ||
48 | @Override | ||
49 | public RelationalQuery withDnf(Dnf newDnf) { | ||
50 | return (RelationalQuery) super.withDnf(newDnf); | ||
51 | } | ||
52 | |||
48 | public CallLiteral call(CallPolarity polarity, List<NodeVariable> arguments) { | 53 | public CallLiteral call(CallPolarity polarity, List<NodeVariable> arguments) { |
49 | return getDnf().call(polarity, Collections.unmodifiableList(arguments)); | 54 | return getDnf().call(polarity, Collections.unmodifiableList(arguments)); |
50 | } | 55 | } |
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/term/Parameter.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/Parameter.java index dbb76177..577ac6e0 100644 --- a/subprojects/store-query/src/main/java/tools/refinery/store/query/term/Parameter.java +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/Parameter.java | |||
@@ -9,11 +9,15 @@ import java.util.Objects; | |||
9 | import java.util.Optional; | 9 | import java.util.Optional; |
10 | 10 | ||
11 | public class Parameter { | 11 | public class Parameter { |
12 | public static final Parameter NODE_OUT = new Parameter(null, ParameterDirection.OUT); | 12 | public static final Parameter NODE_OUT = new Parameter(null); |
13 | 13 | ||
14 | private final Class<?> dataType; | 14 | private final Class<?> dataType; |
15 | private final ParameterDirection direction; | 15 | private final ParameterDirection direction; |
16 | 16 | ||
17 | public Parameter(Class<?> dataType) { | ||
18 | this(dataType, ParameterDirection.OUT); | ||
19 | } | ||
20 | |||
17 | public Parameter(Class<?> dataType, ParameterDirection direction) { | 21 | public Parameter(Class<?> dataType, ParameterDirection direction) { |
18 | this.dataType = dataType; | 22 | this.dataType = dataType; |
19 | this.direction = direction; | 23 | this.direction = direction; |