aboutsummaryrefslogtreecommitdiffstats
path: root/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/literal/CountUpperBoundLiteral.java
diff options
context:
space:
mode:
Diffstat (limited to 'subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/literal/CountUpperBoundLiteral.java')
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/literal/CountUpperBoundLiteral.java51
1 files changed, 51 insertions, 0 deletions
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/literal/CountUpperBoundLiteral.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/literal/CountUpperBoundLiteral.java
new file mode 100644
index 00000000..03842143
--- /dev/null
+++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/literal/CountUpperBoundLiteral.java
@@ -0,0 +1,51 @@
1/*
2 * SPDX-FileCopyrightText: 2023 The Refinery Authors <https://refinery.tools/>
3 *
4 * SPDX-License-Identifier: EPL-2.0
5 */
6package tools.refinery.store.reasoning.literal;
7
8import tools.refinery.store.query.Constraint;
9import tools.refinery.store.query.literal.AbstractCallLiteral;
10import tools.refinery.store.query.literal.AbstractCountLiteral;
11import tools.refinery.store.query.literal.Literal;
12import tools.refinery.store.query.substitution.Substitution;
13import tools.refinery.store.query.term.DataVariable;
14import tools.refinery.store.query.term.Variable;
15import tools.refinery.store.representation.cardinality.UpperCardinalities;
16import tools.refinery.store.representation.cardinality.UpperCardinality;
17
18import java.util.List;
19
20public class CountUpperBoundLiteral extends AbstractCountLiteral<UpperCardinality> {
21 public CountUpperBoundLiteral(DataVariable<UpperCardinality> resultVariable, Constraint target,
22 List<Variable> arguments) {
23 super(UpperCardinality.class, resultVariable, target, arguments);
24 }
25
26 @Override
27 protected UpperCardinality zero() {
28 return UpperCardinalities.ZERO;
29 }
30
31 @Override
32 protected UpperCardinality one() {
33 return UpperCardinalities.UNBOUNDED;
34 }
35
36 @Override
37 protected Literal doSubstitute(Substitution substitution, List<Variable> substitutedArguments) {
38 return new CountUpperBoundLiteral(substitution.getTypeSafeSubstitute(getResultVariable()), getTarget(),
39 substitutedArguments);
40 }
41
42 @Override
43 public AbstractCallLiteral withArguments(Constraint newTarget, List<Variable> newArguments) {
44 return new CountUpperBoundLiteral(getResultVariable(), newTarget, newArguments);
45 }
46
47 @Override
48 protected String operatorName() {
49 return "@UpperBound(\"partial\") count";
50 }
51}