/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you 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. */ // Package /////////////// package org.apache.jena.ontology; // Imports /////////////// import org.apache.jena.rdf.model.* ; /** * <p> * Interface that encapsulates a class description formed by restricting one or * more properties to have constrained values and/or cardinalities. * </p> */ public interface Restriction extends OntClass { // Constants ////////////////////////////////// // External signature methods ////////////////////////////////// // onProperty /** * <p>Assert that the property that this restriction applies to is the given property. Any existing * statements for <code>onProperty</code> will be removed.</p> * @param prop The property that this restriction applies to * @exception ProfileException If the {@link Profile#ON_PROPERTY()} property is not supported in the current language profile. */ public void setOnProperty( Property prop ); /** * <p>Answer the property that this property restriction applies to. If there is * more than one such resource, an arbitrary selection is made (though well-defined property restrictions * should not have more than one <code>onProperty</code> statement.</p> * @return The property that this property restriction applies to * @exception ProfileException If the {@link Profile#ON_PROPERTY()} property is not supported in the current language profile. */ public OntProperty getOnProperty(); /** * <p>Answer true if this restriction is a property restriction on the given property.</p> * @param prop A property to test against * @return True if this restriction is a restriction on <code>prop</code> * @exception ProfileException If the {@link Profile#ON_PROPERTY()} property is not supported in the current language profile. */ public boolean onProperty( Property prop ); /** * <p>Remove the given property as the property that this restriction applies to. If this statement * is not true of the current model, nothing happens.</p> * @param prop The property to be removed as a the property that this restriction applies to */ public void removeOnProperty( Property prop ); // facets /** * <p>Answer a view of this restriction as an all values from expression</p> * @return This class, but viewed as an AllValuesFromRestriction node * @exception ConversionException if the class cannot be converted to an all values from restriction * given the lanuage profile and the current state of the underlying model. */ public AllValuesFromRestriction asAllValuesFromRestriction(); /** * <p>Answer a view of this restriction as a some values from expression</p> * @return This class, but viewed as a SomeValuesFromRestriction node * @exception ConversionException if the class cannot be converted to an all values from restriction * given the lanuage profile and the current state of the underlying model. */ public SomeValuesFromRestriction asSomeValuesFromRestriction(); /** * <p>Answer a view of this restriction as a has value expression</p> * @return This class, but viewed as a HasValueRestriction node * @exception ConversionException if the class cannot be converted to a has value restriction * given the lanuage profile and the current state of the underlying model. */ public HasValueRestriction asHasValueRestriction(); /** * <p>Answer a view of this restriction as a cardinality restriction class expression</p> * @return This class, but viewed as a CardinalityRestriction node * @exception ConversionException if the class cannot be converted to a cardinality restriction * given the lanuage profile and the current state of the underlying model. */ public CardinalityRestriction asCardinalityRestriction(); /** * <p>Answer a view of this restriction as a min cardinality restriction class expression</p> * @return This class, but viewed as a MinCardinalityRestriction node * @exception ConversionException if the class cannot be converted to a min cardinality restriction * given the lanuage profile and the current state of the underlying model. */ public MinCardinalityRestriction asMinCardinalityRestriction(); /** * <p>Answer a view of this restriction as a max cardinality restriction class expression</p> * @return This class, but viewed as a MaxCardinalityRestriction node * @exception ConversionException if the class cannot be converted to a max cardinality restriction * given the lanuage profile and the current state of the underlying model. */ public MaxCardinalityRestriction asMaxCardinalityRestriction(); // type tests /** * <p>Answer true if this restriction is an all values from restriction</p> * @return True if this is an allValuesFrom property restriction * @exception ProfileException if {@link Profile#ALL_VALUES_FROM()} is not supported in the current profile */ public boolean isAllValuesFromRestriction(); /** * <p>Answer true if this restriction is a some values from restriction</p> * @return True if this is a someValuesFrom property restriction * @exception ProfileException if {@link Profile#SOME_VALUES_FROM()} is not supported in the current profile */ public boolean isSomeValuesFromRestriction(); /** * <p>Answer true if this restriction is a has value restriction</p> * @return True if this is a hasValue property restriction * @exception ProfileException if {@link Profile#HAS_VALUE()} is not supported in the current profile */ public boolean isHasValueRestriction(); /** * <p>Answer true if this restriction is a cardinality restriction (ie is a property restriction * constructed with an <code>owl:cardinality</code> operator, or similar). This is not a test for * a restriction that tests cardinalities in general.</p> * @return True if this is a cardinality property restriction * @exception ProfileException if {@link Profile#CARDINALITY()} is not supported in the current profile */ public boolean isCardinalityRestriction(); /** * <p>Answer true if this restriction is a min cardinality restriction (ie is a property restriction * constructed with an <code>owl:minCardinality</code> operator, or similar). This is not a test for * a restriction that tests cardinalities in general.</p> * @return True if this is a minCardinality property restriction * @exception ProfileException if {@link Profile#MIN_CARDINALITY()} is not supported in the current profile */ public boolean isMinCardinalityRestriction(); /** * <p>Answer true if this restriction is a max cardinality restriction (ie is a property restriction * constructed with an <code>owl:maxCardinality</code> operator, or similar). This is not a test for * a restriction that tests cardinalities in general.</p> * @return True if this is a maxCardinality property restriction * @exception ProfileException if {@link Profile#MAX_CARDINALITY()} is not supported in the current profile */ public boolean isMaxCardinalityRestriction(); // conversions /** * <p>Convert this restriction to an all values from class expression.</p> * @param cls The class to which all values of the restricted property must belong, to be in the * extension of this restriction * @return This class, but converted to a AllValuesFromRestriction class expression * @exception ProfileException if {@link Profile#ALL_VALUES_FROM()} is not supported in the current profile */ public AllValuesFromRestriction convertToAllValuesFromRestriction( Resource cls ); /** * <p>Convert this restriction to a some values from class expression</p> * @param cls The class to which at least one value of the restricted property must belong, to be in the * extension of this restriction * @return This class, but converted to a SomeValuesFromRestriction node * @exception ProfileException if {@link Profile#SOME_VALUES_FROM()} is not supported in the current profile */ public SomeValuesFromRestriction convertToSomeValuesFromRestriction( Resource cls ); /** * <p>Convert this restriction to a has value class expression</p> * @param value The value which the restricted property must have, for resource to be * in the extension of this restriction. Can be a resource or a literal. * @return This class, but converted to a HasValueRestriction * @exception ProfileException if {@link Profile#HAS_VALUE()} is not supported in the current profile */ public HasValueRestriction convertToHasValueRestriction( RDFNode value ); /** * <p>Convert this restriction to a cardinality restriction class expression</p> * @param cardinality The exact cardinality for the restricted property * @return This class, but converted to a CardinalityRestriction node * @exception ProfileException if {@link Profile#CARDINALITY()} is not supported in the current profile */ public CardinalityRestriction convertToCardinalityRestriction( int cardinality ); /** * <p>Convert this restriction to a min cardinality restriction class expression</p> * @param cardinality The minimum cardinality for the restricted property * @return This class, but converted to a MinCardinalityRestriction node * @exception ProfileException if {@link Profile#MIN_CARDINALITY()} is not supported in the current profile */ public MinCardinalityRestriction convertToMinCardinalityRestriction( int cardinality ); /** * <p>Convert this restriction to a max cardinality restriction class expression</p> * @param cardinality The maximum cardinality for the restricted property * @return This class, but converted to a MaxCardinalityRestriction node * @exception ProfileException if {@link Profile#MAX_CARDINALITY()} is not supported in the current profile */ public MaxCardinalityRestriction convertToMaxCardinalityRestriction( int cardinality ); }