aboutsummaryrefslogtreecommitdiff
path: root/src/uk/ac/ox/cs/pagoda/tracking/TrackingRuleEncoderWithoutGap.java
diff options
context:
space:
mode:
authorFederico Igne <federico.igne@cs.ox.ac.uk>2022-05-10 18:17:06 +0100
committerFederico Igne <federico.igne@cs.ox.ac.uk>2022-05-11 12:34:47 +0100
commit17bd9beaf7f358a44e5bf36a5855fe6727d506dc (patch)
tree47e9310a0cff869d9ec017dcb2c81876407782c8 /src/uk/ac/ox/cs/pagoda/tracking/TrackingRuleEncoderWithoutGap.java
parent8651164cd632a5db310b457ce32d4fbc97bdc41c (diff)
downloadACQuA-17bd9beaf7f358a44e5bf36a5855fe6727d506dc.tar.gz
ACQuA-17bd9beaf7f358a44e5bf36a5855fe6727d506dc.zip
[pagoda] Move project to Scala
This commit includes a few changes: - The repository still uses Maven to manage dependency but it is now a Scala project. - The code has been ported from OWLAPI 3.4.10 to 5.1.20 - A proof of concept program using both RSAComb and PAGOdA has been added.
Diffstat (limited to 'src/uk/ac/ox/cs/pagoda/tracking/TrackingRuleEncoderWithoutGap.java')
-rw-r--r--src/uk/ac/ox/cs/pagoda/tracking/TrackingRuleEncoderWithoutGap.java103
1 files changed, 0 insertions, 103 deletions
diff --git a/src/uk/ac/ox/cs/pagoda/tracking/TrackingRuleEncoderWithoutGap.java b/src/uk/ac/ox/cs/pagoda/tracking/TrackingRuleEncoderWithoutGap.java
deleted file mode 100644
index f898114..0000000
--- a/src/uk/ac/ox/cs/pagoda/tracking/TrackingRuleEncoderWithoutGap.java
+++ /dev/null
@@ -1,103 +0,0 @@
1package uk.ac.ox.cs.pagoda.tracking;
2
3import org.semanticweb.HermiT.model.*;
4import org.semanticweb.owlapi.model.OWLClass;
5import org.semanticweb.owlapi.model.OWLObjectProperty;
6import org.semanticweb.owlapi.model.OWLOntology;
7import uk.ac.ox.cs.pagoda.hermit.DLClauseHelper;
8import uk.ac.ox.cs.pagoda.reasoner.light.BasicQueryEngine;
9import uk.ac.ox.cs.pagoda.rules.UpperDatalogProgram;
10import uk.ac.ox.cs.pagoda.util.Namespace;
11
12import java.util.Collection;
13import java.util.LinkedList;
14
15public class TrackingRuleEncoderWithoutGap extends TrackingRuleEncoder {
16
17 public TrackingRuleEncoderWithoutGap(UpperDatalogProgram program, BasicQueryEngine store) {
18 super(program, store);
19 }
20
21 @Override
22 protected String getEqualityRelatedRuleText() {
23 if (equalityRelatedRuleText != null) return equalityRelatedRuleText.replace("_tn", getTrackingPredicate(""));
24
25 Collection<DLClause> equalityRelatedClauses = new LinkedList<DLClause>();
26 Variable X = Variable.create("X");
27 AtomicRole trackingSameAs = AtomicRole.create(Namespace.EQUALITY + "_tn");
28 OWLOntology onto = program.getOntology();
29 Atom[] headAtom, bodyAtom;
30 for (OWLClass cls: onto.getClassesInSignature(true)) {
31 String clsIRI = cls.getIRI().toString();
32 unaryPredicates.add(clsIRI);
33 headAtom = new Atom[] {Atom.create(trackingSameAs, X, X)};
34 bodyAtom = new Atom[] {
35 Atom.create(AtomicConcept.create(clsIRI + "_tn"), X),
36// Atom.create(AtomicConcept.create(GapTupleIterator.getGapPredicate(clsIRI)), X1),
37 Atom.create(AtomicConcept.create(clsIRI), X)};
38 equalityRelatedClauses.add(DLClause.create(headAtom, bodyAtom));
39 }
40 Variable Y = Variable.create("Y");
41 for (OWLObjectProperty prop: onto.getObjectPropertiesInSignature(true)) {
42 String propIRI = prop.getIRI().toString();
43 binaryPredicates.add(propIRI);
44 AtomicRole trackingRole = AtomicRole.create(propIRI + "_tn");
45// AtomicRole gapRole = AtomicRole.create(GapTupleIterator.getGapPredicate(propIRI));
46 AtomicRole role = AtomicRole.create(propIRI);
47 headAtom = new Atom[] {Atom.create(trackingSameAs, X, X)};
48 bodyAtom = new Atom[] {
49 Atom.create(trackingRole, X, Y),
50// Atom.create(gapRole, X1, Y),
51 Atom.create(role, X, Y)};
52 equalityRelatedClauses.add(DLClause.create(headAtom, bodyAtom));
53
54 bodyAtom = new Atom[] {
55 Atom.create(trackingRole, Y, X),
56// Atom.create(gapRole, Y, X1),
57 Atom.create(role, Y, X)};
58 equalityRelatedClauses.add(DLClause.create(headAtom, bodyAtom));
59 }
60
61 equalityRelatedClauses.add(
62 DLClause.create(
63 new Atom[] {Atom.create(trackingSameAs, Y, X)},
64 new Atom[] {Atom.create(trackingSameAs, X, Y)}));
65
66 equalityRelatedRuleText = DLClauseHelper.toString(equalityRelatedClauses).toString();
67 return equalityRelatedRuleText.replace("_tn", getTrackingPredicate(""));
68 }
69
70 @Override
71 protected void encodingRule(DLClause clause) {
72 LinkedList<Atom> newHeadAtoms = new LinkedList<Atom>();
73 newHeadAtoms.add(Atom.create(selected, getIndividual4GeneralRule(clause)));
74
75 Atom headAtom;
76 for (Atom atom: clause.getBodyAtoms()) {
77 headAtom = Atom.create(
78 getTrackingDLPredicate(atom.getDLPredicate()),
79 DLClauseHelper.getArguments(atom));
80 newHeadAtoms.add(headAtom);
81 }
82
83 DLClause newClause;
84 Atom[] newBodyAtoms = new Atom[clause.getBodyLength() + 1];
85 headAtom = clause.getHeadAtom(0);
86 newBodyAtoms[0] = Atom.create(
87 getTrackingDLPredicate(headAtom.getDLPredicate()),
88 DLClauseHelper.getArguments(headAtom));
89
90// newBodyAtoms[1] = Atom.create(
91// getGapDLPredicate(headAtom.getDLPredicate()),
92// DLClauseHelper.getArguments(headAtom));
93
94 for (int i = 0; i < clause.getBodyLength(); ++i)
95 newBodyAtoms[i + 1] = clause.getBodyAtom(i);
96
97 for (Atom atom: newHeadAtoms) {
98 newClause = DLClause.create(new Atom[] {atom}, newBodyAtoms);
99 trackingClauses.add(newClause);
100 }
101
102 }
103}