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. --- .../cs/pagoda/rules/ExistentialToDisjunctive.java | 75 ---------------------- 1 file changed, 75 deletions(-) delete mode 100644 src/uk/ac/ox/cs/pagoda/rules/ExistentialToDisjunctive.java (limited to 'src/uk/ac/ox/cs/pagoda/rules/ExistentialToDisjunctive.java') diff --git a/src/uk/ac/ox/cs/pagoda/rules/ExistentialToDisjunctive.java b/src/uk/ac/ox/cs/pagoda/rules/ExistentialToDisjunctive.java deleted file mode 100644 index 2098f73..0000000 --- a/src/uk/ac/ox/cs/pagoda/rules/ExistentialToDisjunctive.java +++ /dev/null @@ -1,75 +0,0 @@ -package uk.ac.ox.cs.pagoda.rules; - -import org.semanticweb.HermiT.model.*; -import org.semanticweb.owlapi.model.OWLObjectProperty; -import org.semanticweb.owlapi.model.OWLOntology; -import uk.ac.ox.cs.pagoda.constraints.BottomStrategy; -import uk.ac.ox.cs.pagoda.rules.approximators.Approximator; -import uk.ac.ox.cs.pagoda.rules.approximators.OverApproxExist; - -import java.util.Collection; -import java.util.HashSet; -import java.util.LinkedList; -import java.util.Set; - -public class ExistentialToDisjunctive extends UpperProgram { - - Set inverseFuncProperties = new HashSet(); - - @Override - public void load(OWLOntology o, BottomStrategy bottomStrategy) { - super.load(o, bottomStrategy); - for (OWLObjectProperty prop: ontology.getObjectPropertiesInSignature(true)) - if (!(ontology.getInverseFunctionalObjectPropertyAxioms(prop).isEmpty())) - inverseFuncProperties.add(prop.getIRI().toString()); - ((RefinedOverApproxExist) m_approx).setInverseFuncProps(inverseFuncProperties); - } - - @Override - protected void initApproximator() { - m_approx = new RefinedOverApproxExist(); - } - -} - -class RefinedOverApproxExist implements Approximator { - - Approximator approxExist = new OverApproxExist(); - Set inverseFuncProperties; - - public void setInverseFuncProps(Set set) { - inverseFuncProperties = set; - } - - @Override - public Collection convert(DLClause clause, DLClause originalClause) { - DLPredicate p; - Collection newHeadAtoms = new LinkedList(); - for (Atom headAtom: clause.getHeadAtoms()) - newHeadAtoms.add(headAtom); - - for (Atom headAtom: clause.getHeadAtoms()) { - p = headAtom.getDLPredicate(); - if (isAtLeastOneOnInverseFuncProperties(p)) - newHeadAtoms.add(headAtom); - } - - if (newHeadAtoms.size() > clause.getHeadLength()) - clause = DLClause.create(newHeadAtoms.toArray(new Atom[0]), clause.getBodyAtoms()); - - return approxExist.convert(clause, clause); - } - - private boolean isAtLeastOneOnInverseFuncProperties(DLPredicate predicate) { - if (!(predicate instanceof AtLeastConcept)) - return false; - AtLeastConcept atLeast = (AtLeastConcept) predicate; - if (!(atLeast.getOnRole() instanceof AtomicRole)) - return false; - - return atLeast.getNumber() == 1 && inverseFuncProperties.contains(((AtomicRole) atLeast.getOnRole()).getIRI()); - } - - -} - -- cgit v1.2.3