RDFProperty.java
001 /*
002  *  RDFProperty.java
003  *
004  *  Niraj Aswani, 09/March/07
005  *
006  *  $Id: RDFProperty.html,v 1.0 2007/03/09 16:13:01 niraj Exp $
007  */
008 package gate.creole.ontology;
009 
010 import gate.creole.ontology.OConstants.Closure;
011 import java.util.Set;
012 
013 /**
014  * RDFProperty is the top level property. Any property is an
015  * RDFProperty. Each sub property has their constraints on the type of
016  * values they can have for their domain and range. Typically
017  * RDFProperties (and not any of their sub properties) can have any
018  * OResource as its domain and range.
019  
020  @author Niraj Aswani
021  @author Johann Petrak
022  */
023 public interface RDFProperty extends OResource {
024 
025   /**
026    * Add an equivalentPropertyAs relation between the two properties. Each
027    * property has a set of these, so it is possible to have
028    * equivalentPropertyAs relation between more than two properties.
029    
030    @param theProperty
031    */
032   public void setEquivalentPropertyAs(RDFProperty theProperty);
033 
034   /**
035    * Returns a set of all RDFProperty instances that are in
036    * EquivalentPropertyAs relation with this property. Or null if there
037    * are no such properties.
038    
039    @return {@link Set} value.
040    */
041   public Set<RDFProperty> getEquivalentPropertyAs();
042 
043   /**
044    * Checks whether the property is Equivalent as the one provide.
045    
046    @param theProperty
047    @return true, if the provided property is same as the one provided,
048    *         otherwise - false.
049    */
050   public boolean isEquivalentPropertyAs(RDFProperty theProperty);
051 
052   /**
053    * Gets the set of super-properties for this property.
054    
055    @param closure {@link OConstants#DIRECT_CLOSURE} for direct
056    *          super-properties only or
057    *          {@link OConstants#TRANSITIVE_CLOSURE} for all the
058    *          super-properties.
059    @return a set of {@link RDFProperty} values.
060    @deprecated
061    */
062   @Deprecated
063   public Set<RDFProperty> getSuperProperties(byte closure);
064 
065   /**
066    * Gets the set of super-properties for this property.
067    
068    @param closure {@link OConstants.Closure#DIRECT_CLOSURE} for direct
069    *          super-properties only or
070    *          {@link OConstants.Closure#TRANSITIVE_CLOSURE} for all the
071    *          super-properties.
072    @return a set of {@link RDFProperty} values.
073    */
074   public Set<RDFProperty> getSuperProperties(Closure closure);
075 
076   /**
077    * Checks whether the property is a super property of the given
078    * property.
079    
080    @param theProperty
081    @param closure either OntologyConstants.DIRECT_CLOSURE or
082    *          OntologyConstants.TRANSTIVE_CLOSURE
083    @return true, if the property is a super property of the given
084    *         property, otherwise - false.
085    */
086   @Deprecated
087   public boolean isSuperPropertyOf(RDFProperty theProperty, byte closure);
088 
089   public boolean isSuperPropertyOf(RDFProperty theProperty, Closure closure);
090 
091   /**
092    * Add a SuperPropertyOf relation between the given property and this.
093    
094    @param property
095    */
096   public void addSubProperty(RDFProperty property);
097 
098   /**
099    * Removes a SuperPropertyOf relation between the given property and
100    * this.
101    
102    @param property
103    */
104   public void removeSubProperty(RDFProperty property);
105 
106   /**
107    * Gets the set of sub-properties for this property.
108    
109    @param closure {@link OConstants#DIRECT_CLOSURE} for direct sub-properties
110    *          only or {@link OConstants#TRANSITIVE_CLOSURE} for all the
111    *          sub-properties.
112    @return a set of {@link RDFProperty} values.
113    @deprecated
114    */
115   @Deprecated
116   public Set<RDFProperty> getSubProperties(byte closure);
117 
118   /**
119    * Gets the set of sub-properties for this property.
120    
121    @param closure {@link OConstants.Closure#DIRECT_CLOSURE} for direct sub-properties
122    *          only or {@link OConstants.Closure#TRANSITIVE_CLOSURE} for all the
123    *          sub-properties.
124    @return a set of {@link RDFProperty} values.
125    */
126   public Set<RDFProperty> getSubProperties(Closure closure);
127 
128   /**
129    * Checks whether the property is a sub property of the given
130    * property.
131    
132    @param theProperty
133    @param closure either OntologyConstants.DIRECT_CLOSURE or
134    *          OntologyConstants.TRANSTIVE_CLOSURE
135    @return true, if the property is a sub property of the given
136    *         property, otherwise - false.
137    */
138   @Deprecated
139   public boolean isSubPropertyOf(RDFProperty theProperty, byte closure);
140 
141   public boolean isSubPropertyOf(RDFProperty theProperty, Closure closure);
142 
143   /**
144    * Answers whether this property is a functional property. Functional
145    * properties are the ones that can have at most one value for any
146    * given value from the domain. Both object properties and datatype
147    * properties can be functional.
148    
149    @return <tt>true</tt> if this property is functional.
150    */
151   public boolean isFunctional();
152 
153   /**
154    * Sets the functional property flag on this property.
155    
156    @param functional <tt>true</tt> iff the property should be marked
157    *          as functional.
158    */
159   public void setFunctional(boolean functional);
160 
161   /**
162    * Answers whether this property is an inverse functional property.
163    * Inverse functional properties are the ones that for any given
164    * domain value there can be at most one range value that is valid for
165    * this property. Both object properties and datatype properties can
166    * be inverse functional.
167    
168    @return <tt>true</tt> if this property is inverse functional.
169    */
170   public boolean isInverseFunctional();
171 
172   /**
173    * Sets the inverse functional property flag on this property.
174    
175    @param inverseFunctional <tt>true</tt> iff the property should be
176    *          marked as inverse functional.
177    */
178   public void setInverseFunctional(boolean inverseFunctional);
179 
180   /**
181    * Checks whether the provided resource is compatible with the range
182    * restrictions on the property.
183    
184    @param aResource the Resource
185    @return true if this resource is compatible with the range
186    *         restrictions on the property. False otherwise.
187    @deprecated 
188    */
189   @Deprecated
190   public boolean isValidRange(OResource aResource);
191 
192   /**
193    * Checks whether the provided resource is compatible with the domain
194    * restrictions on the property.
195    
196    @param aResource the Resource
197    @return true if this resource is compatible with the domain
198    *         restrictions on the property. False otherwise.
199    @deprecated 
200    */
201   @Deprecated
202   public boolean isValidDomain(OResource aResource);
203 
204   /**
205    * Returns the set of domain restrictions for this property.
206    @deprecated 
207    */
208   @Deprecated
209   public Set<OResource> getDomain();
210 
211   /**
212    * Gets the set of range restrictions for this property. If no range
213    * has been set it returns an empty set.
214    
215    @return a set of {@link OClass} or {@link Class} objects.
216    @deprecated
217    */
218   @Deprecated
219   public Set<OResource> getRange();
220 
221   /**
222    * Get the URI of the property.
223    @return - an OURI object representing the URI of the property.
224    */
225   public OURI getOURI();
226 }