aboutsummaryrefslogtreecommitdiff
path: root/src/uk/ac/ox/cs/pagoda/tracking/TrackingRuleEncoderDisjVar1.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/uk/ac/ox/cs/pagoda/tracking/TrackingRuleEncoderDisjVar1.java')
-rw-r--r--src/uk/ac/ox/cs/pagoda/tracking/TrackingRuleEncoderDisjVar1.java12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/uk/ac/ox/cs/pagoda/tracking/TrackingRuleEncoderDisjVar1.java b/src/uk/ac/ox/cs/pagoda/tracking/TrackingRuleEncoderDisjVar1.java
index 8998051..0d6b0c6 100644
--- a/src/uk/ac/ox/cs/pagoda/tracking/TrackingRuleEncoderDisjVar1.java
+++ b/src/uk/ac/ox/cs/pagoda/tracking/TrackingRuleEncoderDisjVar1.java
@@ -14,6 +14,7 @@ import org.semanticweb.HermiT.model.AtomicNegationConcept;
14import org.semanticweb.HermiT.model.AtomicRole; 14import org.semanticweb.HermiT.model.AtomicRole;
15import org.semanticweb.HermiT.model.DLClause; 15import org.semanticweb.HermiT.model.DLClause;
16import org.semanticweb.HermiT.model.DLPredicate; 16import org.semanticweb.HermiT.model.DLPredicate;
17import org.semanticweb.HermiT.model.DatatypeRestriction;
17import org.semanticweb.HermiT.model.Equality; 18import org.semanticweb.HermiT.model.Equality;
18import org.semanticweb.HermiT.model.Inequality; 19import org.semanticweb.HermiT.model.Inequality;
19import org.semanticweb.HermiT.model.InverseRole; 20import org.semanticweb.HermiT.model.InverseRole;
@@ -26,6 +27,7 @@ import uk.ac.ox.cs.pagoda.reasoner.light.BasicQueryEngine;
26import uk.ac.ox.cs.pagoda.rules.OverApproxExist; 27import uk.ac.ox.cs.pagoda.rules.OverApproxExist;
27import uk.ac.ox.cs.pagoda.rules.UpperDatalogProgram; 28import uk.ac.ox.cs.pagoda.rules.UpperDatalogProgram;
28import uk.ac.ox.cs.pagoda.util.Namespace; 29import uk.ac.ox.cs.pagoda.util.Namespace;
30import uk.ac.ox.cs.pagoda.util.Utility;
29 31
30public class TrackingRuleEncoderDisjVar1 extends TrackingRuleEncoderWithGap { 32public class TrackingRuleEncoderDisjVar1 extends TrackingRuleEncoderWithGap {
31 33
@@ -119,7 +121,9 @@ public class TrackingRuleEncoderDisjVar1 extends TrackingRuleEncoderWithGap {
119 return Atom.create(getGapDLPredicate(Equality.INSTANCE), headAtom.getArgument(0), headAtom.getArgument(1)); 121 return Atom.create(getGapDLPredicate(Equality.INSTANCE), headAtom.getArgument(0), headAtom.getArgument(1));
120 if (p instanceof Inequality) 122 if (p instanceof Inequality)
121 return Atom.create(getGapDLPredicate((Inequality) p), headAtom.getArgument(0), headAtom.getArgument(1)); 123 return Atom.create(getGapDLPredicate((Inequality) p), headAtom.getArgument(0), headAtom.getArgument(1));
122 124 if (p instanceof DatatypeRestriction)
125 return Atom.create(getGapDLPredicate((DatatypeRestriction) p), headAtom.getArgument(0));
126 Utility.logError(p + " is not recognised.");
123 return null; 127 return null;
124 } 128 }
125 129
@@ -423,7 +427,11 @@ public class TrackingRuleEncoderDisjVar1 extends TrackingRuleEncoderWithGap {
423 427
424 for (int i = 0; i < clause.getBodyLength(); ++i) 428 for (int i = 0; i < clause.getBodyLength(); ++i)
425 newBodyAtoms[index++] = selectBodyAtoms[selectIndex++] = clause.getBodyAtom(i); 429 newBodyAtoms[index++] = selectBodyAtoms[selectIndex++] = clause.getBodyAtom(i);
426 430
431 for (int i = 0; i < newBodyAtoms.length; ++i)
432 if (newBodyAtoms[i] == null) {
433 System.out.println(clause);
434 }
427 for (Atom atom: newHeadAtoms) { 435 for (Atom atom: newHeadAtoms) {
428 newClause = DLClause.create(new Atom[] {atom}, newBodyAtoms); 436 newClause = DLClause.create(new Atom[] {atom}, newBodyAtoms);
429 trackingClauses.add(newClause); 437 trackingClauses.add(newClause);