diff options
| author | RncLsn <rnc.lsn@gmail.com> | 2015-06-03 15:21:30 +0100 |
|---|---|---|
| committer | RncLsn <rnc.lsn@gmail.com> | 2015-06-03 15:21:30 +0100 |
| commit | b3b822d187a6402a39d30e471fe90a5dfad64312 (patch) | |
| tree | 912e1914610c8cf6103b7b7aef07087ddd7eb62f /src/uk/ac/ox/cs/pagoda/rules | |
| parent | 691964863246bbf6ef9f72cc5e82c83df34f135a (diff) | |
| download | ACQuA-b3b822d187a6402a39d30e471fe90a5dfad64312.tar.gz ACQuA-b3b822d187a6402a39d30e471fe90a5dfad64312.zip | |
Before reintroducing extended queries.
Diffstat (limited to 'src/uk/ac/ox/cs/pagoda/rules')
| -rw-r--r-- | src/uk/ac/ox/cs/pagoda/rules/approximators/LimitedSkolemisationApproximator.java | 22 |
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; | |||
| 3 | import org.semanticweb.HermiT.model.*; | 3 | import org.semanticweb.HermiT.model.*; |
| 4 | import uk.ac.ox.cs.pagoda.multistage.MultiStageUpperProgram; | 4 | import uk.ac.ox.cs.pagoda.multistage.MultiStageUpperProgram; |
| 5 | import uk.ac.ox.cs.pagoda.rules.ExistConstantApproximator; | 5 | import uk.ac.ox.cs.pagoda.rules.ExistConstantApproximator; |
| 6 | import uk.ac.ox.cs.pagoda.util.Utility; | ||
| 6 | import uk.ac.ox.cs.pagoda.util.tuples.Tuple; | 7 | import uk.ac.ox.cs.pagoda.util.tuples.Tuple; |
| 7 | import uk.ac.ox.cs.pagoda.util.tuples.TupleBuilder; | 8 | import 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 | } |
