All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.semanticweb.elk.owl.inferences.ElkInference Maven / Gradle / Ivy

There is a newer version: 0.36.0
Show newest version
/*
 * #%L
 * ELK Proofs Package
 * $Id:$
 * $HeadURL:$
 * %%
 * Copyright (C) 2011 - 2016 Department of Computer Science, University of Oxford
 * %%
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 * #L%
 */
package org.semanticweb.elk.owl.inferences;

import org.liveontologies.puli.Inference;
import org.semanticweb.elk.owl.interfaces.ElkAxiom;
import org.semanticweb.elk.owl.interfaces.ElkObject;

public interface ElkInference extends Inference {

	@Override
	String getName();

	/**
	 * @return the number of premises of this inference
	 */
	int getPremiseCount();

	/**
	 * @param index
	 *            index of the premise to return
	 * @param factory
	 *            the factory for creating the premises
	 * @return the premise at the specified position in this inference.
	 * @throws IndexOutOfBoundsException
	 *             if the position is out of range
	 *             {@code (index <= 0 || index >= size())}
	 */
	ElkAxiom getPremise(int index, ElkObject.Factory factory);

	/**
	 * @param factory
	 *            the factory for creating conclusion
	 * @return the conclusion of this inference
	 */
	ElkAxiom getConclusion(ElkObject.Factory factory);

	 O accept(Visitor visitor);

	/**
	 * A factory for creating instances
	 * 
	 * @author Yevgeny Kazakov
	 * @author Peter Skocovsky
	 */
	interface Factory extends ElkClassAssertionOfClassInclusion.Factory,
			ElkClassInclusionOwlThingEmptyObjectIntersectionOf.Factory,
			ElkClassInclusionEmptyObjectOneOfOwlNothing.Factory,
			ElkClassInclusionEmptyObjectUnionOfOwlNothing.Factory,
			ElkClassInclusionExistentialComposition.Factory,
			ElkClassInclusionExistentialFillerExpansion.Factory,
			ElkClassInclusionExistentialOfObjectHasSelf.Factory,
			ElkClassInclusionExistentialOwlNothing.Factory,
			ElkClassInclusionExistentialPropertyExpansion.Factory,
			ElkClassInclusionExistentialRange.Factory,
			ElkClassInclusionExistentialTransitivity.Factory,
			ElkClassInclusionHierarchy.Factory,
			ElkClassInclusionNegationClash.Factory,
			ElkClassInclusionObjectIntersectionOfComposition.Factory,
			ElkClassInclusionObjectIntersectionOfDecomposition.Factory,
			ElkClassInclusionObjectIntersectionOfInclusion.Factory,
			ElkClassInclusionObjectOneOfInclusion.Factory,
			ElkClassInclusionObjectUnionOfComposition.Factory,
			ElkClassInclusionOfClassAssertion.Factory,
			ElkClassInclusionOfDisjointClasses.Factory,
			ElkClassInclusionOfEquivaletClasses.Factory,
			ElkClassInclusionOfObjectPropertyAssertion.Factory,
			ElkClassInclusionOfObjectPropertyDomain.Factory,
			ElkClassInclusionOfReflexiveObjectProperty.Factory,
			ElkClassInclusionOwlBottomObjectProperty.Factory,
			ElkClassInclusionOwlNothing.Factory,
			ElkClassInclusionOwlThing.Factory,
			ElkClassInclusionOwlTopObjectProperty.Factory,
			ElkClassInclusionReflexivePropertyRange.Factory,
			ElkClassInclusionSingletonObjectUnionOfDecomposition.Factory,
			ElkClassInclusionTautology.Factory,
			ElkClassInclusionTopObjectHasValue.Factory,
			ElkDifferentIndividualsOfDisjointClasses.Factory,
			ElkDisjointClassesIntersectionInconsistencies.Factory,
			ElkDisjointClassesOfDifferentIndividuals.Factory,
			ElkDisjointClassesOfDisjointUnion.Factory,
			ElkEquivalentClassesCycle.Factory,
			ElkEquivalentClassesObjectHasValue.Factory,
			ElkEquivalentClassesObjectOneOf.Factory,
			ElkEquivalentClassesOfDisjointUnion.Factory,
			ElkEquivalentClassesOfSameIndividual.Factory,
			ElkObjectPropertyAssertionOfClassInclusion.Factory,
			ElkObjectPropertyDomainOfClassInclusion.Factory,
			ElkPropertyInclusionHierarchy.Factory,
			ElkPropertyInclusionOfEquivalence.Factory,
			ElkPropertyInclusionOfTransitiveObjectProperty.Factory,
			ElkPropertyInclusionTautology.Factory,
			ElkPropertyRangePropertyExpansion.Factory,
			ElkSameIndividualOfEquivalentClasses.Factory, ElkToldAxiom.Factory {

		// combined interface

	}

	/**
	 * The visitor pattern for instances
	 * 
	 * @author Yevgeny Kazakov
	 * @author Peter Skocovsky
	 *
	 * @param 
	 *            the type of the output
	 */
	interface Visitor extends ElkClassAssertionOfClassInclusion.Visitor,
			ElkClassInclusionOwlThingEmptyObjectIntersectionOf.Visitor,
			ElkClassInclusionEmptyObjectOneOfOwlNothing.Visitor,
			ElkClassInclusionEmptyObjectUnionOfOwlNothing.Visitor,
			ElkClassInclusionExistentialComposition.Visitor,
			ElkClassInclusionExistentialFillerExpansion.Visitor,
			ElkClassInclusionExistentialOfObjectHasSelf.Visitor,
			ElkClassInclusionExistentialOwlNothing.Visitor,
			ElkClassInclusionExistentialPropertyExpansion.Visitor,
			ElkClassInclusionExistentialRange.Visitor,
			ElkClassInclusionExistentialTransitivity.Visitor,
			ElkClassInclusionHierarchy.Visitor,
			ElkClassInclusionNegationClash.Visitor,
			ElkClassInclusionObjectIntersectionOfComposition.Visitor,
			ElkClassInclusionObjectIntersectionOfDecomposition.Visitor,
			ElkClassInclusionObjectIntersectionOfInclusion.Visitor,
			ElkClassInclusionObjectOneOfInclusion.Visitor,
			ElkClassInclusionObjectUnionOfComposition.Visitor,
			ElkClassInclusionOfClassAssertion.Visitor,
			ElkClassInclusionOfDisjointClasses.Visitor,
			ElkClassInclusionOfEquivaletClasses.Visitor,
			ElkClassInclusionOfObjectPropertyAssertion.Visitor,
			ElkClassInclusionOfObjectPropertyDomain.Visitor,
			ElkClassInclusionOfReflexiveObjectProperty.Visitor,
			ElkClassInclusionOwlBottomObjectProperty.Visitor,
			ElkClassInclusionOwlNothing.Visitor,
			ElkClassInclusionOwlThing.Visitor,
			ElkClassInclusionOwlTopObjectProperty.Visitor,
			ElkClassInclusionReflexivePropertyRange.Visitor,
			ElkClassInclusionSingletonObjectUnionOfDecomposition.Visitor,
			ElkClassInclusionTautology.Visitor,
			ElkClassInclusionTopObjectHasValue.Visitor,
			ElkDifferentIndividualsOfDisjointClasses.Visitor,
			ElkDisjointClassesIntersectionInconsistencies.Visitor,
			ElkDisjointClassesOfDifferentIndividuals.Visitor,
			ElkDisjointClassesOfDisjointUnion.Visitor,
			ElkEquivalentClassesCycle.Visitor,
			ElkEquivalentClassesObjectHasValue.Visitor,
			ElkEquivalentClassesObjectOneOf.Visitor,
			ElkEquivalentClassesOfDisjointUnion.Visitor,
			ElkEquivalentClassesOfSameIndividual.Visitor,
			ElkObjectPropertyAssertionOfClassInclusion.Visitor,
			ElkObjectPropertyDomainOfClassInclusion.Visitor,
			ElkPropertyInclusionHierarchy.Visitor,
			ElkPropertyInclusionOfEquivalence.Visitor,
			ElkPropertyInclusionOfTransitiveObjectProperty.Visitor,
			ElkPropertyInclusionTautology.Visitor,
			ElkPropertyRangePropertyExpansion.Visitor,
			ElkSameIndividualOfEquivalentClasses.Visitor,
			ElkToldAxiom.Visitor {

		// combined interface

	}

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy