oldaplib 0.3.12__tar.gz → 0.3.14__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.12 → oldaplib-0.3.14}/PKG-INFO +8 -1
  2. {oldaplib-0.3.12 → oldaplib-0.3.14}/README.md +7 -0
  3. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/ontologies/shared.trig +155 -6
  4. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/enums/haspropertyattr.py +2 -2
  5. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/hasproperty.py +12 -6
  6. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/objectfactory.py +21 -8
  7. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/propertyclass.py +14 -8
  8. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/resourceclass.py +4 -4
  9. oldaplib-0.3.14/oldaplib/src/version.py +1 -0
  10. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/test/test_objectfactory.py +21 -2
  11. {oldaplib-0.3.12 → oldaplib-0.3.14}/pyproject.toml +1 -1
  12. oldaplib-0.3.12/oldaplib/src/version.py +0 -1
  13. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/__init__.py +0 -0
  14. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/apps/load_list.py +0 -0
  15. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/ontologies/admin-testing.trig +0 -0
  16. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/ontologies/admin.trig +0 -0
  17. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/ontologies/example.trig +0 -0
  18. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/ontologies/oldap.trig +0 -0
  19. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/ontologies/oldap.ttl +0 -0
  20. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/ontologies/standard/.gitsave +0 -0
  21. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/__init__.py +0 -0
  22. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/cachesingleton.py +0 -0
  23. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/connection.py +0 -0
  24. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/datamodel.py +0 -0
  25. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/dtypes/__init__.py +0 -0
  26. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/dtypes/bnode.py +0 -0
  27. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/dtypes/languagein.py +0 -0
  28. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/dtypes/namespaceiri.py +0 -0
  29. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/dtypes/rdfset.py +0 -0
  30. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/dtypes/xsdset.py +0 -0
  31. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/enums/__init__.py +0 -0
  32. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/enums/action.py +0 -0
  33. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/enums/adminpermissions.py +0 -0
  34. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/enums/attributeclass.py +0 -0
  35. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/enums/datapermissions.py +0 -0
  36. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/enums/externalontologyattr.py +0 -0
  37. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/enums/language.py +0 -0
  38. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/enums/oldaplistattr.py +0 -0
  39. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/enums/oldaplistnodeattr.py +0 -0
  40. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/enums/owlpropertytype.py +0 -0
  41. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/enums/permissionsetattr.py +0 -0
  42. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/enums/projectattr.py +0 -0
  43. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/enums/propertyclassattr.py +0 -0
  44. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/enums/resourceclassattr.py +0 -0
  45. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/enums/sparql_result_format.py +0 -0
  46. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/enums/userattr.py +0 -0
  47. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/enums/xsd_datatypes.py +0 -0
  48. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/externalontology.py +0 -0
  49. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/globalconfig.py +0 -0
  50. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/helpers/Notify.py +0 -0
  51. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/helpers/__init__.py +0 -0
  52. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/helpers/attributechange.py +0 -0
  53. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/helpers/context.py +0 -0
  54. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/helpers/convert2datatype.py +0 -0
  55. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/helpers/irincname.py +0 -0
  56. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/helpers/json_encoder.py +0 -0
  57. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/helpers/langstring.py +0 -0
  58. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/helpers/numeric.py +0 -0
  59. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/helpers/observable_dict.py +0 -0
  60. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/helpers/observable_set.py +0 -0
  61. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/helpers/oldaperror.py +0 -0
  62. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/helpers/query_processor.py +0 -0
  63. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/helpers/semantic_version.py +0 -0
  64. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/helpers/serializeableset.py +0 -0
  65. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/helpers/serializer.py +0 -0
  66. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/helpers/singletonmeta.py +0 -0
  67. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/helpers/tools.py +0 -0
  68. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/iconnection.py +0 -0
  69. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/in_project.py +0 -0
  70. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/model.py +0 -0
  71. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/oldaplist.py +0 -0
  72. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/oldaplist_helpers.py +0 -0
  73. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/oldaplistnode.py +0 -0
  74. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/oldaplogging.py +0 -0
  75. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/permissionset.py +0 -0
  76. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/project.py +0 -0
  77. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/user.py +0 -0
  78. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/userdataclass.py +0 -0
  79. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/xsd/__init__.py +0 -0
  80. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/xsd/floatingpoint.py +0 -0
  81. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/xsd/iri.py +0 -0
  82. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/xsd/xsd.py +0 -0
  83. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/xsd/xsd_anyuri.py +0 -0
  84. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/xsd/xsd_base64binary.py +0 -0
  85. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/xsd/xsd_boolean.py +0 -0
  86. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/xsd/xsd_byte.py +0 -0
  87. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/xsd/xsd_date.py +0 -0
  88. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/xsd/xsd_datetime.py +0 -0
  89. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/xsd/xsd_datetimestamp.py +0 -0
  90. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/xsd/xsd_decimal.py +0 -0
  91. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/xsd/xsd_double.py +0 -0
  92. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/xsd/xsd_duration.py +0 -0
  93. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/xsd/xsd_float.py +0 -0
  94. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/xsd/xsd_gday.py +0 -0
  95. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/xsd/xsd_gmonth.py +0 -0
  96. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/xsd/xsd_gmonthday.py +0 -0
  97. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/xsd/xsd_gyear.py +0 -0
  98. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/xsd/xsd_gyearmonth.py +0 -0
  99. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/xsd/xsd_hexbinary.py +0 -0
  100. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/xsd/xsd_id.py +0 -0
  101. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/xsd/xsd_idref.py +0 -0
  102. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/xsd/xsd_int.py +0 -0
  103. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/xsd/xsd_integer.py +0 -0
  104. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/xsd/xsd_language.py +0 -0
  105. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/xsd/xsd_long.py +0 -0
  106. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/xsd/xsd_name.py +0 -0
  107. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/xsd/xsd_ncname.py +0 -0
  108. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/xsd/xsd_negativeinteger.py +0 -0
  109. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/xsd/xsd_nmtoken.py +0 -0
  110. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/xsd/xsd_nonnegativeinteger.py +0 -0
  111. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/xsd/xsd_nonpositiveinteger.py +0 -0
  112. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/xsd/xsd_normalizedstring.py +0 -0
  113. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/xsd/xsd_positiveinteger.py +0 -0
  114. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/xsd/xsd_qname.py +0 -0
  115. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/xsd/xsd_short.py +0 -0
  116. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/xsd/xsd_string.py +0 -0
  117. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/xsd/xsd_time.py +0 -0
  118. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/xsd/xsd_token.py +0 -0
  119. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/xsd/xsd_unsignedbyte.py +0 -0
  120. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/xsd/xsd_unsignedint.py +0 -0
  121. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/xsd/xsd_unsignedlong.py +0 -0
  122. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/src/xsd/xsd_unsignedshort.py +0 -0
  123. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/test/__init__.py +0 -0
  124. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/test/test_cache.py +0 -0
  125. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/test/test_connection.py +0 -0
  126. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/test/test_context.py +0 -0
  127. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/test/test_datamodel.py +0 -0
  128. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/test/test_dtypes.py +0 -0
  129. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/test/test_externalontologies.py +0 -0
  130. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/test/test_hasproperty.py +0 -0
  131. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/test/test_in_project.py +0 -0
  132. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/test/test_langstring.py +0 -0
  133. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/test/test_language_in.py +0 -0
  134. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/test/test_observable_dict.py +0 -0
  135. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/test/test_observable_set.py +0 -0
  136. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/test/test_oldaplist.py +0 -0
  137. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/test/test_oldaplist_helpers.py +0 -0
  138. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/test/test_oldaplistnode.py +0 -0
  139. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/test/test_permissionset.py +0 -0
  140. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/test/test_project.py +0 -0
  141. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/test/test_propertyclass.py +0 -0
  142. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/test/test_resourceclass.py +0 -0
  143. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/test/test_semantic_version.py +0 -0
  144. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/test/test_user.py +0 -0
  145. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/test/test_xsd_datatypes.py +0 -0
  146. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/testdata/Gender.yaml +0 -0
  147. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/testdata/collections_type.yaml +0 -0
  148. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/testdata/connection_test.trig +0 -0
  149. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/testdata/datamodel_test.trig +0 -0
  150. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/testdata/event_type.yaml +0 -0
  151. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/testdata/hlist_schema.yaml +0 -0
  152. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/testdata/instances_test.trig +0 -0
  153. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/testdata/institution_or_building_type.yaml +0 -0
  154. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/testdata/language.yaml +0 -0
  155. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/testdata/location_type.yaml +0 -0
  156. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/testdata/means_of_transportation.yaml +0 -0
  157. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/testdata/objectfactory_test.trig +0 -0
  158. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/testdata/playground_list.yaml +0 -0
  159. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/testdata/role.yaml +0 -0
  160. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/testdata/source_type-1.yaml +0 -0
  161. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/testdata/source_type.yaml +0 -0
  162. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/testdata/test_move_left_of_toL.yaml +0 -0
  163. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/testdata/testlist.yaml +0 -0
  164. {oldaplib-0.3.12 → oldaplib-0.3.14}/oldaplib/testit.http +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: oldaplib
3
- Version: 0.3.12
3
+ Version: 0.3.14
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
@@ -79,4 +79,11 @@ http://oldap.org/<location>/<project>/data#
79
79
  The project name must be unique to the location and is of
80
80
  type [NCName](https://www.w3.org/TR/1999/REC-xml-names-19990114/#NT-NCName).
81
81
 
82
+ ## Media object
83
+
84
+ - originalName: `<http://purl.org/dc/terms/originalName>`
85
+ - originalMimeType: `<http://purl.org/dc/terms/format>`
86
+ - mediaserverUri: xsd:anyURI
87
+ - project: `<http://oldap.org/base#project>`
88
+
82
89
 
@@ -43,3 +43,10 @@ http://oldap.org/<location>/<project>/data#
43
43
  The project name must be unique to the location and is of
44
44
  type [NCName](https://www.w3.org/TR/1999/REC-xml-names-19990114/#NT-NCName).
45
45
 
46
+ ## Media object
47
+
48
+ - originalName: `<http://purl.org/dc/terms/originalName>`
49
+ - originalMimeType: `<http://purl.org/dc/terms/format>`
50
+ - mediaserverUri: xsd:anyURI
51
+ - project: `<http://oldap.org/base#project>`
52
+
@@ -41,7 +41,7 @@ shared:shacl {
41
41
  dcterms:created "2023-11-04T12:00:00+00:00"^^xsd:dateTime ;
42
42
  dcterms:contributor <https://orcid.org/0000-0003-1681-4036> ;
43
43
  dcterms:modified "2023-11-04T12:00:00+00:00"^^xsd:dateTime ;
44
- sh:maxCount "1"^^xsd:integer ;
44
+ sh:maxCount "1"^^xsd:nonNegativeInteger ;
45
45
  sh:datatype xsd:decimal ;
46
46
  ] ;
47
47
  sh:property [
@@ -50,7 +50,7 @@ shared:shacl {
50
50
  dcterms:created "2023-11-04T12:00:00+00:00"^^xsd:dateTime ;
51
51
  dcterms:contributor <https://orcid.org/0000-0003-1681-4036> ;
52
52
  dcterms:modified "2023-11-04T12:00:00+00:00"^^xsd:dateTime ;
53
- sh:maxCount "1"^^xsd:integer ;
53
+ sh:maxCount "1"^^xsd:nonNegativeInteger ;
54
54
  sh:datatype xsd:string ;
55
55
  sh:in ("GREGORIAN"^^xsd:string "JULIAN"^^xsd:string "HEBREW"^^xsd:string "ISLAMIC"^^xsd:string "PERSIAN"^^xsd:string) ;
56
56
  ] ;
@@ -60,7 +60,7 @@ shared:shacl {
60
60
  dcterms:created "2023-11-04T12:00:00+00:00"^^xsd:dateTime ;
61
61
  dcterms:contributor <https://orcid.org/0000-0003-1681-4036> ;
62
62
  dcterms:modified "2023-11-04T12:00:00+00:00"^^xsd:dateTime ;
63
- sh:maxCount "1"^^xsd:integer ;
63
+ sh:maxCount "1"^^xsd:nonNegativeInteger ;
64
64
  sh:class oldap:ChronolgyStatement ;
65
65
  ] ;
66
66
  sh:property [
@@ -69,7 +69,7 @@ shared:shacl {
69
69
  dcterms:created "2023-11-04T12:00:00+00:00"^^xsd:dateTime ;
70
70
  dcterms:contributor <https://orcid.org/0000-0003-1681-4036> ;
71
71
  dcterms:modified "2023-11-04T12:00:00+00:00"^^xsd:dateTime ;
72
- sh:maxCount "1"^^xsd:integer ;
72
+ sh:maxCount "1"^^xsd:nonNegativeInteger ;
73
73
  sh:class oldap:ChronolgyStatement ;
74
74
  ] ;
75
75
  sh:property [
@@ -78,7 +78,7 @@ shared:shacl {
78
78
  dcterms:created "2023-11-04T12:00:00+00:00"^^xsd:dateTime ;
79
79
  dcterms:contributor <https://orcid.org/0000-0003-1681-4036> ;
80
80
  dcterms:modified "2023-11-04T12:00:00+00:00"^^xsd:dateTime ;
81
- sh:maxCount "1"^^xsd:integer ;
81
+ sh:maxCount "1"^^xsd:nonNegativeInteger ;
82
82
  sh:datatype xsd:decimal ;
83
83
  ] ;
84
84
  sh:property [
@@ -87,11 +87,88 @@ shared:shacl {
87
87
  dcterms:created "2023-11-04T12:00:00+00:00"^^xsd:dateTime ;
88
88
  dcterms:contributor <https://orcid.org/0000-0003-1681-4036> ;
89
89
  dcterms:modified "2023-11-04T12:00:00+00:00"^^xsd:dateTime ;
90
- sh:maxCount "1"^^xsd:integer ;
90
+ sh:maxCount "1"^^xsd:nonNegativeInteger ;
91
91
  sh:datatype xsd:decimal ;
92
92
  ] .
93
93
 
94
+ ###############################################################################
95
+ # Media object
96
+ ###############################################################################
94
97
 
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
+ dcterms:creator <https://orcid.org/0000-0003-1681-4036> ;
102
+ dcterms:modified "2025-11-21T00:15:09.037880+01:00"^^xsd:dateTime ;
103
+ dcterms:contributor <https://orcid.org/0000-0003-1681-4036> ;
104
+ oldap:externalOntology "false"^^xsd:boolean ;
105
+ rdfs:label "MediaObject"@en, "Medienobjekt"@de, "MediaObject"@fr, "MediaObject"@it ;
106
+ rdfs:comment "Page of a book"@en, "Seite eines Buches"@de ;
107
+ sh:closed "true"^^xsd:boolean ;
108
+ sh:node oldap:ThingShape ;
109
+ sh:property [
110
+ sh:path rdf:type ;
111
+ ] ;
112
+ sh:property [ # >>PropertyClass.property_node_shacl()
113
+ sh:path shared:originalName ;
114
+ schema:version "0.1.0"^^xsd:string ;
115
+ dcterms:creator <https://orcid.org/0000-0003-1681-4036> ;
116
+ dcterms:created "2025-11-21T00:15:09.037880+01:00"^^xsd:dateTime ;
117
+ dcterms:contributor <https://orcid.org/0000-0003-1681-4036> ;
118
+ dcterms:modified "2025-11-21T00:15:09.037880+01:00"^^xsd:dateTime ;
119
+ oldap:statementProperty "false"^^xsd:boolean ;
120
+ oldap:externalOntology "false"^^xsd:boolean ;
121
+ sh:datatype xsd:string ;
122
+ sh:name "Original Filename"@en, "Originaler Dateiname"@de, "Nom orignal du fichier"@fr, "Nome documento originale"@it ;
123
+ sh:minCount "1"^^xsd:integer ;
124
+ sh:maxCount "1"^^xsd:integer ;
125
+ sh:order "1.0"^^xsd:decimal ;
126
+ ] ;
127
+ sh:property [ # >>PropertyClass.property_node_shacl()
128
+ sh:path shared:originalMimeType ;
129
+ schema:version "0.1.0"^^xsd:string ;
130
+ dcterms:creator <https://orcid.org/0000-0003-1681-4036> ;
131
+ dcterms:created "2025-11-21T00:15:09.037880+01:00"^^xsd:dateTime ;
132
+ dcterms:contributor <https://orcid.org/0000-0003-1681-4036> ;
133
+ dcterms:modified "2025-11-21T00:15:09.037880+01:00"^^xsd:dateTime ;
134
+ oldap:statementProperty "false"^^xsd:boolean ;
135
+ oldap:externalOntology "false"^^xsd:boolean ;
136
+ sh:datatype xsd:string ;
137
+ sh:name "Original mimetype"@en, "Originaler Mimetype"@de, "Mimetype original"@fr, "Mimetype originale"@it ;
138
+ sh:minCount "1"^^xsd:integer ;
139
+ sh:maxCount "1"^^xsd:integer ;
140
+ sh:order "2.0"^^xsd:decimal ;
141
+ ] ;
142
+ sh:property [ # >>PropertyClass.property_node_shacl()
143
+ sh:path shared:serverUrl ;
144
+ schema:version "0.1.0"^^xsd:string ;
145
+ dcterms:creator <https://orcid.org/0000-0003-1681-4036> ;
146
+ dcterms:created "2025-11-21T00:15:09.037880+01:00"^^xsd:dateTime ;
147
+ dcterms:contributor <https://orcid.org/0000-0003-1681-4036> ;
148
+ dcterms:modified "2025-11-21T00:15:09.037880+01:00"^^xsd:dateTime ;
149
+ oldap:statementProperty "false"^^xsd:boolean ;
150
+ oldap:externalOntology "false"^^xsd:boolean ;
151
+ sh:datatype xsd:anyURI ;
152
+ sh:name "Server URL"@en, "URL des servers"@de, "Server URL"@fr, "Server URL"@it ;
153
+ sh:minCount "1"^^xsd:integer ;
154
+ sh:maxCount "1"^^xsd:integer ;
155
+ sh:order "3.0"^^xsd:decimal ;
156
+ ] ;
157
+ sh:property [ # >>PropertyClass.property_node_shacl()
158
+ sh:path shared:imageId ;
159
+ schema:version "0.1.0"^^xsd:string ;
160
+ dcterms:creator <https://orcid.org/0000-0003-1681-4036> ;
161
+ dcterms:created "2025-11-21T00:15:09.037880+01:00"^^xsd:dateTime ;
162
+ dcterms:contributor <https://orcid.org/0000-0003-1681-4036> ;
163
+ dcterms:modified "2025-11-21T00:15:09.037880+01:00"^^xsd:dateTime ;
164
+ oldap:statementProperty "false"^^xsd:boolean ;
165
+ oldap:externalOntology "false"^^xsd:boolean ;
166
+ sh:datatype xsd:string ;
167
+ sh:name "Image ID"@en, "ID des Bilder"@de, "ID de l\'image"@fr, "ID de l\'immagine"@it ;
168
+ sh:minCount "1"^^xsd:integer ;
169
+ sh:maxCount "1"^^xsd:integer ;
170
+ sh:order "3.0"^^xsd:decimal ;
171
+ ] .
95
172
  }
96
173
 
97
174
  shared:onto {
@@ -161,6 +238,7 @@ shared:onto {
161
238
  ###########################################################################
162
239
  # Chronology Date Resource
163
240
  ###########################################################################
241
+
164
242
  oldap:ChronolgyStatement rdf:type owl:Class ;
165
243
  dcterms:creator <https://orcid.org/0000-0003-1681-4036> ;
166
244
  dcterms:created "2023-11-04T12:00:00Z"^^xsd:dateTime ;
@@ -210,5 +288,76 @@ shared:onto {
210
288
  owl:onDataRange xsd:decimal
211
289
  ] .
212
290
 
291
+ ###########################################################################
292
+ # Media object
293
+ ###########################################################################
294
+
295
+ shared:originalName rdf:type owl:DatatypeProperty ;
296
+ rdfs:domain shared:MediaObject ;
297
+ rdfs:range xsd:string ;
298
+ dcterms:creator <https://orcid.org/0000-0003-1681-4036> ;
299
+ dcterms:created "2025-11-21T00:15:09.037880+01:00"^^xsd:dateTime ;
300
+ dcterms:contributor <https://orcid.org/0000-0003-1681-4036> ;
301
+ dcterms:modified "2025-11-21T00:15:09.037880+01:00"^^xsd:dateTime .
302
+
303
+ shared:originalMimeType rdf:type owl:DatatypeProperty ;
304
+ rdfs:domain shared:MediaObject ;
305
+ rdfs:range xsd:string ;
306
+ dcterms:creator <https://orcid.org/0000-0003-1681-4036> ;
307
+ dcterms:created "2025-11-21T00:15:09.037880+01:00"^^xsd:dateTime ;
308
+ dcterms:contributor <https://orcid.org/0000-0003-1681-4036> ;
309
+ dcterms:modified "2025-11-21T00:15:09.037880+01:00"^^xsd:dateTime .
310
+
311
+ shared:serverUrl rdf:type owl:DatatypeProperty ;
312
+ rdfs:domain shared:MediaObject ;
313
+ rdfs:range xsd:anyURI ;
314
+ dcterms:creator <https://orcid.org/0000-0003-1681-4036> ;
315
+ dcterms:created "2025-11-21T00:15:09.037880+01:00"^^xsd:dateTime ;
316
+ dcterms:contributor <https://orcid.org/0000-0003-1681-4036> ;
317
+ dcterms:modified "2025-11-21T00:15:09.037880+01:00"^^xsd:dateTime .
318
+
319
+ shared:imageId rdf:type owl:DatatypeProperty ;
320
+ rdfs:domain shared:MediaObject ;
321
+ rdfs:range xsd:string ;
322
+ dcterms:creator <https://orcid.org/0000-0003-1681-4036> ;
323
+ dcterms:created "2025-11-21T00:15:09.037880+01:00"^^xsd:dateTime ;
324
+ dcterms:contributor <https://orcid.org/0000-0003-1681-4036> ;
325
+ dcterms:modified "2025-11-21T00:15:09.037880+01:00"^^xsd:dateTime .
326
+
327
+ shared:MediaObject rdf:type owl:Class ;
328
+ schema:version "0.1.0"^^xsd:string ;
329
+ dcterms:created "2025-11-21T00:15:09.037880+01:00"^^xsd:dateTime ;
330
+ dcterms:creator <https://orcid.org/0000-0003-1681-4036> ;
331
+ dcterms:modified "2025-11-21T00:15:09.037880+01:00"^^xsd:dateTime ;
332
+ dcterms:contributor <https://orcid.org/0000-0003-1681-4036> ;
333
+ rdfs:label "MediaObject"@en, "Medienobjekt"@de, "MediaObject"@fr, "MediaObject"@it ;
334
+ rdfs:comment "Page of a book"@en, "Seite eines Buches"@de ;
335
+ rdfs:subClassOf oldap:Thing ,
336
+ [
337
+ rdf:type owl:Restriction ;
338
+ owl:onProperty shared:originalName ;
339
+ owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ;
340
+ owl:onDataRange xsd:string ;
341
+ ] ,
342
+ [
343
+ rdf:type owl:Restriction ;
344
+ owl:onProperty shared:originalMimeType ;
345
+ owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ;
346
+ owl:onDataRange xsd:string ;
347
+ ] ,
348
+ [
349
+ rdf:type owl:Restriction ;
350
+ owl:onProperty shared:serverUrl ;
351
+ owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ;
352
+ owl:onDataRange xsd:anyURI ;
353
+ ] ,
354
+ [
355
+ rdf:type owl:Restriction ;
356
+ owl:onProperty shared:imageId ;
357
+ owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ;
358
+ owl:onDataRange xsd:string ;
359
+ ] .
360
+
361
+
213
362
  }
214
363
 
@@ -12,7 +12,7 @@ from oldaplib.src.xsd.xsd_qname import Xsd_QName
12
12
  @unique
13
13
  class HasPropertyAttr(AttributeClass):
14
14
  # order: (QName, mandatory, immutable, datatype)
15
- MIN_COUNT = ('sh:minCount', False, False, Xsd_nonNegativeInteger)
16
- MAX_COUNT = ('sh:maxCount', False, False, Xsd_nonNegativeInteger)
15
+ MIN_COUNT = ('sh:minCount', False, False, Xsd_integer)
16
+ MAX_COUNT = ('sh:maxCount', False, False, Xsd_integer)
17
17
  ORDER = ('sh:order', False, False, Xsd_decimal)
18
18
  GROUP = ('sh:group', False, False, Xsd_QName)
@@ -222,12 +222,15 @@ class HasProperty(Model, Notify):
222
222
  max_count = Xsd_nonNegativeInteger(int(self._attributes[HasPropertyAttr.MAX_COUNT])) if self._attributes.get(HasPropertyAttr.MAX_COUNT) else None
223
223
 
224
224
  if min_count and max_count and min_count == max_count:
225
- sparql += f' ;\n{blank:{(indent + 1) * indent_inc}}owl:qualifiedCardinality {min_count.toRdf}'
225
+ tmp = Xsd_nonNegativeInteger(min_count)
226
+ sparql += f' ;\n{blank:{(indent + 1) * indent_inc}}owl:qualifiedCardinality {tmp.toRdf}'
226
227
  else:
227
228
  if min_count:
228
- sparql += f' ;\n{blank:{(indent + 1) * indent_inc}}owl:minQualifiedCardinality {min_count.toRdf}'
229
+ tmp = Xsd_nonNegativeInteger(min_count)
230
+ sparql += f' ;\n{blank:{(indent + 1) * indent_inc}}owl:minQualifiedCardinality {tmp.toRdf}'
229
231
  if max_count:
230
- sparql += f' ;\n{blank:{(indent + 1) * indent_inc}}owl:maxQualifiedCardinality {max_count.toRdf}'
232
+ tmp = Xsd_nonNegativeInteger(max_count)
233
+ sparql += f' ;\n{blank:{(indent + 1) * indent_inc}}owl:maxQualifiedCardinality {tmp.toRdf}'
231
234
  return sparql
232
235
 
233
236
  def update_shacl(self,
@@ -287,12 +290,15 @@ class HasProperty(Model, Notify):
287
290
  if min_count or max_count:
288
291
  sparql += f'{blank:{indent * indent_inc}}INSERT {{\n'
289
292
  if min_count and max_count and min_count == max_count:
290
- sparql += f'{blank:{(indent + 1) * indent_inc}}?prop owl:qualifiedCardinality {min_count.toRdf} .\n'
293
+ tmp = Xsd_nonNegativeInteger(min_count)
294
+ sparql += f'{blank:{(indent + 1) * indent_inc}}?prop owl:qualifiedCardinality {tmp.toRdf} .\n'
291
295
  else:
292
296
  if min_count:
293
- sparql += f'{blank:{(indent + 1) * indent_inc}}?prop owl:minQualifiedCardinality {min_count.toRdf} .\n'
297
+ tmp = Xsd_nonNegativeInteger(min_count)
298
+ sparql += f'{blank:{(indent + 1) * indent_inc}}?prop owl:minQualifiedCardinality {tmp.toRdf} .\n'
294
299
  if max_count:
295
- sparql += f'{blank:{(indent + 1) * indent_inc}}?prop owl:maxQualifiedCardinality {max_count.toRdf} .\n'
300
+ tmp = Xsd_nonNegativeInteger(max_count)
301
+ sparql += f'{blank:{(indent + 1) * indent_inc}}?prop owl:maxQualifiedCardinality {tmp.toRdf} .\n'
296
302
  sparql += f'{blank:{indent * indent_inc}}}}\n'
297
303
 
298
304
  sparql += f'{blank:{indent * indent_inc}}WHERE {{\n'
@@ -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})
@@ -67,8 +67,8 @@ Attributes = dict[Xsd_QName, PropTypes]
67
67
  @serializer
68
68
  class HasPropertyData:
69
69
  refprop: Xsd_QName | None = None
70
- minCount: Xsd_nonNegativeInteger | None = None
71
- maxCount: Xsd_nonNegativeInteger | None = None
70
+ minCount: Xsd_integer | None = None
71
+ maxCount: Xsd_integer | None = None
72
72
  order: Xsd_decimal | None = None
73
73
  group: Xsd_QName | None = None
74
74
 
@@ -91,12 +91,15 @@ class HasPropertyData:
91
91
  sparql = ''
92
92
 
93
93
  if self.minCount and self.maxCount and self.minCount == self.maxCount:
94
- sparql += f' ;\n{blank:{(indent + 1) * indent_inc}}owl:qualifiedCardinality {self.minCount.toRdf}'
94
+ tmp = Xsd_nonNegativeInteger(self.minCount) # Convert to nonNegativeInteger
95
+ sparql += f' ;\n{blank:{(indent + 1) * indent_inc}}owl:qualifiedCardinality {tmp.toRdf}'
95
96
  else:
96
97
  if self.minCount:
97
- sparql += f' ;\n{blank:{(indent + 1) * indent_inc}}owl:minQualifiedCardinality {self.minCount.toRdf}'
98
+ tmp = Xsd_nonNegativeInteger(self.minCount)
99
+ sparql += f' ;\n{blank:{(indent + 1) * indent_inc}}owl:minQualifiedCardinality {tmp.toRdf}'
98
100
  if self.maxCount:
99
- sparql += f' ;\n{blank:{(indent + 1) * indent_inc}}owl:maxQualifiedCardinality {self.maxCount.toRdf}'
101
+ tmp = Xsd_nonNegativeInteger(self.maxCount)
102
+ sparql += f' ;\n{blank:{(indent + 1) * indent_inc}}owl:maxQualifiedCardinality {tmp.toRdf}'
100
103
  return sparql
101
104
 
102
105
  #@strict
@@ -1135,12 +1138,15 @@ class PropertyClass(Model, Notify):
1135
1138
  sparql += f'{blank:{(indent + 1) * indent_inc}}owl:onProperty {self._property_class_iri.toRdf}'
1136
1139
 
1137
1140
  if haspropdata.minCount and haspropdata.maxCount and haspropdata.minCount == haspropdata.maxCount:
1138
- sparql += f' ;\n{blank:{(indent + 1)*indent_inc}}owl:qualifiedCardinality {haspropdata.minCount.toRdf}'
1141
+ tmp = Xsd_nonNegativeInteger(haspropdata.minCount)
1142
+ sparql += f' ;\n{blank:{(indent + 1)*indent_inc}}owl:qualifiedCardinality {tmp.toRdf}'
1139
1143
  else:
1140
1144
  if haspropdata.minCount:
1141
- sparql += f' ;\n{blank:{(indent + 1)*indent_inc}}owl:minQualifiedCardinality {haspropdata.minCount.toRdf}'
1145
+ tmp = Xsd_nonNegativeInteger(haspropdata.minCount)
1146
+ sparql += f' ;\n{blank:{(indent + 1)*indent_inc}}owl:minQualifiedCardinality {tmp.toRdf}'
1142
1147
  if haspropdata.maxCount:
1143
- sparql += f' ;\n{blank:{(indent + 1)*indent_inc}}owl:maxQualifiedCardinality {haspropdata.maxCount.toRdf}'
1148
+ tmp = Xsd_nonNegativeInteger(haspropdata.maxCount)
1149
+ sparql += f' ;\n{blank:{(indent + 1)*indent_inc}}owl:maxQualifiedCardinality {tmp.toRdf}'
1144
1150
  #
1145
1151
  # (NOTE: owl:onClass and owl:onDataRange can be used only in a restriction and are "local" to the use
1146
1152
  # of the property within the given resource. However, rdfs:range is "global" for all use of this property!
@@ -983,12 +983,12 @@ class ResourceClass(Model, Notify):
983
983
  elif p == 'owl:onClass':
984
984
  propdict[bnode_id]['to_node_iri'] = r['o']
985
985
  elif p == 'owl:minQualifiedCardinality':
986
- propdict[bnode_id]['min_count'] = r['o']
986
+ propdict[bnode_id]['min_count'] = Xsd_integer(r['o'])
987
987
  elif p == 'owl:maxQualifiedCardinality':
988
- propdict[bnode_id]['max_count'] = r['o']
988
+ propdict[bnode_id]['max_count'] = Xsd_integer(r['o'])
989
989
  elif p == 'owl:qualifiedCardinality':
990
- propdict[bnode_id]['min_count'] = r['o']
991
- propdict[bnode_id]['max_count'] = r['o']
990
+ propdict[bnode_id]['min_count'] = Xsd_integer(r['o'])
991
+ propdict[bnode_id]['max_count'] = Xsd_integer(r['o'])
992
992
  elif p == 'owl:onDataRange':
993
993
  propdict[bnode_id]['datatype'] = r['o']
994
994
  else:
@@ -0,0 +1 @@
1
+ __version__ = "0.3.14"
@@ -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()
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "oldaplib"
3
- version = "0.3.12"
3
+ version = "0.3.14"
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.12"