From 17bd9beaf7f358a44e5bf36a5855fe6727d506dc Mon Sep 17 00:00:00 2001 From: Federico Igne Date: Tue, 10 May 2022 18:17:06 +0100 Subject: [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. --- .../pagoda/tracking/TrackingRuleEncoderDisj1.java | 175 --------------------- 1 file changed, 175 deletions(-) delete mode 100644 src/uk/ac/ox/cs/pagoda/tracking/TrackingRuleEncoderDisj1.java (limited to 'src/uk/ac/ox/cs/pagoda/tracking/TrackingRuleEncoderDisj1.java') diff --git a/src/uk/ac/ox/cs/pagoda/tracking/TrackingRuleEncoderDisj1.java b/src/uk/ac/ox/cs/pagoda/tracking/TrackingRuleEncoderDisj1.java deleted file mode 100644 index d6b5e8b..0000000 --- a/src/uk/ac/ox/cs/pagoda/tracking/TrackingRuleEncoderDisj1.java +++ /dev/null @@ -1,175 +0,0 @@ -package uk.ac.ox.cs.pagoda.tracking; - -import org.semanticweb.HermiT.model.*; -import uk.ac.ox.cs.pagoda.MyPrefixes; -import uk.ac.ox.cs.pagoda.hermit.DLClauseHelper; -import uk.ac.ox.cs.pagoda.multistage.Normalisation; -import uk.ac.ox.cs.pagoda.reasoner.light.BasicQueryEngine; -import uk.ac.ox.cs.pagoda.rules.UpperDatalogProgram; -import uk.ac.ox.cs.pagoda.rules.approximators.OverApproxExist; - -import java.util.LinkedList; - -public class TrackingRuleEncoderDisj1 extends TrackingRuleEncoderDisj { - - public TrackingRuleEncoderDisj1(UpperDatalogProgram program, BasicQueryEngine store) { - super(program, store); - } - - @Override - public boolean encodingRules() { - if (super.encodingRules()) { - processDisjunctiveRules(); - return true; - } - return false; - } - - @Override - protected void encodingRule(DLClause clause) { - if (currentQuery.isBottom()) { - super.encodingRule(clause); - return ; - } - - DLClause original = program.getCorrespondingClause(clause); - if (original.getHeadLength() <= 1) { - super.encodingRule(clause); - } - else addDisjunctiveRule(original, clause); - } - - private DLPredicate getAuxPredicate(DLPredicate p, Individual... individuals) { - if (p instanceof AtLeastConcept) { - StringBuilder builder = new StringBuilder( - Normalisation.getAuxiliaryConcept4Disjunct((AtLeastConcept) p, individuals)); - builder.append("_AUXa").append(currentQuery.getQueryID()); - return AtomicConcept.create(builder.toString()); - } - - return getDLPredicate(p, "_AUXa" + currentQuery.getQueryID()); - } - - private DLPredicate getTrackingBottomDLPredicate(DLPredicate p) { - return getDLPredicate(p, getTrackingSuffix("0")); - } - - protected DLPredicate generateAuxiliaryRule(AtLeastConcept p, DLClause original, Individual[] individuals) { - DLPredicate ret = getAuxPredicate(p, individuals); - Atom[] headAtom = new Atom[] {Atom.create(ret, X)}; - - AtomicRole role = p.getOnRole() instanceof AtomicRole ? - (AtomicRole) p.getOnRole(): - ((InverseRole) p.getOnRole()).getInverseOf(); - - AtomicConcept concept = p.getToConcept() instanceof AtomicConcept ? - (AtomicConcept) p.getToConcept() : - OverApproxExist.getNegationConcept(((AtomicNegationConcept) p.getToConcept()).getNegatedAtomicConcept()); - - Term[] roleArgs, conceptArg; - for (Individual i: individuals) { -// Variable i = Variable.create("Y"); - if (p.getOnRole() instanceof AtomicRole) { - roleArgs = new Term[] {X, i}; - conceptArg = new Term[] {i}; - } - else { - roleArgs = new Term[] {i, X}; - conceptArg = new Term[] {i}; - } - - addTrackingClause( - DLClause.create(headAtom, - new Atom[] {Atom.create(getTrackingDLPredicate(role), roleArgs)})); - - addTrackingClause( - DLClause.create(headAtom, - new Atom[] {Atom.create(getTrackingBottomDLPredicate(role), roleArgs)})); - - Atom guard = Atom.create(role, roleArgs); - - if (!concept.equals(AtomicConcept.THING)) { - addTrackingClause( - DLClause.create(headAtom, - new Atom[] {guard, Atom.create(getTrackingDLPredicate(concept), conceptArg)})); - - addTrackingClause( - DLClause.create(headAtom, - new Atom[] {guard, Atom.create(getTrackingBottomDLPredicate(concept), conceptArg)})); - } - } - - return ret; - } - - protected DLPredicate generateAuxiliaryRule(AtomicRole p) { - DLPredicate ret = getAuxPredicate(p); - Atom[] headAtom = new Atom[] {Atom.create(ret, X, Y)}; - - addTrackingClause( - DLClause.create(headAtom, new Atom[] {Atom.create(getTrackingDLPredicate(p), X, Y)})); - addTrackingClause( - DLClause.create(headAtom, new Atom[] {Atom.create(getTrackingBottomDLPredicate(p), X, Y)})); - - return ret; - } - - private Variable X = Variable.create("X"), Y = Variable.create("Y"); - - protected DLPredicate generateAuxiliaryRule(AtomicConcept p) { - DLPredicate ret = getAuxPredicate(p); - Atom[] headAtom = new Atom[] {Atom.create(ret, X)}; - addTrackingClause( - DLClause.create(headAtom, - new Atom[] { Atom.create(getTrackingDLPredicate(p), X)})); - addTrackingClause( - DLClause.create(headAtom, - new Atom[] { Atom.create(getTrackingBottomDLPredicate(p), X)})); - - return ret; - } - - protected DLPredicate generateAuxiliaryRule(Inequality instance) { - // TODO: - return null; - } - - @Override - public boolean isAuxPredicate(String iri) { - return iri.contains("_AUXa"); -// if (iri.startsWith("<")) -// return iri.endsWith("_AUXa" + currentQuery.getQueryID() + ">"); -// return iri.endsWith("_AUXa" + currentQuery.getQueryID()); - } - - @Override - public String getTrackingProgram() { - StringBuilder sb = getTrackingProgramBody(); - if (currentQuery.isBottom()) - sb.append(getBottomTrackingProgram()); - sb.insert(0, MyPrefixes.PAGOdAPrefixes.prefixesText()); - return sb.toString(); - } - - private String bottomTrackingProgram = null; - - private String getBottomTrackingProgram() { - if (bottomTrackingProgram != null) return bottomTrackingProgram.replace("_tn", getTrackingPredicate("")); - - String bottomSuffix = getTrackingSuffix("0"); - LinkedList clauses = new LinkedList(); - Variable X = Variable.create("X"); - for (String concept: unaryPredicates) - clauses.add(DLClause.create(new Atom[] {Atom.create(AtomicConcept.create(concept + bottomSuffix) , X)}, - new Atom[] {Atom.create(AtomicConcept.create(concept + "_tn"), X)})); - Variable Y = Variable.create("Y"); - for (String role: binaryPredicates) - clauses.add(DLClause.create(new Atom[] {Atom.create(AtomicRole.create(role + bottomSuffix) , X, Y)}, - new Atom[] {Atom.create(AtomicRole.create(role + "_tn"), X, Y) })); - - StringBuilder builder = new StringBuilder(DLClauseHelper.toString(clauses)); - bottomTrackingProgram = builder.toString(); - return bottomTrackingProgram.replace("_tn", getTrackingPredicate("")); - } - -} -- cgit v1.2.3