aboutsummaryrefslogtreecommitdiff
path: root/src/uk/ac/ox/cs/pagoda/tracking/TrackingRuleEncoderDisj2.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/uk/ac/ox/cs/pagoda/tracking/TrackingRuleEncoderDisj2.java')
-rw-r--r--src/uk/ac/ox/cs/pagoda/tracking/TrackingRuleEncoderDisj2.java112
1 files changed, 0 insertions, 112 deletions
diff --git a/src/uk/ac/ox/cs/pagoda/tracking/TrackingRuleEncoderDisj2.java b/src/uk/ac/ox/cs/pagoda/tracking/TrackingRuleEncoderDisj2.java
deleted file mode 100644
index 8d79090..0000000
--- a/src/uk/ac/ox/cs/pagoda/tracking/TrackingRuleEncoderDisj2.java
+++ /dev/null
@@ -1,112 +0,0 @@
1package uk.ac.ox.cs.pagoda.tracking;
2
3import org.semanticweb.HermiT.model.*;
4import uk.ac.ox.cs.pagoda.MyPrefixes;
5import uk.ac.ox.cs.pagoda.multistage.Normalisation;
6import uk.ac.ox.cs.pagoda.query.QueryRecord;
7import uk.ac.ox.cs.pagoda.reasoner.light.BasicQueryEngine;
8import uk.ac.ox.cs.pagoda.rules.UpperDatalogProgram;
9import uk.ac.ox.cs.pagoda.rules.approximators.OverApproxExist;
10
11public class TrackingRuleEncoderDisj2 extends TrackingRuleEncoderDisj {
12
13 public TrackingRuleEncoderDisj2(UpperDatalogProgram program, BasicQueryEngine store) {
14 super(program, store);
15 }
16
17 @Override
18 public boolean encodingRules() {
19 if (ruleEncoded) return false;
20 ruleEncoded = true;
21
22 for (DLClause clause: program.getClauses()) {
23 encodingRule(clause);
24 }
25
26 if (disjunctiveRules.isEmpty())
27 return true;
28
29 processDisjunctiveRules();
30 return false;
31 }
32
33 @Override
34 protected DLPredicate generateAuxiliaryRule(AtomicConcept p) {
35 return getTrackingDLPredicate(p);
36 }
37
38 @Override
39 protected DLPredicate generateAuxiliaryRule(AtomicRole p) {
40 return getTrackingDLPredicate(p);
41 }
42
43 private Variable X = Variable.create("X");
44
45 @Override
46 protected DLPredicate generateAuxiliaryRule(AtLeastConcept p, DLClause original, Individual[] individuals) {
47 DLPredicate ret = AtomicConcept.create(getTrackingPredicate(Normalisation.getAuxiliaryConcept4Disjunct(p, individuals)));
48 Atom[] headAtom = new Atom[] {Atom.create(ret, X)};
49
50 AtomicRole role = p.getOnRole() instanceof AtomicRole ?
51 (AtomicRole) p.getOnRole():
52 ((InverseRole) p.getOnRole()).getInverseOf();
53
54 AtomicConcept concept = p.getToConcept() instanceof AtomicConcept ?
55 (AtomicConcept) p.getToConcept() :
56 OverApproxExist.getNegationConcept(((AtomicNegationConcept) p.getToConcept()).getNegatedAtomicConcept());
57
58 Term[] roleArgs, conceptArg;
59 for (Individual i: individuals) {
60// Variable i = Variable.create("Y");
61 if (p.getOnRole() instanceof AtomicRole) {
62 roleArgs = new Term[] {X, i};
63 conceptArg = new Term[] {i};
64 }
65 else {
66 roleArgs = new Term[] {i, X};
67 conceptArg = new Term[] {i};
68 }
69
70 addTrackingClause(
71 DLClause.create(headAtom,
72 new Atom[] {Atom.create(getTrackingDLPredicate(role), roleArgs)}));
73
74 Atom guard = Atom.create(role, roleArgs);
75
76 if (!concept.equals(AtomicConcept.THING)) {
77 addTrackingClause(
78 DLClause.create(headAtom,
79 new Atom[] {guard, Atom.create(getTrackingDLPredicate(concept), conceptArg)}));
80 }
81 }
82
83 return ret;
84 }
85
86 @Override
87 protected void encodingRule(DLClause clause) {
88 DLClause original = program.getCorrespondingClause(clause);
89 if (original.getHeadLength() <= 1) {
90 super.encodingRule(clause);
91 }
92 else addDisjunctiveRule(original, clause);
93 }
94
95 @Override
96 public String getTrackingProgram() {
97 StringBuilder sb = getTrackingProgramBody();
98 sb.insert(0, MyPrefixes.PAGOdAPrefixes.prefixesText());
99 return sb.toString();
100 }
101
102 @Override
103 protected void encodingAtomicQuery(QueryRecord[] botQuerRecords) {
104 super.encodingAtomicQuery(botQuerRecords, true);
105 }
106
107 @Override
108 protected DLPredicate generateAuxiliaryRule(Inequality instance) {
109 // TODO Auto-generated method stub
110 return null;
111 }
112}