aboutsummaryrefslogtreecommitdiff
path: root/src/uk/ac/ox/cs/pagoda/tracking/TrackingRuleEncoderDisj.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/uk/ac/ox/cs/pagoda/tracking/TrackingRuleEncoderDisj.java')
-rw-r--r--src/uk/ac/ox/cs/pagoda/tracking/TrackingRuleEncoderDisj.java11
1 files changed, 6 insertions, 5 deletions
diff --git a/src/uk/ac/ox/cs/pagoda/tracking/TrackingRuleEncoderDisj.java b/src/uk/ac/ox/cs/pagoda/tracking/TrackingRuleEncoderDisj.java
index 331ad12..b169053 100644
--- a/src/uk/ac/ox/cs/pagoda/tracking/TrackingRuleEncoderDisj.java
+++ b/src/uk/ac/ox/cs/pagoda/tracking/TrackingRuleEncoderDisj.java
@@ -4,7 +4,7 @@ import org.semanticweb.HermiT.model.*;
4import uk.ac.ox.cs.pagoda.hermit.DLClauseHelper; 4import uk.ac.ox.cs.pagoda.hermit.DLClauseHelper;
5import uk.ac.ox.cs.pagoda.reasoner.light.BasicQueryEngine; 5import uk.ac.ox.cs.pagoda.reasoner.light.BasicQueryEngine;
6import uk.ac.ox.cs.pagoda.rules.UpperDatalogProgram; 6import uk.ac.ox.cs.pagoda.rules.UpperDatalogProgram;
7import uk.ac.ox.cs.pagoda.rules.approximators.OverApproxExist; 7import uk.ac.ox.cs.pagoda.rules.approximators.SkolemTermsManager;
8import uk.ac.ox.cs.pagoda.util.Namespace; 8import uk.ac.ox.cs.pagoda.util.Namespace;
9 9
10import java.util.*; 10import java.util.*;
@@ -22,8 +22,9 @@ public abstract class TrackingRuleEncoderDisj extends TrackingRuleEncoderWithGap
22 */ 22 */
23 protected void processDisjunctiveRules() { 23 protected void processDisjunctiveRules() {
24 Map<Atom, Collection<DLClause>> auxiliaryAtoms = new HashMap<Atom, Collection<DLClause>>(); 24 Map<Atom, Collection<DLClause>> auxiliaryAtoms = new HashMap<Atom, Collection<DLClause>>();
25 Map<Individual, Collection<DLClause>> skolemisedAtoms = new HashMap<Individual, Collection<DLClause>>(); 25 Map<Individual, Collection<DLClause>> skolemisedAtoms = new HashMap<Individual, Collection<DLClause>>();
26 26 SkolemTermsManager termsManager = SkolemTermsManager.getInstance();
27
27 for (Map.Entry<DLClause, Collection<DLClause>> entry: disjunctiveRules.entrySet()) { 28 for (Map.Entry<DLClause, Collection<DLClause>> entry: disjunctiveRules.entrySet()) {
28 DLClause original = entry.getKey(); 29 DLClause original = entry.getKey();
29 Collection<DLClause> overClauses = entry.getValue(); 30 Collection<DLClause> overClauses = entry.getValue();
@@ -33,7 +34,7 @@ public abstract class TrackingRuleEncoderDisj extends TrackingRuleEncoderWithGap
33 DLClause subClause = iter.next(); 34 DLClause subClause = iter.next();
34 if (DLClauseHelper.hasSubsetBodyAtoms(subClause, original)) { 35 if (DLClauseHelper.hasSubsetBodyAtoms(subClause, original)) {
35 Atom headAtom = subClause.getHeadAtom(0); 36 Atom headAtom = subClause.getHeadAtom(0);
36 if ((index = OverApproxExist.indexOfSkolemisedIndividual(headAtom)) != -1) { 37 if ((index = SkolemTermsManager.indexOfSkolemisedIndividual(headAtom)) != -1) {
37 Individual i = (Individual) headAtom.getArgument(index); 38 Individual i = (Individual) headAtom.getArgument(index);
38 Collection<DLClause> clauses = skolemisedAtoms.get(i); 39 Collection<DLClause> clauses = skolemisedAtoms.get(i);
39 if (clauses == null) { 40 if (clauses == null) {
@@ -55,7 +56,7 @@ public abstract class TrackingRuleEncoderDisj extends TrackingRuleEncoderWithGap
55 Collection<DLClause> clauses = new HashSet<DLClause>(); 56 Collection<DLClause> clauses = new HashSet<DLClause>();
56 Individual[] individuals = new Individual[alc.getNumber()]; 57 Individual[] individuals = new Individual[alc.getNumber()];
57 for (int i = 0; i < alc.getNumber(); ++i) { 58 for (int i = 0; i < alc.getNumber(); ++i) {
58 individuals[i] = OverApproxExist.getNewIndividual(original, i); 59 individuals[i] = termsManager.getFreshIndividual(original, i);
59 clauses.addAll(skolemisedAtoms.get(individuals[i])); 60 clauses.addAll(skolemisedAtoms.get(individuals[i]));
60 } 61 }
61 auxiliaryAtoms.put(getAuxiliaryAtom(original, headAtom, individuals), clauses); 62 auxiliaryAtoms.put(getAuxiliaryAtom(original, headAtom, individuals), clauses);