aboutsummaryrefslogtreecommitdiff
path: root/src/uk/ac/ox/cs/pagoda/rules
diff options
context:
space:
mode:
Diffstat (limited to 'src/uk/ac/ox/cs/pagoda/rules')
-rw-r--r--src/uk/ac/ox/cs/pagoda/rules/approximators/LimitedSkolemisationApproximator.java22
1 files changed, 12 insertions, 10 deletions
diff --git a/src/uk/ac/ox/cs/pagoda/rules/approximators/LimitedSkolemisationApproximator.java b/src/uk/ac/ox/cs/pagoda/rules/approximators/LimitedSkolemisationApproximator.java
index 3f1ed7e..5f6e362 100644
--- a/src/uk/ac/ox/cs/pagoda/rules/approximators/LimitedSkolemisationApproximator.java
+++ b/src/uk/ac/ox/cs/pagoda/rules/approximators/LimitedSkolemisationApproximator.java
@@ -3,6 +3,7 @@ package uk.ac.ox.cs.pagoda.rules.approximators;
3import org.semanticweb.HermiT.model.*; 3import org.semanticweb.HermiT.model.*;
4import uk.ac.ox.cs.pagoda.multistage.MultiStageUpperProgram; 4import uk.ac.ox.cs.pagoda.multistage.MultiStageUpperProgram;
5import uk.ac.ox.cs.pagoda.rules.ExistConstantApproximator; 5import uk.ac.ox.cs.pagoda.rules.ExistConstantApproximator;
6import uk.ac.ox.cs.pagoda.util.Utility;
6import uk.ac.ox.cs.pagoda.util.tuples.Tuple; 7import uk.ac.ox.cs.pagoda.util.tuples.Tuple;
7import uk.ac.ox.cs.pagoda.util.tuples.TupleBuilder; 8import uk.ac.ox.cs.pagoda.util.tuples.TupleBuilder;
8 9
@@ -53,12 +54,22 @@ public class LimitedSkolemisationApproximator implements TupleDependentApproxima
53 54
54 } 55 }
55 56
57 public int getMaxDepth(Tuple<Individual> violationTuple) {
58 int maxDepth = 0;
59 for(Individual individual : violationTuple)
60 maxDepth = Integer.max(maxDepth, skolemTermsManager.getDepthOf(individual));
61
62 return maxDepth;
63 }
64
56 private Collection<DLClause> overApprox(DLClause clause, DLClause originalClause, Collection<Tuple<Individual>> violationTuples) { 65 private Collection<DLClause> overApprox(DLClause clause, DLClause originalClause, Collection<Tuple<Individual>> violationTuples) {
57 ArrayList<DLClause> result = new ArrayList<>(); 66 ArrayList<DLClause> result = new ArrayList<>();
58 67
59 for (Tuple<Individual> violationTuple : violationTuples) 68 for (Tuple<Individual> violationTuple : violationTuples)
60 if (getMaxDepth(violationTuple) > maxTermDepth) 69 if(getMaxDepth(violationTuple) > maxTermDepth) {
61 result.addAll(alternativeApproximator.convert(clause, originalClause, null)); 70 result.addAll(alternativeApproximator.convert(clause, originalClause, null));
71 Utility.logDebug("Approximating maximal individual by a constant in rule:" + originalClause);
72 }
62 else 73 else
63 result.addAll(getGroundSkolemisation(clause, originalClause, violationTuple)); 74 result.addAll(getGroundSkolemisation(clause, originalClause, violationTuple));
64 75
@@ -138,13 +149,4 @@ public class LimitedSkolemisationApproximator implements TupleDependentApproxima
138 149
139 // END: copy and paste 150 // END: copy and paste
140 } 151 }
141
142
143 public int getMaxDepth(Tuple<Individual> violationTuple) {
144 int maxDepth = 0;
145 for (Individual individual : violationTuple)
146 maxDepth = Integer.max(maxDepth, skolemTermsManager.getDepthOf(individual));
147
148 return maxDepth;
149 }
150} 152}