aboutsummaryrefslogtreecommitdiffstats
path: root/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/multiobject/MultiObjectInitializer.java
diff options
context:
space:
mode:
Diffstat (limited to 'subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/multiobject/MultiObjectInitializer.java')
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/multiobject/MultiObjectInitializer.java16
1 files changed, 10 insertions, 6 deletions
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/multiobject/MultiObjectInitializer.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/multiobject/MultiObjectInitializer.java
index f11ab46b..89918155 100644
--- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/multiobject/MultiObjectInitializer.java
+++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/multiobject/MultiObjectInitializer.java
@@ -30,9 +30,9 @@ class MultiObjectInitializer implements PartialModelInitializer {
30 30
31 @Override 31 @Override
32 public void initialize(Model model, ModelSeed modelSeed) { 32 public void initialize(Model model, ModelSeed modelSeed) {
33 var intervals = initializeIntervals(modelSeed); 33 var intervals = initializeIntervals(model, modelSeed);
34 initializeExists(intervals, modelSeed); 34 initializeExists(intervals, model, modelSeed);
35 initializeEquals(intervals, modelSeed); 35 initializeEquals(intervals, model, modelSeed);
36 var countInterpretation = model.getInterpretation(countSymbol); 36 var countInterpretation = model.getInterpretation(countSymbol);
37 var uniqueTable = new HashMap<CardinalityInterval, CardinalityInterval>(); 37 var uniqueTable = new HashMap<CardinalityInterval, CardinalityInterval>();
38 for (int i = 0; i < intervals.length; i++) { 38 for (int i = 0; i < intervals.length; i++) {
@@ -47,12 +47,13 @@ class MultiObjectInitializer implements PartialModelInitializer {
47 } 47 }
48 48
49 @NotNull 49 @NotNull
50 private CardinalityInterval[] initializeIntervals(ModelSeed modelSeed) { 50 private CardinalityInterval[] initializeIntervals(Model model, ModelSeed modelSeed) {
51 var intervals = new CardinalityInterval[modelSeed.getNodeCount()]; 51 var intervals = new CardinalityInterval[modelSeed.getNodeCount()];
52 if (modelSeed.containsSeed(MultiObjectTranslator.COUNT_SYMBOL)) { 52 if (modelSeed.containsSeed(MultiObjectTranslator.COUNT_SYMBOL)) {
53 Arrays.fill(intervals, CardinalityIntervals.ONE); 53 Arrays.fill(intervals, CardinalityIntervals.ONE);
54 var cursor = modelSeed.getCursor(MultiObjectTranslator.COUNT_SYMBOL, CardinalityIntervals.ONE); 54 var cursor = modelSeed.getCursor(MultiObjectTranslator.COUNT_SYMBOL, CardinalityIntervals.ONE);
55 while (cursor.move()) { 55 while (cursor.move()) {
56 model.checkCancelled();
56 int i = cursor.getKey().get(0); 57 int i = cursor.getKey().get(0);
57 checkNodeId(intervals, i); 58 checkNodeId(intervals, i);
58 intervals[i] = cursor.getValue(); 59 intervals[i] = cursor.getValue();
@@ -70,12 +71,13 @@ class MultiObjectInitializer implements PartialModelInitializer {
70 return intervals; 71 return intervals;
71 } 72 }
72 73
73 private void initializeExists(CardinalityInterval[] intervals, ModelSeed modelSeed) { 74 private void initializeExists(CardinalityInterval[] intervals, Model model, ModelSeed modelSeed) {
74 if (!modelSeed.containsSeed(ReasoningAdapter.EXISTS_SYMBOL)) { 75 if (!modelSeed.containsSeed(ReasoningAdapter.EXISTS_SYMBOL)) {
75 return; 76 return;
76 } 77 }
77 var cursor = modelSeed.getCursor(ReasoningAdapter.EXISTS_SYMBOL, TruthValue.UNKNOWN); 78 var cursor = modelSeed.getCursor(ReasoningAdapter.EXISTS_SYMBOL, TruthValue.UNKNOWN);
78 while (cursor.move()) { 79 while (cursor.move()) {
80 model.checkCancelled();
79 int i = cursor.getKey().get(0); 81 int i = cursor.getKey().get(0);
80 checkNodeId(intervals, i); 82 checkNodeId(intervals, i);
81 switch (cursor.getValue()) { 83 switch (cursor.getValue()) {
@@ -89,13 +91,14 @@ class MultiObjectInitializer implements PartialModelInitializer {
89 } 91 }
90 } 92 }
91 93
92 private void initializeEquals(CardinalityInterval[] intervals, ModelSeed modelSeed) { 94 private void initializeEquals(CardinalityInterval[] intervals, Model model, ModelSeed modelSeed) {
93 if (!modelSeed.containsSeed(ReasoningAdapter.EQUALS_SYMBOL)) { 95 if (!modelSeed.containsSeed(ReasoningAdapter.EQUALS_SYMBOL)) {
94 return; 96 return;
95 } 97 }
96 var seed = modelSeed.getSeed(ReasoningAdapter.EQUALS_SYMBOL); 98 var seed = modelSeed.getSeed(ReasoningAdapter.EQUALS_SYMBOL);
97 var cursor = seed.getCursor(TruthValue.FALSE, modelSeed.getNodeCount()); 99 var cursor = seed.getCursor(TruthValue.FALSE, modelSeed.getNodeCount());
98 while (cursor.move()) { 100 while (cursor.move()) {
101 model.checkCancelled();
99 var key = cursor.getKey(); 102 var key = cursor.getKey();
100 int i = key.get(0); 103 int i = key.get(0);
101 int otherIndex = key.get(1); 104 int otherIndex = key.get(1);
@@ -116,6 +119,7 @@ class MultiObjectInitializer implements PartialModelInitializer {
116 } 119 }
117 } 120 }
118 for (int i = 0; i < intervals.length; i++) { 121 for (int i = 0; i < intervals.length; i++) {
122 model.checkCancelled();
119 if (seed.get(Tuple.of(i, i)) == TruthValue.FALSE) { 123 if (seed.get(Tuple.of(i, i)) == TruthValue.FALSE) {
120 throw new TranslationException(ReasoningAdapter.EQUALS_SYMBOL, "Inconsistent equality for node " + i); 124 throw new TranslationException(ReasoningAdapter.EQUALS_SYMBOL, "Inconsistent equality for node " + i);
121 } 125 }