oldaplib 0.3.13__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.13 → oldaplib-0.3.15}/PKG-INFO +1 -1
  2. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/ontologies/shared.trig +40 -42
  3. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/enums/propertyclassattr.py +1 -1
  4. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/hasproperty.py +21 -1
  5. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/objectfactory.py +21 -8
  6. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/propertyclass.py +5 -1
  7. oldaplib-0.3.15/oldaplib/src/version.py +1 -0
  8. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/test/test_objectfactory.py +21 -2
  9. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/test/test_propertyclass.py +52 -3
  10. {oldaplib-0.3.13 → oldaplib-0.3.15}/pyproject.toml +1 -1
  11. oldaplib-0.3.13/oldaplib/src/version.py +0 -1
  12. {oldaplib-0.3.13 → oldaplib-0.3.15}/README.md +0 -0
  13. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/__init__.py +0 -0
  14. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/apps/load_list.py +0 -0
  15. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/ontologies/admin-testing.trig +0 -0
  16. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/ontologies/admin.trig +0 -0
  17. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/ontologies/example.trig +0 -0
  18. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/ontologies/oldap.trig +0 -0
  19. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/ontologies/oldap.ttl +0 -0
  20. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/ontologies/standard/.gitsave +0 -0
  21. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/__init__.py +0 -0
  22. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/cachesingleton.py +0 -0
  23. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/connection.py +0 -0
  24. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/datamodel.py +0 -0
  25. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/dtypes/__init__.py +0 -0
  26. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/dtypes/bnode.py +0 -0
  27. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/dtypes/languagein.py +0 -0
  28. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/dtypes/namespaceiri.py +0 -0
  29. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/dtypes/rdfset.py +0 -0
  30. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/dtypes/xsdset.py +0 -0
  31. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/enums/__init__.py +0 -0
  32. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/enums/action.py +0 -0
  33. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/enums/adminpermissions.py +0 -0
  34. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/enums/attributeclass.py +0 -0
  35. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/enums/datapermissions.py +0 -0
  36. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/enums/externalontologyattr.py +0 -0
  37. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/enums/haspropertyattr.py +0 -0
  38. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/enums/language.py +0 -0
  39. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/enums/oldaplistattr.py +0 -0
  40. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/enums/oldaplistnodeattr.py +0 -0
  41. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/enums/owlpropertytype.py +0 -0
  42. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/enums/permissionsetattr.py +0 -0
  43. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/enums/projectattr.py +0 -0
  44. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/enums/resourceclassattr.py +0 -0
  45. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/enums/sparql_result_format.py +0 -0
  46. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/enums/userattr.py +0 -0
  47. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/enums/xsd_datatypes.py +0 -0
  48. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/externalontology.py +0 -0
  49. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/globalconfig.py +0 -0
  50. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/helpers/Notify.py +0 -0
  51. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/helpers/__init__.py +0 -0
  52. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/helpers/attributechange.py +0 -0
  53. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/helpers/context.py +0 -0
  54. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/helpers/convert2datatype.py +0 -0
  55. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/helpers/irincname.py +0 -0
  56. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/helpers/json_encoder.py +0 -0
  57. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/helpers/langstring.py +0 -0
  58. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/helpers/numeric.py +0 -0
  59. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/helpers/observable_dict.py +0 -0
  60. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/helpers/observable_set.py +0 -0
  61. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/helpers/oldaperror.py +0 -0
  62. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/helpers/query_processor.py +0 -0
  63. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/helpers/semantic_version.py +0 -0
  64. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/helpers/serializeableset.py +0 -0
  65. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/helpers/serializer.py +0 -0
  66. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/helpers/singletonmeta.py +0 -0
  67. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/helpers/tools.py +0 -0
  68. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/iconnection.py +0 -0
  69. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/in_project.py +0 -0
  70. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/model.py +0 -0
  71. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/oldaplist.py +0 -0
  72. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/oldaplist_helpers.py +0 -0
  73. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/oldaplistnode.py +0 -0
  74. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/oldaplogging.py +0 -0
  75. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/permissionset.py +0 -0
  76. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/project.py +0 -0
  77. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/resourceclass.py +0 -0
  78. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/user.py +0 -0
  79. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/userdataclass.py +0 -0
  80. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/xsd/__init__.py +0 -0
  81. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/xsd/floatingpoint.py +0 -0
  82. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/xsd/iri.py +0 -0
  83. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/xsd/xsd.py +0 -0
  84. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/xsd/xsd_anyuri.py +0 -0
  85. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/xsd/xsd_base64binary.py +0 -0
  86. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/xsd/xsd_boolean.py +0 -0
  87. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/xsd/xsd_byte.py +0 -0
  88. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/xsd/xsd_date.py +0 -0
  89. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/xsd/xsd_datetime.py +0 -0
  90. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/xsd/xsd_datetimestamp.py +0 -0
  91. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/xsd/xsd_decimal.py +0 -0
  92. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/xsd/xsd_double.py +0 -0
  93. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/xsd/xsd_duration.py +0 -0
  94. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/xsd/xsd_float.py +0 -0
  95. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/xsd/xsd_gday.py +0 -0
  96. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/xsd/xsd_gmonth.py +0 -0
  97. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/xsd/xsd_gmonthday.py +0 -0
  98. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/xsd/xsd_gyear.py +0 -0
  99. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/xsd/xsd_gyearmonth.py +0 -0
  100. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/xsd/xsd_hexbinary.py +0 -0
  101. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/xsd/xsd_id.py +0 -0
  102. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/xsd/xsd_idref.py +0 -0
  103. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/xsd/xsd_int.py +0 -0
  104. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/xsd/xsd_integer.py +0 -0
  105. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/xsd/xsd_language.py +0 -0
  106. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/xsd/xsd_long.py +0 -0
  107. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/xsd/xsd_name.py +0 -0
  108. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/xsd/xsd_ncname.py +0 -0
  109. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/xsd/xsd_negativeinteger.py +0 -0
  110. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/xsd/xsd_nmtoken.py +0 -0
  111. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/xsd/xsd_nonnegativeinteger.py +0 -0
  112. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/xsd/xsd_nonpositiveinteger.py +0 -0
  113. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/xsd/xsd_normalizedstring.py +0 -0
  114. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/xsd/xsd_positiveinteger.py +0 -0
  115. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/xsd/xsd_qname.py +0 -0
  116. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/xsd/xsd_short.py +0 -0
  117. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/xsd/xsd_string.py +0 -0
  118. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/xsd/xsd_time.py +0 -0
  119. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/xsd/xsd_token.py +0 -0
  120. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/xsd/xsd_unsignedbyte.py +0 -0
  121. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/xsd/xsd_unsignedint.py +0 -0
  122. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/xsd/xsd_unsignedlong.py +0 -0
  123. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/src/xsd/xsd_unsignedshort.py +0 -0
  124. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/test/__init__.py +0 -0
  125. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/test/test_cache.py +0 -0
  126. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/test/test_connection.py +0 -0
  127. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/test/test_context.py +0 -0
  128. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/test/test_datamodel.py +0 -0
  129. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/test/test_dtypes.py +0 -0
  130. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/test/test_externalontologies.py +0 -0
  131. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/test/test_hasproperty.py +0 -0
  132. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/test/test_in_project.py +0 -0
  133. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/test/test_langstring.py +0 -0
  134. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/test/test_language_in.py +0 -0
  135. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/test/test_observable_dict.py +0 -0
  136. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/test/test_observable_set.py +0 -0
  137. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/test/test_oldaplist.py +0 -0
  138. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/test/test_oldaplist_helpers.py +0 -0
  139. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/test/test_oldaplistnode.py +0 -0
  140. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/test/test_permissionset.py +0 -0
  141. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/test/test_project.py +0 -0
  142. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/test/test_resourceclass.py +0 -0
  143. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/test/test_semantic_version.py +0 -0
  144. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/test/test_user.py +0 -0
  145. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/test/test_xsd_datatypes.py +0 -0
  146. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/testdata/Gender.yaml +0 -0
  147. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/testdata/collections_type.yaml +0 -0
  148. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/testdata/connection_test.trig +0 -0
  149. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/testdata/datamodel_test.trig +0 -0
  150. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/testdata/event_type.yaml +0 -0
  151. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/testdata/hlist_schema.yaml +0 -0
  152. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/testdata/instances_test.trig +0 -0
  153. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/testdata/institution_or_building_type.yaml +0 -0
  154. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/testdata/language.yaml +0 -0
  155. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/testdata/location_type.yaml +0 -0
  156. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/testdata/means_of_transportation.yaml +0 -0
  157. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/testdata/objectfactory_test.trig +0 -0
  158. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/testdata/playground_list.yaml +0 -0
  159. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/testdata/role.yaml +0 -0
  160. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/testdata/source_type-1.yaml +0 -0
  161. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/testdata/source_type.yaml +0 -0
  162. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/testdata/test_move_left_of_toL.yaml +0 -0
  163. {oldaplib-0.3.13 → oldaplib-0.3.15}/oldaplib/testdata/testlist.yaml +0 -0
  164. {oldaplib-0.3.13 → 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.13
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
@@ -95,26 +95,27 @@ shared:shacl {
95
95
  # Media object
96
96
  ###############################################################################
97
97
 
98
- oldap:MediaObjectShape a sh:NodeShape ;
99
- sh:targetClass oldap:MediaObject ;
100
- dcterms:created "2025-11-20T22:48:57.760670+01:00"^^xsd:dateTime ;
98
+ shared:MediaObjectShape a sh:NodeShape ;
99
+ sh:targetClass shared:MediaObject ;
100
+ dcterms:created "2025-11-21T00:15:09.037880+01:00"^^xsd:dateTime ;
101
101
  dcterms:creator <https://orcid.org/0000-0003-1681-4036> ;
102
- dcterms:modified "2025-11-20T22:48:57.760670+01:00"^^xsd:dateTime ;
102
+ dcterms:modified "2025-11-21T00:15:09.037880+01:00"^^xsd:dateTime ;
103
103
  dcterms:contributor <https://orcid.org/0000-0003-1681-4036> ;
104
104
  oldap:externalOntology "false"^^xsd:boolean ;
105
105
  rdfs:label "MediaObject"@en, "Medienobjekt"@de, "MediaObject"@fr, "MediaObject"@it ;
106
106
  rdfs:comment "Page of a book"@en, "Seite eines Buches"@de ;
107
107
  sh:closed "true"^^xsd:boolean ;
108
+ sh:node oldap:ThingShape ;
108
109
  sh:property [
109
110
  sh:path rdf:type ;
110
111
  ] ;
111
112
  sh:property [ # >>PropertyClass.property_node_shacl()
112
- sh:path oldap:originalName ;
113
+ sh:path shared:originalName ;
113
114
  schema:version "0.1.0"^^xsd:string ;
114
115
  dcterms:creator <https://orcid.org/0000-0003-1681-4036> ;
115
- dcterms:created "2025-11-20T22:48:57.760670+01:00"^^xsd:dateTime ;
116
+ dcterms:created "2025-11-21T00:15:09.037880+01:00"^^xsd:dateTime ;
116
117
  dcterms:contributor <https://orcid.org/0000-0003-1681-4036> ;
117
- dcterms:modified "2025-11-20T22:48:57.760670+01:00"^^xsd:dateTime ;
118
+ dcterms:modified "2025-11-21T00:15:09.037880+01:00"^^xsd:dateTime ;
118
119
  oldap:statementProperty "false"^^xsd:boolean ;
119
120
  oldap:externalOntology "false"^^xsd:boolean ;
120
121
  sh:datatype xsd:string ;
@@ -124,12 +125,12 @@ shared:shacl {
124
125
  sh:order "1.0"^^xsd:decimal ;
125
126
  ] ;
126
127
  sh:property [ # >>PropertyClass.property_node_shacl()
127
- sh:path oldap:originalMimeType ;
128
+ sh:path shared:originalMimeType ;
128
129
  schema:version "0.1.0"^^xsd:string ;
129
130
  dcterms:creator <https://orcid.org/0000-0003-1681-4036> ;
130
- dcterms:created "2025-11-20T22:48:57.760670+01:00"^^xsd:dateTime ;
131
+ dcterms:created "2025-11-21T00:15:09.037880+01:00"^^xsd:dateTime ;
131
132
  dcterms:contributor <https://orcid.org/0000-0003-1681-4036> ;
132
- dcterms:modified "2025-11-20T22:48:57.760670+01:00"^^xsd:dateTime ;
133
+ dcterms:modified "2025-11-21T00:15:09.037880+01:00"^^xsd:dateTime ;
133
134
  oldap:statementProperty "false"^^xsd:boolean ;
134
135
  oldap:externalOntology "false"^^xsd:boolean ;
135
136
  sh:datatype xsd:string ;
@@ -139,12 +140,12 @@ shared:shacl {
139
140
  sh:order "2.0"^^xsd:decimal ;
140
141
  ] ;
141
142
  sh:property [ # >>PropertyClass.property_node_shacl()
142
- sh:path oldap:serverUrl ;
143
+ sh:path shared:serverUrl ;
143
144
  schema:version "0.1.0"^^xsd:string ;
144
145
  dcterms:creator <https://orcid.org/0000-0003-1681-4036> ;
145
- dcterms:created "2025-11-20T22:48:57.760670+01:00"^^xsd:dateTime ;
146
+ dcterms:created "2025-11-21T00:15:09.037880+01:00"^^xsd:dateTime ;
146
147
  dcterms:contributor <https://orcid.org/0000-0003-1681-4036> ;
147
- dcterms:modified "2025-11-20T22:48:57.760670+01:00"^^xsd:dateTime ;
148
+ dcterms:modified "2025-11-21T00:15:09.037880+01:00"^^xsd:dateTime ;
148
149
  oldap:statementProperty "false"^^xsd:boolean ;
149
150
  oldap:externalOntology "false"^^xsd:boolean ;
150
151
  sh:datatype xsd:anyURI ;
@@ -154,12 +155,12 @@ shared:shacl {
154
155
  sh:order "3.0"^^xsd:decimal ;
155
156
  ] ;
156
157
  sh:property [ # >>PropertyClass.property_node_shacl()
157
- sh:path oldap:imageId ;
158
+ sh:path shared:imageId ;
158
159
  schema:version "0.1.0"^^xsd:string ;
159
160
  dcterms:creator <https://orcid.org/0000-0003-1681-4036> ;
160
- dcterms:created "2025-11-20T22:48:57.760670+01:00"^^xsd:dateTime ;
161
+ dcterms:created "2025-11-21T00:15:09.037880+01:00"^^xsd:dateTime ;
161
162
  dcterms:contributor <https://orcid.org/0000-0003-1681-4036> ;
162
- dcterms:modified "2025-11-20T22:48:57.760670+01:00"^^xsd:dateTime ;
163
+ dcterms:modified "2025-11-21T00:15:09.037880+01:00"^^xsd:dateTime ;
163
164
  oldap:statementProperty "false"^^xsd:boolean ;
164
165
  oldap:externalOntology "false"^^xsd:boolean ;
165
166
  sh:datatype xsd:string ;
@@ -168,9 +169,6 @@ shared:shacl {
168
169
  sh:maxCount "1"^^xsd:integer ;
169
170
  sh:order "3.0"^^xsd:decimal ;
170
171
  ] .
171
-
172
-
173
-
174
172
  }
175
173
 
176
174
  shared:onto {
@@ -294,68 +292,68 @@ shared:onto {
294
292
  # Media object
295
293
  ###########################################################################
296
294
 
297
- oldap:originalName rdf:type owl:DatatypeProperty ;
298
- rdfs:domain oldap:MediaObject ;
295
+ shared:originalName rdf:type owl:DatatypeProperty ;
296
+ rdfs:domain shared:MediaObject ;
299
297
  rdfs:range xsd:string ;
300
298
  dcterms:creator <https://orcid.org/0000-0003-1681-4036> ;
301
- dcterms:created "2025-11-20T22:48:57.760670+01:00"^^xsd:dateTime ;
299
+ dcterms:created "2025-11-21T00:15:09.037880+01:00"^^xsd:dateTime ;
302
300
  dcterms:contributor <https://orcid.org/0000-0003-1681-4036> ;
303
- dcterms:modified "2025-11-20T22:48:57.760670+01:00"^^xsd:dateTime .
301
+ dcterms:modified "2025-11-21T00:15:09.037880+01:00"^^xsd:dateTime .
304
302
 
305
- oldap:originalMimeType rdf:type owl:DatatypeProperty ;
306
- rdfs:domain oldap:MediaObject ;
303
+ shared:originalMimeType rdf:type owl:DatatypeProperty ;
304
+ rdfs:domain shared:MediaObject ;
307
305
  rdfs:range xsd:string ;
308
306
  dcterms:creator <https://orcid.org/0000-0003-1681-4036> ;
309
- dcterms:created "2025-11-20T22:48:57.760670+01:00"^^xsd:dateTime ;
307
+ dcterms:created "2025-11-21T00:15:09.037880+01:00"^^xsd:dateTime ;
310
308
  dcterms:contributor <https://orcid.org/0000-0003-1681-4036> ;
311
- dcterms:modified "2025-11-20T22:48:57.760670+01:00"^^xsd:dateTime .
309
+ dcterms:modified "2025-11-21T00:15:09.037880+01:00"^^xsd:dateTime .
312
310
 
313
- oldap:serverUrl rdf:type owl:DatatypeProperty ;
314
- rdfs:domain oldap:MediaObject ;
311
+ shared:serverUrl rdf:type owl:DatatypeProperty ;
312
+ rdfs:domain shared:MediaObject ;
315
313
  rdfs:range xsd:anyURI ;
316
314
  dcterms:creator <https://orcid.org/0000-0003-1681-4036> ;
317
- dcterms:created "2025-11-20T22:48:57.760670+01:00"^^xsd:dateTime ;
315
+ dcterms:created "2025-11-21T00:15:09.037880+01:00"^^xsd:dateTime ;
318
316
  dcterms:contributor <https://orcid.org/0000-0003-1681-4036> ;
319
- dcterms:modified "2025-11-20T22:48:57.760670+01:00"^^xsd:dateTime .
317
+ dcterms:modified "2025-11-21T00:15:09.037880+01:00"^^xsd:dateTime .
320
318
 
321
- oldap:imageId rdf:type owl:DatatypeProperty ;
322
- rdfs:domain oldap:MediaObject ;
319
+ shared:imageId rdf:type owl:DatatypeProperty ;
320
+ rdfs:domain shared:MediaObject ;
323
321
  rdfs:range xsd:string ;
324
322
  dcterms:creator <https://orcid.org/0000-0003-1681-4036> ;
325
- dcterms:created "2025-11-20T22:48:57.760670+01:00"^^xsd:dateTime ;
323
+ dcterms:created "2025-11-21T00:15:09.037880+01:00"^^xsd:dateTime ;
326
324
  dcterms:contributor <https://orcid.org/0000-0003-1681-4036> ;
327
- dcterms:modified "2025-11-20T22:48:57.760670+01:00"^^xsd:dateTime .
325
+ dcterms:modified "2025-11-21T00:15:09.037880+01:00"^^xsd:dateTime .
328
326
 
329
- oldap:MediaObject rdf:type owl:Class ;
327
+ shared:MediaObject rdf:type owl:Class ;
330
328
  schema:version "0.1.0"^^xsd:string ;
331
- dcterms:created "2025-11-20T22:48:57.760670+01:00"^^xsd:dateTime ;
329
+ dcterms:created "2025-11-21T00:15:09.037880+01:00"^^xsd:dateTime ;
332
330
  dcterms:creator <https://orcid.org/0000-0003-1681-4036> ;
333
- dcterms:modified "2025-11-20T22:48:57.760670+01:00"^^xsd:dateTime ;
331
+ dcterms:modified "2025-11-21T00:15:09.037880+01:00"^^xsd:dateTime ;
334
332
  dcterms:contributor <https://orcid.org/0000-0003-1681-4036> ;
335
333
  rdfs:label "MediaObject"@en, "Medienobjekt"@de, "MediaObject"@fr, "MediaObject"@it ;
336
334
  rdfs:comment "Page of a book"@en, "Seite eines Buches"@de ;
337
335
  rdfs:subClassOf oldap:Thing ,
338
336
  [
339
337
  rdf:type owl:Restriction ;
340
- owl:onProperty oldap:originalName ;
338
+ owl:onProperty shared:originalName ;
341
339
  owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ;
342
340
  owl:onDataRange xsd:string ;
343
341
  ] ,
344
342
  [
345
343
  rdf:type owl:Restriction ;
346
- owl:onProperty oldap:originalMimeType ;
344
+ owl:onProperty shared:originalMimeType ;
347
345
  owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ;
348
346
  owl:onDataRange xsd:string ;
349
347
  ] ,
350
348
  [
351
349
  rdf:type owl:Restriction ;
352
- owl:onProperty oldap:serverUrl ;
350
+ owl:onProperty shared:serverUrl ;
353
351
  owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ;
354
352
  owl:onDataRange xsd:anyURI ;
355
353
  ] ,
356
354
  [
357
355
  rdf:type owl:Restriction ;
358
- owl:onProperty oldap:imageId ;
356
+ owl:onProperty shared:imageId ;
359
357
  owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ;
360
358
  owl:onDataRange xsd:string ;
361
359
  ] .
@@ -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),
@@ -495,7 +495,7 @@ class ResourceInstance:
495
495
  raise OldapErrorNoPermission(message)
496
496
 
497
497
  timestamp = Xsd_dateTimeStamp()
498
- if self.name == "Thing":
498
+ if self.name in ("Thing", "oldap:Thing"):
499
499
  self._values[Xsd_QName('oldap:createdBy', validate=False)] = ObservableSet({self._con.userIri})
500
500
  self._values[Xsd_QName('oldap:creationDate', validate=False)] = ObservableSet({timestamp})
501
501
  self._values[Xsd_QName('oldap:lastModifiedBy', validate=False)] = ObservableSet({self._con.userIri})
@@ -517,7 +517,7 @@ class ResourceInstance:
517
517
  sparql += f'{blank:{indent * indent_inc}}INSERT DATA {{'
518
518
  sparql += f'\n{blank:{(indent + 1) * indent_inc}}GRAPH {self._graph}:data {{'
519
519
 
520
- sparql += f'\n{blank:{(indent + 2) * indent_inc}}{self._iri.toRdf} a {self._graph}:{self.name}'
520
+ sparql += f'\n{blank:{(indent + 2) * indent_inc}}{self._iri.toRdf} a {self.name}'
521
521
 
522
522
  for prop_iri, values in self._values.items():
523
523
  if self.properties.get(prop_iri) and self.properties[prop_iri].prop.datatype == XsdDatatypes.QName:
@@ -537,6 +537,7 @@ class ResourceInstance:
537
537
  raise OldapErrorAlreadyExists(f'Resource with IRI {self._iri} already exists.')
538
538
  self._con.transaction_update(sparql)
539
539
  except OldapError as e:
540
+ print(sparql)
540
541
  self._con.transaction_abort()
541
542
  raise
542
543
  self._con.transaction_commit()
@@ -1172,7 +1173,9 @@ class ResourceInstanceFactory:
1172
1173
  """
1173
1174
  _con: IConnection
1174
1175
  _project: Project
1176
+ _sharedProject: Project
1175
1177
  _datamodel: DataModel
1178
+ _sharedModel: DataModel
1176
1179
 
1177
1180
  def __init__(self,
1178
1181
  con: IConnection,
@@ -1182,20 +1185,30 @@ class ResourceInstanceFactory:
1182
1185
  self._project = project
1183
1186
  else:
1184
1187
  self._project = Project.read(self._con, project)
1188
+ self._sharedProject = Project.read(self._con, "oldap:SharedProject")
1185
1189
 
1186
- self._datamodel = DataModel.read(con=self._con, project=self._project, ignore_cache=True)
1190
+ self._datamodel = DataModel.read(con=self._con, project=self._project)
1191
+ self._sharedModel = DataModel.read(con=self._con, project=self._sharedProject)
1187
1192
 
1188
- def createObjectInstance(self, name: Xsd_NCName | str) -> Type: ## ToDo: Get name automatically from IRI
1189
- classiri = Xsd_QName(self._project.projectShortName, name)
1193
+ def createObjectInstance(self, name: Xsd_NCName | Xsd_QName | str) -> Type: ## ToDo: Get name automatically from IRI
1194
+ if isinstance(name, Xsd_QName):
1195
+ classiri = name
1196
+ else:
1197
+ try:
1198
+ classiri = Xsd_QName(name, validate=True)
1199
+ except (ValueError, OldapErrorValue):
1200
+ if not isinstance(name, Xsd_NCName):
1201
+ name = Xsd_NCName(name, validate=True)
1202
+ classiri = Xsd_QName(self._project.projectShortName, name)
1190
1203
  resclass = self._datamodel.get(classiri)
1191
- if not isinstance(name, Xsd_NCName):
1192
- name = Xsd_NCName(name)
1204
+ if not resclass:
1205
+ resclass = self._sharedModel.get(classiri)
1193
1206
  if resclass is None:
1194
1207
  raise OldapErrorNotFound(f'Given Resource Class "{classiri}" not found.')
1195
1208
  return type(str(name), (ResourceInstance,), {
1196
1209
  '_con': self._con,
1197
1210
  'project': self._project,
1198
- 'name': name,
1211
+ 'name': resclass.owl_class_iri,
1199
1212
  'factory': self,
1200
1213
  'properties': resclass.properties,
1201
1214
  'superclass': resclass.superclass})
@@ -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"
@@ -357,6 +357,25 @@ class TestObjectFactory(unittest.TestCase):
357
357
  mycat = Cat(name="Fluffy", subName="Fluffy the Cat")
358
358
  mycat.create()
359
359
 
360
+ def test_create_from_shared(self):
361
+ dm = DataModel.read(con=self._connection, project='test')
362
+ factory = ResourceInstanceFactory(con=self._connection, project='test')
363
+ MO = factory.createObjectInstance('shared:MediaObject')
364
+ mo = MO(originalName='Cat.tif',
365
+ originalMimeType='image/tiff',
366
+ serverUrl='http://iiif.oldap.org/iiif/3/',
367
+ imageId='cat.tif',
368
+ grantsPermission=Iri('oldap:GenericView'))
369
+ mo.create()
370
+ data = ResourceInstance.read_data(con=self._connection, iri=mo.iri, projectShortName='test')
371
+ print(data)
372
+ self.assertEqual(data[Xsd_QName("oldap:grantsPermission")], ['oldap:GenericView'])
373
+ self.assertEqual(data[Xsd_QName("shared:originalName")], ['Cat.tif'])
374
+ self.assertEqual(data[Xsd_QName("shared:originalMimeType")], ['image/tiff'])
375
+ self.assertEqual(data[Xsd_QName("shared:serverUrl")], ['http://iiif.oldap.org/iiif/3/'])
376
+ self.assertEqual(data[Xsd_QName("shared:imageId")], ['cat.tif'])
377
+ mo.delete()
378
+
360
379
  def test_read_A(self):
361
380
  factory = ResourceInstanceFactory(con=self._connection, project='test')
362
381
  Book = factory.createObjectInstance('Book')
@@ -381,7 +400,7 @@ class TestObjectFactory(unittest.TestCase):
381
400
  grantsPermission=Iri('oldap:GenericView'))
382
401
  b.create()
383
402
  bb = factory.read(iri=b.iri)
384
- self.assertEqual(bb.name, "Book")
403
+ self.assertEqual(bb.name, "test:Book")
385
404
  self.assertEqual(bb.title, {Xsd_string("The Life and Times of Scrooge")})
386
405
  self.assertEqual(bb.author, {Iri("test:TuomasHolopainen")})
387
406
  jsonobj = bb.toJsonObject()
@@ -398,7 +417,7 @@ class TestObjectFactory(unittest.TestCase):
398
417
  grantsPermission=Iri('oldap:GenericView'))
399
418
  b.create()
400
419
  bb = Book.read(con=self._connection, iri=b.iri)
401
- self.assertEqual(bb.name, "Book")
420
+ self.assertEqual(bb.name, "test:Book")
402
421
  self.assertEqual(bb.title, {Xsd_string("The Life and Times of Scrooge")})
403
422
  self.assertEqual(bb.author, {Iri("test:TuomasHolopainen")})
404
423
  jsonobj = bb.toJsonObject()
@@ -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.13"
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.13"
File without changes