diff options
Diffstat (limited to 'src/uk/ac/ox/cs/pagoda/rules')
| -rw-r--r-- | src/uk/ac/ox/cs/pagoda/rules/Approximator.java | 8 | ||||
| -rw-r--r-- | src/uk/ac/ox/cs/pagoda/rules/LowerDatalogProgram.java | 25 | ||||
| -rw-r--r-- | src/uk/ac/ox/cs/pagoda/rules/OverApproxDisj.java | 23 | ||||
| -rw-r--r-- | src/uk/ac/ox/cs/pagoda/rules/OverApproxExist.java | 26 |
4 files changed, 26 insertions, 56 deletions
diff --git a/src/uk/ac/ox/cs/pagoda/rules/Approximator.java b/src/uk/ac/ox/cs/pagoda/rules/Approximator.java index b2edd56..66e676b 100644 --- a/src/uk/ac/ox/cs/pagoda/rules/Approximator.java +++ b/src/uk/ac/ox/cs/pagoda/rules/Approximator.java | |||
| @@ -1,16 +1,16 @@ | |||
| 1 | package uk.ac.ox.cs.pagoda.rules; | 1 | package uk.ac.ox.cs.pagoda.rules; |
| 2 | 2 | ||
| 3 | import java.util.Collection; | ||
| 4 | import java.util.LinkedList; | ||
| 5 | |||
| 6 | import org.semanticweb.HermiT.model.AtLeast; | 3 | import org.semanticweb.HermiT.model.AtLeast; |
| 7 | import org.semanticweb.HermiT.model.Atom; | 4 | import org.semanticweb.HermiT.model.Atom; |
| 8 | import org.semanticweb.HermiT.model.DLClause; | 5 | import org.semanticweb.HermiT.model.DLClause; |
| 9 | import org.semanticweb.HermiT.model.DLPredicate; | 6 | import org.semanticweb.HermiT.model.DLPredicate; |
| 10 | 7 | ||
| 8 | import java.util.Collection; | ||
| 9 | import java.util.LinkedList; | ||
| 10 | |||
| 11 | public interface Approximator { | 11 | public interface Approximator { |
| 12 | 12 | ||
| 13 | public Collection<DLClause> convert(DLClause clause, DLClause originalClause); | 13 | Collection<DLClause> convert(DLClause clause, DLClause originalClause); |
| 14 | 14 | ||
| 15 | } | 15 | } |
| 16 | 16 | ||
diff --git a/src/uk/ac/ox/cs/pagoda/rules/LowerDatalogProgram.java b/src/uk/ac/ox/cs/pagoda/rules/LowerDatalogProgram.java index 6e17f02..a664ba1 100644 --- a/src/uk/ac/ox/cs/pagoda/rules/LowerDatalogProgram.java +++ b/src/uk/ac/ox/cs/pagoda/rules/LowerDatalogProgram.java | |||
| @@ -1,23 +1,9 @@ | |||
| 1 | package uk.ac.ox.cs.pagoda.rules; | 1 | package uk.ac.ox.cs.pagoda.rules; |
| 2 | 2 | ||
| 3 | import java.util.Collection; | ||
| 4 | import java.util.Iterator; | ||
| 5 | import java.util.LinkedList; | ||
| 6 | import java.util.Set; | ||
| 7 | |||
| 8 | import org.semanticweb.HermiT.Reasoner; | 3 | import org.semanticweb.HermiT.Reasoner; |
| 9 | import org.semanticweb.HermiT.model.Atom; | 4 | import org.semanticweb.HermiT.model.*; |
| 10 | import org.semanticweb.HermiT.model.AtomicConcept; | 5 | import org.semanticweb.owlapi.model.*; |
| 11 | import org.semanticweb.HermiT.model.AtomicRole; | ||
| 12 | import org.semanticweb.HermiT.model.DLClause; | ||
| 13 | import org.semanticweb.HermiT.model.Variable; | ||
| 14 | import org.semanticweb.owlapi.model.OWLClass; | ||
| 15 | import org.semanticweb.owlapi.model.OWLObjectInverseOf; | ||
| 16 | import org.semanticweb.owlapi.model.OWLObjectProperty; | ||
| 17 | import org.semanticweb.owlapi.model.OWLObjectPropertyExpression; | ||
| 18 | import org.semanticweb.owlapi.model.OWLOntology; | ||
| 19 | import org.semanticweb.owlapi.reasoner.Node; | 6 | import org.semanticweb.owlapi.reasoner.Node; |
| 20 | |||
| 21 | import uk.ac.ox.cs.pagoda.constraints.BottomStrategy; | 7 | import uk.ac.ox.cs.pagoda.constraints.BottomStrategy; |
| 22 | import uk.ac.ox.cs.pagoda.constraints.NullaryBottom; | 8 | import uk.ac.ox.cs.pagoda.constraints.NullaryBottom; |
| 23 | import uk.ac.ox.cs.pagoda.constraints.UnaryBottom; | 9 | import uk.ac.ox.cs.pagoda.constraints.UnaryBottom; |
| @@ -27,6 +13,11 @@ import uk.ac.ox.cs.pagoda.multistage.RestrictedApplication; | |||
| 27 | import uk.ac.ox.cs.pagoda.util.Timer; | 13 | import uk.ac.ox.cs.pagoda.util.Timer; |
| 28 | import uk.ac.ox.cs.pagoda.util.Utility; | 14 | import uk.ac.ox.cs.pagoda.util.Utility; |
| 29 | 15 | ||
| 16 | import java.util.Collection; | ||
| 17 | import java.util.Iterator; | ||
| 18 | import java.util.LinkedList; | ||
| 19 | import java.util.Set; | ||
| 20 | |||
| 30 | public class LowerDatalogProgram extends ApproxProgram implements IncrementalProgram { | 21 | public class LowerDatalogProgram extends ApproxProgram implements IncrementalProgram { |
| 31 | 22 | ||
| 32 | boolean m_toClassify; | 23 | boolean m_toClassify; |
| @@ -68,7 +59,7 @@ public class LowerDatalogProgram extends ApproxProgram implements IncrementalPro | |||
| 68 | norm.process(); | 59 | norm.process(); |
| 69 | for (DLClause nClause: norm.getNormlisedClauses()) { | 60 | for (DLClause nClause: norm.getNormlisedClauses()) { |
| 70 | if (nClause.getHeadLength() != 1) | 61 | if (nClause.getHeadLength() != 1) |
| 71 | for (DLClause newClause: RestrictedApplication.addAddtionalDatalogRules(nClause, tBottom, norm)) { | 62 | for (DLClause newClause: RestrictedApplication.addAdditionalDatalogRules(nClause, tBottom, norm)) { |
| 72 | // System.out.println(newClause); | 63 | // System.out.println(newClause); |
| 73 | if (newClause.getHeadAtom(0).getDLPredicate() instanceof AtomicConcept || newClause.getHeadAtom(0).getDLPredicate() instanceof AtomicRole) { | 64 | if (newClause.getHeadAtom(0).getDLPredicate() instanceof AtomicConcept || newClause.getHeadAtom(0).getDLPredicate() instanceof AtomicRole) { |
| 74 | // System.out.println(newClause); | 65 | // System.out.println(newClause); |
diff --git a/src/uk/ac/ox/cs/pagoda/rules/OverApproxDisj.java b/src/uk/ac/ox/cs/pagoda/rules/OverApproxDisj.java index 5edb08e..5b298e8 100644 --- a/src/uk/ac/ox/cs/pagoda/rules/OverApproxDisj.java +++ b/src/uk/ac/ox/cs/pagoda/rules/OverApproxDisj.java | |||
| @@ -1,22 +1,19 @@ | |||
| 1 | package uk.ac.ox.cs.pagoda.rules; | 1 | package uk.ac.ox.cs.pagoda.rules; |
| 2 | 2 | ||
| 3 | import java.util.Collection; | 3 | import org.semanticweb.HermiT.model.*; |
| 4 | import java.util.HashMap; | ||
| 5 | import java.util.HashSet; | ||
| 6 | import java.util.LinkedList; | ||
| 7 | import java.util.Map; | ||
| 8 | import java.util.Set; | ||
| 9 | |||
| 10 | import org.semanticweb.HermiT.model.Atom; | ||
| 11 | import org.semanticweb.HermiT.model.DLClause; | ||
| 12 | import org.semanticweb.HermiT.model.DLPredicate; | ||
| 13 | import org.semanticweb.HermiT.model.Term; | ||
| 14 | import org.semanticweb.HermiT.model.Variable; | ||
| 15 | |||
| 16 | import uk.ac.ox.cs.pagoda.hermit.DLClauseHelper; | 4 | import uk.ac.ox.cs.pagoda.hermit.DLClauseHelper; |
| 17 | 5 | ||
| 6 | import java.util.*; | ||
| 7 | |||
| 18 | public class OverApproxDisj implements Approximator { | 8 | public class OverApproxDisj implements Approximator { |
| 19 | 9 | ||
| 10 | /** | ||
| 11 | * Splits a disjunctive rule into a bunch of rules. | ||
| 12 | * <p> | ||
| 13 | * It returns a collection containing a rule for each atom in the head of the input rule. | ||
| 14 | * Each rule has the same body of the input rule, | ||
| 15 | * and the relative head atom as head. | ||
| 16 | * */ | ||
| 20 | @Override | 17 | @Override |
| 21 | public Collection<DLClause> convert(DLClause clause, DLClause originalClause) { | 18 | public Collection<DLClause> convert(DLClause clause, DLClause originalClause) { |
| 22 | LinkedList<DLClause> distincts = new LinkedList<DLClause>(); | 19 | LinkedList<DLClause> distincts = new LinkedList<DLClause>(); |
diff --git a/src/uk/ac/ox/cs/pagoda/rules/OverApproxExist.java b/src/uk/ac/ox/cs/pagoda/rules/OverApproxExist.java index 7e66411..2ff1673 100644 --- a/src/uk/ac/ox/cs/pagoda/rules/OverApproxExist.java +++ b/src/uk/ac/ox/cs/pagoda/rules/OverApproxExist.java | |||
| @@ -1,30 +1,11 @@ | |||
| 1 | package uk.ac.ox.cs.pagoda.rules; | 1 | package uk.ac.ox.cs.pagoda.rules; |
| 2 | 2 | ||
| 3 | import java.util.Collection; | 3 | import org.semanticweb.HermiT.model.*; |
| 4 | import java.util.HashMap; | ||
| 5 | import java.util.Iterator; | ||
| 6 | import java.util.LinkedList; | ||
| 7 | import java.util.Map; | ||
| 8 | |||
| 9 | import org.semanticweb.HermiT.model.AtLeast; | ||
| 10 | import org.semanticweb.HermiT.model.AtLeastConcept; | ||
| 11 | import org.semanticweb.HermiT.model.AtLeastDataRange; | ||
| 12 | import org.semanticweb.HermiT.model.Atom; | ||
| 13 | import org.semanticweb.HermiT.model.AtomicConcept; | ||
| 14 | import org.semanticweb.HermiT.model.AtomicNegationConcept; | ||
| 15 | import org.semanticweb.HermiT.model.AtomicRole; | ||
| 16 | import org.semanticweb.HermiT.model.DLClause; | ||
| 17 | import org.semanticweb.HermiT.model.DLPredicate; | ||
| 18 | import org.semanticweb.HermiT.model.Individual; | ||
| 19 | import org.semanticweb.HermiT.model.Inequality; | ||
| 20 | import org.semanticweb.HermiT.model.InverseRole; | ||
| 21 | import org.semanticweb.HermiT.model.LiteralConcept; | ||
| 22 | import org.semanticweb.HermiT.model.Role; | ||
| 23 | import org.semanticweb.HermiT.model.Term; | ||
| 24 | import org.semanticweb.HermiT.model.Variable; | ||
| 25 | import uk.ac.ox.cs.pagoda.hermit.DLClauseHelper; | 4 | import uk.ac.ox.cs.pagoda.hermit.DLClauseHelper; |
| 26 | import uk.ac.ox.cs.pagoda.util.Namespace; | 5 | import uk.ac.ox.cs.pagoda.util.Namespace; |
| 27 | 6 | ||
| 7 | import java.util.*; | ||
| 8 | |||
| 28 | public class OverApproxExist implements Approximator { | 9 | public class OverApproxExist implements Approximator { |
| 29 | 10 | ||
| 30 | @Override | 11 | @Override |
| @@ -142,6 +123,7 @@ public class OverApproxExist implements Approximator { | |||
| 142 | AtomicConcept atomicConcept = null; | 123 | AtomicConcept atomicConcept = null; |
| 143 | 124 | ||
| 144 | if (concept instanceof AtomicNegationConcept) { | 125 | if (concept instanceof AtomicNegationConcept) { |
| 126 | // is this already in MultiStageUpperProgram? | ||
| 145 | Atom atom1 = Atom.create(atomicConcept = ((AtomicNegationConcept) concept).getNegatedAtomicConcept(), X); | 127 | Atom atom1 = Atom.create(atomicConcept = ((AtomicNegationConcept) concept).getNegatedAtomicConcept(), X); |
| 146 | Atom atom2 = Atom.create(atomicConcept = getNegationConcept(atomicConcept), X); | 128 | Atom atom2 = Atom.create(atomicConcept = getNegationConcept(atomicConcept), X); |
| 147 | ret.add(DLClause.create(new Atom[0], new Atom[] {atom1, atom2})); | 129 | ret.add(DLClause.create(new Atom[0], new Atom[] {atom1, atom2})); |
