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: OntProperty.java,v $
010: * Revision $Revision: 1.21 $
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: * 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: /**
026: * <p>
027: * Interface encapsulating a property in an ontology. This is an extension to the
028: * standard {@link Property} interface, adding a collection of convenience methods
029: * for accessing the additional semantic features of properties in OWL, RDFS and DAML+OIL,
030: * such as domain, range, inverse, etc. Not all such capabilities exist in all
031: * supported ontology languages.
032: * </p>
033: *
034: * @author Ian Dickinson, HP Labs
035: * (<a href="mailto:Ian.Dickinson@hp.com" >email</a>)
036: * @version CVS $Id: OntProperty.java,v 1.21 2008/01/02 12:06:41 andy_seaborne Exp $
037: */
038: public interface OntProperty extends OntResource, Property {
039: // Constants
040: //////////////////////////////////
041:
042: // External signature methods
043: //////////////////////////////////
044:
045: // subPropertyOf
046:
047: /**
048: * <p>Assert that this property is sub-property of the given property. Any existing
049: * statements for <code>subPropertyOf</code> will be removed.</p>
050: * @param prop The property that this property is a sub-property of
051: * @exception OntProfileException If the {@link Profile#SUB_PROPERTY_OF()} property is not supported in the current language profile.
052: */
053: public void setSuperProperty(Property prop);
054:
055: /**
056: * <p>Add a super-property of this property.</p>
057: * @param prop A property that is a super-property of this property.
058: * @exception OntProfileException If the {@link Profile#SUB_PROPERTY_OF()} property is not supported in the current language profile.
059: */
060: public void addSuperProperty(Property prop);
061:
062: /**
063: * <p>Answer a property that is the super-property of this property. If there is
064: * more than one such property, an arbitrary selection is made.</p>
065: * @return A super-property of this property
066: * @exception OntProfileException If the {@link Profile#SUB_PROPERTY_OF()} property is not supported in the current language profile.
067: */
068: public OntProperty getSuperProperty();
069:
070: /**
071: * <p>Answer an iterator over all of the properties that are declared to be super-properties of
072: * this property. Each element of the iterator will be an {@link OntProperty}.</p>
073: * @return An iterator over the super-properties of this property.
074: * @exception OntProfileException If the {@link Profile#SUB_PROPERTY_OF()} property is not supported in the current language profile.
075: */
076: public ExtendedIterator listSuperProperties();
077:
078: /**
079: * <p>Answer an iterator over all of the properties that are declared to be super-properties of
080: * this property. Each element of the iterator will be an {@link OntProperty}.</p>
081: * @param direct If true, only answer the directly adjacent properties in the
082: * property hierarchy: i.e. eliminate any property for which there is a longer route
083: * to reach that child under the super-property relation.
084: * @return An iterator over the super-properties of this property.
085: * @exception OntProfileException If the {@link Profile#SUB_PROPERTY_OF()} property is not supported in the current language profile.
086: */
087: public ExtendedIterator listSuperProperties(boolean direct);
088:
089: /**
090: * <p>Answer true if the given property is a super-property of this property.</p>
091: * @param prop A property to test.
092: * @param direct If true, only consider the directly adjacent properties in the
093: * property hierarchy
094: * @return True if the given property is a super-property of this property.
095: * @exception OntProfileException If the {@link Profile#SUB_PROPERTY_OF()} property is not supported in the current language profile.
096: */
097: public boolean hasSuperProperty(Property prop, boolean direct);
098:
099: /**
100: * <p>Remove the given property from the super-properties of this property. If this statement
101: * is not true of the current model, nothing happens.</p>
102: * @param prop A property to be removed from the super-properties of this property
103: * @exception OntProfileException If the {@link Profile#SUB_PROPERTY_OF()} property is not supported in the current language profile.
104: */
105: public void removeSuperProperty(Property prop);
106:
107: /**
108: * <p>Assert that this property is super-property of the given property. Any existing
109: * statements for <code>subPropertyOf</code> on <code>prop</code> will be removed.</p>
110: * @param prop The property that is a sub-property of this property
111: * @exception OntProfileException If the {@link Profile#SUB_PROPERTY_OF()} property is not supported in the current language profile.
112: */
113: public void setSubProperty(Property prop);
114:
115: /**
116: * <p>Add a sub-property of this property.</p>
117: * @param prop A property that is a sub-property of this property.
118: * @exception OntProfileException If the {@link Profile#SUB_PROPERTY_OF()} property is not supported in the current language profile.
119: */
120: public void addSubProperty(Property prop);
121:
122: /**
123: * <p>Answer a property that is the sub-property of this property. If there is
124: * more than one such property, an arbitrary selection is made.</p>
125: * @return A sub-property of this property
126: * @exception OntProfileException If the {@link Profile#SUB_PROPERTY_OF()} property is not supported in the current language profile.
127: */
128: public OntProperty getSubProperty();
129:
130: /**
131: * <p>Answer an iterator over all of the properties that are declared to be sub-properties of
132: * this property. Each element of the iterator will be an {@link OntProperty}.</p>
133: * @return An iterator over the sub-properties of this property.
134: * @exception OntProfileException If the {@link Profile#SUB_PROPERTY_OF()} property is not supported in the current language profile.
135: */
136: public ExtendedIterator listSubProperties();
137:
138: /**
139: * <p>Answer an iterator over all of the properties that are declared to be sub-properties of
140: * this property. Each element of the iterator will be an {@link OntProperty}.</p>
141: * @param direct If true, only answer the directly adjacent properties in the
142: * property hierarchy: i.e. eliminate any property for which there is a longer route
143: * to reach that child under the sub-property relation.
144: * @return An iterator over the sub-properties of this property.
145: * @exception OntProfileException If the {@link Profile#SUB_PROPERTY_OF()} property is not supported in the current language profile.
146: */
147: public ExtendedIterator listSubProperties(boolean direct);
148:
149: /**
150: * <p>Answer true if the given property is a sub-property of this property.</p>
151: * @param prop A property to test.
152: * @param direct If true, only consider the directly adjacent properties in the
153: * property hierarchy
154: * @return True if the given property is a sub-property of this property.
155: * @exception OntProfileException If the {@link Profile#SUB_PROPERTY_OF()} property is not supported in the current language profile.
156: */
157: public boolean hasSubProperty(Property prop, boolean direct);
158:
159: /**
160: * <p>Remove the given property from the sub-properties of this property. If this statement
161: * is not true of the current model, nothing happens.</p>
162: * @param prop A property to be removed from the sub-properties of this property
163: * @exception OntProfileException If the {@link Profile#SUB_PROPERTY_OF()} property is not supported in the current language profile.
164: */
165: public void removeSubProperty(Property prop);
166:
167: // domain
168:
169: /**
170: * <p>Assert that the given resource represents the class of individuals that form the
171: * domain of this property. Any existing <code>domain</code> statements for this property are removed.</p>
172: * @param res The resource that represents the domain class for this property.
173: * @exception OntProfileException If the {@link Profile#DOMAIN()} property is not supported in the current language profile.
174: */
175: public void setDomain(Resource res);
176:
177: /**
178: * <p>Add a resource representing the domain of this property.</p>
179: * @param res A resource that represents a domain class for this property.
180: * @exception OntProfileException If the {@link Profile#DOMAIN()} property is not supported in the current language profile.
181: */
182: public void addDomain(Resource res);
183:
184: /**
185: * <p>Answer a resource that represents the domain class of this property. If there is
186: * more than one such resource, an arbitrary selection is made.</p>
187: * @return An resource representing the class that forms the domain of this property
188: * @exception OntProfileException If the {@link Profile#DOMAIN()} property is not supported in the current language profile.
189: */
190: public OntResource getDomain();
191:
192: /**
193: * <p>Answer an iterator over all of the declared domain classes of this property.
194: * Each element of the iterator will be an {@link OntResource}.</p>
195: * @return An iterator over the classes that form the domain of this property.
196: * @exception OntProfileException If the {@link Profile#DOMAIN()} property is not supported in the current language profile.
197: */
198: public ExtendedIterator listDomain();
199:
200: /**
201: * <p>Answer true if the given resource a class specifying the domain of this property.</p>
202: * @param res A resource representing a class
203: * @return True if the given resource is one of the domain classes of this property.
204: * @exception OntProfileException If the {@link Profile#DOMAIN()} property is not supported in the current language profile.
205: */
206: public boolean hasDomain(Resource res);
207:
208: /**
209: * <p>Remove the given class from the stated domain(s) of this property. If this statement
210: * is not true of the current model, nothing happens.</p>
211: * @param cls A class to be removed from the declared domain(s) of this property
212: * @exception OntProfileException If the {@link Profile#DOMAIN()} property is not supported in the current language profile.
213: */
214: public void removeDomain(Resource cls);
215:
216: // range
217:
218: /**
219: * <p>Assert that the given resource represents the class of individuals that form the
220: * range of this property. Any existing <code>range</code> statements for this property are
221: * first removed. Therefore, if the property is known not to have a range declaration, it
222: * is more efficient to use {@link #addRange} since no removal step is necessary.
223: * See {@link #addRange} for additional usage notes on the value of <code>res</code>.</p>
224: * @param res The resource that represents the range class for this property.
225: * @exception OntProfileException If the {@link Profile#RANGE()} property is not supported in the current language profile.
226: */
227: public void setRange(Resource res);
228:
229: /**
230: * <p>Add a resource representing the range of this property. The resource denotes the class
231: * or datatype that objects of statements using this property as predicate should
232: * belong to. For datatype properties, XML Schema Datatype names are pre-declared
233: * as resources in the {@link com.hp.hpl.jena.vocabulary.XSD XSD} vocabulary class. For object properties,
234: * the resource should be represent the range class. Note that {@link OntClass} is
235: * a Java sub-class of {@link Resource}, so OntClass objects can be passed directly.</p>
236: * @param res A resource that represents a range class for this property.
237: * @exception OntProfileException If the {@link Profile#RANGE()} property is not supported in the current language profile.
238: */
239: public void addRange(Resource res);
240:
241: /**
242: * <p>Answer a resource that represents the range class of this property. If there is
243: * more than one such resource, an arbitrary selection is made.</p>
244: * @return An resource representing the class that forms the range of this property
245: * @exception OntProfileException If the {@link Profile#RANGE()} property is not supported in the current language profile.
246: */
247: public OntResource getRange();
248:
249: /**
250: * <p>Answer an iterator over all of the declared range classes of this property.
251: * Each element of the iterator will be an {@link OntResource}.</p>
252: * @return An iterator over the classes that form the range of this property.
253: * @exception OntProfileException If the {@link Profile#RANGE()} property is not supported in the current language profile.
254: */
255: public ExtendedIterator listRange();
256:
257: /**
258: * <p>Answer true if the given resource a class specifying the range of this property.</p>
259: * @param res A resource representing a class
260: * @return True if the given resource is one of the range classes of this property.
261: * @exception OntProfileException If the {@link Profile#RANGE()} property is not supported in the current language profile.
262: */
263: public boolean hasRange(Resource res);
264:
265: /**
266: * <p>Remove the given class from the stated range(s) of this property. If this statement
267: * is not true of the current model, nothing happens.</p>
268: * @param cls A class to be removed from the declared range(s) of this property
269: * @exception OntProfileException If the {@link Profile#RANGE()} property is not supported in the current language profile.
270: */
271: public void removeRange(Resource cls);
272:
273: // relationships between properties
274:
275: // equivalentProperty
276:
277: /**
278: * <p>Assert that the given property is equivalent to this property. Any existing
279: * statements for <code>equivalentProperty</code> will be removed.</p>
280: * @param prop The property that this property is a equivalent to.
281: * @exception OntProfileException If the {@link Profile#EQUIVALENT_PROPERTY()} property is not supported in the current language profile.
282: */
283: public void setEquivalentProperty(Property prop);
284:
285: /**
286: * <p>Add a property that is equivalent to this property.</p>
287: * @param prop A property that is equivalent to this property.
288: * @exception OntProfileException If the {@link Profile#EQUIVALENT_PROPERTY()} property is not supported in the current language profile.
289: */
290: public void addEquivalentProperty(Property prop);
291:
292: /**
293: * <p>Answer a property that is equivalent to this property. If there is
294: * more than one such property, an arbitrary selection is made.</p>
295: * @return A property equivalent to this property
296: * @exception OntProfileException If the {@link Profile#EQUIVALENT_PROPERTY()} property is not supported in the current language profile.
297: */
298: public OntProperty getEquivalentProperty();
299:
300: /**
301: * <p>Answer an iterator over all of the properties that are declared to be equivalent properties to
302: * this property. Each element of the iterator will be an {@link OntProperty}.</p>
303: * @return An iterator over the properties equivalent to this property.
304: * @exception OntProfileException If the {@link Profile#EQUIVALENT_PROPERTY()} property is not supported in the current language profile.
305: */
306: public ExtendedIterator listEquivalentProperties();
307:
308: /**
309: * <p>Answer true if the given property is equivalent to this property.</p>
310: * @param prop A property to test for
311: * @return True if the given property is equivalent to this property.
312: * @exception OntProfileException If the {@link Profile#EQUIVALENT_PROPERTY()} property is not supported in the current language profile.
313: */
314: public boolean hasEquivalentProperty(Property prop);
315:
316: /**
317: * <p>Remove the statement that this property and the given property are
318: * equivalent. If this statement
319: * is not true of the current model, nothing happens.</p>
320: * @param prop A property that may be declared to be equivalent to this property
321: * @exception OntProfileException If the {@link Profile#EQUIVALENT_PROPERTY()} property is not supported in the current language profile.
322: */
323: public void removeEquivalentProperty(Property prop);
324:
325: // inverseProperty
326:
327: /**
328: * <p>Assert that this property is the inverse of the given property. Any existing
329: * statements for <code>inverseOf</code> will be removed.</p>
330: * @param prop The property that this property is a inverse to.
331: * @exception OntProfileException If the {@link Profile#INVERSE_OF()} property is not supported in the current language profile.
332: */
333: public void setInverseOf(Property prop);
334:
335: /**
336: * <p>Add a property that this property is the inverse of.</p>
337: * @param prop A property that is the inverse of this property.
338: * @exception OntProfileException If the {@link Profile#INVERSE_OF()} property is not supported in the current language profile.
339: */
340: public void addInverseOf(Property prop);
341:
342: /**
343: * <p>Answer a property of which this property is the inverse, if known,
344: * or null if there is no such property. If there is
345: * more than one such property, an arbitrary selection is made.</p>
346: * <p>Note that this method is slightly different to {@link #getInverse}. See
347: * the Javadoc on {@link #getInverse} for a detailed explanation.</p>
348: * @return A property which this property is the inverse of, or null.
349: * @exception OntProfileException If the {@link Profile#INVERSE_OF()} property is not supported in the current language profile.
350: */
351: public OntProperty getInverseOf();
352:
353: /**
354: * <p>Answer an iterator over all of the properties that this property is declared to be the inverse of.
355: * Each element of the iterator will be an {@link OntProperty}.</p>
356: * @return An iterator over the properties inverse to this property.
357: * @exception OntProfileException If the {@link Profile#INVERSE_OF()} property is not supported in the current language profile.
358: */
359: public ExtendedIterator listInverseOf();
360:
361: /**
362: * <p>Answer true if this property is the inverse of the given property.</p>
363: * @param prop A property to test for
364: * @return True if the this property is the inverse of the the given property.
365: * @exception OntProfileException If the {@link Profile#INVERSE_OF()} property is not supported in the current language profile.
366: */
367: public boolean isInverseOf(Property prop);
368:
369: /**
370: * <p>Remove the statement that this property is the inverse of the given property. If this statement
371: * is not true of the current model, nothing happens.</p>
372: * @param prop A property that may be declared to be inverse to this property
373: * @exception OntProfileException If the {@link Profile#INVERSE_OF()} property is not supported in the current language profile.
374: */
375: public void removeInverseProperty(Property prop);
376:
377: // view conversion functions
378:
379: /**
380: * <p>Answer a view of this property as a functional property</p>
381: * @return This property, but viewed as a FunctionalProperty node
382: * @exception ConversionException if the resource cannot be converted to a functional property
383: * given the language profile and the current state of the underlying model.
384: */
385: public FunctionalProperty asFunctionalProperty();
386:
387: /**
388: * <p>Answer a view of this property as a datatype property</p>
389: * @return This property, but viewed as a DatatypeProperty node
390: * @exception ConversionException if the resource cannot be converted to a datatype property
391: * given the language profile and the current state of the underlying model.
392: */
393: public DatatypeProperty asDatatypeProperty();
394:
395: /**
396: * <p>Answer a view of this property as an object property</p>
397: * @return This property, but viewed as an ObjectProperty node
398: * @exception ConversionException if the resource cannot be converted to an object property
399: * given the language profile and the current state of the underlying model.
400: */
401: public ObjectProperty asObjectProperty();
402:
403: /**
404: * <p>Answer a view of this property as a transitive property</p>
405: * @return This property, but viewed as a TransitiveProperty node
406: * @exception ConversionException if the resource cannot be converted to a transitive property
407: * given the language profile and the current state of the underlying model.
408: */
409: public TransitiveProperty asTransitiveProperty();
410:
411: /**
412: * <p>Answer a view of this property as an inverse functional property</p>
413: * @return This property, but viewed as an InverseFunctionalProperty node
414: * @exception ConversionException if the resource cannot be converted to an inverse functional property
415: * given the language profile and the current state of the underlying model.
416: */
417: public InverseFunctionalProperty asInverseFunctionalProperty();
418:
419: /**
420: * <p>Answer a view of this property as a symmetric property</p>
421: * @return This property, but viewed as a SymmetricProperty node
422: * @exception ConversionException if the resource cannot be converted to a symmetric property
423: * given the language profile and the current state of the underlying model.
424: */
425: public SymmetricProperty asSymmetricProperty();
426:
427: // conversion functions
428:
429: /**
430: * <p>Answer a facet of this property as a functional property, adding additional information to the model if necessary.</p>
431: * @return This property, but converted to a FunctionalProperty facet
432: */
433: public FunctionalProperty convertToFunctionalProperty();
434:
435: /**
436: * <p>Answer a facet of this property as a datatype property, adding additional information to the model if necessary.</p>
437: * @return This property, but converted to a DatatypeProperty facet
438: */
439: public DatatypeProperty convertToDatatypeProperty();
440:
441: /**
442: * <p>Answer a facet of this property as an object property, adding additional information to the model if necessary.</p>
443: * @return This property, but converted to an ObjectProperty facet
444: */
445: public ObjectProperty convertToObjectProperty();
446:
447: /**
448: * <p>Answer a facet of this property as a transitive property, adding additional information to the model if necessary.</p>
449: * @return This property, but converted to a TransitiveProperty facet
450: */
451: public TransitiveProperty convertToTransitiveProperty();
452:
453: /**
454: * <p>Answer a facet of this property as an inverse functional property, adding additional information to the model if necessary.</p>
455: * @return This property, but converted to an InverseFunctionalProperty facet
456: */
457: public InverseFunctionalProperty convertToInverseFunctionalProperty();
458:
459: /**
460: * <p>Answer a facet of this property as a symmetric property, adding additional information to the model if necessary.</p>
461: * @return This property, but converted to a SymmetricProperty facet
462: */
463: public SymmetricProperty convertToSymmetricProperty();
464:
465: // tests on property sub-types
466:
467: /**
468: * <p>Answer true if this property is a functional property</p>
469: * @return True if this this property has an <code>rdf:type</code> that defines it as a functional property.
470: */
471: public boolean isFunctionalProperty();
472:
473: /**
474: * <p>Answer true if this property is a datatype property</p>
475: * @return True if this this property has an <code>rdf:type</code> that defines it as a datatype property.
476: */
477: public boolean isDatatypeProperty();
478:
479: /**
480: * <p>Answer true if this property is an object property</p>
481: * @return True if this this property has an <code>rdf:type</code> that defines it as an object property.
482: */
483: public boolean isObjectProperty();
484:
485: /**
486: * <p>Answer true if this property is a transitive property</p>
487: * @return True if this this property has an <code>rdf:type</code> that defines it as a transitive property.
488: */
489: public boolean isTransitiveProperty();
490:
491: /**
492: * <p>Answer true if this property is an inverse functional property</p>
493: * @return True if this this property has an <code>rdf:type</code> that defines it as an inverse functional property.
494: */
495: public boolean isInverseFunctionalProperty();
496:
497: /**
498: * <p>Answer true if this property is a symmetric property</p>
499: * @return True if this this property has an <code>rdf:type</code> that defines it as a symmetric property.
500: */
501: public boolean isSymmetricProperty();
502:
503: /**
504: * <p>Answer the property that has declared itself to be the inverse of this property,
505: * if any such property is defined.
506: * If no such property is defined,
507: * return null. If more than one inverse is defined, return an abritrary selection.</p>
508: * <p>Note that this method is slightly different from {@link #getInverseOf}. Suppose that
509: * we have:</p>
510: * <pre>
511: * :p an owl:ObjectProperty.
512: * :q an owl:ObjectProperty.
513: * :p owl:inverseOf :q.
514: * </pre>
515: * <p>Then, <code>getInverse()</code> called on the <code>OntProperty</code>
516: * corresponding to <code>q</code> will return <code>p</code>, since <code>q</code>
517: * declares itself to be <code>p</code>'s inverse. However, <em>unless an OWL
518: * reasoner is used</em>, calling <code>getInverse()</code> on <code>p</code>
519: * will return <code>null</code>. Conversely, absent a reasoner,
520: * <code>{@link #getInverseOf}</code> on <code>p</code> will return <code>q</code>,
521: * but will return null when called on <code>q</code>. In the presence of an OWL
522: * reasoner, <code>getInverse()</code> and <code>getInverseOf()</code> are
523: * equivalent, since <code>owl:inverseOf</code> is a symmetric property.
524: * </p>
525: *
526: * @return The property that is the inverse of this property, or null.
527: */
528: public OntProperty getInverse();
529:
530: /**
531: * <p>Answer an iterator over the properties that are defined to be inverses of this property.</p>
532: * @return An iterator over the properties that declare themselves the <code>inverseOf</code> this property.
533: */
534: public ExtendedIterator listInverse();
535:
536: /**
537: * <p>Answer true if there is at least one inverse property for this property.</p>
538: * @return True if property has an inverse.
539: */
540: public boolean hasInverse();
541:
542: // Miscellaneous other properties
543:
544: /**
545: * <p>Answer an iterator of all of the classes in this ontology, such
546: * that each returned class has this property as one of its
547: * properties in {@link OntClass#listDeclaredProperties()}. This
548: * simulates a frame-like view of properties and classes; for more
549: * details see the <a href="../../../../../../how-to/rdf-frames.html">
550: * RDF frames how-to</a>.</p>
551: * @return An iterator of the classes having this property as one
552: * of their declared properties
553: */
554: public ExtendedIterator listDeclaringClasses();
555:
556: /**
557: * <p>Answer an iterator of all of the classes in this ontology, such
558: * that each returned class has this property as one of its
559: * properties in {@link OntClass#listDeclaredProperties(boolean)}. This
560: * simulates a frame-like view of properties and classes; for more
561: * details see the <a href="../../../../../../how-to/rdf-frames.html">
562: * RDF frames how-to</a>.</p>
563: * @param direct If true, use only </em>direct</em> associations between classes
564: * and properties
565: * @return An iterator of the classes having this property as one
566: * of their declared properties
567: */
568: public ExtendedIterator listDeclaringClasses(boolean direct);
569:
570: /**
571: * <p>Answer an iterator over any restrictions that mention this property as
572: * the property that the restriction is adding some constraint to. For example:</p>
573: * <code><pre><owl:Restriction>
574: * <owl:onProperty rdf:resource="#childOf" />
575: * <owl:hasValue rdf:resource="#ian" />
576: * </owl:Restriction></pre></code>
577: * <p><strong>Note</strong> that any such restrictions do not affect the global
578: * semantics of this property itself. Restrictions define new class expressions,
579: * and the property constraints are local to that class expression. This method
580: * is provided as a convenience to assist callers to navigate the relationships
581: * in the model.</p>
582: * @return An iterator whose values are the restrictions from the local
583: * model that reference this property.
584: */
585: public ExtendedIterator listReferringRestrictions();
586:
587: }
588:
589: /*
590: (c) Copyright 2002, 2003, 2004, 2005, 2006, 2007, 2008 Hewlett-Packard Development Company, LP
591: All rights reserved.
592:
593: Redistribution and use in source and binary forms, with or without
594: modification, are permitted provided that the following conditions
595: are met:
596:
597: 1. Redistributions of source code must retain the above copyright
598: notice, this list of conditions and the following disclaimer.
599:
600: 2. Redistributions in binary form must reproduce the above copyright
601: notice, this list of conditions and the following disclaimer in the
602: documentation and/or other materials provided with the distribution.
603:
604: 3. The name of the author may not be used to endorse or promote products
605: derived from this software without specific prior written permission.
606:
607: THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
608: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
609: OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
610: IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
611: INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
612: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
613: DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
614: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
615: (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
616: THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
617: */
|