1   /*
2    * OClass.java
3    *
4    * Copyright (c) 2002, 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   *  $Id: OClass.java,v 1.7 2004/07/23 17:45:30 kalina Exp $*
16   */
17  
18   package gate.creole.ontology;
19  
20   import java.util.Set;
21  
22  public interface OClass extends TClass {
23  
24    /** Indicates that these are disjoint classes */
25    public void setDisjointWith(OClass theClass);
26  
27    /** Indicates that these classes are the same */
28    public void setSameClassAs(OClass theClass);
29  
30    /** Returns a set of all classes that are disjoint with ours. Null if
31     *  no such classes.
32     */
33    public Set getDisjointClasses();
34  
35    /** Returns a set of all classes that are the same as ours. Null if
36     *  no such classes.
37     */
38    public Set getSameClasses();
39  
40    /**
41     * Returns a set of all KBProperty (ako relations) for which this class is
42     * the domain (first predicate). The properties are associated with classes,
43     * not independent of them and attached via anonymous classes and restrictions
44     * as it is in DAML/OWL. Therefore our model is closer to the Protege
45     * frame-based model. The advantage of having this kind of model is that it
46     * can be generalised API both for Protege and DAML/OWL/RDF ontologies.
47     */
48    public Set getProperties();
49  
50    /**
51     * Returns the set of properties with the given name. The set elements are
52     * instances of KBProperty or sub-classes. The reason why we need a set
53     * is because a class can have more than one property with the same name
54     * but different ranges.
55     * @param name
56     * @return a {@link Set} value.
57     */
58    public Set getPropertiesByName(String name);
59  
60    /**
61     * This method supplies all KBProperty inherited from the superclasses of the
62     * given class. Null if no such properties exist.
63     * Note that to get all properties (both inherited and associated with the
64     * current class) one needs to call both getInheritedProperties and
65     * getProperties.
66     */
67    public Set getInheritedProperties();
68  
69  }