001: /*****************************************************************************
002: * Source code information
003: * -----------------------
004: * Original author Ian Dickinson, HP Labs Bristol
005: * Author email Ian.Dickinson@hp.com
006: * Package Jena 2
007: * Web http://sourceforge.net/projects/jena/
008: * Created 28-Apr-2003
009: * Filename $RCSfile: EnumeratedClass.java,v $
010: * Revision $Revision: 1.18 $
011: * Release status $State: Exp $
012: *
013: * Last modified on $Date: 2008/01/02 12:06:38 $
014: * by $Author: andy_seaborne $
015: *
016: * (c) Copyright 2002, 2003, 2004, 2005, 2006, 2007, 2008 Hewlett-Packard Development Company, LP
017: * (see footer for full conditions)
018: *****************************************************************************/package com.hp.hpl.jena.ontology;
019:
020: // Imports
021: ///////////////
022: import java.util.Iterator;
023:
024: import com.hp.hpl.jena.rdf.model.*;
025: import com.hp.hpl.jena.rdf.model.Resource;
026: import com.hp.hpl.jena.util.iterator.ExtendedIterator;
027:
028: /**
029: * <p>
030: * Encapsulates a class description representing a closed enumeration of individuals.
031: * </p>
032: *
033: * @author Ian Dickinson, HP Labs
034: * (<a href="mailto:Ian.Dickinson@hp.com" >email</a>)
035: * @version CVS $Id: EnumeratedClass.java,v 1.18 2008/01/02 12:06:38 andy_seaborne Exp $
036: */
037: public interface EnumeratedClass extends OntClass {
038: // Constants
039: //////////////////////////////////
040:
041: // External signature methods
042: //////////////////////////////////
043:
044: // oneOf
045:
046: /**
047: * <p>Assert that this class is exactly the enumeration of the given individuals. Any existing
048: * statements for <code>oneOf</code> will be removed.</p>
049: * @param en A list of individuals that defines the class extension for this class
050: * @exception OntProfileException If the {@link Profile#ONE_OF()} property is not supported in the current language profile.
051: */
052: public void setOneOf(RDFList en);
053:
054: /**
055: * <p>Add an individual to the enumeration that defines the class extension of this class.</p>
056: * @param res An individual to add to the enumeration
057: * @exception OntProfileException If the {@link Profile#ONE_OF()} property is not supported in the current language profile.
058: */
059: public void addOneOf(Resource res);
060:
061: /**
062: * <p>Add each individual from the given iteratation to the
063: * enumeration that defines the class extension of this class.</p>
064: * @param individuals An iterator over individuals
065: * @exception OntProfileException If the {@link Profile#ONE_OF()} property is not supported in the current language profile.
066: */
067: public void addOneOf(Iterator individuals);
068:
069: /**
070: * <p>Answer a list of individuals that defines the extension of this class.</p>
071: * @return A list of individuals that is the class extension
072: * @exception OntProfileException If the {@link Profile#ONE_OF()} property is not supported in the current language profile.
073: */
074: public RDFList getOneOf();
075:
076: /**
077: * <p>Answer an iterator over all of the individuals that are declared to be the class extension for
078: * this class. Each element of the iterator will be an {@link OntResource}.</p>
079: * @return An iterator over the individuals in the class extension
080: * @exception OntProfileException If the {@link Profile#ONE_OF()} property is not supported in the current language profile.
081: */
082: public ExtendedIterator listOneOf();
083:
084: /**
085: * <p>Answer true if the given individual is one of the enumerated individuals in the class extension
086: * of this class.</p>
087: * @param res An individual to test
088: * @return True if the given individual is in the class extension for this class.
089: * @exception OntProfileException If the {@link Profile#ONE_OF()} property is not supported in the current language profile.
090: */
091: public boolean hasOneOf(Resource res);
092:
093: /**
094: * <p>Remove the statement that this enumeration includes <code>res</code> among its members. If this statement
095: * is not true of the current model, nothing happens.</p>
096: * @param res A resource that may be declared to be part of this enumeration, and which is
097: * no longer one of the enumeration values.
098: */
099: public void removeOneOf(Resource res);
100:
101: }
102:
103: /*
104: (c) Copyright 2002, 2003, 2004, 2005, 2006, 2007, 2008 Hewlett-Packard Development Company, LP
105: All rights reserved.
106:
107: Redistribution and use in source and binary forms, with or without
108: modification, are permitted provided that the following conditions
109: are met:
110:
111: 1. Redistributions of source code must retain the above copyright
112: notice, this list of conditions and the following disclaimer.
113:
114: 2. Redistributions in binary form must reproduce the above copyright
115: notice, this list of conditions and the following disclaimer in the
116: documentation and/or other materials provided with the distribution.
117:
118: 3. The name of the author may not be used to endorse or promote products
119: derived from this software without specific prior written permission.
120:
121: THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
122: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
123: OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
124: IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
125: INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
126: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
127: DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
128: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
129: (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
130: THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
131: */
|