Property.java |
1 /* 2 * Property.java 3 * 4 * Copyright (c) 2005, The University of Sheffield. 5 * 6 * This file is part of GATE (see http://gate.ac.uk/), and is free 7 * software, licenced under the GNU Library General Public License, 8 * Version 2, June1991. 9 * 10 * A copy of this licence is included in the distribution in the file 11 * licence.html, and is also available at http://gate.ac.uk/gate/licence.html. 12 * 13 * Kalina Bontcheva 11/2003 14 * 15 * 16 * $Id: Property.java,v 1.6 2005/12/14 14:28:57 julien_nioche Exp $ 17 */ 18 package gate.creole.ontology; 19 20 import java.util.Set; 21 22 /** 23 * This interface defines an ontology property and is the top level interface 24 * for all types of ontological properties. 25 */ 26 public interface Property extends OntologyResource, OntologyConstants { 27 /** 28 * Add a samePropertyAs relation between the two properties. Each property has 29 * a set of these, so it is possible to have samePropertyAs relation between 30 * more than two properties. 31 * 32 * @param theProperty 33 */ 34 public void setSamePropertyAs(Property theProperty); 35 36 /** 37 * Returns a set of all KBProperty instances that are in SamePropertyAs 38 * relation with this property. Or null if there are no such properties. 39 * 40 * @return a {@link Set} value. 41 */ 42 public Set getSamePropertyAs(); 43 44 /** 45 * Adds a SubPropertyOf relation between the given property and this. 46 * 47 * @param property 48 */ 49 public void addSuperProperty(Property property); 50 51 /** 52 * Removes a SubPropertyOf relation between the given property and this. 53 * 54 * @param property 55 */ 56 public void removeSuperProperty(Property property); 57 58 /** 59 * Add a SuperPropertyOf relation between the given property and this. 60 * 61 * @param property 62 */ 63 public void addSubProperty(Property property); 64 65 /** 66 * Removes a SuperPropertyOf relation between the given property and this. 67 * 68 * @param property 69 */ 70 public void removeSubProperty(Property property); 71 72 /** 73 * Returns the set of domain restrictions for this property. 74 */ 75 public Set getDomain(); 76 77 /** 78 * Gets the set of range restrictions for this property. If no range has been 79 * set it returns an empty set. 80 * 81 * @return a set of {@link OClass} or {@link Class} objects. 82 */ 83 public Set getRange(); 84 85 /** 86 * Checks whether this property can apply to the provided instance 87 * 88 * @param instance 89 * the instance 90 * @return <tt>true</tt> if the property is valid for the instance. 91 */ 92 public boolean isValidDomain(OntologyResource instance); 93 94 /** 95 * 96 * @param value 97 * @return true if this value is compatible with the range restrictions on the 98 * property. False otherwise. 99 */ 100 public boolean isValidRange(Object value); 101 102 /** 103 * Answers whether this property is a functional property. Functional 104 * properties are the ones that can have at most one value for any given value 105 * from the domain. Both object properties and datatype properties can be 106 * functional. 107 * 108 * @return <tt>true</tt> if this property is functional. 109 */ 110 public boolean isFunctional(); 111 112 /** 113 * Sets the functional property flag on this property. 114 * 115 * @param functional 116 * <tt>true</tt> iff the property should be marked as functional. 117 */ 118 public void setFunctional(boolean functional); 119 120 /** 121 * Answers whether this property is an inverse functional property. Inverse 122 * functional properties are the ones that for any given domain value there 123 * can be at most one range value that is valid for this property. Both object 124 * properties and datatype properties can be inverse functional. 125 * 126 * @return <tt>true</tt> if this property is inverse functional. 127 */ 128 public boolean isInverseFunctional(); 129 130 /** 131 * Sets the inverse functional property flag on this property. 132 * 133 * @param inverseFunctional 134 * <tt>true</tt> iff the property should be marked as inverse 135 * functional. 136 */ 137 public void setInverseFunctional(boolean inverseFunctional); 138 139 /** 140 * Gets the set of super-properties for this property. 141 * 142 * @param {@link OntologyConstants#DIRECT_CLOSURE} 143 * for direct super-properties only or 144 * {@link OntologyConstants#TRANSITIVE_CLOSURE} for all the 145 * super-properties. 146 * @return a set of {@link Property} values. 147 */ 148 public Set getSuperProperties(byte closure); 149 150 /** 151 * Gets the set of sub-properties for this property. 152 * 153 * @param {@link OntologyConstants#DIRECT_CLOSURE} 154 * for direct sub-properties only or 155 * {@link OntologyConstants#TRANSITIVE_CLOSURE} for all the 156 * sub-properties. 157 * @return a set of {@link Property} values. 158 */ 159 public Set getSubProperties(byte closure); 160 }