This is an automated email from the ASF dual-hosted git repository.

andy pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/jena.git


The following commit(s) were added to refs/heads/main by this push:
     new 554837afb5 GH-2674: changes in OntModelControls + change some profile 
checking - remove OntModelControls#ALLOW_ANONYMOUS_INDIVIDUALS & 
USE_OWL_INVERSE_OBJECT_PROPERTY_FEATURE (now control via OntPersonality) - 
rename USE_OWL_PROPERTY_INVERSE_OF_FEATURE -> 
USE_OWL_INVERSE_OBJECT_PROPERTIES_FEATURE - QL OntPersonality - remove 
OntIndividual.Anonymous - fix tests accordingly
554837afb5 is described below

commit 554837afb5ac303cddb7141177d39440ba795fc1
Author: sszuev <sss.z...@gmail.com>
AuthorDate: Sun Sep 1 14:33:20 2024 +0300

    GH-2674: changes in OntModelControls + change some profile checking
    - remove OntModelControls#ALLOW_ANONYMOUS_INDIVIDUALS & 
USE_OWL_INVERSE_OBJECT_PROPERTY_FEATURE (now control via OntPersonality)
    - rename USE_OWL_PROPERTY_INVERSE_OF_FEATURE -> 
USE_OWL_INVERSE_OBJECT_PROPERTIES_FEATURE
    - QL OntPersonality - remove OntIndividual.Anonymous
    - fix tests accordingly
---
 .../org/apache/jena/ontapi/OntModelControls.java   | 28 +++++--------
 .../org/apache/jena/ontapi/common/OntConfigs.java  | 28 ++++---------
 .../jena/ontapi/common/OntPersonalities.java       |  3 +-
 .../apache/jena/ontapi/impl/OntGraphModelImpl.java |  2 +-
 .../ontapi/impl/factories/OWL1ObjectFactories.java |  2 +-
 .../ontapi/impl/factories/OWL2ObjectFactories.java |  3 +-
 .../jena/ontapi/impl/factories/OntProperties.java  |  4 +-
 .../jena/ontapi/impl/objects/OntClassImpl.java     |  2 +-
 .../ontapi/impl/objects/OntObjectPropertyImpl.java | 11 ++---
 .../apache/jena/ontapi/OntModelOWL2ELSpecTest.java |  9 +++--
 .../apache/jena/ontapi/OntModelOWLSpecsTest.java   | 47 ++++++++++++++++------
 .../org/apache/jena/ontapi/OntPropertyTest.java    |  2 +-
 12 files changed, 68 insertions(+), 73 deletions(-)

diff --git 
a/jena-ontapi/src/main/java/org/apache/jena/ontapi/OntModelControls.java 
b/jena-ontapi/src/main/java/org/apache/jena/ontapi/OntModelControls.java
index 6f41894258..eef8b0befa 100644
--- a/jena-ontapi/src/main/java/org/apache/jena/ontapi/OntModelControls.java
+++ b/jena-ontapi/src/main/java/org/apache/jena/ontapi/OntModelControls.java
@@ -89,11 +89,6 @@ public enum OntModelControls {
      * This option is for compatibility with legacy {@code 
org.apache.jena.ontology.OntModel}.
      */
     ALLOW_GENERIC_CLASS_EXPRESSIONS,
-    /**
-     * Controls anonymous individuals.
-     * Some specifications (e.g., OWL2 EL) do not allow anonymous individuals.
-     */
-    ALLOW_ANONYMOUS_INDIVIDUALS,
     /**
      * Used while {@link OntModel#individuals()}.
      * If {@code true}, the class type is checked only by declaration
@@ -122,7 +117,7 @@ public enum OntModelControls {
     /**
      * Controls {@link OWL2#hasKey owl:hasKey} functionality.
      * If disabled,
-     * {@link OntClass#hasKeys() OntClass#hasKeys()} will return empty {@code 
Stream},
+     * {@link OntClass#hasKeys() OntClass#hasKeys()} will return an empty 
{@code Stream},
      * modification operations, such as
      * {@link OntClass#addHasKey(OntRelationalProperty...) 
OntClass#addHasKey(OntRelationalProperty...)},
      * will throw {@link OntJenaException.Unsupported 
OntJenaException.Unsupported} exception.
@@ -132,7 +127,7 @@ public enum OntModelControls {
      * Controls {@link OWL2#disjointUnionOf owl:disjointUnionOf} functionality.
      * If disabled,
      * {@link OntClass.Named#disjointUnions() OntClass.Named#disjointUnions()}
-     * will return empty {@code Stream}, modification operations, such as
+     * will return an empty {@code Stream}, modification operations, such as
      * {@link OntClass.Named#addDisjointUnion(OntClass...) 
OntClass.Named#addDisjointUnion(OntClass...)},
      * will throw {@link OntJenaException.Unsupported 
OntJenaException.Unsupported} exception.
      */
@@ -142,7 +137,7 @@ public enum OntModelControls {
      * Controls {@link OWL2#disjointWith owl:disjointWith} functionality.
      * If disabled,
      * {@link OntClass#disjoints() OntClass#disjoints()}
-     * will return empty {@code Stream}, modification operations, such as
+     * will return an empty {@code Stream}, modification operations, such as
      * {@link OntClass#addDisjointClass(OntClass) 
OntClass#addDisjointClass(OntClass)},
      * will throw {@link OntJenaException.Unsupported 
OntJenaException.Unsupported} exception.
      */
@@ -151,7 +146,7 @@ public enum OntModelControls {
      * Controls {@link OWL2#equivalentClass owl:equivalentClass} functionality.
      * If disabled,
      * {@link OntClass#equivalentClasses() OntClass#equivalentClasses()}
-     * will return empty {@code Stream}, modification operations, such as
+     * will return an empty {@code Stream}, modification operations, such as
      * {@link OntClass#addEquivalentClass(OntClass) 
OntClass#addEquivalentClass(OntClass)},
      * will throw {@link OntJenaException.Unsupported 
OntJenaException.Unsupported} exception.
      */
@@ -160,7 +155,7 @@ public enum OntModelControls {
      * Controls {@link OWL2#propertyDisjointWith owl:propertyDisjointWith} 
functionality.
      * If disabled,
      * {@link OntRelationalProperty#disjointProperties() 
OntRelationalProperty#disjointProperties()}
-     * will return empty {@code Stream}, modification operations, such as
+     * will return an empty {@code Stream}, modification operations, such as
      * {@link OntObjectProperty#addDisjointProperty(OntObjectProperty) 
OntObjectProperty#addDisjointProperty(OntObjectProperty)},
      * will throw {@link OntJenaException.Unsupported 
OntJenaException.Unsupported} exception.
      */
@@ -169,7 +164,7 @@ public enum OntModelControls {
      * Controls {@link OWL2#equivalentProperty owl:equivalentProperty} 
functionality.
      * If disabled,
      * {@link OntRelationalProperty#equivalentProperties() 
OntRelationalProperty#equivalentProperties()}
-     * will return empty {@code Stream}, modification operations, such as
+     * will return an empty {@code Stream}, modification operations, such as
      * {@link OntObjectProperty#addEquivalentProperty(OntObjectProperty) 
OntObjectProperty#addEquivalentProperty(OntObjectProperty)},
      * will throw {@link OntJenaException.Unsupported 
OntJenaException.Unsupported} exception.
      */
@@ -247,19 +242,14 @@ public enum OntModelControls {
      */
     USE_OWL_PROPERTY_IRREFLEXIVE_FEATURE,
     /**
-     * Controls {@link OWL2#inverseOf owl:inverseOf} functionality.
+     * Controls {@link OWL2#inverseOf owl:inverseOf} functionality 
(InverseObjectProperty axiom).
      * If disabled,
      * {@link OntObjectProperty#inverseProperties() 
OntObjectProperty#inverseProperties()}
-     * will return {@code false}, modification operations, such as
+     * will return an empty {@code Stream}, modification operations, such as
      * {@link OntObjectProperty#addInverseProperty(OntObjectProperty) 
OntObjectProperty#addInverseProperty(OntObjectProperty)},
      * will throw {@link OntJenaException.Unsupported 
OntJenaException.Unsupported} exception.
      */
-    USE_OWL_PROPERTY_INVERSE_OF_FEATURE,
-    /**
-     * If this key is set to {@code true}, an anonymous inverse object 
property type is enabled (OWL2 feature).
-     * That is {@code _:x owl:inverseOf PN}, where {@code _:x} is a b-node and 
{@code PN} is a named object property.
-     */
-    USE_OWL_INVERSE_OBJECT_PROPERTY_FEATURE,
+    USE_OWL_INVERSE_OBJECT_PROPERTIES_FEATURE,
     /**
      * Controls {@link OWL2#propertyChainAxiom owl:propertyChainAxiom} 
functionality.
      * If disabled,
diff --git 
a/jena-ontapi/src/main/java/org/apache/jena/ontapi/common/OntConfigs.java 
b/jena-ontapi/src/main/java/org/apache/jena/ontapi/common/OntConfigs.java
index adb4244c1d..fe9951a0dd 100644
--- a/jena-ontapi/src/main/java/org/apache/jena/ontapi/common/OntConfigs.java
+++ b/jena-ontapi/src/main/java/org/apache/jena/ontapi/common/OntConfigs.java
@@ -35,7 +35,6 @@ public class OntConfigs {
             
.setFalse(OntModelControls.USE_OWL1_DISTINCT_MEMBERS_PREDICATE_FEATURE)
             .setFalse(OntModelControls.ALLOW_NAMED_CLASS_EXPRESSIONS)
             .setFalse(OntModelControls.ALLOW_GENERIC_CLASS_EXPRESSIONS)
-            .setTrue(OntModelControls.ALLOW_ANONYMOUS_INDIVIDUALS)
             
.setFalse(OntModelControls.USE_LEGACY_COMPATIBLE_NAMED_CLASS_FACTORY)
             
.setTrue(OntModelControls.USE_OWL2_NAMED_INDIVIDUAL_DECLARATION_FEATURE)
             .setTrue(OntModelControls.USE_OWL2_CLASS_HAS_KEY_FEATURE)
@@ -52,8 +51,7 @@ public class OntConfigs {
             .setTrue(OntModelControls.USE_OWL_PROPERTY_TRANSITIVE_FEATURE)
             .setTrue(OntModelControls.USE_OWL_PROPERTY_REFLEXIVE_FEATURE)
             .setTrue(OntModelControls.USE_OWL_PROPERTY_IRREFLEXIVE_FEATURE)
-            .setTrue(OntModelControls.USE_OWL_PROPERTY_INVERSE_OF_FEATURE)
-            .setTrue(OntModelControls.USE_OWL_INVERSE_OBJECT_PROPERTY_FEATURE)
+            
.setTrue(OntModelControls.USE_OWL_INVERSE_OBJECT_PROPERTIES_FEATURE)
             .setTrue(OntModelControls.USE_OWL_PROPERTY_CHAIN_AXIOM_FEATURE)
             .setTrue(OntModelControls.USE_OWL_INDIVIDUAL_SAME_AS_FEATURE)
             
.setTrue(OntModelControls.USE_OWL_INDIVIDUAL_DIFFERENT_FROM_FEATURE)
@@ -69,7 +67,6 @@ public class OntConfigs {
             
.setFalse(OntModelControls.USE_OWL1_DISTINCT_MEMBERS_PREDICATE_FEATURE)
             .setFalse(OntModelControls.ALLOW_NAMED_CLASS_EXPRESSIONS)
             .setFalse(OntModelControls.ALLOW_GENERIC_CLASS_EXPRESSIONS)
-            .setFalse(OntModelControls.ALLOW_ANONYMOUS_INDIVIDUALS)
             
.setFalse(OntModelControls.USE_LEGACY_COMPATIBLE_NAMED_CLASS_FACTORY)
             
.setTrue(OntModelControls.USE_OWL2_NAMED_INDIVIDUAL_DECLARATION_FEATURE)
             .setTrue(OntModelControls.USE_OWL2_CLASS_HAS_KEY_FEATURE)
@@ -86,8 +83,7 @@ public class OntConfigs {
             .setTrue(OntModelControls.USE_OWL_PROPERTY_TRANSITIVE_FEATURE)
             .setTrue(OntModelControls.USE_OWL_PROPERTY_REFLEXIVE_FEATURE)
             .setFalse(OntModelControls.USE_OWL_PROPERTY_IRREFLEXIVE_FEATURE)
-            .setTrue(OntModelControls.USE_OWL_PROPERTY_INVERSE_OF_FEATURE)
-            .setFalse(OntModelControls.USE_OWL_INVERSE_OBJECT_PROPERTY_FEATURE)
+            
.setFalse(OntModelControls.USE_OWL_INVERSE_OBJECT_PROPERTIES_FEATURE)
             .setTrue(OntModelControls.USE_OWL_PROPERTY_CHAIN_AXIOM_FEATURE)
             .setTrue(OntModelControls.USE_OWL_INDIVIDUAL_SAME_AS_FEATURE)
             
.setTrue(OntModelControls.USE_OWL_INDIVIDUAL_DIFFERENT_FROM_FEATURE)
@@ -103,7 +99,6 @@ public class OntConfigs {
             
.setFalse(OntModelControls.USE_OWL1_DISTINCT_MEMBERS_PREDICATE_FEATURE)
             .setFalse(OntModelControls.ALLOW_NAMED_CLASS_EXPRESSIONS)
             .setFalse(OntModelControls.ALLOW_GENERIC_CLASS_EXPRESSIONS)
-            .setFalse(OntModelControls.ALLOW_ANONYMOUS_INDIVIDUALS)
             
.setFalse(OntModelControls.USE_LEGACY_COMPATIBLE_NAMED_CLASS_FACTORY)
             
.setTrue(OntModelControls.USE_OWL2_NAMED_INDIVIDUAL_DECLARATION_FEATURE)
             .setFalse(OntModelControls.USE_OWL2_CLASS_HAS_KEY_FEATURE)
@@ -120,8 +115,7 @@ public class OntConfigs {
             .setFalse(OntModelControls.USE_OWL_PROPERTY_TRANSITIVE_FEATURE)
             .setTrue(OntModelControls.USE_OWL_PROPERTY_REFLEXIVE_FEATURE)
             .setTrue(OntModelControls.USE_OWL_PROPERTY_IRREFLEXIVE_FEATURE)
-            .setTrue(OntModelControls.USE_OWL_PROPERTY_INVERSE_OF_FEATURE)
-            .setTrue(OntModelControls.USE_OWL_INVERSE_OBJECT_PROPERTY_FEATURE)
+            
.setTrue(OntModelControls.USE_OWL_INVERSE_OBJECT_PROPERTIES_FEATURE)
             .setFalse(OntModelControls.USE_OWL_PROPERTY_CHAIN_AXIOM_FEATURE)
             .setFalse(OntModelControls.USE_OWL_INDIVIDUAL_SAME_AS_FEATURE)
             
.setTrue(OntModelControls.USE_OWL_INDIVIDUAL_DIFFERENT_FROM_FEATURE)
@@ -137,7 +131,6 @@ public class OntConfigs {
             
.setFalse(OntModelControls.USE_OWL1_DISTINCT_MEMBERS_PREDICATE_FEATURE)
             .setFalse(OntModelControls.ALLOW_NAMED_CLASS_EXPRESSIONS)
             .setFalse(OntModelControls.ALLOW_GENERIC_CLASS_EXPRESSIONS)
-            .setTrue(OntModelControls.ALLOW_ANONYMOUS_INDIVIDUALS)
             
.setFalse(OntModelControls.USE_LEGACY_COMPATIBLE_NAMED_CLASS_FACTORY)
             
.setTrue(OntModelControls.USE_OWL2_NAMED_INDIVIDUAL_DECLARATION_FEATURE)
             .setTrue(OntModelControls.USE_OWL2_CLASS_HAS_KEY_FEATURE)
@@ -154,8 +147,7 @@ public class OntConfigs {
             .setTrue(OntModelControls.USE_OWL_PROPERTY_TRANSITIVE_FEATURE)
             .setTrue(OntModelControls.USE_OWL_PROPERTY_REFLEXIVE_FEATURE)
             .setTrue(OntModelControls.USE_OWL_PROPERTY_IRREFLEXIVE_FEATURE)
-            .setTrue(OntModelControls.USE_OWL_PROPERTY_INVERSE_OF_FEATURE)
-            .setTrue(OntModelControls.USE_OWL_INVERSE_OBJECT_PROPERTY_FEATURE)
+            
.setTrue(OntModelControls.USE_OWL_INVERSE_OBJECT_PROPERTIES_FEATURE)
             .setTrue(OntModelControls.USE_OWL_PROPERTY_CHAIN_AXIOM_FEATURE)
             .setTrue(OntModelControls.USE_OWL_INDIVIDUAL_SAME_AS_FEATURE)
             
.setTrue(OntModelControls.USE_OWL_INDIVIDUAL_DIFFERENT_FROM_FEATURE)
@@ -171,7 +163,6 @@ public class OntConfigs {
             
.setTrue(OntModelControls.USE_OWL1_DISTINCT_MEMBERS_PREDICATE_FEATURE)
             .setTrue(OntModelControls.ALLOW_NAMED_CLASS_EXPRESSIONS)
             .setTrue(OntModelControls.ALLOW_GENERIC_CLASS_EXPRESSIONS)
-            .setTrue(OntModelControls.ALLOW_ANONYMOUS_INDIVIDUALS)
             
.setTrue(OntModelControls.USE_LEGACY_COMPATIBLE_NAMED_CLASS_FACTORY)
             
.setFalse(OntModelControls.USE_OWL2_NAMED_INDIVIDUAL_DECLARATION_FEATURE)
             .setFalse(OntModelControls.USE_OWL2_CLASS_HAS_KEY_FEATURE)
@@ -188,8 +179,7 @@ public class OntConfigs {
             .setTrue(OntModelControls.USE_OWL_PROPERTY_TRANSITIVE_FEATURE)
             .setFalse(OntModelControls.USE_OWL_PROPERTY_REFLEXIVE_FEATURE)
             .setFalse(OntModelControls.USE_OWL_PROPERTY_IRREFLEXIVE_FEATURE)
-            .setTrue(OntModelControls.USE_OWL_PROPERTY_INVERSE_OF_FEATURE)
-            .setFalse(OntModelControls.USE_OWL_INVERSE_OBJECT_PROPERTY_FEATURE)
+            
.setTrue(OntModelControls.USE_OWL_INVERSE_OBJECT_PROPERTIES_FEATURE)
             .setFalse(OntModelControls.USE_OWL_PROPERTY_CHAIN_AXIOM_FEATURE)
             .setTrue(OntModelControls.USE_OWL_INDIVIDUAL_SAME_AS_FEATURE)
             
.setTrue(OntModelControls.USE_OWL_INDIVIDUAL_DIFFERENT_FROM_FEATURE)
@@ -207,7 +197,6 @@ public class OntConfigs {
             
.setTrue(OntModelControls.USE_OWL1_DISTINCT_MEMBERS_PREDICATE_FEATURE)
             .setTrue(OntModelControls.ALLOW_NAMED_CLASS_EXPRESSIONS)
             .setTrue(OntModelControls.ALLOW_GENERIC_CLASS_EXPRESSIONS)
-            .setTrue(OntModelControls.ALLOW_ANONYMOUS_INDIVIDUALS)
             
.setTrue(OntModelControls.USE_LEGACY_COMPATIBLE_NAMED_CLASS_FACTORY)
             
.setFalse(OntModelControls.USE_OWL2_NAMED_INDIVIDUAL_DECLARATION_FEATURE)
             .setFalse(OntModelControls.USE_OWL2_CLASS_HAS_KEY_FEATURE)
@@ -224,8 +213,7 @@ public class OntConfigs {
             .setTrue(OntModelControls.USE_OWL_PROPERTY_TRANSITIVE_FEATURE)
             .setFalse(OntModelControls.USE_OWL_PROPERTY_REFLEXIVE_FEATURE)
             .setFalse(OntModelControls.USE_OWL_PROPERTY_IRREFLEXIVE_FEATURE)
-            .setTrue(OntModelControls.USE_OWL_PROPERTY_INVERSE_OF_FEATURE)
-            .setFalse(OntModelControls.USE_OWL_INVERSE_OBJECT_PROPERTY_FEATURE)
+            
.setTrue(OntModelControls.USE_OWL_INVERSE_OBJECT_PROPERTIES_FEATURE)
             .setFalse(OntModelControls.USE_OWL_PROPERTY_CHAIN_AXIOM_FEATURE)
             .setFalse(OntModelControls.USE_OWL_INDIVIDUAL_SAME_AS_FEATURE)
             
.setTrue(OntModelControls.USE_OWL_INDIVIDUAL_DIFFERENT_FROM_FEATURE)
@@ -241,7 +229,6 @@ public class OntConfigs {
             
.setFalse(OntModelControls.USE_OWL1_DISTINCT_MEMBERS_PREDICATE_FEATURE)
             .setFalse(OntModelControls.ALLOW_NAMED_CLASS_EXPRESSIONS)
             .setFalse(OntModelControls.ALLOW_GENERIC_CLASS_EXPRESSIONS)
-            .setTrue(OntModelControls.ALLOW_ANONYMOUS_INDIVIDUALS)
             
.setTrue(OntModelControls.USE_LEGACY_COMPATIBLE_NAMED_CLASS_FACTORY)
             
.setFalse(OntModelControls.USE_OWL2_NAMED_INDIVIDUAL_DECLARATION_FEATURE)
             .setFalse(OntModelControls.USE_OWL2_CLASS_HAS_KEY_FEATURE)
@@ -258,8 +245,7 @@ public class OntConfigs {
             .setFalse(OntModelControls.USE_OWL_PROPERTY_TRANSITIVE_FEATURE)
             .setFalse(OntModelControls.USE_OWL_PROPERTY_REFLEXIVE_FEATURE)
             .setFalse(OntModelControls.USE_OWL_PROPERTY_IRREFLEXIVE_FEATURE)
-            .setFalse(OntModelControls.USE_OWL_PROPERTY_INVERSE_OF_FEATURE)
-            .setFalse(OntModelControls.USE_OWL_INVERSE_OBJECT_PROPERTY_FEATURE)
+            
.setFalse(OntModelControls.USE_OWL_INVERSE_OBJECT_PROPERTIES_FEATURE)
             .setFalse(OntModelControls.USE_OWL_PROPERTY_CHAIN_AXIOM_FEATURE)
             .setFalse(OntModelControls.USE_OWL_INDIVIDUAL_SAME_AS_FEATURE)
             
.setFalse(OntModelControls.USE_OWL_INDIVIDUAL_DIFFERENT_FROM_FEATURE)
diff --git 
a/jena-ontapi/src/main/java/org/apache/jena/ontapi/common/OntPersonalities.java 
b/jena-ontapi/src/main/java/org/apache/jena/ontapi/common/OntPersonalities.java
index d175c1f949..59ca66d6ad 100644
--- 
a/jena-ontapi/src/main/java/org/apache/jena/ontapi/common/OntPersonalities.java
+++ 
b/jena-ontapi/src/main/java/org/apache/jena/ontapi/common/OntPersonalities.java
@@ -281,7 +281,7 @@ public class OntPersonalities {
             .add(OntObjectProperty.class, 
OWL2ObjectFactories.EL_OBJECT_PROPERTY)
             .add(OntRelationalProperty.class, 
OWL2ObjectFactories.EL_ANY_DATA_OR_OBJECT_PROPERTY)
             .add(OntNamedProperty.class, 
OWL2ObjectFactories.ANY_NAMED_PROPERTY)
-            .add(OntProperty.class, OWL2ObjectFactories.ANY_PROPERTY)
+            .add(OntProperty.class, OWL2ObjectFactories.EL_ANY_PROPERTY)
 
             // class expressions:
             .add(OntClass.ObjectSomeValuesFrom.class, 
OWL2ObjectFactories.OBJECT_SOME_VALUES_FROM_CLASS)
@@ -340,7 +340,6 @@ public class OntPersonalities {
             .add(OntEntity.class, OWL2ObjectFactories.ANY_ENTITY)
 
             // individuals:
-            .add(OntIndividual.Anonymous.class, 
OWL2ObjectFactories.ANONYMOUS_INDIVIDUAL)
             .add(OntIndividual.class, OWL2ObjectFactories.QL_ANY_INDIVIDUAL)
 
             // property expressions:
diff --git 
a/jena-ontapi/src/main/java/org/apache/jena/ontapi/impl/OntGraphModelImpl.java 
b/jena-ontapi/src/main/java/org/apache/jena/ontapi/impl/OntGraphModelImpl.java
index 8228f6e1d9..59da29167c 100644
--- 
a/jena-ontapi/src/main/java/org/apache/jena/ontapi/impl/OntGraphModelImpl.java
+++ 
b/jena-ontapi/src/main/java/org/apache/jena/ontapi/impl/OntGraphModelImpl.java
@@ -368,7 +368,7 @@ public class OntGraphModelImpl extends ModelCom implements 
OntModel, OntEnhGraph
     @Override
     public OntIndividual createIndividual(String uri, OntClass type) {
         if (uri == null) {
-            checkFeature(this, OntModelControls.ALLOW_ANONYMOUS_INDIVIDUALS, 
"anonymous-individuals");
+            checkType(OntIndividual.Anonymous.class);
         }
         return OntModel.super.createIndividual(uri, type);
     }
diff --git 
a/jena-ontapi/src/main/java/org/apache/jena/ontapi/impl/factories/OWL1ObjectFactories.java
 
b/jena-ontapi/src/main/java/org/apache/jena/ontapi/impl/factories/OWL1ObjectFactories.java
index 1e2a527a00..39d874cf9c 100644
--- 
a/jena-ontapi/src/main/java/org/apache/jena/ontapi/impl/factories/OWL1ObjectFactories.java
+++ 
b/jena-ontapi/src/main/java/org/apache/jena/ontapi/impl/factories/OWL1ObjectFactories.java
@@ -99,7 +99,7 @@ public class OWL1ObjectFactories {
             NAMED_OBJECT_PROPERTY.apply(config),
             DATATYPE_PROPERTY
     );
-    public static final Function<OntConfig, EnhNodeFactory> ANY_PROPERTY = 
OntProperties::createFactory;
+    public static final Function<OntConfig, EnhNodeFactory> ANY_PROPERTY = 
config -> OntProperties.createFactory(config, false);
 
     // Class Expressions (Boolean Connectives and Enumeration of Individuals):
     public static final Function<OntConfig, EnhNodeFactory> UNION_OF_CLASS =
diff --git 
a/jena-ontapi/src/main/java/org/apache/jena/ontapi/impl/factories/OWL2ObjectFactories.java
 
b/jena-ontapi/src/main/java/org/apache/jena/ontapi/impl/factories/OWL2ObjectFactories.java
index 16b248a8bc..150b9f09bb 100644
--- 
a/jena-ontapi/src/main/java/org/apache/jena/ontapi/impl/factories/OWL2ObjectFactories.java
+++ 
b/jena-ontapi/src/main/java/org/apache/jena/ontapi/impl/factories/OWL2ObjectFactories.java
@@ -131,7 +131,8 @@ public final class OWL2ObjectFactories {
                     DATATYPE_PROPERTY,
                     EL_OBJECT_PROPERTY.apply(config)
             );
-    public static final Function<OntConfig, EnhNodeFactory> ANY_PROPERTY = 
OntProperties::createFactory;
+    public static final Function<OntConfig, EnhNodeFactory> ANY_PROPERTY = 
config -> OntProperties.createFactory(config, true);
+    public static final Function<OntConfig, EnhNodeFactory> EL_ANY_PROPERTY = 
config -> OntProperties.createFactory(config, false);
 
     // Class Expressions
     public static final Function<OntConfig, EnhNodeFactory> UNION_OF_CLASS =
diff --git 
a/jena-ontapi/src/main/java/org/apache/jena/ontapi/impl/factories/OntProperties.java
 
b/jena-ontapi/src/main/java/org/apache/jena/ontapi/impl/factories/OntProperties.java
index 46f25cfb47..76b2111d3b 100644
--- 
a/jena-ontapi/src/main/java/org/apache/jena/ontapi/impl/factories/OntProperties.java
+++ 
b/jena-ontapi/src/main/java/org/apache/jena/ontapi/impl/factories/OntProperties.java
@@ -51,7 +51,7 @@ final class OntProperties {
     private static final EnhNodeFactory 
NAMED_OBJECT_PROPERTY_FACTORY_REFERENCE = 
WrappedEnhNodeFactory.of(OntObjectProperty.Named.class);
     private static final EnhNodeFactory 
ANONYMOUS_OBJECT_PROPERTY_FACTORY_REFERENCE = 
WrappedEnhNodeFactory.of(OntObjectProperty.Inverse.class);
 
-    public static Factory createFactory(OntConfig config) {
+    public static Factory createFactory(OntConfig config, boolean 
withInverseObjectProperty) {
         List<Node> objectPropertyTypes = new ArrayList<>();
         List<Node> allPropertyTypes = new ArrayList<>();
         objectPropertyTypes.add(OWL2.ObjectProperty.asNode());
@@ -81,7 +81,7 @@ final class OntProperties {
         return new Factory(
                 allPropertyTypes.stream().toList(),
                 objectPropertyTypes.stream().toList(),
-                
config.getBoolean(OntModelControls.USE_OWL_INVERSE_OBJECT_PROPERTY_FEATURE)
+                withInverseObjectProperty
         );
     }
 
diff --git 
a/jena-ontapi/src/main/java/org/apache/jena/ontapi/impl/objects/OntClassImpl.java
 
b/jena-ontapi/src/main/java/org/apache/jena/ontapi/impl/objects/OntClassImpl.java
index 7bd3b28932..e8d10e7a80 100644
--- 
a/jena-ontapi/src/main/java/org/apache/jena/ontapi/impl/objects/OntClassImpl.java
+++ 
b/jena-ontapi/src/main/java/org/apache/jena/ontapi/impl/objects/OntClassImpl.java
@@ -175,7 +175,7 @@ public abstract class OntClassImpl extends OntObjectImpl 
implements OntClass {
     }
 
     public static OntIndividual.Anonymous 
createAnonymousIndividual(OntGraphModelImpl model, OntClass source) {
-        OntGraphModelImpl.checkFeature(model, 
OntModelControls.ALLOW_ANONYMOUS_INDIVIDUALS, "anonymous-individuals");
+        model.checkType(OntIndividual.Anonymous.class);
         OntJenaException.checkSupported(source.canAsAssertionClass(),
                 "Class " + OntEnhNodeFactories.viewAsString(source.getClass()) 
+ " cannot have individuals. " +
                         "Profile: " + model.getOntPersonality().getName());
diff --git 
a/jena-ontapi/src/main/java/org/apache/jena/ontapi/impl/objects/OntObjectPropertyImpl.java
 
b/jena-ontapi/src/main/java/org/apache/jena/ontapi/impl/objects/OntObjectPropertyImpl.java
index b446cb181a..7197f5ec3a 100644
--- 
a/jena-ontapi/src/main/java/org/apache/jena/ontapi/impl/objects/OntObjectPropertyImpl.java
+++ 
b/jena-ontapi/src/main/java/org/apache/jena/ontapi/impl/objects/OntObjectPropertyImpl.java
@@ -264,7 +264,7 @@ public abstract class OntObjectPropertyImpl extends 
OntPropertyImpl implements O
 
     @Override
     public Stream<OntObjectProperty> inverseProperties() {
-        if (!OntGraphModelImpl.configValue(getModel(), 
OntModelControls.USE_OWL_PROPERTY_INVERSE_OF_FEATURE)) {
+        if (!OntGraphModelImpl.configValue(getModel(), 
OntModelControls.USE_OWL_INVERSE_OBJECT_PROPERTIES_FEATURE)) {
             return Stream.empty();
         }
         return objects(OWL2.inverseOf, OntObjectProperty.class);
@@ -272,16 +272,13 @@ public abstract class OntObjectPropertyImpl extends 
OntPropertyImpl implements O
 
     @Override
     public OntStatement addInverseOfStatement(OntObjectProperty other) {
-        OntGraphModelImpl.checkFeature(getModel(), 
OntModelControls.USE_OWL_PROPERTY_INVERSE_OF_FEATURE, "owl:inverseOf");
-        if (this.isURIResource() && other.isAnon()) {
-            OntGraphModelImpl.checkFeature(getModel(), 
OntModelControls.USE_OWL_INVERSE_OBJECT_PROPERTY_FEATURE, "owl:inverseOf");
-        }
+        OntGraphModelImpl.checkFeature(getModel(), 
OntModelControls.USE_OWL_INVERSE_OBJECT_PROPERTIES_FEATURE, "owl:inverseOf");
         return addStatement(OWL2.inverseOf, other);
     }
 
     @Override
     public OntObjectProperty removeInverseProperty(Resource other) {
-        OntGraphModelImpl.checkFeature(getModel(), 
OntModelControls.USE_OWL_PROPERTY_INVERSE_OF_FEATURE, "owl:inverseOf");
+        OntGraphModelImpl.checkFeature(getModel(), 
OntModelControls.USE_OWL_INVERSE_OBJECT_PROPERTIES_FEATURE, "owl:inverseOf");
         remove(OWL2.inverseOf, other);
         return this;
     }
@@ -300,8 +297,6 @@ public abstract class OntObjectPropertyImpl extends 
OntPropertyImpl implements O
 
         @Override
         public Inverse createInverse() {
-            OntGraphModelImpl.checkFeature(getModel(), 
OntModelControls.USE_OWL_PROPERTY_INVERSE_OF_FEATURE, "owl:inverseOf");
-            OntGraphModelImpl.checkFeature(getModel(), 
OntModelControls.USE_OWL_INVERSE_OBJECT_PROPERTY_FEATURE, "owl:inverseOf");
             OntGraphModelImpl m = getModel();
             m.checkType(OntObjectProperty.Inverse.class);
             List<Node> nodes = m.localStatements(null, OWL2.inverseOf, this)
diff --git 
a/jena-ontapi/src/test/java/org/apache/jena/ontapi/OntModelOWL2ELSpecTest.java 
b/jena-ontapi/src/test/java/org/apache/jena/ontapi/OntModelOWL2ELSpecTest.java
index 31ae4c96d8..08b56e2b49 100644
--- 
a/jena-ontapi/src/test/java/org/apache/jena/ontapi/OntModelOWL2ELSpecTest.java
+++ 
b/jena-ontapi/src/test/java/org/apache/jena/ontapi/OntModelOWL2ELSpecTest.java
@@ -136,10 +136,13 @@ public class OntModelOWL2ELSpecTest {
         Assertions.assertFalse(p1.isFunctional());
 
         Assertions.assertThrows(OntJenaException.Unsupported.class, () -> 
p1.setAsymmetric(true));
-        p1.addInverseProperty(p2);
-        if (spec == TestSpec.OWL2_EL_MEM_RDFS_INF) {
-            Assertions.assertEquals(17, m.properties().count());
+        if (spec.isOWL2EL()) {
+            Assertions.assertThrows(OntJenaException.Unsupported.class, () -> 
p1.addInverseProperty(p2));
+            if (spec == TestSpec.OWL2_EL_MEM_RDFS_INF) {
+                Assertions.assertEquals(17, m.properties().count());
+            }
         } else {
+            p1.addInverseProperty(p2);
             Assertions.assertEquals(3, m.properties().count());
         }
     }
diff --git 
a/jena-ontapi/src/test/java/org/apache/jena/ontapi/OntModelOWLSpecsTest.java 
b/jena-ontapi/src/test/java/org/apache/jena/ontapi/OntModelOWLSpecsTest.java
index 7d4c179186..d3fa231eee 100644
--- a/jena-ontapi/src/test/java/org/apache/jena/ontapi/OntModelOWLSpecsTest.java
+++ b/jena-ontapi/src/test/java/org/apache/jena/ontapi/OntModelOWLSpecsTest.java
@@ -100,7 +100,7 @@ public class OntModelOWLSpecsTest {
     }
 
     @SuppressWarnings("rawtypes")
-    static void simplePropertiesValidation(OntModel ont) {
+    static void simplePropertiesValidation(OntModel ont, TestSpec spec) {
         Model jena = ModelFactory.createModelForGraph(ont.getGraph());
         Set<Resource> annotationProperties = jena.listStatements(null, 
RDF.type, OWL2.AnnotationProperty)
                 .mapWith(Statement::getSubject).toSet();
@@ -126,7 +126,13 @@ public class OntModelOWLSpecsTest {
         Set<Resource> expectedDOs = MiscUtils.toFlatSet(datatypeProperties, 
namedObjectProperties, inverseObjectProperties);
         Assertions.assertEquals(expectedDOs.size(), actualDOs.size());
 
-        Assertions.assertEquals(inverseStatements.size(), 
ont.objectProperties()
+        long inverseStatementsCount;
+        if (spec.isOWL2EL()) {
+            inverseStatementsCount = 0;
+        } else {
+            inverseStatementsCount = inverseStatements.size();
+        }
+        Assertions.assertEquals(inverseStatementsCount, ont.objectProperties()
                 .flatMap(OntObjectProperty::inverseProperties).count());
     }
 
@@ -252,8 +258,12 @@ public class OntModelOWLSpecsTest {
             "OWL1_LITE_MEM",
     })
     public void testPizzaLoadProperties(TestSpec spec) {
-        simplePropertiesValidation(OntModelFactory.createModel(
-                RDFIOTestUtils.loadResourceAsModel("/pizza.ttl", 
Lang.TURTLE).getGraph(), spec.inst));
+        simplePropertiesValidation(
+                OntModelFactory.createModel(
+                        RDFIOTestUtils.loadResourceAsModel("/pizza.ttl", 
Lang.TURTLE).getGraph(), spec.inst
+                ),
+                spec
+        );
     }
 
     @ParameterizedTest
@@ -272,8 +282,12 @@ public class OntModelOWLSpecsTest {
             "OWL1_LITE_MEM",
     })
     public void testFamilyLoadProperties(TestSpec spec) {
-        simplePropertiesValidation(OntModelFactory.createModel(
-                RDFIOTestUtils.loadResourceAsModel("/family.ttl", 
Lang.TURTLE).getGraph(), spec.inst));
+        simplePropertiesValidation(
+                OntModelFactory.createModel(
+                        RDFIOTestUtils.loadResourceAsModel("/family.ttl", 
Lang.TURTLE).getGraph(), spec.inst
+                ),
+                spec
+        );
     }
 
     @ParameterizedTest
@@ -404,15 +418,22 @@ public class OntModelOWLSpecsTest {
         try (InputStream in = 
OntModelOWLSpecsTest.class.getResourceAsStream("/koala.owl")) {
             m.read(in, null, Lang.RDFXML.getName());
         }
-        simplePropertiesValidation(m);
+        simplePropertiesValidation(m, spec);
         OntObjectProperty p1 = 
m.objectProperties().findFirst().orElseThrow(AssertionError::new);
         Assertions.assertFalse(p1.inverseProperty().isPresent());
-        OntObjectProperty p2 = m.createResource().addProperty(OWL2.inverseOf, 
p1).as(OntObjectProperty.class);
-        Assertions.assertTrue(p2.inverseProperty().isPresent());
-        Assertions.assertEquals(1, p2.inverseProperties().count());
-        Assertions.assertEquals(p1.asProperty(), p2.asProperty());
-        Assertions.assertEquals(p1, 
p2.inverseProperty().orElseThrow(AssertionError::new));
-        Assertions.assertEquals(1, 
m.ontObjects(OntObjectProperty.Inverse.class).count());
+        if (spec.isOWL2EL()) {
+            Assertions.assertThrows(OntJenaException.Unsupported.class, () ->
+                    m.createResource().addProperty(OWL2.inverseOf, 
p1).as(OntObjectProperty.class)
+            );
+            Assertions.assertEquals(0, 
m.ontObjects(OntObjectProperty.Inverse.class).count());
+        } else {
+            OntObjectProperty p2 = 
m.createResource().addProperty(OWL2.inverseOf, p1).as(OntObjectProperty.class);
+            Assertions.assertTrue(p2.inverseProperty().isPresent());
+            Assertions.assertEquals(1, p2.inverseProperties().count());
+            Assertions.assertEquals(p1.asProperty(), p2.asProperty());
+            Assertions.assertEquals(p1, 
p2.inverseProperty().orElseThrow(AssertionError::new));
+            Assertions.assertEquals(1, 
m.ontObjects(OntObjectProperty.Inverse.class).count());
+        }
     }
 
     @ParameterizedTest
diff --git 
a/jena-ontapi/src/test/java/org/apache/jena/ontapi/OntPropertyTest.java 
b/jena-ontapi/src/test/java/org/apache/jena/ontapi/OntPropertyTest.java
index df360dabfa..e4d7eb6e19 100644
--- a/jena-ontapi/src/test/java/org/apache/jena/ontapi/OntPropertyTest.java
+++ b/jena-ontapi/src/test/java/org/apache/jena/ontapi/OntPropertyTest.java
@@ -70,7 +70,7 @@ public class OntPropertyTest {
         m.createDataProperty(ns + "d-p-2").addAnnotation(a2, 
m.createLiteral("data-property"));
 
 
-        OntModelOWLSpecsTest.simplePropertiesValidation(m);
+        OntModelOWLSpecsTest.simplePropertiesValidation(m, 
TestSpec.OWL1_DL_MEM);
         Assertions.assertEquals(9, 
m.ontObjects(OntNamedProperty.class).count());
         Assertions.assertEquals(11, m.ontObjects(OntProperty.class).count());
         Assertions.assertEquals(9, 
m.ontObjects(OntRelationalProperty.class).count());

Reply via email to