diff options
Diffstat (limited to 'subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/literal/PartialLiterals.java')
-rw-r--r-- | subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/literal/PartialLiterals.java | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/literal/PartialLiterals.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/literal/PartialLiterals.java index 0e46a795..2614c26e 100644 --- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/literal/PartialLiterals.java +++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/literal/PartialLiterals.java | |||
@@ -5,6 +5,7 @@ | |||
5 | */ | 5 | */ |
6 | package tools.refinery.store.reasoning.literal; | 6 | package tools.refinery.store.reasoning.literal; |
7 | 7 | ||
8 | import tools.refinery.store.query.InvalidQueryException; | ||
8 | import tools.refinery.store.query.literal.CallLiteral; | 9 | import tools.refinery.store.query.literal.CallLiteral; |
9 | 10 | ||
10 | public final class PartialLiterals { | 11 | public final class PartialLiterals { |
@@ -13,24 +14,28 @@ public final class PartialLiterals { | |||
13 | } | 14 | } |
14 | 15 | ||
15 | public static CallLiteral may(CallLiteral literal) { | 16 | public static CallLiteral may(CallLiteral literal) { |
16 | return addModality(literal, Modality.MAY); | 17 | return addModality(literal, Modality.MAY, Concreteness.PARTIAL); |
17 | } | 18 | } |
18 | 19 | ||
19 | public static CallLiteral must(CallLiteral literal) { | 20 | public static CallLiteral must(CallLiteral literal) { |
20 | return addModality(literal, Modality.MUST); | 21 | return addModality(literal, Modality.MUST, Concreteness.PARTIAL); |
21 | } | 22 | } |
22 | 23 | ||
23 | public static CallLiteral current(CallLiteral literal) { | 24 | public static CallLiteral candidateMay(CallLiteral literal) { |
24 | return addModality(literal, Modality.CURRENT); | 25 | return addModality(literal, Modality.MAY, Concreteness.CANDIDATE); |
25 | } | 26 | } |
26 | 27 | ||
27 | public static CallLiteral addModality(CallLiteral literal, Modality modality) { | 28 | public static CallLiteral candidateMust(CallLiteral literal) { |
29 | return addModality(literal, Modality.MUST, Concreteness.CANDIDATE); | ||
30 | } | ||
31 | |||
32 | public static CallLiteral addModality(CallLiteral literal, Modality modality, Concreteness concreteness) { | ||
28 | var target = literal.getTarget(); | 33 | var target = literal.getTarget(); |
29 | if (target instanceof ModalConstraint) { | 34 | if (target instanceof ModalConstraint) { |
30 | throw new IllegalArgumentException("Literal %s already has modality".formatted(literal)); | 35 | throw new InvalidQueryException("Literal %s already has modality".formatted(literal)); |
31 | } | 36 | } |
32 | var polarity = literal.getPolarity(); | 37 | var polarity = literal.getPolarity(); |
33 | var modalTarget = new ModalConstraint(modality.commute(polarity), target); | 38 | var modalTarget = new ModalConstraint(modality.commute(polarity), concreteness, target); |
34 | return new CallLiteral(polarity, modalTarget, literal.getArguments()); | 39 | return new CallLiteral(polarity, modalTarget, literal.getArguments()); |
35 | } | 40 | } |
36 | } | 41 | } |