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: BooleanClassDescription.java,v $
010: * Revision $Revision: 1.13 $
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 com.hp.hpl.jena.rdf.model.*;
023: import com.hp.hpl.jena.util.iterator.ExtendedIterator;
024:
025: import java.util.*;
026:
027: /**
028: * <p>
029: * Encapsulates a class description formed from a boolean combination of other
030: * class descriptions (ie union, intersection or complement).
031: * </p>
032: *
033: * @author Ian Dickinson, HP Labs
034: * (<a href="mailto:Ian.Dickinson@hp.com" >email</a>)
035: * @version CVS $Id: BooleanClassDescription.java,v 1.13 2008/01/02 12:06:38 andy_seaborne Exp $
036: */
037: public interface BooleanClassDescription extends OntClass {
038: // Constants
039: //////////////////////////////////
040:
041: // External signature methods
042: //////////////////////////////////
043:
044: // operand
045:
046: /**
047: * <p>Assert that the operands for this boolean class expression are the classes
048: * in the given list. Any existing
049: * statements for the operator will be removed.</p>
050: * @param operands The list of operands to this expression.
051: * @exception OntProfileException If the operand property is not supported in the current language profile.
052: */
053: public void setOperands(RDFList operands);
054:
055: /**
056: * <p>Add a class the operands of this boolean expression.</p>
057: * @param cls A class that will be added to the operands of this Boolean expression
058: * @exception OntProfileException If the operand property is not supported in the current language profile.
059: */
060: public void addOperand(Resource cls);
061:
062: /**
063: * <p>Add all of the classes from the given iterator to the operands of this boolean expression.</p>
064: * @param classes A iterator over classes that will be added to the operands of this Boolean expression
065: * @exception OntProfileException If the operand property is not supported in the current language profile.
066: */
067: public void addOperands(Iterator classes);
068:
069: /**
070: * <p>Answer the list of operands for this Boolean class expression.</p>
071: * @return A list of the operands of this expression.
072: * @exception OntProfileException If the operand property is not supported in the current language profile.
073: */
074: public RDFList getOperands();
075:
076: /**
077: * <p>Answer an iterator over all of the clases that are the operands of this
078: * Boolean class expression. Each element of the iterator will be an {@link OntClass}.</p>
079: * @return An iterator over the operands of the expression.
080: * @exception OntProfileException If the operand property is not supported in the current language profile.
081: */
082: public ExtendedIterator listOperands();
083:
084: /**
085: * <p>Answer true if this Boolean class expression has the given class as an operand.</p>
086: * @param cls A class to test
087: * @return True if the given class is an operand to this expression.
088: * @exception OntProfileException If the operand property is not supported in the current language profile.
089: */
090: public boolean hasOperand(Resource cls);
091:
092: /**
093: * <p>Remove the given resource from the operands of this class expression.</p>
094: * @param res An resource to be removed from the operands of this class expression
095: */
096: public void removeOperand(Resource res);
097:
098: /**
099: * <p>Answer the property that is used to construct this boolean expression, for example
100: * {@link Profile#UNION_OF()}.</p>
101: * @return The property used to construct this Boolean class expression.
102: */
103: public Property operator();
104:
105: }
106:
107: /*
108: (c) Copyright 2002, 2003, 2004, 2005, 2006, 2007, 2008 Hewlett-Packard Development Company, LP
109: All rights reserved.
110:
111: Redistribution and use in source and binary forms, with or without
112: modification, are permitted provided that the following conditions
113: are met:
114:
115: 1. Redistributions of source code must retain the above copyright
116: notice, this list of conditions and the following disclaimer.
117:
118: 2. Redistributions in binary form must reproduce the above copyright
119: notice, this list of conditions and the following disclaimer in the
120: documentation and/or other materials provided with the distribution.
121:
122: 3. The name of the author may not be used to endorse or promote products
123: derived from this software without specific prior written permission.
124:
125: THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
126: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
127: OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
128: IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
129: INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
130: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
131: DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
132: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
133: (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
134: THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
135: */
|