aboutsummaryrefslogtreecommitdiffstats
path: root/subprojects/logic/src/main/java/tools/refinery/logic/term/AnyDataVariable.java
diff options
context:
space:
mode:
Diffstat (limited to 'subprojects/logic/src/main/java/tools/refinery/logic/term/AnyDataVariable.java')
-rw-r--r--subprojects/logic/src/main/java/tools/refinery/logic/term/AnyDataVariable.java55
1 files changed, 55 insertions, 0 deletions
diff --git a/subprojects/logic/src/main/java/tools/refinery/logic/term/AnyDataVariable.java b/subprojects/logic/src/main/java/tools/refinery/logic/term/AnyDataVariable.java
new file mode 100644
index 00000000..3376bdc9
--- /dev/null
+++ b/subprojects/logic/src/main/java/tools/refinery/logic/term/AnyDataVariable.java
@@ -0,0 +1,55 @@
1/*
2 * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/>
3 *
4 * SPDX-License-Identifier: EPL-2.0
5 */
6package tools.refinery.logic.term;
7
8import org.jetbrains.annotations.Nullable;
9import tools.refinery.logic.InvalidQueryException;
10import tools.refinery.logic.equality.LiteralEqualityHelper;
11
12import java.util.Optional;
13import java.util.Set;
14
15public abstract sealed class AnyDataVariable extends Variable implements AnyTerm permits DataVariable {
16 protected AnyDataVariable(String name) {
17 super(name);
18 }
19
20 @Override
21 public Optional<Class<?>> tryGetType() {
22 return Optional.of(getType());
23 }
24
25 @Override
26 public boolean isNodeVariable() {
27 return false;
28 }
29
30 @Override
31 public boolean isDataVariable() {
32 return true;
33 }
34
35 @Override
36 public NodeVariable asNodeVariable() {
37 throw new InvalidQueryException("%s is a data variable".formatted(this));
38 }
39
40 @Override
41 public boolean equalsWithSubstitution(LiteralEqualityHelper helper, AnyTerm other) {
42 return other instanceof AnyDataVariable dataVariable && helper.variableEqual(this, dataVariable);
43 }
44
45 @Override
46 public Set<AnyDataVariable> getInputVariables() {
47 return Set.of(this);
48 }
49
50 @Override
51 public abstract AnyDataVariable renew(@Nullable String name);
52
53 @Override
54 public abstract AnyDataVariable renew();
55}