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 <[email protected]>
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());