Class OntClassImpl

All Implemented Interfaces:
FrontsNode, OntClass, OntResource, RDFNode, Resource
Direct Known Subclasses:
BooleanClassDescriptionImpl, ComplementClassImpl, EnumeratedClassImpl, RestrictionImpl

public class OntClassImpl extends OntResourceImpl implements OntClass

Implementation of the ontology abstraction representing ontology classes.

  • Field Details

    • factory

      public static Implementation factory
      A factory for generating OntClass facets from nodes in enhanced graphs. Note: should not be invoked directly by user code: use as() instead.
  • Constructor Details

    • OntClassImpl

      public OntClassImpl(Node n, EnhGraph g)

      Construct an ontology class node represented by the given node in the given graph.

      Parameters:
      n - The node that represents the resource
      g - The enh graph that contains n
  • Method Details

    • setSuperClass

      public void setSuperClass(Resource cls)

      Assert that this class is sub-class of the given class. Any existing statements for subClassOf will be removed.

      Specified by:
      setSuperClass in interface OntClass
      Parameters:
      cls - The class that this class is a sub-class of
      Throws:
      ProfileException - If the Profile.SUB_CLASS_OF() property is not supported in the current language profile.
    • addSuperClass

      public void addSuperClass(Resource cls)

      Add a super-class of this class.

      Specified by:
      addSuperClass in interface OntClass
      Parameters:
      cls - A class that is a super-class of this class.
      Throws:
      ProfileException - If the Profile.SUB_CLASS_OF() property is not supported in the current language profile.
    • getSuperClass

      public OntClass getSuperClass()

      Answer a class that is the super-class of this class. If there is more than one such class, an arbitrary selection is made.

      Specified by:
      getSuperClass in interface OntClass
      Returns:
      A super-class of this class
      Throws:
      ProfileException - If the Profile.SUB_CLASS_OF() property is not supported in the current language profile.
    • listSuperClasses

      public ExtendedIterator<OntClass> listSuperClasses()

      Answer an iterator over all of the classes that are declared to be super-classes of this class. Each element of the iterator will be an OntClass.

      Specified by:
      listSuperClasses in interface OntClass
      Returns:
      An iterator over the super-classes of this class.
      Throws:
      ProfileException - If the Profile.SUB_CLASS_OF() property is not supported in the current language profile.
    • listSuperClasses

      public ExtendedIterator<OntClass> listSuperClasses(boolean direct)

      Answer an iterator over all of the classes that are declared to be super-classes of this class. Each element of the iterator will be an OntClass. See listSubClasses(boolean) for a full explanation of the direct parameter.

      Specified by:
      listSuperClasses in interface OntClass
      Parameters:
      direct - If true, only answer the direcly adjacent classes in the super-class relation: i.e. eliminate any class for which there is a longer route to reach that child under the super-class relation.
      Returns:
      an iterator over the resources representing this class's sub-classes.
      Throws:
      ProfileException - If the Profile.SUB_CLASS_OF() property is not supported in the current language profile.
    • hasSuperClass

      public boolean hasSuperClass(Resource cls)

      Answer true if the given class is a super-class of this class.

      Specified by:
      hasSuperClass in interface OntClass
      Parameters:
      cls - A class to test.
      Returns:
      True if the given class is a super-class of this class.
      Throws:
      ProfileException - If the Profile.SUB_CLASS_OF() property is not supported in the current language profile.
    • hasSuperClass

      public boolean hasSuperClass()

      Answer true if this class has any super-class in the model. Note that when using a reasoner, all OWL classes have owl:Thing as a super-class.

      Specified by:
      hasSuperClass in interface OntClass
      Returns:
      True if this class has any known super-class.
      Throws:
      ProfileException - If the Profile.SUB_CLASS_OF() property is not supported in the current language profile.
    • hasSuperClass

      public boolean hasSuperClass(Resource cls, boolean direct)

      Answer true if the given class is a super-class of this class. See listSubClasses(boolean) for a full explanation of the direct parameter.

      Specified by:
      hasSuperClass in interface OntClass
      Parameters:
      cls - A class to test.
      direct - If true, only search the classes that are directly adjacent to this class in the class hierarchy.
      Returns:
      True if the given class is a super-class of this class.
      Throws:
      ProfileException - If the Profile.SUB_CLASS_OF() property is not supported in the current language profile.
    • removeSuperClass

      public void removeSuperClass(Resource cls)

      Remove the given class from the super-classes of this class. If this statement is not true of the current model, nothing happens.

      Specified by:
      removeSuperClass in interface OntClass
      Parameters:
      cls - A class to be removed from the super-classes of this class
      Throws:
      ProfileException - If the Profile.SUB_CLASS_OF() class is not supported in the current language profile.
    • setSubClass

      public void setSubClass(Resource cls)

      Assert that this class is super-class of the given class. Any existing statements for subClassOf on prop will be removed.

      Specified by:
      setSubClass in interface OntClass
      Parameters:
      cls - The class that is a sub-class of this class
      Throws:
      ProfileException - If the Profile.SUB_CLASS_OF() property is not supported in the current language profile.
    • addSubClass

      public void addSubClass(Resource cls)

      Add a sub-class of this class.

      Specified by:
      addSubClass in interface OntClass
      Parameters:
      cls - A class that is a sub-class of this class.
      Throws:
      ProfileException - If the Profile.SUB_CLASS_OF() property is not supported in the current language profile.
    • getSubClass

      public OntClass getSubClass()

      Answer a class that is the sub-class of this class. If there is more than one such class, an arbitrary selection is made. If there is no such class, return null.

      Specified by:
      getSubClass in interface OntClass
      Returns:
      A sub-class of this class or null
      Throws:
      ProfileException - If the Profile.SUB_CLASS_OF() property is not supported in the current language profile.
    • listSubClasses

      public ExtendedIterator<OntClass> listSubClasses()

      Answer an iterator over all of the classes that are declared to be sub-classes of this class. Each element of the iterator will be an OntClass.

      Specified by:
      listSubClasses in interface OntClass
      Returns:
      An iterator over the sub-classes of this class.
      Throws:
      ProfileException - If the Profile.SUB_CLASS_OF() property is not supported in the current language profile.
    • listSubClasses

      public ExtendedIterator<OntClass> listSubClasses(boolean direct)

      Answer an iterator over the classes that are declared to be sub-classes of this class. Each element of the iterator will be an OntClass. The distinguishing extra parameter for this method is the flag direct that allows some selectivity over the classes that appear in the iterator. Consider the following scenario: :B rdfs:subClassOf :A. :C rdfs:subClassOf :A. :D rdfs:subClassof :C. (so A has two sub-classes, B and C, and C has sub-class D). In a raw model, with no inference support, listing the sub-classes of A will answer B and C. In an inferencing model, rdfs:subClassOf is known to be transitive, so the sub-classes iterator will include D. The direct sub-classes are those members of the closure of the subClassOf relation, restricted to classes that cannot be reached by a longer route, i.e. the ones that are directly adjacent to the given root. Thus, the direct sub-classes of A are B and C only, and not D - even in an inferencing graph. Note that this is not the same as the entailments from the raw graph. Suppose we add to this example: :D rdfs:subClassof :A. Now, in the raw graph, A has sub-class C. But the direct sub-classes of A remain B and C, since there is a longer path A-C-D that means that D is not a direct sub-class of A. The assertion in the raw graph that A has sub-class D is essentially redundant, since this can be inferred from the closure of the graph.

      Note: This is a change from the behaviour of Jena 1, which took a parameter closed to compute the closure over transitivity and equivalence of sub-classes. The closure capability in Jena2 is determined by the inference engine that is wrapped with the ontology model. The direct parameter is provided to allow, for exmaple, a level-by-level traversal of the class hierarchy, starting at some given root.

      Specified by:
      listSubClasses in interface OntClass
      Parameters:
      direct - If true, only answer the direcly adjacent classes in the sub-class relation: i.e. eliminate any class for which there is a longer route to reach that child under the sub-class relation.
      Returns:
      an iterator over the resources representing this class's sub-classes
      Throws:
      ProfileException - If the Profile.SUB_CLASS_OF() property is not supported in the current language profile.
    • hasSubClass

      public boolean hasSubClass(Resource cls)

      Answer true if the given class is a sub-class of this class.

      Specified by:
      hasSubClass in interface OntClass
      Parameters:
      cls - A class to test.
      Returns:
      True if the given class is a sub-class of this class.
      Throws:
      ProfileException - If the Profile.SUB_CLASS_OF() property is not supported in the current language profile.
    • hasSubClass

      public boolean hasSubClass()

      Answer true if this class has any sub-class in the model. Note that when using a reasoner, all OWL classes have owl:Nothing as a sub-class.

      Specified by:
      hasSubClass in interface OntClass
      Returns:
      True if this class has any known sub-class.
      Throws:
      ProfileException - If the Profile.SUB_CLASS_OF() property is not supported in the current language profile.
    • hasSubClass

      public boolean hasSubClass(Resource cls, boolean direct)

      Answer true if the given class is a sub-class of this class. See listSubClasses(boolean) for a full explanation of the direct parameter.

      Specified by:
      hasSubClass in interface OntClass
      Parameters:
      cls - A class to test.
      direct - If true, only search the classes that are directly adjacent to this class in the class hierarchy.
      Returns:
      True if the given class is a sub-class of this class.
      Throws:
      ProfileException - If the Profile.SUB_CLASS_OF() property is not supported in the current language profile.
    • removeSubClass

      public void removeSubClass(Resource cls)

      Remove the given class from the sub-classes of this class. If this statement is not true of the current model, nothing happens.

      Specified by:
      removeSubClass in interface OntClass
      Parameters:
      cls - A class to be removed from the sub-classes of this class
      Throws:
      ProfileException - If the Profile.SUB_CLASS_OF() class is not supported in the current language profile.
    • setEquivalentClass

      public void setEquivalentClass(Resource cls)

      Assert that the given class is equivalent to this class. Any existing statements for equivalentClass will be removed.

      Specified by:
      setEquivalentClass in interface OntClass
      Parameters:
      cls - The class that this class is a equivalent to.
      Throws:
      ProfileException - If the Profile.EQUIVALENT_CLASS() property is not supported in the current language profile.
    • addEquivalentClass

      public void addEquivalentClass(Resource cls)

      Add a class that is equivalent to this class.

      Specified by:
      addEquivalentClass in interface OntClass
      Parameters:
      cls - A class that is equivalent to this class.
      Throws:
      ProfileException - If the Profile.EQUIVALENT_CLASS() property is not supported in the current language profile.
    • getEquivalentClass

      public OntClass getEquivalentClass()

      Answer a class that is equivalent to this class. If there is more than one such class, an arbitrary selection is made.

      Specified by:
      getEquivalentClass in interface OntClass
      Returns:
      A class equivalent to this class
      Throws:
      ProfileException - If the Profile.EQUIVALENT_CLASS() property is not supported in the current language profile.
    • listEquivalentClasses

      public ExtendedIterator<OntClass> listEquivalentClasses()

      Answer an iterator over all of the classes that are declared to be equivalent classes to this class. Each element of the iterator will be an OntClass.

      Specified by:
      listEquivalentClasses in interface OntClass
      Returns:
      An iterator over the classes equivalent to this class.
      Throws:
      ProfileException - If the Profile.EQUIVALENT_CLASS() property is not supported in the current language profile.
    • hasEquivalentClass

      public boolean hasEquivalentClass(Resource cls)

      Answer true if the given class is equivalent to this class.

      Specified by:
      hasEquivalentClass in interface OntClass
      Parameters:
      cls - A class to test for
      Returns:
      True if the given property is equivalent to this class.
      Throws:
      ProfileException - If the Profile.EQUIVALENT_CLASS() property is not supported in the current language profile.
    • removeEquivalentClass

      public void removeEquivalentClass(Resource cls)

      Remove the statement that this class and the given class are equivalent. If this statement is not true of the current model, nothing happens.

      Specified by:
      removeEquivalentClass in interface OntClass
      Parameters:
      cls - A class that may be declared to be equivalent to this class, and which is no longer equivalent
      Throws:
      ProfileException - If the Profile.EQUIVALENT_CLASS() property is not supported in the current language profile.
    • setDisjointWith

      public void setDisjointWith(Resource cls)

      Assert that this class is disjoint with the given class. Any existing statements for disjointWith will be removed.

      Specified by:
      setDisjointWith in interface OntClass
      Parameters:
      cls - The property that this class is disjoint with.
      Throws:
      ProfileException - If the Profile.DISJOINT_WITH() property is not supported in the current language profile.
    • addDisjointWith

      public void addDisjointWith(Resource cls)

      Add a class that this class is disjoint with.

      Specified by:
      addDisjointWith in interface OntClass
      Parameters:
      cls - A class that has no instances in common with this class.
      Throws:
      ProfileException - If the Profile.DISJOINT_WITH() property is not supported in the current language profile.
    • getDisjointWith

      public OntClass getDisjointWith()

      Answer a class with which this class is disjoint. If there is more than one such class, an arbitrary selection is made.

      Specified by:
      getDisjointWith in interface OntClass
      Returns:
      A class disjoint with this class
      Throws:
      ProfileException - If the Profile.DISJOINT_WITH() property is not supported in the current language profile.
    • listDisjointWith

      public ExtendedIterator<OntClass> listDisjointWith()

      Answer an iterator over all of the classes that this class is declared to be disjoint with. Each element of the iterator will be an OntClass.

      Specified by:
      listDisjointWith in interface OntClass
      Returns:
      An iterator over the classes disjoint with this class.
      Throws:
      ProfileException - If the Profile.DISJOINT_WITH() property is not supported in the current language profile.
    • isDisjointWith

      public boolean isDisjointWith(Resource cls)

      Answer true if this class is disjoint with the given class.

      Specified by:
      isDisjointWith in interface OntClass
      Parameters:
      cls - A class to test
      Returns:
      True if the this class is disjoint with the the given class.
      Throws:
      ProfileException - If the Profile.DISJOINT_WITH() property is not supported in the current language profile.
    • removeDisjointWith

      public void removeDisjointWith(Resource cls)

      Remove the statement that this class and the given class are disjoint. If this statement is not true of the current model, nothing happens.

      Specified by:
      removeDisjointWith in interface OntClass
      Parameters:
      cls - A class that may be declared to be disjoint with this class, and which is no longer disjoint
      Throws:
      ProfileException - If the Profile.DISJOINT_WITH() property is not supported in the current language profile.
    • listDeclaredProperties

      public ExtendedIterator<OntProperty> listDeclaredProperties()
      Equivalent to calling listDeclaredProperties(boolean) with default value direct = false.
      Specified by:
      listDeclaredProperties in interface OntClass
    • listDeclaredProperties

      public ExtendedIterator<OntProperty> listDeclaredProperties(boolean direct)

      Return an iterator over the properties associated with a frame-like view of this class. This captures an intuitive notion of the properties of a class. This can be useful in presenting an ontology class in a user interface, for example by automatically constructing a form to instantiate instances of the class. The properties in the frame-like view of the class are determined by comparing the domain of properties in this class's OntModel with the class itself. See: Presenting RDF as frames for more details.

      Note that many cases of determining whether a property is associated with a class depends on RDFS or OWL reasoning. This method may therefore return complete results only in models that have an attached reasoner.

      Specified by:
      listDeclaredProperties in interface OntClass
      Parameters:
      direct - If true, restrict the properties returned to those directly associated with this class. If false, the properties of super-classes of this class will not be listed among the declared properties of this class.
      Returns:
      An iteration of the properties that are associated with this class by their domain.
    • hasDeclaredProperty

      public boolean hasDeclaredProperty(Property p, boolean direct)

      Answer true if the given property is one of the declared properties of this class. For details, see listDeclaredProperties(boolean).

      Specified by:
      hasDeclaredProperty in interface OntClass
      Parameters:
      p - A property to test
      direct - If true, only direct associations between classes and properties are considered
      Returns:
      True if p is one of the declared properties of this class
    • listInstances

      public ExtendedIterator<Individual> listInstances()

      Answer an iterator over the individuals in the model that have this class among their types.

      Specified by:
      listInstances in interface OntClass
      Returns:
      An iterator over those instances that have this class as one of the classes to which they belong
    • listInstances

      public ExtendedIterator<Individual> listInstances(boolean direct)

      Answer an iterator over the individuals in the model that have this class among their types, optionally excluding sub-classes of this class.

      Specified by:
      listInstances in interface OntClass
      Parameters:
      direct - If true, only direct instances are counted (i.e. not instances of sub-classes of this class)
      Returns:
      An iterator over those instances that have this class as one of the classes to which they belong
    • createIndividual

      public Individual createIndividual()

      Answer a new individual that has this class as its rdf:type

      Specified by:
      createIndividual in interface OntClass
      Returns:
      A new anonymous individual that is an instance of this class
    • createIndividual

      public Individual createIndividual(String uri)

      Answer a new individual that has this class as its rdf:type

      Specified by:
      createIndividual in interface OntClass
      Parameters:
      uri - The URI of the new individual
      Returns:
      A new named individual that is an instance of this class
    • dropIndividual

      public void dropIndividual(Resource individual)

      Remove the given individual from the set of instances that are members of this class. This is effectively equivalent to the Individual.removeOntClass(org.apache.jena.rdf.model.Resource) method, but invoked via the class resource rather than via the individual resource.

      Specified by:
      dropIndividual in interface OntClass
      Parameters:
      individual - A resource denoting an individual that is no longer to be a member of this class
    • isHierarchyRoot

      public boolean isHierarchyRoot()

      Answer true if this class is one of the roots of the class hierarchy. This will be true if either (i) this class has owl:Thing as a direct super-class, or (ii) it has no declared super-classes (including anonymous class expressions).

      Specified by:
      isHierarchyRoot in interface OntClass
      Returns:
      True if this class is the root of the class hierarchy in the model it is attached to
    • asEnumeratedClass

      public EnumeratedClass asEnumeratedClass()

      Answer a view of this class as an enumerated class

      Specified by:
      asEnumeratedClass in interface OntClass
      Returns:
      This class, but viewed as an EnumeratedClass node
      Throws:
      ConversionException - if the class cannot be converted to an enumerated class given the lanuage profile and the current state of the underlying model.
    • asUnionClass

      public UnionClass asUnionClass()

      Answer a view of this class as a union class

      Specified by:
      asUnionClass in interface OntClass
      Returns:
      This class, but viewed as a UnionClass node
      Throws:
      ConversionException - if the class cannot be converted to a union class given the lanuage profile and the current state of the underlying model.
    • asIntersectionClass

      public IntersectionClass asIntersectionClass()

      Answer a view of this class as an intersection class

      Specified by:
      asIntersectionClass in interface OntClass
      Returns:
      This class, but viewed as an IntersectionClass node
      Throws:
      ConversionException - if the class cannot be converted to an intersection class given the lanuage profile and the current state of the underlying model.
    • asComplementClass

      public ComplementClass asComplementClass()

      Answer a view of this class as a complement class

      Specified by:
      asComplementClass in interface OntClass
      Returns:
      This class, but viewed as a ComplementClass node
      Throws:
      ConversionException - if the class cannot be converted to a complement class given the lanuage profile and the current state of the underlying model.
    • asRestriction

      public Restriction asRestriction()

      Answer a view of this class as a restriction class expression

      Specified by:
      asRestriction in interface OntClass
      Returns:
      This class, but viewed as a Restriction node
      Throws:
      ConversionException - if the class cannot be converted to a restriction given the lanuage profile and the current state of the underlying model.
    • isEnumeratedClass

      public boolean isEnumeratedClass()

      Answer true if this class is an enumerated class expression

      Specified by:
      isEnumeratedClass in interface OntClass
      Returns:
      True if this is an enumerated class expression
    • isUnionClass

      public boolean isUnionClass()

      Answer true if this class is a union class expression

      Specified by:
      isUnionClass in interface OntClass
      Returns:
      True if this is a union class expression
    • isIntersectionClass

      public boolean isIntersectionClass()

      Answer true if this class is an intersection class expression

      Specified by:
      isIntersectionClass in interface OntClass
      Returns:
      True if this is an intersection class expression
    • isComplementClass

      public boolean isComplementClass()

      Answer true if this class is a complement class expression

      Specified by:
      isComplementClass in interface OntClass
      Returns:
      True if this is a complement class expression
    • isRestriction

      public boolean isRestriction()

      Answer true if this class is a property restriction

      Specified by:
      isRestriction in interface OntClass
      Returns:
      True if this is a restriction
    • convertToEnumeratedClass

      public EnumeratedClass convertToEnumeratedClass(RDFList individuals)

      Answer a view of this class as an enumeration of the given individuals.

      Specified by:
      convertToEnumeratedClass in interface OntClass
      Parameters:
      individuals - A list of the individuals that will comprise the permitted values of this class converted to an enumeration
      Returns:
      This ontology class, converted to an enumeration of the given individuals
    • convertToIntersectionClass

      public IntersectionClass convertToIntersectionClass(RDFList classes)

      Answer a view of this class as an intersection of the given classes.

      Specified by:
      convertToIntersectionClass in interface OntClass
      Parameters:
      classes - A list of the classes that will comprise the operands of the intersection
      Returns:
      This ontology class, converted to an intersection of the given classes
    • convertToUnionClass

      public UnionClass convertToUnionClass(RDFList classes)

      Answer a view of this class as a union of the given classes.

      Specified by:
      convertToUnionClass in interface OntClass
      Parameters:
      classes - A list of the classes that will comprise the operands of the union
      Returns:
      This ontology class, converted to an union of the given classes
    • convertToComplementClass

      public ComplementClass convertToComplementClass(Resource cls)

      Answer a view of this class as an complement of the given class.

      Specified by:
      convertToComplementClass in interface OntClass
      Parameters:
      cls - An ontology classs that will be operand of the complement
      Returns:
      This ontology class, converted to an complement of the given class
    • convertToRestriction

      public Restriction convertToRestriction(Property prop)

      Answer a view of this class as an restriction on the given property.

      Specified by:
      convertToRestriction in interface OntClass
      Parameters:
      prop - A property this is the subject of a property restriction class expression
      Returns:
      This ontology class, converted to a restriction on the given property