From 7e0ecc07285209e65f9d4d022065d06a4997fc86 Mon Sep 17 00:00:00 2001 From: RncLsn Date: Wed, 13 May 2015 11:57:06 +0100 Subject: Implementing Limited Skolemisation, in particular SkolemTermsDispenser. --- .../rules/LimitedSkolemisationApproximator.java | 72 ---------------------- 1 file changed, 72 deletions(-) delete mode 100644 src/uk/ac/ox/cs/pagoda/rules/LimitedSkolemisationApproximator.java (limited to 'src/uk/ac/ox/cs/pagoda/rules/LimitedSkolemisationApproximator.java') diff --git a/src/uk/ac/ox/cs/pagoda/rules/LimitedSkolemisationApproximator.java b/src/uk/ac/ox/cs/pagoda/rules/LimitedSkolemisationApproximator.java deleted file mode 100644 index 284edd2..0000000 --- a/src/uk/ac/ox/cs/pagoda/rules/LimitedSkolemisationApproximator.java +++ /dev/null @@ -1,72 +0,0 @@ -package uk.ac.ox.cs.pagoda.rules; - -import org.semanticweb.HermiT.model.DLClause; -import uk.ac.ox.cs.pagoda.multistage.AnswerTupleID; - -import java.util.*; - -/** - * Approximates existential rules by a limited form of Skolemisation. - *

- * Given a rule and a grounding substitution, - * it Skolemises the rule if - * all the terms in the substitution have depth less than a given depth, - * otherwise it approximates using an alternative TupleDependentApproximator. - * - * */ -public class LimitedSkolemisationApproximator implements TupleDependentApproximator { - - private final int maxTermDepth; - private final TupleDependentApproximator alternativeApproximator; - - private Map mapIndividualsToDepth; - - public LimitedSkolemisationApproximator(int maxTermDepth) { - this(maxTermDepth, new ExistConstantApproximator()); - } - - public LimitedSkolemisationApproximator(int maxTermDepth, TupleDependentApproximator alternativeApproximator) { - this.maxTermDepth = maxTermDepth; - this.alternativeApproximator = alternativeApproximator; - this.mapIndividualsToDepth = new HashMap<>(); - } - - @Override - public Collection convert(DLClause clause, DLClause originalClause, Collection violationTuples) { - switch (clause.getHeadLength()) { - case 1: - return overApprox(clause, originalClause, violationTuples); - case 0: - return Arrays.asList(clause); - default: - ArrayList result = new ArrayList<>(); - // TODO implement - return result; - } - - - } - - private Collection overApprox(DLClause clause, DLClause originalClause, Collection violationTuples) { - ArrayList result = new ArrayList<>(); - - for (AnswerTupleID violationTuple : violationTuples) - if (getDepth(violationTuple) > maxTermDepth) - result.addAll(alternativeApproximator.convert(clause, originalClause, null)); - else - result.add(getInstantiatedSkolemisation(clause, originalClause, violationTuple)); - - return result; - } - - - private DLClause getInstantiatedSkolemisation(DLClause clause, DLClause originalClause, AnswerTupleID violationTuple) { - // TODO implement - return null; - } - - private int getDepth(AnswerTupleID violationTuple) { - if (!mapIndividualsToDepth.containsKey(violationTuple)) return 0; - return mapIndividualsToDepth.get(violationTuple); - } -} -- cgit v1.2.3