diff options
Diffstat (limited to 'src/uk/ac/ox/cs/pagoda/tracking/TrackingRuleEncoderWithGap.java')
| -rw-r--r-- | src/uk/ac/ox/cs/pagoda/tracking/TrackingRuleEncoderWithGap.java | 38 |
1 files changed, 21 insertions, 17 deletions
diff --git a/src/uk/ac/ox/cs/pagoda/tracking/TrackingRuleEncoderWithGap.java b/src/uk/ac/ox/cs/pagoda/tracking/TrackingRuleEncoderWithGap.java index 67d07a8..c3694ad 100644 --- a/src/uk/ac/ox/cs/pagoda/tracking/TrackingRuleEncoderWithGap.java +++ b/src/uk/ac/ox/cs/pagoda/tracking/TrackingRuleEncoderWithGap.java | |||
| @@ -1,25 +1,21 @@ | |||
| 1 | package uk.ac.ox.cs.pagoda.tracking; | 1 | package uk.ac.ox.cs.pagoda.tracking; |
| 2 | 2 | ||
| 3 | import java.util.Collection; | 3 | import org.semanticweb.HermiT.model.*; |
| 4 | import java.util.LinkedList; | 4 | import org.semanticweb.owlapi.model.IRI; |
| 5 | |||
| 6 | import org.semanticweb.HermiT.model.AnnotatedEquality; | ||
| 7 | import org.semanticweb.HermiT.model.Atom; | ||
| 8 | import org.semanticweb.HermiT.model.AtomicConcept; | ||
| 9 | import org.semanticweb.HermiT.model.AtomicRole; | ||
| 10 | import org.semanticweb.HermiT.model.DLClause; | ||
| 11 | import org.semanticweb.HermiT.model.Equality; | ||
| 12 | import org.semanticweb.HermiT.model.Variable; | ||
| 13 | import org.semanticweb.owlapi.model.OWLClass; | 5 | import org.semanticweb.owlapi.model.OWLClass; |
| 14 | import org.semanticweb.owlapi.model.OWLObjectProperty; | 6 | import org.semanticweb.owlapi.model.OWLObjectProperty; |
| 15 | import org.semanticweb.owlapi.model.OWLOntology; | 7 | import org.semanticweb.owlapi.model.OWLOntology; |
| 16 | |||
| 17 | import uk.ac.ox.cs.pagoda.hermit.DLClauseHelper; | 8 | import uk.ac.ox.cs.pagoda.hermit.DLClauseHelper; |
| 18 | import uk.ac.ox.cs.pagoda.query.*; | 9 | import uk.ac.ox.cs.pagoda.query.GapTupleIterator; |
| 19 | import uk.ac.ox.cs.pagoda.reasoner.light.BasicQueryEngine; | 10 | import uk.ac.ox.cs.pagoda.reasoner.light.BasicQueryEngine; |
| 20 | import uk.ac.ox.cs.pagoda.rules.UpperDatalogProgram; | 11 | import uk.ac.ox.cs.pagoda.rules.UpperDatalogProgram; |
| 21 | import uk.ac.ox.cs.pagoda.util.Namespace; | 12 | import uk.ac.ox.cs.pagoda.util.Namespace; |
| 22 | 13 | ||
| 14 | import java.util.Collection; | ||
| 15 | import java.util.HashSet; | ||
| 16 | import java.util.LinkedList; | ||
| 17 | import java.util.Set; | ||
| 18 | |||
| 23 | public class TrackingRuleEncoderWithGap extends TrackingRuleEncoder { | 19 | public class TrackingRuleEncoderWithGap extends TrackingRuleEncoder { |
| 24 | 20 | ||
| 25 | public TrackingRuleEncoderWithGap(UpperDatalogProgram program, BasicQueryEngine store) { | 21 | public TrackingRuleEncoderWithGap(UpperDatalogProgram program, BasicQueryEngine store) { |
| @@ -34,8 +30,9 @@ public class TrackingRuleEncoderWithGap extends TrackingRuleEncoder { | |||
| 34 | Variable X = Variable.create("X"); | 30 | Variable X = Variable.create("X"); |
| 35 | AtomicRole trackingSameAs = AtomicRole.create(Namespace.EQUALITY + "_tn"); | 31 | AtomicRole trackingSameAs = AtomicRole.create(Namespace.EQUALITY + "_tn"); |
| 36 | OWLOntology onto = program.getOntology(); | 32 | OWLOntology onto = program.getOntology(); |
| 37 | Atom[] headAtom = new Atom[] {Atom.create(trackingSameAs, X, X)}, bodyAtom; | 33 | Atom[] headAtom = new Atom[]{Atom.create(trackingSameAs, X, X)}, bodyAtom; |
| 38 | for (OWLClass cls: onto.getClassesInSignature(true)) { | 34 | for(OWLOntology o : onto.getImportsClosure()) |
| 35 | for(OWLClass cls : o.getClassesInSignature()) { | ||
| 39 | String clsIRI = cls.getIRI().toString(); | 36 | String clsIRI = cls.getIRI().toString(); |
| 40 | unaryPredicates.add(clsIRI); | 37 | unaryPredicates.add(clsIRI); |
| 41 | bodyAtom = new Atom[] { | 38 | bodyAtom = new Atom[] { |
| @@ -43,9 +40,16 @@ public class TrackingRuleEncoderWithGap extends TrackingRuleEncoder { | |||
| 43 | Atom.create(AtomicConcept.create(GapTupleIterator.getGapPredicate(clsIRI)), X)}; | 40 | Atom.create(AtomicConcept.create(GapTupleIterator.getGapPredicate(clsIRI)), X)}; |
| 44 | equalityRelatedClauses.add(DLClause.create(headAtom, bodyAtom)); | 41 | equalityRelatedClauses.add(DLClause.create(headAtom, bodyAtom)); |
| 45 | } | 42 | } |
| 46 | 43 | ||
| 47 | Variable Y = Variable.create("Y"); | 44 | Variable Y = Variable.create("Y"); |
| 48 | for (OWLObjectProperty prop: onto.getObjectPropertiesInSignature(true)) { | 45 | Set<OWLObjectProperty> setOfProperties = new HashSet<OWLObjectProperty>(); |
| 46 | for(OWLOntology o : onto.getImportsClosure()) | ||
| 47 | for(OWLObjectProperty prop : o.getObjectPropertiesInSignature()) | ||
| 48 | setOfProperties.add(prop); | ||
| 49 | setOfProperties.add(onto.getOWLOntologyManager() | ||
| 50 | .getOWLDataFactory() | ||
| 51 | .getOWLObjectProperty(IRI.create(Namespace.INEQUALITY))); | ||
| 52 | for(OWLObjectProperty prop : setOfProperties) { | ||
| 49 | String propIRI = prop.getIRI().toString(); | 53 | String propIRI = prop.getIRI().toString(); |
| 50 | binaryPredicates.add(propIRI); | 54 | binaryPredicates.add(propIRI); |
| 51 | AtomicRole trackingRole = AtomicRole.create(propIRI + "_tn"); | 55 | AtomicRole trackingRole = AtomicRole.create(propIRI + "_tn"); |
