📄 restrictionimpl.java
字号:
/*****************************************************************************
* Source code information
* -----------------------
* Original author Ian Dickinson, HP Labs Bristol
* Author email Ian.Dickinson@hp.com
* Package Jena 2
* Web http://sourceforge.net/projects/jena/
* Created 31-Mar-2003
* Filename $RCSfile: RestrictionImpl.java,v $
* Revision $Revision: 1.18 $
* Release status $State: Exp $
*
* Last modified on $Date: 2007/01/02 11:49:48 $
* by $Author: andy_seaborne $
*
* (c) Copyright 2002, 2003, 2004, 2005, 2006, 2007 Hewlett-Packard Development Company, LP
* (see footer for full conditions)
*****************************************************************************/
// Package
///////////////
package com.hp.hpl.jena.ontology.impl;
// Imports
///////////////
import com.hp.hpl.jena.graph.*;
import com.hp.hpl.jena.enhanced.*;
import com.hp.hpl.jena.ontology.*;
import com.hp.hpl.jena.rdf.model.*;
/**
* <p>
* Implementation of the ontology abstraction representing restrictions.
* </p>
*
* @author Ian Dickinson, HP Labs
* (<a href="mailto:Ian.Dickinson@hp.com" >email</a>)
* @version CVS $Id: RestrictionImpl.java,v 1.18 2007/01/02 11:49:48 andy_seaborne Exp $
*/
public class RestrictionImpl
extends OntClassImpl
implements Restriction
{
// Constants
//////////////////////////////////
// Static variables
//////////////////////////////////
/**
* A factory for generating Restriction facets from nodes in enhanced graphs.
* Note: should not be invoked directly by user code: use
* {@link com.hp.hpl.jena.rdf.model.RDFNode#as as()} instead.
*/
public static Implementation factory = new Implementation() {
public EnhNode wrap( Node n, EnhGraph eg ) {
if (canWrap( n, eg )) {
return new RestrictionImpl( n, eg );
}
else {
throw new ConversionException( "Cannot convert node " + n + " to Restriction");
}
}
public boolean canWrap( Node node, EnhGraph eg ) {
// node will support being an Restriction facet if it has rdf:type owl:Restriction or equivalent
Profile profile = (eg instanceof OntModel) ? ((OntModel) eg).getProfile() : null;
return (profile != null) && profile.isSupported( node, eg, Restriction.class );
}
};
// Instance variables
//////////////////////////////////
// Constructors
//////////////////////////////////
/**
* <p>
* Construct a restriction node represented by the given node in the given graph.
* </p>
*
* @param n The node that represents the resource
* @param g The enh graph that contains n
*/
public RestrictionImpl( Node n, EnhGraph g ) {
super( n, g );
}
// 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 OntProfileException If the {@link Profile#ON_PROPERTY()} property is not supported in the current language profile.
*/
public void setOnProperty( Property prop ) {
setPropertyValue( getProfile().ON_PROPERTY(), "ON_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 OntProfileException If the {@link Profile#ON_PROPERTY()} property is not supported in the current language profile.
*/
public OntProperty getOnProperty() {
return (OntProperty) objectAs( getProfile().ON_PROPERTY(), "ON_PROPERTY", OntProperty.class );
}
/**
* <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 OntProfileException If the {@link Profile#ON_PROPERTY()} property is not supported in the current language profile.
*/
public boolean onProperty( Property prop ) {
return hasPropertyValue( getProfile().ON_PROPERTY(), "ON_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 ) {
removePropertyValue( getProfile().ON_PROPERTY(), "ON_PROPERTY", prop );
}
/**
* <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() {
return (AllValuesFromRestriction) as( AllValuesFromRestriction.class );
}
/**
* <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() {
return (SomeValuesFromRestriction) as( SomeValuesFromRestriction.class );
}
/**
* <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() {
return (HasValueRestriction) as( HasValueRestriction.class );
}
/**
* <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() {
return (CardinalityRestriction) as( CardinalityRestriction.class );
}
/**
* <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() {
return (MinCardinalityRestriction) as( MinCardinalityRestriction.class );
}
/**
* <p>Answer a view of this restriction as a max cardinality restriction class expression</p>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -