Interface OntRelationalProperty

All Superinterfaces:
org.apache.jena.graph.FrontsNode, OntObject, OntProperty, org.apache.jena.rdf.model.RDFNode, org.apache.jena.rdf.model.Resource
All Known Subinterfaces:
OntDataProperty, OntObjectProperty, OntObjectProperty.Inverse, OntObjectProperty.Named
All Known Implementing Classes:
OntDataPropertyImpl, OntObjectPropertyImpl, OntObjectPropertyImpl.InversePropertyImpl, OntObjectPropertyImpl.NamedImpl

public interface OntRelationalProperty extends OntProperty
A common (abstract) interface for any Ontology Data and Object Property expressions. In OWL2 terms it is any Property Expression minus Annotation Property.
  • Method Details

    • subProperties

      Stream<? extends OntRelationalProperty> subProperties(boolean direct)
      Answers a Stream over all the properties that are declared to be sub-properties of this property. Each element of the Stream will have the same type as this property instance: if it is datatype property the method will return only data properties, etc. The parameter direct controls selectivity over the properties that appear in the Stream. Consider the following scenario:
      
        :D rdfs:subPropertyOf :C .
        :C rdfs:subPropertyOf :A .
        :B rdfs:subPropertyOf :A .
       
      (so A has two sub-properties, B and C, and C has sub-property D) In a raw model, with no inference support, listing the sub-property of A will answer B and C. In an inferencing model, rdfs:subPropertyOf is known to be transitive, so the sub-properties iterator will include D. The direct sub-properties are those members of the closure of the subPropertyOf relation, restricted to properties that cannot be reached by a longer route, i.e., the ones that are directly adjacent to the given root. Thus, the direct sub-properties of A are B and C only, and not D - even in an inferencing graph. Note that this is different from the entailments from the raw graph. Suppose we add to this example:
      
         :D rdfs:subPropertyOf :A.
       
      Now, in the raw graph, A has sub-property C. But the direct sub-properties of A remain B and C, since there is a longer path A-C-D that means that D is not a direct sub-property of A. The assertion in the raw graph that A has sub-property D is essentially redundant, since this can be inferred from the closure of the graph.
      Specified by:
      subProperties in interface OntProperty
      Parameters:
      direct - boolean if true answers the directly adjacent properties in the sub-property relation: i.e., eliminate any properties for which there is a longer route to reach that parent under the sub-property relation
      Returns:
      distinct Stream of data or object properties
      See Also:
    • superProperties

      Stream<? extends OntRelationalProperty> superProperties(boolean direct)
      Answers a Stream over all the properties that are declared to be super-properties of this property. Each element of the Stream will have the same type as this property instance: if it is datatype property the method will return only data properties, etc. The parameter direct controls selectivity over the properties that appear in the Stream. Consider the following scenario:
      
        :A rdfs:subPropertyOf :B .
        :A rdfs:subPropertyOf :C .
        :C rdfs:subPropertyOf :D .
        
      (so A has super-property B and C, and C has super-property D) In a raw model, with no inference support, listing the super-property of A will answer B and C. In an inferencing model, rdfs:subPropertyOf is known to be transitive, so the super-property iterator will include D. The direct super-properties are those members of the closure of the inverse-subPropertyOf relation, restricted to properties that cannot be reached by a longer route, i.e., the ones that are directly adjacent to the given root. Thus, the direct super-property of A are B and C only, and not D - even in an inferencing graph. Note that this is different from the entailments from the raw graph. Suppose we add to this example:
      
         :A rdfs:subPropertyOf :D .
       
      Now, in the raw graph, A has super-property B, C, D. But the direct super-property of A remain only B and C, since there is a longer path A-C-D that means that D is not a direct super-property of A. The assertion in the raw graph that A has super-property D is essentially redundant, since this can be inferred from the closure of the graph.
      Specified by:
      superProperties in interface OntProperty
      Parameters:
      direct - boolean: if true answers the directly adjacent properties in the super-property relation, i.e., eliminate any property for which there is a longer route to reach that parent under the super-property relation
      Returns:
      distinct Stream of data or object properties
      See Also:
    • ranges

      Stream<? extends OntObject> ranges()
      Lists all property ranges, i.e., all objects from statements with this property as a subject and rdfs:range as predicate.
      Specified by:
      ranges in interface OntProperty
      Returns:
      Stream of ontology objects
      See Also:
    • subProperties

      Stream<? extends OntRelationalProperty> subProperties()
      Lists all the properties that are declared to be sub-properties of this property (directly or indirectly). Note: the return elements have the same type as this instance.

      Equivalent to this.subProperties(false).

      Specified by:
      subProperties in interface OntProperty
      Returns:
      Stream of OntRelationalPropertys (object or data properties)
      See Also:
    • superProperties

      Stream<? extends OntRelationalProperty> superProperties()
      Lists all the properties that are declared to be super-properties of this property (directly or indirectly). Note: the return elements have the same type as this instance.

      Equivalent to this.superProperties(false).

      Specified by:
      superProperties in interface OntProperty
      Returns:
      Stream of OntRelationalPropertys (object or data properties)
      See Also:
    • disjointProperties

      Stream<? extends OntRelationalProperty> disjointProperties()
      Lists all properties that are disjoint with this property. In other words, returns all objects from statements of the form P owl:propertyDisjointWith R, where P is this property and R is a returned property of the same type.
      Returns:
      Stream of OntRelationalPropertys - object or data properties
      See Also:
    • equivalentProperties

      Stream<? extends OntRelationalProperty> equivalentProperties()
      Lists all properties that equivalent to this one. In other words, returns all objects from statements of the form P owl:equivalentProperty R, where P is this property and R is a returned property of the same type.
      Returns:
      Stream of OntRelationalPropertys - object or data properties
    • negativeAssertions

      Stream<? extends OntNegativeAssertion<?,?>> negativeAssertions()
      Lists all negative property assertions. A negative property assertion is anonymous resource with the type owl:NegativePropertyAssertion that has a data or object property expression as an object on the predicate owl:assertionProperty.
      Returns:
      Stream of OntNegativeAssertion
    • addDomain

      Adds a statement with the RDFS.domain as predicate, this property as a subject, and the specified class expression as an object.
      Parameters:
      ce - OntClass, not null
      Returns:
      this instance to allow cascading calls
      See Also:
    • removeDomain

      OntRelationalProperty removeDomain(org.apache.jena.rdf.model.Resource domain)
      Removes the specified domain resource (predicate is rdfs:domain), including the corresponding statement's annotations. No-op in case no such domain is found. Removes all domains if null is specified.
      Specified by:
      removeDomain in interface OntProperty
      Parameters:
      domain - Resource, or null to remove all domains
      Returns:
      this instance to allow cascading calls
    • removeRange

      OntRelationalProperty removeRange(org.apache.jena.rdf.model.Resource range)
      Removes the specified range resource (predicate is rdfs:range), including the corresponding statement's annotations. No-op in case no such range is found. Removes all ranges if null is specified.
      Specified by:
      removeRange in interface OntProperty
      Parameters:
      range - Resource, or null to remove all ranges
      Returns:
      this instance to allow cascading calls
    • removeSuperProperty

      OntRelationalProperty removeSuperProperty(org.apache.jena.rdf.model.Resource property)
      Removes the specified super property (predicate is rdfs:subPropertyOf), including the corresponding statement's annotations. No-op in case no such super-property is found. If null is specified, the method removes all triples with predicate rdfs:subPropertyOf and this property as a subject.
      Specified by:
      removeSuperProperty in interface OntProperty
      Parameters:
      property - Resource or null to remove all direct super properties
      Returns:
      this instance to allow cascading calls
    • removeEquivalentProperty

      OntRelationalProperty removeEquivalentProperty(org.apache.jena.rdf.model.Resource property)
      Removes the equivalent property statement (a statement with the predicate owl:equivalentProperty) for the specified resource (considered as an object), including the corresponding statement's annotations. No-op in case no such equivalent property relationship is found. Removes all triples with predicate owl:equivalentProperty (and all theirs annotation triples) if null is given.
      Parameters:
      property - Resource or null to remove all equivalent properties
      Returns:
      this instance to allow cascading calls
    • removeDisjointProperty

      OntRelationalProperty removeDisjointProperty(org.apache.jena.rdf.model.Resource property)
      Removes the owl:propertyDisjointWith statement (a statement with the predicate owl:propertyDisjointWith) for the specified resource (considered as an object), including the corresponding statement's annotations. No-op in case no such disjoint property relationship is found. Removes all triples with predicate owl:propertyDisjointWith (and all theirs annotation triples) if null is given.
      Parameters:
      property - Resource or null to remove all disjoint properties
      Returns:
      this instance to allow cascading calls
      See Also:
    • referringRestrictions

      default Stream<OntClass.Restriction> referringRestrictions()
      Answers a Stream over any restrictions that mention this property as the property that the restriction is adding some constraint to. For example:
       
       _:x rdf:type owl:Restriction.
       _:x owl:onProperty P.
       _:x owl:qualifiedCardinality n.
       _:x owl:onClass C.
       
       
      Note that any such restrictions do not affect the global semantics of this property itself. Restrictions define new class expressions, and the property constraints are local to that class expression. This method is provided as a convenience to assist callers to navigate the relationships in the model.
      Returns:
      a Stream whose values are the restrictions from the local model that reference this property.
    • domains

      default Stream<OntClass> domains()
      Lists all the declared domain class expressions of this property expression. In other words, returns the right-hand sides of statement P rdfs:domain C, where P is this property expression.
      Specified by:
      domains in interface OntProperty
      Returns:
      Stream of class expressions
      See Also:
    • domains

      default Stream<OntClass> domains(boolean direct)
      Gets all direct or indirect domains that present in RDF graph. Indirect domains are calculated using OntClass.superClasses(true) relationship. For example, consider the following statements (only people can have names):
       
       :Primate rdf:type owl:Class .
       :Person rdf:type owl:Class .
       :hasName rdf:type owl:DatatypeProperty .
       :hasName rdfs:domain :Person .
       :Person rdfs:subClassOf :Primate .
       
       
      from these statements it can be derived that only primates can have names (which does not mean that all primates have names):
       
       :hasName rdfs:domain :Primate .
       
       
      The same is true for object properties: if "only people can have dogs" then "only primates can have dogs"
      Parameters:
      direct - if true the method behaves the same as domains()
      Returns:
      Stream of class expressions, distinct
    • addFunctionalDeclaration

      default OntStatement addFunctionalDeclaration()
      Creates the P rdf:type owl:FunctionalProperty property declaration statement, where P is this property.
      Returns:
      OntStatement to allow the subsequent addition of annotations
      See Also:
    • isFunctional

      default boolean isFunctional()
      Answers true iff it is a functional (data or object) property expression. A functional property is defined by the statement P rdf:type owl:FunctionalProperty, where P is this property expression.
      Returns:
      boolean
    • setFunctional

      OntRelationalProperty setFunctional(boolean functional)
      Adds or removes owl:FunctionalProperty declaration for this property according to the given boolean flag. Note: the statement is removed along with all its annotations.
      Parameters:
      functional - true if should be functional
      Returns:
      this instance to allow cascading calls
      See Also:
    • getModel

      OntModel getModel()
      Returns the ontology model associated with this resource. If the Resource was not created by a Model, the result may be null.
      Specified by:
      getModel in interface org.apache.jena.rdf.model.RDFNode
      Returns:
      OntModel
    • isLocal

      boolean isLocal()
      Determines if this Ontology Resource is locally defined. This means that the resource definition (i.e., a the root statement) belongs to the base ontology graph. If the ontology contains subgraphs (which should match owl:imports in OWL) and the resource is defined in one of them, than this method called from top-level interface will return false.
      Returns:
      true if this resource is local to the base model graph.
    • getAs

      default <X extends org.apache.jena.rdf.model.RDFNode> X getAs(Class<X> type)
      Safely converts this RDF resource to the given type interface, if it is possible. Otherwise, returns null. A calling of this method is effectively equivalent to the expression this.canAs(type) ? this.as(type) : null.
      Type Parameters:
      X - any subtype of RDFNode
      Parameters:
      type - a Class-type of the desired RDF view (interface)
      Returns:
      an instance of the type X or null
      See Also:
      • RDFNode.as(Class)
      • RDFNode.canAs(Class)