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