oldaplib 0.3.14__tar.gz → 0.3.15__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (164) hide show
  1. {oldaplib-0.3.14 → oldaplib-0.3.15}/PKG-INFO +1 -1
  2. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/enums/propertyclassattr.py +1 -1
  3. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/hasproperty.py +21 -1
  4. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/propertyclass.py +5 -1
  5. oldaplib-0.3.15/oldaplib/src/version.py +1 -0
  6. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/test/test_propertyclass.py +52 -3
  7. {oldaplib-0.3.14 → oldaplib-0.3.15}/pyproject.toml +1 -1
  8. oldaplib-0.3.14/oldaplib/src/version.py +0 -1
  9. {oldaplib-0.3.14 → oldaplib-0.3.15}/README.md +0 -0
  10. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/__init__.py +0 -0
  11. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/apps/load_list.py +0 -0
  12. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/ontologies/admin-testing.trig +0 -0
  13. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/ontologies/admin.trig +0 -0
  14. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/ontologies/example.trig +0 -0
  15. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/ontologies/oldap.trig +0 -0
  16. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/ontologies/oldap.ttl +0 -0
  17. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/ontologies/shared.trig +0 -0
  18. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/ontologies/standard/.gitsave +0 -0
  19. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/__init__.py +0 -0
  20. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/cachesingleton.py +0 -0
  21. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/connection.py +0 -0
  22. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/datamodel.py +0 -0
  23. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/dtypes/__init__.py +0 -0
  24. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/dtypes/bnode.py +0 -0
  25. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/dtypes/languagein.py +0 -0
  26. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/dtypes/namespaceiri.py +0 -0
  27. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/dtypes/rdfset.py +0 -0
  28. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/dtypes/xsdset.py +0 -0
  29. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/enums/__init__.py +0 -0
  30. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/enums/action.py +0 -0
  31. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/enums/adminpermissions.py +0 -0
  32. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/enums/attributeclass.py +0 -0
  33. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/enums/datapermissions.py +0 -0
  34. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/enums/externalontologyattr.py +0 -0
  35. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/enums/haspropertyattr.py +0 -0
  36. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/enums/language.py +0 -0
  37. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/enums/oldaplistattr.py +0 -0
  38. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/enums/oldaplistnodeattr.py +0 -0
  39. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/enums/owlpropertytype.py +0 -0
  40. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/enums/permissionsetattr.py +0 -0
  41. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/enums/projectattr.py +0 -0
  42. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/enums/resourceclassattr.py +0 -0
  43. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/enums/sparql_result_format.py +0 -0
  44. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/enums/userattr.py +0 -0
  45. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/enums/xsd_datatypes.py +0 -0
  46. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/externalontology.py +0 -0
  47. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/globalconfig.py +0 -0
  48. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/helpers/Notify.py +0 -0
  49. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/helpers/__init__.py +0 -0
  50. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/helpers/attributechange.py +0 -0
  51. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/helpers/context.py +0 -0
  52. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/helpers/convert2datatype.py +0 -0
  53. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/helpers/irincname.py +0 -0
  54. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/helpers/json_encoder.py +0 -0
  55. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/helpers/langstring.py +0 -0
  56. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/helpers/numeric.py +0 -0
  57. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/helpers/observable_dict.py +0 -0
  58. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/helpers/observable_set.py +0 -0
  59. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/helpers/oldaperror.py +0 -0
  60. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/helpers/query_processor.py +0 -0
  61. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/helpers/semantic_version.py +0 -0
  62. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/helpers/serializeableset.py +0 -0
  63. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/helpers/serializer.py +0 -0
  64. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/helpers/singletonmeta.py +0 -0
  65. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/helpers/tools.py +0 -0
  66. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/iconnection.py +0 -0
  67. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/in_project.py +0 -0
  68. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/model.py +0 -0
  69. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/objectfactory.py +0 -0
  70. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/oldaplist.py +0 -0
  71. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/oldaplist_helpers.py +0 -0
  72. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/oldaplistnode.py +0 -0
  73. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/oldaplogging.py +0 -0
  74. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/permissionset.py +0 -0
  75. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/project.py +0 -0
  76. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/resourceclass.py +0 -0
  77. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/user.py +0 -0
  78. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/userdataclass.py +0 -0
  79. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/xsd/__init__.py +0 -0
  80. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/xsd/floatingpoint.py +0 -0
  81. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/xsd/iri.py +0 -0
  82. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/xsd/xsd.py +0 -0
  83. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/xsd/xsd_anyuri.py +0 -0
  84. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/xsd/xsd_base64binary.py +0 -0
  85. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/xsd/xsd_boolean.py +0 -0
  86. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/xsd/xsd_byte.py +0 -0
  87. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/xsd/xsd_date.py +0 -0
  88. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/xsd/xsd_datetime.py +0 -0
  89. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/xsd/xsd_datetimestamp.py +0 -0
  90. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/xsd/xsd_decimal.py +0 -0
  91. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/xsd/xsd_double.py +0 -0
  92. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/xsd/xsd_duration.py +0 -0
  93. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/xsd/xsd_float.py +0 -0
  94. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/xsd/xsd_gday.py +0 -0
  95. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/xsd/xsd_gmonth.py +0 -0
  96. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/xsd/xsd_gmonthday.py +0 -0
  97. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/xsd/xsd_gyear.py +0 -0
  98. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/xsd/xsd_gyearmonth.py +0 -0
  99. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/xsd/xsd_hexbinary.py +0 -0
  100. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/xsd/xsd_id.py +0 -0
  101. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/xsd/xsd_idref.py +0 -0
  102. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/xsd/xsd_int.py +0 -0
  103. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/xsd/xsd_integer.py +0 -0
  104. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/xsd/xsd_language.py +0 -0
  105. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/xsd/xsd_long.py +0 -0
  106. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/xsd/xsd_name.py +0 -0
  107. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/xsd/xsd_ncname.py +0 -0
  108. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/xsd/xsd_negativeinteger.py +0 -0
  109. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/xsd/xsd_nmtoken.py +0 -0
  110. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/xsd/xsd_nonnegativeinteger.py +0 -0
  111. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/xsd/xsd_nonpositiveinteger.py +0 -0
  112. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/xsd/xsd_normalizedstring.py +0 -0
  113. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/xsd/xsd_positiveinteger.py +0 -0
  114. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/xsd/xsd_qname.py +0 -0
  115. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/xsd/xsd_short.py +0 -0
  116. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/xsd/xsd_string.py +0 -0
  117. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/xsd/xsd_time.py +0 -0
  118. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/xsd/xsd_token.py +0 -0
  119. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/xsd/xsd_unsignedbyte.py +0 -0
  120. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/xsd/xsd_unsignedint.py +0 -0
  121. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/xsd/xsd_unsignedlong.py +0 -0
  122. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/src/xsd/xsd_unsignedshort.py +0 -0
  123. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/test/__init__.py +0 -0
  124. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/test/test_cache.py +0 -0
  125. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/test/test_connection.py +0 -0
  126. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/test/test_context.py +0 -0
  127. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/test/test_datamodel.py +0 -0
  128. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/test/test_dtypes.py +0 -0
  129. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/test/test_externalontologies.py +0 -0
  130. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/test/test_hasproperty.py +0 -0
  131. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/test/test_in_project.py +0 -0
  132. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/test/test_langstring.py +0 -0
  133. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/test/test_language_in.py +0 -0
  134. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/test/test_objectfactory.py +0 -0
  135. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/test/test_observable_dict.py +0 -0
  136. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/test/test_observable_set.py +0 -0
  137. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/test/test_oldaplist.py +0 -0
  138. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/test/test_oldaplist_helpers.py +0 -0
  139. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/test/test_oldaplistnode.py +0 -0
  140. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/test/test_permissionset.py +0 -0
  141. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/test/test_project.py +0 -0
  142. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/test/test_resourceclass.py +0 -0
  143. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/test/test_semantic_version.py +0 -0
  144. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/test/test_user.py +0 -0
  145. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/test/test_xsd_datatypes.py +0 -0
  146. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/testdata/Gender.yaml +0 -0
  147. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/testdata/collections_type.yaml +0 -0
  148. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/testdata/connection_test.trig +0 -0
  149. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/testdata/datamodel_test.trig +0 -0
  150. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/testdata/event_type.yaml +0 -0
  151. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/testdata/hlist_schema.yaml +0 -0
  152. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/testdata/instances_test.trig +0 -0
  153. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/testdata/institution_or_building_type.yaml +0 -0
  154. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/testdata/language.yaml +0 -0
  155. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/testdata/location_type.yaml +0 -0
  156. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/testdata/means_of_transportation.yaml +0 -0
  157. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/testdata/objectfactory_test.trig +0 -0
  158. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/testdata/playground_list.yaml +0 -0
  159. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/testdata/role.yaml +0 -0
  160. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/testdata/source_type-1.yaml +0 -0
  161. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/testdata/source_type.yaml +0 -0
  162. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/testdata/test_move_left_of_toL.yaml +0 -0
  163. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/testdata/testlist.yaml +0 -0
  164. {oldaplib-0.3.14 → oldaplib-0.3.15}/oldaplib/testit.http +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: oldaplib
3
- Version: 0.3.14
3
+ Version: 0.3.15
4
4
  Summary: Open Media Access Server Library (Linked Open Data middleware/RESTApi)
5
5
  License: GNU Affero General Public License version 3
6
6
  Author: Lukas Rosenthaler
@@ -57,7 +57,7 @@ class PropClassAttr(AttributeClass):
57
57
  LESS_THAN = ('sh:lessThan', False, False, Iri, Target.SHACL)
58
58
  LESS_THAN_OR_EQUALS = ('sh:lessThanOrEquals', False, False, Iri, Target.SHACL)
59
59
  INVERSE_OF = ('owl:inverseOf', False, False, Xsd_QName, Target.OWL)
60
- EQUIVALEND_PROPERTY = ('owl:equivalentProperty', False, False, Xsd_QName, Target.OWL)
60
+ EQUIVALENT_PROPERTY = ('owl:equivalentProperty', False, False, Xsd_QName, Target.OWL)
61
61
 
62
62
 
63
63
  @classmethod
@@ -6,9 +6,10 @@ from typing import Callable, Self, Any
6
6
  from oldaplib.src.enums.action import Action
7
7
  from oldaplib.src.enums.attributeclass import AttributeClass
8
8
  from oldaplib.src.enums.haspropertyattr import HasPropertyAttr
9
+ from oldaplib.src.enums.owlpropertytype import OwlPropertyType
9
10
  from oldaplib.src.helpers.Notify import Notify
10
11
  from oldaplib.src.helpers.irincname import IriOrNCName
11
- from oldaplib.src.helpers.oldaperror import OldapErrorNotFound
12
+ from oldaplib.src.helpers.oldaperror import OldapErrorNotFound, OldapErrorInconsistency
12
13
  from oldaplib.src.helpers.serializer import serializer
13
14
  from oldaplib.src.iconnection import IConnection
14
15
  from oldaplib.src.model import Model
@@ -117,6 +118,25 @@ class HasProperty(Model, Notify):
117
118
  self._type = PropType.INTERNAL
118
119
  self.set_attributes(kwargs, HasPropertyAttr)
119
120
 
121
+ #
122
+ # Check consistency for owl:FunctionalProperty. It must have a maxCount=1
123
+ #
124
+ if isinstance(self._prop, PropertyClass) and OwlPropertyType.FunctionalProperty in self._prop.type:
125
+ if not self._attributes.get(HasPropertyAttr.MAX_COUNT):
126
+ raise OldapErrorInconsistency(f'FunctionalProperty {self._prop.property_class_iri} must have maxCount=1')
127
+ if self._attributes[HasPropertyAttr.MAX_COUNT] != 1:
128
+ raise OldapErrorInconsistency(f'FunctionalProperty {self._prop.property_class_iri} must have maxCount=1')
129
+
130
+ #
131
+ # Check consistency for owl:InverseFunctionalProperty. It must have a cardinality of 1..1
132
+ #
133
+ if isinstance(self._prop, PropertyClass) and OwlPropertyType.InverseFunctionalProperty in self._prop.type:
134
+ if not self._attributes.get(HasPropertyAttr.MIN_COUNT) or not self._attributes.get(HasPropertyAttr.MAX_COUNT):
135
+ raise OldapErrorInconsistency(f'InverseFunctionalProperty {self._prop.property_class_iri} must have cardinality=1..1')
136
+ if self._attributes[HasPropertyAttr.MIN_COUNT] != 1 or self._attributes[HasPropertyAttr.MAX_COUNT] != 1:
137
+ raise OldapErrorInconsistency(f'InverseFunctionalProperty {self._prop.property_class_iri} must have cardinality=1..1')
138
+
139
+
120
140
  for attr in HasPropertyAttr:
121
141
  setattr(HasProperty, attr.value.fragment, property(
122
142
  partial(HasProperty._get_value, attr=attr),
@@ -184,7 +184,7 @@ class PropertyClass(Model, Notify):
184
184
  __slots__ = ('subPropertyOf', 'type', 'toClass', 'datatype', 'name', 'description', 'languageIn', 'uniqueLang',
185
185
  'inSet', 'minCount', 'maxCount', 'pattern',
186
186
  'minExclusive', 'maxExclusive', 'minInclusive', 'maxInclusive', 'minLength', 'maxLength',
187
- 'lessThan', 'lessThanOrEqual')
187
+ 'lessThan', 'lessThanOrEqual', 'inverseOf', 'equivalentProperty')
188
188
 
189
189
 
190
190
  def __init__(self, *,
@@ -321,10 +321,14 @@ class PropertyClass(Model, Notify):
321
321
  if self._statementProperty:
322
322
  self._attributes[PropClassAttr.TYPE].add(OwlPropertyType.StatementProperty)
323
323
  if self._attributes.get(PropClassAttr.CLASS) is not None:
324
+ if OwlPropertyType.OwlDataProperty in self._attributes[PropClassAttr.TYPE]:
325
+ raise OldapErrorInconsistency(f'Property {self._property_class_iri} cannot be both a link property and a data property.')
324
326
  self._attributes[PropClassAttr.TYPE].add(OwlPropertyType.OwlObjectProperty)
325
327
  if self._attributes.get(PropClassAttr.DATATYPE) is not None:
326
328
  raise OldapError(f'Datatype "{self._attributes.get(PropClassAttr.DATATYPE)}" not possible for OwlObjectProperty')
327
329
  elif self._attributes.get(PropClassAttr.DATATYPE) is not None:
330
+ if OwlPropertyType.OwlObjectProperty in self._attributes[PropClassAttr.TYPE]:
331
+ raise OldapErrorInconsistency(f'Property {self._property_class_iri} cannot be both a link property and a data property.')
328
332
  self._attributes[PropClassAttr.TYPE].add(OwlPropertyType.OwlDataProperty)
329
333
 
330
334
  #
@@ -0,0 +1 @@
1
+ __version__ = "0.3.15"
@@ -14,6 +14,7 @@ from oldaplib.src.enums.action import Action
14
14
  from oldaplib.src.enums.language import Language
15
15
  from oldaplib.src.enums.propertyclassattr import PropClassAttr
16
16
  from oldaplib.src.enums.xsd_datatypes import XsdDatatypes
17
+ from oldaplib.src.hasproperty import HasProperty
17
18
  from oldaplib.src.helpers.context import Context
18
19
  from oldaplib.src.helpers.langstring import LangString, LangStringChange
19
20
  from oldaplib.src.helpers.observable_set import ObservableSet
@@ -252,15 +253,31 @@ class TestPropertyClass(unittest.TestCase):
252
253
  p4.update()
253
254
  self.assertEqual(p4.get(PropClassAttr.TYPE), {OwlPropertyType.SymmetricProperty, OwlPropertyType.TransitiveProperty, OwlPropertyType.OwlDataProperty})
254
255
 
255
- def test_propertyclass_inconsistent_constructor(self):
256
+ def test_propertyclass_inconsistent_constructor_A(self):
256
257
  with self.assertRaises(OldapErrorValue):
257
258
  p5 = PropertyClass(con=self._connection,
258
259
  project=self._project,
259
- property_class_iri=Xsd_QName('test:testprop5'),
260
+ property_class_iri=Xsd_QName('test:testprop5a'),
260
261
  datatype=XsdDatatypes.string,
261
262
  languageIn=LanguageIn(Language.EN, Language.DE, Language.FR))
262
263
 
263
- def test_propertyclass_invalid_constructor(self):
264
+ def test_propertyclass_inconsistent_constructor_B(self):
265
+ with self.assertRaises(OldapErrorInconsistency):
266
+ p5 = PropertyClass(con=self._connection,
267
+ project=self._project,
268
+ type={OwlPropertyType.SymmetricProperty, OwlPropertyType.OwlObjectProperty},
269
+ property_class_iri=Xsd_QName('test:testprop5b'),
270
+ datatype=XsdDatatypes.string)
271
+
272
+ def test_propertyclass_inconsistent_constructor_C(self):
273
+ with self.assertRaises(OldapErrorInconsistency):
274
+ p5 = PropertyClass(con=self._connection,
275
+ project=self._project,
276
+ type={OwlPropertyType.SymmetricProperty, OwlPropertyType.OwlDataProperty},
277
+ property_class_iri=Xsd_QName('test:testprop5c'),
278
+ toClass=Xsd_QName('test:comment'))
279
+
280
+ def test_propertyclass_invalid_constructor_A(self):
264
281
  with self.assertRaises(OldapErrorInconsistency):
265
282
  px = PropertyClass(con=self._connection,
266
283
  project=self._project,
@@ -268,6 +285,38 @@ class TestPropertyClass(unittest.TestCase):
268
285
  toClass=Xsd_QName('test:comment'),
269
286
  minLength=42)
270
287
 
288
+ def test_propertyclass_invalid_constructor_B(self):
289
+ px = PropertyClass(con=self._connection,
290
+ project=self._project,
291
+ type={OwlPropertyType.SymmetricProperty, OwlPropertyType.FunctionalProperty},
292
+ property_class_iri=Xsd_QName('test:testpropBa'),
293
+ toClass=Xsd_QName('test:comment'))
294
+ hp = HasProperty(con=self._connection, project=self._project, prop=px, maxCount=1)
295
+
296
+ with self.assertRaises(OldapErrorInconsistency):
297
+ px = PropertyClass(con=self._connection,
298
+ project=self._project,
299
+ type={OwlPropertyType.SymmetricProperty, OwlPropertyType.FunctionalProperty},
300
+ property_class_iri=Xsd_QName('test:testpropBb'),
301
+ toClass=Xsd_QName('test:comment'))
302
+ hp = HasProperty(con=self._connection, project=self._project, prop=px)
303
+
304
+ def test_propertyclass_invalid_constructor_C(self):
305
+ px = PropertyClass(con=self._connection,
306
+ project=self._project,
307
+ type={OwlPropertyType.SymmetricProperty, OwlPropertyType.InverseFunctionalProperty},
308
+ property_class_iri=Xsd_QName('test:testpropC'),
309
+ toClass=Xsd_QName('test:comment'))
310
+ hp = HasProperty(con=self._connection, project=self._project, prop=px, minCount=1, maxCount=1)
311
+
312
+ with self.assertRaises(OldapErrorInconsistency):
313
+ px = PropertyClass(con=self._connection,
314
+ project=self._project,
315
+ type={OwlPropertyType.SymmetricProperty, OwlPropertyType.InverseFunctionalProperty},
316
+ property_class_iri=Xsd_QName('test:testpropC'),
317
+ toClass=Xsd_QName('test:comment'))
318
+ hp = HasProperty(con=self._connection, project=self._project, prop=px)
319
+
271
320
  def test_propertyclass_projectsn_constructor(self):
272
321
  p6 = PropertyClass(con=self._connection,
273
322
  project="test",
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "oldaplib"
3
- version = "0.3.14"
3
+ version = "0.3.15"
4
4
  description = "Open Media Access Server Library (Linked Open Data middleware/RESTApi)"
5
5
  authors = ["Lukas Rosenthaler <lukas.rosenthaler@unibas.ch>"]
6
6
  license = "GNU Affero General Public License version 3"
@@ -1 +0,0 @@
1
- __version__ = "0.3.14"
File without changes