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. --- .../tracking/TrackingRuleEncoderWithGap.java | 116 --------------------- 1 file changed, 116 deletions(-) delete mode 100644 src/uk/ac/ox/cs/pagoda/tracking/TrackingRuleEncoderWithGap.java (limited to 'src/uk/ac/ox/cs/pagoda/tracking/TrackingRuleEncoderWithGap.java') diff --git a/src/uk/ac/ox/cs/pagoda/tracking/TrackingRuleEncoderWithGap.java b/src/uk/ac/ox/cs/pagoda/tracking/TrackingRuleEncoderWithGap.java deleted file mode 100644 index 4ece796..0000000 --- a/src/uk/ac/ox/cs/pagoda/tracking/TrackingRuleEncoderWithGap.java +++ /dev/null @@ -1,116 +0,0 @@ -package uk.ac.ox.cs.pagoda.tracking; - -import org.semanticweb.HermiT.model.*; -import org.semanticweb.owlapi.model.IRI; -import org.semanticweb.owlapi.model.OWLClass; -import org.semanticweb.owlapi.model.OWLObjectProperty; -import org.semanticweb.owlapi.model.OWLOntology; -import uk.ac.ox.cs.pagoda.hermit.DLClauseHelper; -import uk.ac.ox.cs.pagoda.query.GapTupleIterator; -import uk.ac.ox.cs.pagoda.reasoner.light.BasicQueryEngine; -import uk.ac.ox.cs.pagoda.rules.UpperDatalogProgram; -import uk.ac.ox.cs.pagoda.util.Namespace; - -import java.util.Collection; -import java.util.HashSet; -import java.util.LinkedList; -import java.util.Set; - -public class TrackingRuleEncoderWithGap extends TrackingRuleEncoder { - - public TrackingRuleEncoderWithGap(UpperDatalogProgram program, BasicQueryEngine store) { - super(program, store); - } - - @Override - protected String getEqualityRelatedRuleText() { - if (equalityRelatedRuleText != null) return equalityRelatedRuleText.replace("_tn", getTrackingPredicate("")); - - Collection equalityRelatedClauses = new LinkedList(); - Variable X = Variable.create("X"); - AtomicRole trackingSameAs = AtomicRole.create(Namespace.EQUALITY + "_tn"); - OWLOntology onto = program.getOntology(); - Atom[] headAtom = new Atom[]{Atom.create(trackingSameAs, X, X)}, bodyAtom; - for(OWLOntology o : onto.getImportsClosure()) - for(OWLClass cls : o.getClassesInSignature()) { - String clsIRI = cls.getIRI().toString(); - unaryPredicates.add(clsIRI); - bodyAtom = new Atom[] { - Atom.create(AtomicConcept.create(clsIRI + "_tn"), X), - Atom.create(AtomicConcept.create(GapTupleIterator.getGapPredicate(clsIRI)), X)}; - equalityRelatedClauses.add(DLClause.create(headAtom, bodyAtom)); - } - - Variable Y = Variable.create("Y"); - Set setOfProperties = new HashSet(); - for(OWLOntology o : onto.getImportsClosure()) - for(OWLObjectProperty prop : o.getObjectPropertiesInSignature()) - setOfProperties.add(prop); - setOfProperties.add(onto.getOWLOntologyManager() - .getOWLDataFactory() - .getOWLObjectProperty(IRI.create(Namespace.INEQUALITY))); - for(OWLObjectProperty prop : setOfProperties) { - String propIRI = prop.getIRI().toString(); - binaryPredicates.add(propIRI); - AtomicRole trackingRole = AtomicRole.create(propIRI + "_tn"); - AtomicRole gapRole = AtomicRole.create(GapTupleIterator.getGapPredicate(propIRI)); -// AtomicRole role = AtomicRole.create(propIRI); - bodyAtom = new Atom[] { - Atom.create(trackingRole, X, Y), - Atom.create(gapRole, X, Y)}; - equalityRelatedClauses.add(DLClause.create(headAtom, bodyAtom)); - - bodyAtom = new Atom[] { - Atom.create(trackingRole, Y, X), - Atom.create(gapRole, Y, X)}; - equalityRelatedClauses.add(DLClause.create(headAtom, bodyAtom)); - } - - equalityRelatedClauses.add( - DLClause.create( - new Atom[] {Atom.create(trackingSameAs, Y, X)}, - new Atom[] {Atom.create(trackingSameAs, X, Y)})); - - equalityRelatedRuleText = DLClauseHelper.toString(equalityRelatedClauses).toString(); - return equalityRelatedRuleText.replace("_tn", getTrackingPredicate("")); - } - - @Override - protected void encodingRule(DLClause clause) { - LinkedList newHeadAtoms = new LinkedList(); - newHeadAtoms.add(Atom.create(selected, getIndividual4GeneralRule(clause))); - - Atom headAtom; - for (Atom atom: clause.getBodyAtoms()) { - headAtom = Atom.create( - getTrackingDLPredicate(atom.getDLPredicate()), - DLClauseHelper.getArguments(atom)); - newHeadAtoms.add(headAtom); - } - - DLClause newClause; - headAtom = clause.getHeadAtom(0); - - boolean equalityHead = headAtom.getDLPredicate() instanceof Equality || headAtom.getDLPredicate() instanceof AnnotatedEquality; - int offset = (equalityHead || (clause.getBodyLength() == 1 && clause.getBodyAtom(0).getDLPredicate().toString().contains("owl:Nothing"))) ? 1 : 2; - - Atom[] newBodyAtoms = new Atom[clause.getBodyLength() + offset]; - newBodyAtoms[0] = Atom.create( - getTrackingDLPredicate(headAtom.getDLPredicate()), - DLClauseHelper.getArguments(headAtom)); - - if (offset == 2) - newBodyAtoms[1] = Atom.create( - getGapDLPredicate(headAtom.getDLPredicate()), - DLClauseHelper.getArguments(headAtom)); - - for (int i = 0; i < clause.getBodyLength(); ++i) - newBodyAtoms[i + offset] = clause.getBodyAtom(i); - - for (Atom atom: newHeadAtoms) { - newClause = DLClause.create(new Atom[] {atom}, newBodyAtoms); - trackingClauses.add(newClause); - } - - } -} -- cgit v1.2.3