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 10 Feb 2003
009: * Filename $RCSfile: AllDifferent.java,v $
010: * Revision $Revision: 1.17 $
011: * Release status $State: Exp $
012: *
013: * Last modified on $Date: 2008/01/02 12:06:41 $
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: * Interface defining an individual in which all members of a collection are
031: * declared pair-wise disjoint. This allows ontologies that wish to support the
032: * unique names assumption to add this condition in languages (like OWL) that
033: * do not make the same assumption, with a minimum number of statements.
034: * Instances of the all different axiom are expected to have a property
035: * (e.g. <code>owl:distinctMembers</code> defining the list of distinct
036: * individuals in the ontology. For a given vocabulary, this will be defined by
037: * the {@linkplain Profile#DISTINCT_MEMBERS distinctMembers} entry.
038: * </p>
039: *
040: * @author Ian Dickinson, HP Labs
041: * (<a href="mailto:Ian.Dickinson@hp.com" >email</a>)
042: * @version CVS $Id: AllDifferent.java,v 1.17 2008/01/02 12:06:41 andy_seaborne Exp $
043: */
044: public interface AllDifferent extends OntResource {
045: // Constants
046: //////////////////////////////////
047:
048: // External signature methods
049: //////////////////////////////////
050:
051: /**
052: * <p>Assert that the list of distinct individuals in this AllDifferent declaration
053: * is the given list. Any existing
054: * statements for <code>distinctMembers</code> will be removed.</p>
055: * @param members A list of the members that are declared to be distinct.
056: * @exception OntProfileException If the {@link Profile#DISTINCT_MEMBERS()} property is not supported in the current language profile.
057: */
058: public void setDistinctMembers(RDFList members);
059:
060: /**
061: * <p>Add the given individual to the list of distinct members of this AllDifferent declaration.</p>
062: * @param res A resource that will be added to the list of all different members.
063: * @exception OntProfileException If the {@link Profile#DISTINCT_MEMBERS()} property is not supported in the current language profile.
064: */
065: public void addDistinctMember(Resource res);
066:
067: /**
068: * <p>Add the given individuals to the list of distinct members of this AllDifferent declaration.</p>
069: * @param individuals An iterator over the distinct invididuals that will be added
070: * @exception OntProfileException If the {@link Profile#DISTINCT_MEMBERS()} property is not supported in the current language profile.
071: */
072: public void addDistinctMembers(Iterator individuals);
073:
074: /**
075: * <p>Answer the list of distinct members for this AllDifferent declaration.</p>
076: * @return The list of individuals declared distinct by this AllDifferent declaration.
077: * @exception OntProfileException If the {@link Profile#DISTINCT_MEMBERS()} property is not supported in the current language profile.
078: */
079: public RDFList getDistinctMembers();
080:
081: /**
082: * <p>Answer an iterator over all of the individuals that are declared to be distinct by
083: * this AllDifferent declaration. Each element of the iterator will be an {@link OntResource}.</p>
084: * @return An iterator over distinct individuals.
085: * @exception OntProfileException If the {@link Profile#DISTINCT_MEMBERS()} property is not supported in the current language profile.
086: */
087: public ExtendedIterator listDistinctMembers();
088:
089: /**
090: * <p>Answer true if this AllDifferent declaration includes <code>res</code> as one of the distinct individuals.</p>
091: * @param res A resource to test against
092: * @return True if <code>res</code> is declared to be distinct from the other individuals in this declation.
093: * @exception OntProfileException If the {@link Profile#DISTINCT_MEMBERS()} property is not supported in the current language profile.
094: */
095: public boolean hasDistinctMember(Resource res);
096:
097: /**
098: * <p>Remove the given resource from the list of distinct individuals. If this statement
099: * is not true of the current model, nothing happens.</p>
100: * @param res A resource that is no longer distinct from the other listed individuals
101: */
102: public void removeDistinctMember(Resource res);
103:
104: }
105:
106: /*
107: (c) Copyright 2002, 2003, 2004, 2005, 2006, 2007, 2008 Hewlett-Packard Development Company, LP
108: All rights reserved.
109:
110: Redistribution and use in source and binary forms, with or without
111: modification, are permitted provided that the following conditions
112: are met:
113:
114: 1. Redistributions of source code must retain the above copyright
115: notice, this list of conditions and the following disclaimer.
116:
117: 2. Redistributions in binary form must reproduce the above copyright
118: notice, this list of conditions and the following disclaimer in the
119: documentation and/or other materials provided with the distribution.
120:
121: 3. The name of the author may not be used to endorse or promote products
122: derived from this software without specific prior written permission.
123:
124: THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
125: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
126: OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
127: IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
128: INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
129: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
130: DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
131: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
132: (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
133: THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
134: */
|