aboutsummaryrefslogtreecommitdiffstats
path: root/subprojects/store-query/src/main/java
diff options
context:
space:
mode:
authorLibravatar Kristóf Marussy <kristof@marussy.com>2023-07-19 01:51:35 +0200
committerLibravatar Kristóf Marussy <kristof@marussy.com>2023-07-20 15:54:50 +0200
commit0f77d138484aaa508ba60ebba4b3b2b329df9dc3 (patch)
tree3b34725e4e4fa00ffd65e5d204cb58b9fc0d4acc /subprojects/store-query/src/main/java
parentfeat: basic partial interpretation infrastructure (diff)
downloadrefinery-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/java')
-rw-r--r--subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/FunctionalQuery.java7
-rw-r--r--subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/RelationalQuery.java7
-rw-r--r--subprojects/store-query/src/main/java/tools/refinery/store/query/term/Parameter.java6
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;
9import java.util.Optional; 9import java.util.Optional;
10 10
11public class Parameter { 11public 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;