package uk.ac.manchester.cs.jfact.split; /* This file is part of the JFact DL reasoner Copyright 2011-2013 by Ignazio Palmisano, Dmitry Tsarkov, University of Manchester This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA*/ import java.io.Serializable; import java.util.Collection; import uk.ac.manchester.cs.jfact.kernel.dl.axioms.AxiomConceptInclusion; import uk.ac.manchester.cs.jfact.kernel.dl.axioms.AxiomDRoleDomain; import uk.ac.manchester.cs.jfact.kernel.dl.axioms.AxiomDRoleFunctional; import uk.ac.manchester.cs.jfact.kernel.dl.axioms.AxiomDRoleRange; import uk.ac.manchester.cs.jfact.kernel.dl.axioms.AxiomDRoleSubsumption; import uk.ac.manchester.cs.jfact.kernel.dl.axioms.AxiomDeclaration; import uk.ac.manchester.cs.jfact.kernel.dl.axioms.AxiomDifferentIndividuals; import uk.ac.manchester.cs.jfact.kernel.dl.axioms.AxiomDisjointConcepts; import uk.ac.manchester.cs.jfact.kernel.dl.axioms.AxiomDisjointDRoles; import uk.ac.manchester.cs.jfact.kernel.dl.axioms.AxiomDisjointORoles; import uk.ac.manchester.cs.jfact.kernel.dl.axioms.AxiomDisjointUnion; import uk.ac.manchester.cs.jfact.kernel.dl.axioms.AxiomEquivalentConcepts; import uk.ac.manchester.cs.jfact.kernel.dl.axioms.AxiomEquivalentDRoles; import uk.ac.manchester.cs.jfact.kernel.dl.axioms.AxiomEquivalentORoles; import uk.ac.manchester.cs.jfact.kernel.dl.axioms.AxiomFairnessConstraint; import uk.ac.manchester.cs.jfact.kernel.dl.axioms.AxiomInstanceOf; import uk.ac.manchester.cs.jfact.kernel.dl.axioms.AxiomORoleDomain; import uk.ac.manchester.cs.jfact.kernel.dl.axioms.AxiomORoleFunctional; import uk.ac.manchester.cs.jfact.kernel.dl.axioms.AxiomORoleRange; import uk.ac.manchester.cs.jfact.kernel.dl.axioms.AxiomORoleSubsumption; import uk.ac.manchester.cs.jfact.kernel.dl.axioms.AxiomRelatedTo; import uk.ac.manchester.cs.jfact.kernel.dl.axioms.AxiomRelatedToNot; import uk.ac.manchester.cs.jfact.kernel.dl.axioms.AxiomRoleAsymmetric; import uk.ac.manchester.cs.jfact.kernel.dl.axioms.AxiomRoleInverse; import uk.ac.manchester.cs.jfact.kernel.dl.axioms.AxiomRoleInverseFunctional; import uk.ac.manchester.cs.jfact.kernel.dl.axioms.AxiomRoleIrreflexive; import uk.ac.manchester.cs.jfact.kernel.dl.axioms.AxiomRoleReflexive; import uk.ac.manchester.cs.jfact.kernel.dl.axioms.AxiomRoleSymmetric; import uk.ac.manchester.cs.jfact.kernel.dl.axioms.AxiomRoleTransitive; import uk.ac.manchester.cs.jfact.kernel.dl.axioms.AxiomSameIndividuals; import uk.ac.manchester.cs.jfact.kernel.dl.axioms.AxiomValueOf; import uk.ac.manchester.cs.jfact.kernel.dl.axioms.AxiomValueOfNot; import uk.ac.manchester.cs.jfact.kernel.dl.interfaces.Expression; import uk.ac.manchester.cs.jfact.visitors.DLAxiomVisitor; import conformance.PortedFrom; /** update signature by adding the signature of a given axiom to it */ @PortedFrom(file = "tSignatureUpdater.h", name = "TSignatureUpdater") public class TSignatureUpdater implements DLAxiomVisitor, Serializable { private static final long serialVersionUID = 11000L; /** helper with expressions */ @PortedFrom(file = "tSignatureUpdater.h", name = "Updater") private final TExpressionSignatureUpdater Updater; /** * helper for the expression processing * * @param E * E */ @PortedFrom(file = "tSignatureUpdater.h", name = "v") private void v(Expression E) { E.accept(Updater); } /** * helper for the [begin,end) interval * * @param arg * arg */ @PortedFrom(file = "tSignatureUpdater.h", name = "v") private void v(Collection<? extends Expression> arg) { for (Expression e : arg) { v(e); } } @Override public void visit(AxiomDeclaration axiom) { v(axiom.getDeclaration()); } @Override public void visit(AxiomEquivalentConcepts axiom) { v(axiom.getArguments()); } @Override public void visit(AxiomDisjointConcepts axiom) { v(axiom.getArguments()); } @Override public void visit(AxiomDisjointUnion axiom) { v(axiom.getConcept()); v(axiom.getArguments()); } @Override public void visit(AxiomEquivalentORoles axiom) { v(axiom.getArguments()); } @Override public void visit(AxiomEquivalentDRoles axiom) { v(axiom.getArguments()); } @Override public void visit(AxiomDisjointORoles axiom) { v(axiom.getArguments()); } @Override public void visit(AxiomDisjointDRoles axiom) { v(axiom.getArguments()); } @Override public void visit(AxiomSameIndividuals axiom) { v(axiom.getArguments()); } @Override public void visit(AxiomDifferentIndividuals axiom) { v(axiom.getArguments()); } @Override public void visit(AxiomFairnessConstraint axiom) { v(axiom.getArguments()); } @Override public void visit(AxiomRoleInverse axiom) { v(axiom.getRole()); v(axiom.getInvRole()); } @Override public void visit(AxiomORoleSubsumption axiom) { v(axiom.getRole()); v(axiom.getSubRole()); } @Override public void visit(AxiomDRoleSubsumption axiom) { v(axiom.getRole()); v(axiom.getSubRole()); } @Override public void visit(AxiomORoleDomain axiom) { v(axiom.getRole()); v(axiom.getDomain()); } @Override public void visit(AxiomDRoleDomain axiom) { v(axiom.getRole()); v(axiom.getDomain()); } @Override public void visit(AxiomORoleRange axiom) { v(axiom.getRole()); v(axiom.getRange()); } @Override public void visit(AxiomDRoleRange axiom) { v(axiom.getRole()); v(axiom.getRange()); } @Override public void visit(AxiomRoleTransitive axiom) { v(axiom.getRole()); } @Override public void visit(AxiomRoleReflexive axiom) { v(axiom.getRole()); } @Override public void visit(AxiomRoleIrreflexive axiom) { v(axiom.getRole()); } @Override public void visit(AxiomRoleSymmetric axiom) { v(axiom.getRole()); } @Override public void visit(AxiomRoleAsymmetric axiom) { v(axiom.getRole()); } @Override public void visit(AxiomORoleFunctional axiom) { v(axiom.getRole()); } @Override public void visit(AxiomDRoleFunctional axiom) { v(axiom.getRole()); } @Override public void visit(AxiomRoleInverseFunctional axiom) { v(axiom.getRole()); } @Override public void visit(AxiomConceptInclusion axiom) { v(axiom.getSubConcept()); v(axiom.getSupConcept()); } @Override public void visit(AxiomInstanceOf axiom) { v(axiom.getIndividual()); v(axiom.getC()); } @Override public void visit(AxiomRelatedTo axiom) { v(axiom.getIndividual()); v(axiom.getRelation()); v(axiom.getRelatedIndividual()); } @Override public void visit(AxiomRelatedToNot axiom) { v(axiom.getIndividual()); v(axiom.getRelation()); v(axiom.getRelatedIndividual()); } @Override public void visit(AxiomValueOf axiom) { v(axiom.getIndividual()); v(axiom.getAttribute()); } @Override public void visit(AxiomValueOfNot axiom) { v(axiom.getIndividual()); v(axiom.getAttribute()); } /** * @param sig * sig */ public TSignatureUpdater(TSignature sig) { Updater = new TExpressionSignatureUpdater(sig); } }