dsp-tools 9.1.0.post11__py3-none-any.whl → 18.3.0.post13__py3-none-any.whl

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 (316) hide show
  1. dsp_tools/__init__.py +4 -0
  2. dsp_tools/cli/args.py +36 -0
  3. dsp_tools/cli/call_action.py +51 -231
  4. dsp_tools/cli/call_action_files_only.py +101 -0
  5. dsp_tools/cli/call_action_with_network.py +207 -0
  6. dsp_tools/cli/create_parsers.py +156 -58
  7. dsp_tools/cli/entry_point.py +56 -26
  8. dsp_tools/cli/utils.py +87 -0
  9. dsp_tools/clients/CLAUDE.md +420 -0
  10. dsp_tools/clients/authentication_client.py +14 -0
  11. dsp_tools/clients/authentication_client_live.py +66 -0
  12. dsp_tools/{utils → clients}/connection.py +2 -18
  13. dsp_tools/clients/connection_live.py +233 -0
  14. dsp_tools/clients/fuseki_metrics.py +60 -0
  15. dsp_tools/clients/group_user_clients.py +35 -0
  16. dsp_tools/clients/group_user_clients_live.py +181 -0
  17. dsp_tools/clients/legal_info_client.py +23 -0
  18. dsp_tools/clients/legal_info_client_live.py +132 -0
  19. dsp_tools/clients/list_client.py +49 -0
  20. dsp_tools/clients/list_client_live.py +166 -0
  21. dsp_tools/clients/metadata_client.py +24 -0
  22. dsp_tools/clients/metadata_client_live.py +47 -0
  23. dsp_tools/clients/ontology_clients.py +49 -0
  24. dsp_tools/clients/ontology_create_client_live.py +166 -0
  25. dsp_tools/clients/ontology_get_client_live.py +80 -0
  26. dsp_tools/clients/permissions_client.py +68 -0
  27. dsp_tools/clients/project_client.py +16 -0
  28. dsp_tools/clients/project_client_live.py +66 -0
  29. dsp_tools/commands/create/communicate_problems.py +24 -0
  30. dsp_tools/commands/create/create.py +134 -0
  31. dsp_tools/commands/create/create_on_server/cardinalities.py +111 -0
  32. dsp_tools/commands/create/create_on_server/classes.py +99 -0
  33. dsp_tools/commands/create/create_on_server/complete_ontologies.py +116 -0
  34. dsp_tools/commands/create/create_on_server/default_permissions.py +134 -0
  35. dsp_tools/commands/create/create_on_server/group_users.py +165 -0
  36. dsp_tools/commands/create/create_on_server/lists.py +163 -0
  37. dsp_tools/commands/create/create_on_server/mappers.py +12 -0
  38. dsp_tools/commands/create/create_on_server/onto_utils.py +74 -0
  39. dsp_tools/commands/create/create_on_server/ontology.py +52 -0
  40. dsp_tools/commands/create/create_on_server/project.py +68 -0
  41. dsp_tools/commands/create/create_on_server/properties.py +119 -0
  42. dsp_tools/commands/create/exceptions.py +29 -0
  43. dsp_tools/commands/create/lists_only.py +66 -0
  44. dsp_tools/commands/create/models/create_problems.py +87 -0
  45. dsp_tools/commands/create/models/parsed_ontology.py +88 -0
  46. dsp_tools/commands/create/models/parsed_project.py +81 -0
  47. dsp_tools/commands/create/models/rdf_ontology.py +12 -0
  48. dsp_tools/commands/create/models/server_project_info.py +100 -0
  49. dsp_tools/commands/create/parsing/parse_lists.py +45 -0
  50. dsp_tools/commands/create/parsing/parse_ontology.py +243 -0
  51. dsp_tools/commands/create/parsing/parse_project.py +149 -0
  52. dsp_tools/commands/create/parsing/parsing_utils.py +40 -0
  53. dsp_tools/commands/create/project_validate.py +595 -0
  54. dsp_tools/commands/create/serialisation/ontology.py +119 -0
  55. dsp_tools/commands/create/serialisation/project.py +44 -0
  56. dsp_tools/commands/excel2json/CLAUDE.md +101 -0
  57. dsp_tools/commands/excel2json/json_header.py +57 -23
  58. dsp_tools/commands/excel2json/{new_lists → lists}/compliance_checks.py +26 -26
  59. dsp_tools/commands/excel2json/{new_lists/make_new_lists.py → lists/make_lists.py} +19 -18
  60. dsp_tools/commands/excel2json/{new_lists → lists}/models/input_error.py +1 -12
  61. dsp_tools/commands/excel2json/{new_lists → lists}/models/serialise.py +9 -5
  62. dsp_tools/commands/excel2json/{new_lists → lists}/utils.py +4 -4
  63. dsp_tools/commands/excel2json/models/input_error.py +31 -11
  64. dsp_tools/commands/excel2json/models/json_header.py +53 -15
  65. dsp_tools/commands/excel2json/models/ontology.py +4 -3
  66. dsp_tools/commands/excel2json/{lists.py → old_lists.py} +26 -112
  67. dsp_tools/commands/excel2json/project.py +78 -34
  68. dsp_tools/commands/excel2json/properties.py +57 -36
  69. dsp_tools/commands/excel2json/resources.py +32 -12
  70. dsp_tools/commands/excel2json/utils.py +20 -1
  71. dsp_tools/commands/excel2xml/__init__.py +2 -2
  72. dsp_tools/commands/excel2xml/excel2xml_cli.py +7 -15
  73. dsp_tools/commands/excel2xml/excel2xml_lib.py +138 -493
  74. dsp_tools/commands/excel2xml/propertyelement.py +5 -5
  75. dsp_tools/commands/{project → get}/get.py +29 -13
  76. dsp_tools/commands/get/get_permissions.py +257 -0
  77. dsp_tools/commands/get/get_permissions_legacy.py +89 -0
  78. dsp_tools/commands/{project/models → get/legacy_models}/context.py +6 -6
  79. dsp_tools/commands/{project/models → get/legacy_models}/group.py +5 -10
  80. dsp_tools/commands/{project/models → get/legacy_models}/listnode.py +5 -35
  81. dsp_tools/commands/{project/models → get/legacy_models}/model.py +1 -1
  82. dsp_tools/commands/{project/models → get/legacy_models}/ontology.py +9 -14
  83. dsp_tools/commands/{project/models → get/legacy_models}/project.py +13 -6
  84. dsp_tools/commands/{project/models → get/legacy_models}/propertyclass.py +9 -16
  85. dsp_tools/commands/{project/models → get/legacy_models}/resourceclass.py +8 -46
  86. dsp_tools/commands/{project/models → get/legacy_models}/user.py +19 -60
  87. dsp_tools/commands/get/models/permissions_models.py +10 -0
  88. dsp_tools/commands/id2iri.py +20 -10
  89. dsp_tools/commands/ingest_xmlupload/bulk_ingest_client.py +81 -56
  90. dsp_tools/commands/ingest_xmlupload/create_resources/apply_ingest_id.py +4 -10
  91. dsp_tools/commands/ingest_xmlupload/create_resources/upload_xml.py +97 -37
  92. dsp_tools/commands/ingest_xmlupload/create_resources/user_information.py +2 -2
  93. dsp_tools/commands/ingest_xmlupload/ingest_files/ingest_files.py +9 -10
  94. dsp_tools/commands/ingest_xmlupload/upload_files/filechecker.py +3 -3
  95. dsp_tools/commands/ingest_xmlupload/upload_files/input_error.py +2 -10
  96. dsp_tools/commands/ingest_xmlupload/upload_files/upload_failures.py +12 -2
  97. dsp_tools/commands/ingest_xmlupload/upload_files/upload_files.py +8 -9
  98. dsp_tools/commands/resume_xmlupload/resume_xmlupload.py +18 -18
  99. dsp_tools/commands/start_stack.py +126 -77
  100. dsp_tools/commands/update_legal/CLAUDE.md +344 -0
  101. dsp_tools/commands/update_legal/__init__.py +0 -0
  102. dsp_tools/commands/update_legal/core.py +182 -0
  103. dsp_tools/commands/update_legal/csv_operations.py +135 -0
  104. dsp_tools/commands/update_legal/models.py +87 -0
  105. dsp_tools/commands/update_legal/xml_operations.py +247 -0
  106. dsp_tools/commands/validate_data/CLAUDE.md +159 -0
  107. dsp_tools/commands/validate_data/__init__.py +0 -0
  108. dsp_tools/commands/validate_data/constants.py +59 -0
  109. dsp_tools/commands/validate_data/mappers.py +143 -0
  110. dsp_tools/commands/validate_data/models/__init__.py +0 -0
  111. dsp_tools/commands/validate_data/models/api_responses.py +45 -0
  112. dsp_tools/commands/validate_data/models/input_problems.py +119 -0
  113. dsp_tools/commands/validate_data/models/rdf_like_data.py +117 -0
  114. dsp_tools/commands/validate_data/models/validation.py +106 -0
  115. dsp_tools/commands/validate_data/prepare_data/__init__.py +0 -0
  116. dsp_tools/commands/validate_data/prepare_data/get_rdf_like_data.py +296 -0
  117. dsp_tools/commands/validate_data/prepare_data/make_data_graph.py +91 -0
  118. dsp_tools/commands/validate_data/prepare_data/prepare_data.py +184 -0
  119. dsp_tools/commands/validate_data/process_validation_report/__init__.py +0 -0
  120. dsp_tools/commands/validate_data/process_validation_report/get_user_validation_message.py +358 -0
  121. dsp_tools/commands/validate_data/process_validation_report/query_validation_result.py +507 -0
  122. dsp_tools/commands/validate_data/process_validation_report/reformat_validation_results.py +150 -0
  123. dsp_tools/commands/validate_data/shacl_cli_validator.py +70 -0
  124. dsp_tools/commands/validate_data/sparql/__init__.py +0 -0
  125. dsp_tools/commands/{xml_validate/sparql/resource_shacl.py → validate_data/sparql/cardinality_shacl.py} +45 -47
  126. dsp_tools/commands/validate_data/sparql/construct_shacl.py +92 -0
  127. dsp_tools/commands/validate_data/sparql/legal_info_shacl.py +36 -0
  128. dsp_tools/commands/validate_data/sparql/value_shacl.py +357 -0
  129. dsp_tools/commands/validate_data/utils.py +59 -0
  130. dsp_tools/commands/validate_data/validate_data.py +283 -0
  131. dsp_tools/commands/validate_data/validation/__init__.py +0 -0
  132. dsp_tools/commands/validate_data/validation/check_duplicate_files.py +55 -0
  133. dsp_tools/commands/validate_data/validation/check_for_unknown_classes.py +67 -0
  134. dsp_tools/commands/validate_data/validation/get_validation_report.py +94 -0
  135. dsp_tools/commands/validate_data/validation/validate_ontology.py +107 -0
  136. dsp_tools/commands/xmlupload/CLAUDE.md +292 -0
  137. dsp_tools/commands/xmlupload/make_rdf_graph/__init__.py +0 -0
  138. dsp_tools/commands/xmlupload/make_rdf_graph/constants.py +63 -0
  139. dsp_tools/commands/xmlupload/make_rdf_graph/jsonld_utils.py +44 -0
  140. dsp_tools/commands/xmlupload/make_rdf_graph/make_file_value.py +77 -0
  141. dsp_tools/commands/xmlupload/make_rdf_graph/make_resource_and_values.py +114 -0
  142. dsp_tools/commands/xmlupload/make_rdf_graph/make_values.py +262 -0
  143. dsp_tools/commands/xmlupload/models/bitstream_info.py +18 -0
  144. dsp_tools/commands/xmlupload/models/formatted_text_value.py +0 -25
  145. dsp_tools/commands/xmlupload/models/ingest.py +56 -70
  146. dsp_tools/commands/xmlupload/models/input_problems.py +6 -14
  147. dsp_tools/commands/xmlupload/models/lookup_models.py +21 -0
  148. dsp_tools/commands/xmlupload/models/permission.py +0 -39
  149. dsp_tools/commands/xmlupload/models/{deserialise/xmlpermission.py → permissions_parsed.py} +2 -2
  150. dsp_tools/commands/xmlupload/models/processed/__init__.py +0 -0
  151. dsp_tools/commands/xmlupload/models/processed/file_values.py +29 -0
  152. dsp_tools/commands/xmlupload/models/processed/res.py +27 -0
  153. dsp_tools/commands/xmlupload/models/processed/values.py +101 -0
  154. dsp_tools/commands/xmlupload/models/rdf_models.py +26 -0
  155. dsp_tools/commands/xmlupload/models/upload_clients.py +3 -3
  156. dsp_tools/commands/xmlupload/models/upload_state.py +2 -4
  157. dsp_tools/commands/xmlupload/prepare_xml_input/__init__.py +0 -0
  158. dsp_tools/commands/xmlupload/{ark2iri.py → prepare_xml_input/ark2iri.py} +1 -1
  159. dsp_tools/commands/xmlupload/prepare_xml_input/get_processed_resources.py +252 -0
  160. dsp_tools/commands/xmlupload/{iiif_uri_validator.py → prepare_xml_input/iiif_uri_validator.py} +2 -14
  161. dsp_tools/commands/xmlupload/{list_client.py → prepare_xml_input/list_client.py} +15 -10
  162. dsp_tools/commands/xmlupload/prepare_xml_input/prepare_xml_input.py +67 -0
  163. dsp_tools/commands/xmlupload/prepare_xml_input/read_validate_xml_file.py +58 -0
  164. dsp_tools/commands/xmlupload/prepare_xml_input/transform_input_values.py +118 -0
  165. dsp_tools/commands/xmlupload/resource_create_client.py +7 -468
  166. dsp_tools/commands/xmlupload/richtext_id2iri.py +37 -0
  167. dsp_tools/commands/xmlupload/stash/{construct_and_analyze_graph.py → analyse_circular_reference_graph.py} +64 -157
  168. dsp_tools/commands/xmlupload/stash/create_info_for_graph.py +53 -0
  169. dsp_tools/commands/xmlupload/stash/graph_models.py +13 -8
  170. dsp_tools/commands/xmlupload/stash/stash_circular_references.py +48 -115
  171. dsp_tools/commands/xmlupload/stash/stash_models.py +4 -9
  172. dsp_tools/commands/xmlupload/stash/upload_stashed_resptr_props.py +34 -40
  173. dsp_tools/commands/xmlupload/stash/upload_stashed_xml_texts.py +98 -108
  174. dsp_tools/commands/xmlupload/upload_config.py +8 -0
  175. dsp_tools/commands/xmlupload/write_diagnostic_info.py +14 -9
  176. dsp_tools/commands/xmlupload/xmlupload.py +214 -192
  177. dsp_tools/config/__init__.py +0 -0
  178. dsp_tools/config/logger_config.py +69 -0
  179. dsp_tools/{utils → config}/warnings_config.py +4 -1
  180. dsp_tools/error/__init__.py +0 -0
  181. dsp_tools/error/custom_warnings.py +39 -0
  182. dsp_tools/error/exceptions.py +204 -0
  183. dsp_tools/error/problems.py +10 -0
  184. dsp_tools/error/xmllib_errors.py +20 -0
  185. dsp_tools/error/xmllib_warnings.py +54 -0
  186. dsp_tools/error/xmllib_warnings_util.py +159 -0
  187. dsp_tools/error/xsd_validation_error_msg.py +19 -0
  188. dsp_tools/legacy_models/__init__.py +0 -0
  189. dsp_tools/{models → legacy_models}/datetimestamp.py +7 -7
  190. dsp_tools/{models → legacy_models}/langstring.py +1 -1
  191. dsp_tools/{models → legacy_models}/projectContext.py +4 -4
  192. dsp_tools/resources/schema/data.xsd +108 -83
  193. dsp_tools/resources/schema/lists-only.json +4 -23
  194. dsp_tools/resources/schema/project.json +80 -35
  195. dsp_tools/resources/schema/properties-only.json +1 -4
  196. dsp_tools/resources/start-stack/docker-compose.override-host.j2 +11 -0
  197. dsp_tools/resources/start-stack/docker-compose.yml +34 -30
  198. dsp_tools/resources/start-stack/dsp-app-config.json +45 -0
  199. dsp_tools/resources/start-stack/dsp-app-config.override-host.j2 +26 -0
  200. dsp_tools/resources/validate_data/api-shapes-resource-cardinalities.ttl +191 -0
  201. dsp_tools/resources/validate_data/api-shapes.ttl +804 -0
  202. dsp_tools/resources/validate_data/shacl-cli-image.yml +4 -0
  203. dsp_tools/resources/validate_data/validate-ontology.ttl +99 -0
  204. dsp_tools/utils/ansi_colors.py +32 -0
  205. dsp_tools/utils/data_formats/__init__.py +0 -0
  206. dsp_tools/utils/{date_util.py → data_formats/date_util.py} +13 -1
  207. dsp_tools/utils/data_formats/iri_util.py +30 -0
  208. dsp_tools/utils/{shared.py → data_formats/shared.py} +1 -35
  209. dsp_tools/utils/{uri_util.py → data_formats/uri_util.py} +12 -2
  210. dsp_tools/utils/fuseki_bloating.py +63 -0
  211. dsp_tools/utils/json_parsing.py +22 -0
  212. dsp_tools/utils/rdf_constants.py +42 -0
  213. dsp_tools/utils/rdflib_utils.py +10 -0
  214. dsp_tools/utils/replace_id_with_iri.py +66 -0
  215. dsp_tools/utils/request_utils.py +238 -0
  216. dsp_tools/utils/xml_parsing/__init__.py +0 -0
  217. dsp_tools/utils/xml_parsing/get_lookups.py +32 -0
  218. dsp_tools/utils/xml_parsing/get_parsed_resources.py +325 -0
  219. dsp_tools/utils/xml_parsing/models/__init__.py +0 -0
  220. dsp_tools/utils/xml_parsing/models/parsed_resource.py +76 -0
  221. dsp_tools/utils/xml_parsing/parse_clean_validate_xml.py +137 -0
  222. dsp_tools/xmllib/CLAUDE.md +302 -0
  223. dsp_tools/xmllib/__init__.py +49 -0
  224. dsp_tools/xmllib/general_functions.py +877 -0
  225. dsp_tools/xmllib/internal/__init__.py +0 -0
  226. dsp_tools/xmllib/internal/checkers.py +162 -0
  227. dsp_tools/xmllib/internal/circumvent_circular_imports.py +36 -0
  228. dsp_tools/xmllib/internal/constants.py +46 -0
  229. dsp_tools/xmllib/internal/input_converters.py +155 -0
  230. dsp_tools/xmllib/internal/serialise_file_value.py +57 -0
  231. dsp_tools/xmllib/internal/serialise_resource.py +177 -0
  232. dsp_tools/xmllib/internal/serialise_values.py +152 -0
  233. dsp_tools/xmllib/internal/type_aliases.py +11 -0
  234. dsp_tools/xmllib/models/config_options.py +28 -0
  235. dsp_tools/xmllib/models/date_formats.py +48 -0
  236. dsp_tools/xmllib/models/dsp_base_resources.py +1380 -400
  237. dsp_tools/xmllib/models/internal/__init__.py +0 -0
  238. dsp_tools/xmllib/models/internal/file_values.py +172 -0
  239. dsp_tools/xmllib/models/internal/geometry.py +162 -0
  240. dsp_tools/xmllib/models/{migration_metadata.py → internal/migration_metadata.py} +14 -10
  241. dsp_tools/xmllib/models/internal/serialise_permissions.py +66 -0
  242. dsp_tools/xmllib/models/internal/values.py +342 -0
  243. dsp_tools/xmllib/models/licenses/__init__.py +0 -0
  244. dsp_tools/xmllib/models/licenses/other.py +59 -0
  245. dsp_tools/xmllib/models/licenses/recommended.py +107 -0
  246. dsp_tools/xmllib/models/permissions.py +41 -0
  247. dsp_tools/xmllib/models/res.py +1782 -0
  248. dsp_tools/xmllib/models/root.py +313 -26
  249. dsp_tools/xmllib/value_checkers.py +310 -47
  250. dsp_tools/xmllib/value_converters.py +765 -8
  251. dsp_tools-18.3.0.post13.dist-info/METADATA +90 -0
  252. dsp_tools-18.3.0.post13.dist-info/RECORD +286 -0
  253. dsp_tools-18.3.0.post13.dist-info/WHEEL +4 -0
  254. {dsp_tools-9.1.0.post11.dist-info → dsp_tools-18.3.0.post13.dist-info}/entry_points.txt +1 -0
  255. dsp_tools/commands/project/create/project_create.py +0 -1107
  256. dsp_tools/commands/project/create/project_create_lists.py +0 -204
  257. dsp_tools/commands/project/create/project_validate.py +0 -453
  258. dsp_tools/commands/project/models/project_definition.py +0 -12
  259. dsp_tools/commands/rosetta.py +0 -124
  260. dsp_tools/commands/template.py +0 -30
  261. dsp_tools/commands/xml_validate/api_connection.py +0 -122
  262. dsp_tools/commands/xml_validate/deserialise_input.py +0 -135
  263. dsp_tools/commands/xml_validate/make_data_rdf.py +0 -193
  264. dsp_tools/commands/xml_validate/models/data_deserialised.py +0 -108
  265. dsp_tools/commands/xml_validate/models/data_rdf.py +0 -214
  266. dsp_tools/commands/xml_validate/models/input_problems.py +0 -191
  267. dsp_tools/commands/xml_validate/models/validation.py +0 -29
  268. dsp_tools/commands/xml_validate/reformat_validaton_result.py +0 -89
  269. dsp_tools/commands/xml_validate/sparql/construct_shapes.py +0 -16
  270. dsp_tools/commands/xml_validate/xml_validate.py +0 -151
  271. dsp_tools/commands/xmlupload/check_consistency_with_ontology.py +0 -253
  272. dsp_tools/commands/xmlupload/models/deserialise/deserialise_value.py +0 -236
  273. dsp_tools/commands/xmlupload/models/deserialise/xmlresource.py +0 -171
  274. dsp_tools/commands/xmlupload/models/namespace_context.py +0 -39
  275. dsp_tools/commands/xmlupload/models/ontology_lookup_models.py +0 -161
  276. dsp_tools/commands/xmlupload/models/ontology_problem_models.py +0 -178
  277. dsp_tools/commands/xmlupload/models/serialise/jsonld_serialiser.py +0 -40
  278. dsp_tools/commands/xmlupload/models/serialise/serialise_value.py +0 -51
  279. dsp_tools/commands/xmlupload/ontology_client.py +0 -92
  280. dsp_tools/commands/xmlupload/project_client.py +0 -91
  281. dsp_tools/commands/xmlupload/read_validate_xml_file.py +0 -99
  282. dsp_tools/models/custom_warnings.py +0 -31
  283. dsp_tools/models/exceptions.py +0 -90
  284. dsp_tools/resources/0100-template-repo/template.json +0 -45
  285. dsp_tools/resources/0100-template-repo/template.xml +0 -27
  286. dsp_tools/resources/start-stack/docker-compose-validation.yml +0 -5
  287. dsp_tools/resources/start-stack/start-stack-config.yml +0 -4
  288. dsp_tools/resources/xml_validate/api-shapes.ttl +0 -411
  289. dsp_tools/resources/xml_validate/replace_namespace.xslt +0 -61
  290. dsp_tools/utils/connection_live.py +0 -383
  291. dsp_tools/utils/iri_util.py +0 -14
  292. dsp_tools/utils/logger_config.py +0 -41
  293. dsp_tools/utils/set_encoder.py +0 -20
  294. dsp_tools/utils/xml_utils.py +0 -145
  295. dsp_tools/utils/xml_validation.py +0 -197
  296. dsp_tools/utils/xml_validation_models.py +0 -68
  297. dsp_tools/xmllib/models/file_values.py +0 -78
  298. dsp_tools/xmllib/models/resource.py +0 -415
  299. dsp_tools/xmllib/models/values.py +0 -428
  300. dsp_tools-9.1.0.post11.dist-info/METADATA +0 -130
  301. dsp_tools-9.1.0.post11.dist-info/RECORD +0 -167
  302. dsp_tools-9.1.0.post11.dist-info/WHEEL +0 -4
  303. dsp_tools-9.1.0.post11.dist-info/licenses/LICENSE +0 -674
  304. /dsp_tools/{commands/excel2json/new_lists → clients}/__init__.py +0 -0
  305. /dsp_tools/commands/{excel2json/new_lists/models → create}/__init__.py +0 -0
  306. /dsp_tools/commands/{project → create/create_on_server}/__init__.py +0 -0
  307. /dsp_tools/commands/{project/create → create/models}/__init__.py +0 -0
  308. /dsp_tools/commands/{project/models → create/parsing}/__init__.py +0 -0
  309. /dsp_tools/commands/{xml_validate → create/serialisation}/__init__.py +0 -0
  310. /dsp_tools/commands/{xml_validate/models → excel2json/lists}/__init__.py +0 -0
  311. /dsp_tools/commands/{xml_validate/sparql → excel2json/lists/models}/__init__.py +0 -0
  312. /dsp_tools/commands/excel2json/{new_lists → lists}/models/deserialise.py +0 -0
  313. /dsp_tools/commands/{xmlupload/models/deserialise → get}/__init__.py +0 -0
  314. /dsp_tools/commands/{xmlupload/models/serialise → get/legacy_models}/__init__.py +0 -0
  315. /dsp_tools/commands/{project/models → get/legacy_models}/helpers.py +0 -0
  316. /dsp_tools/{models → commands/get/models}/__init__.py +0 -0
@@ -42,7 +42,9 @@
42
42
  ]
43
43
  },
44
44
  "super_resource": {
45
- "type": ["string"],
45
+ "type": [
46
+ "string"
47
+ ],
46
48
  "oneOf": [
47
49
  {
48
50
  "$ref": "#/definitions/baseresource"
@@ -77,7 +79,7 @@
77
79
  "seqnum"
78
80
  ]
79
81
  },
80
- "basevalue": {
82
+ "basevalue": {
81
83
  "type": "string",
82
84
  "enum": [
83
85
  "BooleanValue",
@@ -112,28 +114,18 @@
112
114
  },
113
115
  "groupdef": {
114
116
  "type": "string",
115
- "pattern": "^(([a-zA-Z_][\\w.-]*)?:([-\\w .]+))|(SystemAdmin)$"
117
+ "pattern": "^([a-zA-Z_][\\w.-]*)?:([-\\w .]+)$"
116
118
  },
117
119
  "projectdef": {
118
120
  "type": "string",
119
121
  "pattern": "^([a-zA-Z_][\\w.-]*)?:(member|admin)$"
120
122
  },
121
- "excelfolderref": {
122
- "type": "object",
123
- "properties": {
124
- "folder": {
125
- "type": "string"
126
- }
127
- },
128
- "required": [
129
- "folder"
130
- ]
131
- },
132
123
  "user": {
133
124
  "type": "object",
134
125
  "properties": {
135
126
  "username": {
136
- "type": "string"
127
+ "type": "string",
128
+ "pattern": "^(?=.{3,50}$)(?![_.-])(?!.*[_.-]{2})[a-zA-Z0-9._-]+(?<![_.-])$"
137
129
  },
138
130
  "email": {
139
131
  "type": "string",
@@ -146,7 +138,7 @@
146
138
  "type": "string"
147
139
  },
148
140
  "password": {
149
- "type": "string"
141
+ "type": ["string", "null"]
150
142
  },
151
143
  "lang": {
152
144
  "type": "string",
@@ -945,10 +937,7 @@
945
937
  },
946
938
  "additionalProperties": false
947
939
  }
948
- },
949
- "required": [
950
- "gui_attributes"
951
- ]
940
+ }
952
941
  }
953
942
  },
954
943
  {
@@ -1129,6 +1118,39 @@
1129
1118
  "shortname": {
1130
1119
  "$ref": "#/definitions/ncname"
1131
1120
  },
1121
+ "default_permissions": {
1122
+ "type": "string",
1123
+ "enum": [
1124
+ "public",
1125
+ "private"
1126
+ ]
1127
+ },
1128
+ "default_permissions_overrule": {
1129
+ "type": "object",
1130
+ "properties": {
1131
+ "private": {
1132
+ "type": "array",
1133
+ "items": {
1134
+ "$ref": "#/definitions/prefixedname"
1135
+ }
1136
+ },
1137
+ "limited_view": {
1138
+ "oneOf": [
1139
+ {
1140
+ "type": "array",
1141
+ "items": {
1142
+ "$ref": "#/definitions/prefixedname"
1143
+ }
1144
+ },
1145
+ {
1146
+ "type": "string",
1147
+ "enum": ["all"]
1148
+ }
1149
+ ]
1150
+ }
1151
+ },
1152
+ "additionalProperties": false
1153
+ },
1132
1154
  "longname": {
1133
1155
  "type": "string"
1134
1156
  },
@@ -1142,6 +1164,13 @@
1142
1164
  "type": "string"
1143
1165
  }
1144
1166
  },
1167
+ "enabled_licenses": {
1168
+ "type": "array",
1169
+ "minItems": 1,
1170
+ "items": {
1171
+ "pattern": "^http://rdfh\\.ch/licenses/.+"
1172
+ }
1173
+ },
1145
1174
  "groups": {
1146
1175
  "type": "array",
1147
1176
  "items": {
@@ -1169,21 +1198,18 @@
1169
1198
  "$ref": "#/definitions/langstring"
1170
1199
  },
1171
1200
  "nodes": {
1172
- "oneOf": [
1173
- {
1174
- "type": "array",
1175
- "items": {
1176
- "$ref": "#/definitions/node"
1177
- }
1178
- },
1179
- {
1180
- "type": "object",
1181
- "$ref": "#/definitions/excelfolderref"
1182
- }
1183
- ]
1201
+ "type": "array",
1202
+ "items": {
1203
+ "$ref": "#/definitions/node"
1204
+ }
1184
1205
  }
1185
1206
  },
1186
- "required": ["name", "labels", "comments", "nodes"],
1207
+ "required": [
1208
+ "name",
1209
+ "labels",
1210
+ "comments",
1211
+ "nodes"
1212
+ ],
1187
1213
  "additionalProperties": false
1188
1214
  }
1189
1215
  },
@@ -1200,9 +1226,28 @@
1200
1226
  "shortname",
1201
1227
  "descriptions",
1202
1228
  "ontologies",
1203
- "keywords"
1229
+ "keywords",
1230
+ "default_permissions"
1204
1231
  ],
1205
- "additionalProperties": false
1232
+ "additionalProperties": false,
1233
+ "allOf": [
1234
+ {
1235
+ "if": {
1236
+ "properties": {
1237
+ "default_permissions": {
1238
+ "const": "private"
1239
+ }
1240
+ }
1241
+ },
1242
+ "then": {
1243
+ "not": {
1244
+ "required": [
1245
+ "default_permissions_overrule"
1246
+ ]
1247
+ }
1248
+ }
1249
+ }
1250
+ ]
1206
1251
  }
1207
1252
  },
1208
1253
  "required": [
@@ -776,10 +776,7 @@
776
776
  },
777
777
  "additionalProperties": false
778
778
  }
779
- },
780
- "required": [
781
- "gui_attributes"
782
- ]
779
+ }
783
780
  }
784
781
  },
785
782
  {
@@ -0,0 +1,11 @@
1
+ services:
2
+ api:
3
+ environment:
4
+ - KNORA_WEBAPI_KNORA_API_EXTERNAL_HOST={{ CUSTOM_HOST }}
5
+ sipi:
6
+ environment:
7
+ - KNORA_WEBAPI_KNORA_API_EXTERNAL_HOST={{ CUSTOM_HOST }}
8
+ ingest:
9
+ environment:
10
+ - JWT_ISSUER={{ CUSTOM_HOST }}:3333
11
+
@@ -1,9 +1,9 @@
1
1
  ---
2
2
  services:
3
3
  api:
4
- # on the verge of every deployment (fortnightly), update the "image" value from the "api" value of
4
+ # on the verge of every deployment, update the "image" value from the "api" value of
5
5
  # https://github.com/dasch-swiss/ops-deploy/blob/main/versions/RELEASE.json
6
- image: daschswiss/knora-api:v30.19.0
6
+ image: daschswiss/knora-api:v33.1.1
7
7
  depends_on:
8
8
  - sipi
9
9
  - db
@@ -16,7 +16,7 @@ services:
16
16
  - KNORA_WEBAPI_DSP_INGEST_AUDIENCE=http://localhost:3340
17
17
  - KNORA_WEBAPI_DSP_INGEST_BASE_URL=http://ingest:3340
18
18
  - KNORA_WEBAPI_TRIPLESTORE_HOST=db
19
- - KNORA_WEBAPI_TRIPLESTORE_FUSEKI_REPOSITORY_NAME=knora-test
19
+ - KNORA_WEBAPI_TRIPLESTORE_FUSEKI_REPOSITORY_NAME=dsp-repo
20
20
  - KNORA_WEBAPI_TRIPLESTORE_FUSEKI_USERNAME=admin
21
21
  - KNORA_WEBAPI_TRIPLESTORE_FUSEKI_PASSWORD=test
22
22
  - KNORA_WEBAPI_CACHE_SERVICE_ENABLED=true
@@ -27,13 +27,13 @@ services:
27
27
  - DSP_API_LOG_LEVEL=INFO
28
28
 
29
29
  sipi:
30
- # on the verge of every deployment (fortnightly), take the same tag as DSP-API
31
- image: daschswiss/knora-sipi:v30.19.0
30
+ # on the verge of every deployment, take the same tag as DSP-API
31
+ image: daschswiss/knora-sipi:v33.1.1
32
32
  ports:
33
33
  - "1024:1024"
34
34
  volumes:
35
35
  - ./tmp:/tmp
36
- - .:/sipi/config
36
+ - ./sipi.docker-config.lua:/sipi/config/sipi.docker-config.lua
37
37
  - ./sipi/images:/sipi/images
38
38
  environment:
39
39
  - TZ=Europe/Zurich
@@ -41,44 +41,48 @@ services:
41
41
  - KNORA_WEBAPI_KNORA_API_EXTERNAL_PORT=3333
42
42
  command: --config=/sipi/config/sipi.docker-config.lua
43
43
 
44
- app:
45
- # on the verge of every deployment (fortnightly), update the "image" value from the "app" value of
46
- # https://github.com/dasch-swiss/ops-deploy/blob/main/versions/RELEASE.json
47
- image: daschswiss/dsp-app:v11.20.4
48
- ports:
49
- - "4200:4200"
50
-
51
- db:
52
- # on the verge of every deployment (fortnightly), update the "image" value from the "db" value of
53
- # https://github.com/dasch-swiss/ops-deploy/blob/main/roles/dsp-deploy/files/RELEASE.json
54
- image: daschswiss/apache-jena-fuseki:5.1.0
55
- ports:
56
- - "3030:3030"
57
- environment:
58
- - TZ=Europe/Zurich
59
- - ADMIN_PASSWORD=test
60
- - JVM_ARGS=-Xmx3G
61
-
62
44
  ingest:
63
- # on the verge of every deployment (fortnightly), update the "image" value from the "ingest" value of
64
- # https://github.com/dasch-swiss/ops-deploy/blob/main/versions/RELEASE.json
65
- image: daschswiss/dsp-ingest:v0.13.0
45
+ # on the verge of every deployment, take the same tag as DSP-API
46
+ image: daschswiss/dsp-ingest:v33.1.1
66
47
  ports:
67
48
  - "3340:3340"
68
49
  volumes:
69
50
  - ./sipi/images:/opt/images
70
- - ./sipi/tmp-dsp-ingest:/opt/temp
51
+ - ./sipi/tmp-dsp-ingest:/opt/tmp
71
52
  - ingest-db:/opt/db
72
53
  environment:
54
+ - SERVICE_HOST=0.0.0.0
55
+ - SERVICE_PORT=3340
73
56
  - SERVICE_LOG_FORMAT=text
74
57
  - STORAGE_ASSET_DIR=/opt/images
75
- - STORAGE_TEMP_DIR=/opt/temp
58
+ - STORAGE_TEMP_DIR=/opt/tmp
76
59
  - JWT_AUDIENCE=http://localhost:3340
77
60
  - JWT_ISSUER=0.0.0.0:3333
78
61
  - JWT_SECRET=UP 4888, nice 4-8-4 steam engine
79
62
  - SIPI_USE_LOCAL_DEV=false
80
- - DB_JDBC_URL=jdbc:sqlite:/opt/db/ingest.sqlite
81
63
  - ALLOW_ERASE_PROJECTS=true
64
+ - DB_JDBC_URL=jdbc:sqlite:/opt/db/ingest.sqlite
65
+ - DSP_API_URL=http://host.docker.internal:3333
66
+
67
+ app:
68
+ # on the verge of every deployment, update the "image" value from the "app" value of
69
+ # https://github.com/dasch-swiss/ops-deploy/blob/main/versions/RELEASE.json
70
+ image: daschswiss/dsp-app:v12.2.3
71
+ volumes:
72
+ - ./dsp-app-config.json:/public/config/config.prod.json
73
+ ports:
74
+ - "4200:4200"
75
+
76
+ db:
77
+ # on the verge of every deployment, update the "image" value from the "db" value of
78
+ # https://github.com/dasch-swiss/ops-deploy/blob/main/versions/RELEASE.json
79
+ image: daschswiss/apache-jena-fuseki:5.5.0-3
80
+ ports:
81
+ - "3030:3030"
82
+ environment:
83
+ - TZ=Europe/Zurich
84
+ - ADMIN_PASSWORD=test
85
+ - JVM_ARGS=-Xmx3G
82
86
 
83
87
  volumes:
84
88
  ingest-db:
@@ -0,0 +1,45 @@
1
+ {
2
+ "dspRelease": "localhost",
3
+ "apiProtocol": "http",
4
+ "apiHost": "0.0.0.0",
5
+ "apiPort": 3333,
6
+ "apiPath": "",
7
+ "iiifProtocol": "http",
8
+ "iiifHost": "0.0.0.0",
9
+ "iiifPort": 1024,
10
+ "iiifPath": "",
11
+ "ingestUrl": "http://0.0.0.0:3340",
12
+ "geonameToken": "knora",
13
+ "jsonWebToken": "",
14
+ "logErrors": false,
15
+ "iriBase": "http://rdfh.ch",
16
+ "instrumentation": {
17
+ "environment": "production",
18
+ "rollbar": {
19
+ "enabled": false,
20
+ "accessToken": ""
21
+ },
22
+ "faro": {
23
+ "enabled": false,
24
+ "collectorUrl": "",
25
+ "appName": "dsp-app",
26
+ "sessionTracking": {
27
+ "enabled": false,
28
+ "persistent": false,
29
+ "samplingRate": 1.0
30
+ },
31
+ "console": {
32
+ "enabled": false,
33
+ "disabledLevels": []
34
+ },
35
+ "tracingCorsUrls": [],
36
+ "otlp": {
37
+ "logsUrl": "",
38
+ "tracesUrl": ""
39
+ }
40
+ }
41
+ },
42
+ "featureFlags": {
43
+ "allowEraseProjects": true
44
+ }
45
+ }
@@ -0,0 +1,26 @@
1
+ {
2
+ "dspRelease": "test instance",
3
+ "apiProtocol": "http",
4
+ "apiHost": "{{ CUSTOM_HOST }}",
5
+ "apiPort": 3333,
6
+ "apiPath": "",
7
+ "iiifProtocol": "http",
8
+ "iiifHost": "{{ CUSTOM_HOST }}",
9
+ "iiifPort": 1024,
10
+ "iiifPath": "",
11
+ "ingestUrl": "http://{{ CUSTOM_HOST }}:3340",
12
+ "geonameToken": "knora",
13
+ "jsonWebToken": "",
14
+ "logErrors": false,
15
+ "iriBase": "http://rdfh.ch",
16
+ "instrumentation": {
17
+ "environment": "production",
18
+ "rollbar": {
19
+ "enabled": false,
20
+ "accessToken": ""
21
+ }
22
+ },
23
+ "featureFlags": {
24
+ "allowEraseProjects": true
25
+ }
26
+ }
@@ -0,0 +1,191 @@
1
+ @prefix sh: <http://www.w3.org/ns/shacl#> .
2
+ @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
3
+ @prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
4
+ @prefix owl: <http://www.w3.org/2002/07/owl#> .
5
+ @prefix dash: <http://datashapes.org/dash#> .
6
+ @prefix knora-api: <http://api.knora.org/ontology/knora-api/v2#> .
7
+
8
+ @prefix api-shapes: <http://api.knora.org/ontology/knora-api/shapes/v2#> .
9
+
10
+
11
+ api-shapes:rdfsLabel_Cardinality
12
+ a sh:PropertyShape ;
13
+ sh:path rdfs:label ;
14
+ sh:minCount 1 ;
15
+ sh:maxCount 1 ;
16
+ sh:severity sh:Violation ;
17
+ sh:message "A label is required" .
18
+
19
+
20
+ ### knora-api:hasPermissions
21
+ api-shapes:hasPermissions_Cardinality
22
+ a sh:PropertyShape ;
23
+ sh:path knora-api:hasPermissions ;
24
+ sh:minCount 0 ;
25
+ sh:maxCount 1 ;
26
+ sh:severity sh:Violation ;
27
+ sh:message "The resource may have at most one permission." .
28
+
29
+
30
+ #########################################
31
+ # DSP IN-BUILT RESOURCES
32
+ #########################################
33
+
34
+
35
+ ###########################
36
+ # LinkObj
37
+
38
+ knora-api:LinkObj
39
+ a sh:NodeShape ;
40
+ dash:closedByTypes true ;
41
+ sh:property api-shapes:rdfsLabel_Cardinality ,
42
+ api-shapes:hasPermissions_Cardinality ,
43
+ [
44
+ a sh:PropertyShape ;
45
+ sh:path knora-api:hasComment
46
+ ],
47
+ [ a sh:PropertyShape ;
48
+ sh:path knora-api:hasLinkTo ;
49
+ sh:minCount 1 ;
50
+ sh:severity sh:Violation ;
51
+ sh:message "Cardinality 1-n"
52
+ ] ,
53
+ [
54
+ a sh:PropertyShape ;
55
+ sh:path knora-api:hasStandoffLinkTo
56
+ ] .
57
+
58
+ ###########################
59
+ # Region
60
+
61
+ knora-api:Region
62
+ a sh:NodeShape ;
63
+ dash:closedByTypes true ;
64
+ sh:property api-shapes:rdfsLabel_Cardinality,
65
+ api-shapes:hasPermissions_Cardinality ,
66
+ [
67
+ a sh:PropertyShape ;
68
+ sh:path knora-api:hasComment
69
+ ] ,
70
+ [ a sh:PropertyShape ;
71
+ sh:path knora-api:hasColor ;
72
+ sh:minCount 1 ;
73
+ sh:maxCount 1 ;
74
+ sh:severity sh:Violation ;
75
+ sh:message "Cardinality 1"
76
+ ] ,
77
+ [ a sh:PropertyShape ;
78
+ sh:path knora-api:isRegionOf ;
79
+ sh:minCount 1 ;
80
+ sh:maxCount 1 ;
81
+ sh:severity sh:Violation ;
82
+ sh:message "Cardinality 1"
83
+ ] ,
84
+ [ a sh:PropertyShape ;
85
+ sh:path knora-api:hasGeometry ;
86
+ sh:minCount 1 ;
87
+ sh:severity sh:Violation ;
88
+ sh:message "Cardinality 1-n"
89
+ ] ,
90
+ [
91
+ a sh:PropertyShape ;
92
+ sh:path knora-api:hasStandoffLinkTo
93
+ ] .
94
+
95
+
96
+ ###########################
97
+ # AudioSegment
98
+
99
+ knora-api:AudioSegment
100
+ a sh:NodeShape ;
101
+ dash:closedByTypes true ;
102
+ sh:property api-shapes:rdfsLabel_Cardinality,
103
+ api-shapes:hasPermissions_Cardinality ,
104
+ [ a sh:PropertyShape ;
105
+ sh:path knora-api:hasSegmentBounds ;
106
+ sh:minCount 1 ;
107
+ sh:maxCount 1 ;
108
+ sh:severity sh:Violation ;
109
+ sh:message "Cardinality 1"
110
+ ] ,
111
+ [ a sh:PropertyShape ;
112
+ sh:path knora-api:isAudioSegmentOf ;
113
+ sh:minCount 1 ;
114
+ sh:maxCount 1 ;
115
+ sh:severity sh:Violation ;
116
+ sh:message "Cardinality 1"
117
+ ] ,
118
+ [ a sh:PropertyShape ;
119
+ sh:path knora-api:hasTitle ;
120
+ sh:maxCount 1 ;
121
+ sh:severity sh:Violation ;
122
+ sh:message "Cardinality 0-1"
123
+ ] ,
124
+ [ a sh:PropertyShape ;
125
+ sh:path knora-api:hasKeyword
126
+ ] ,
127
+ [
128
+ a sh:PropertyShape ;
129
+ sh:path knora-api:hasComment
130
+ ] ,
131
+ [
132
+ a sh:PropertyShape ;
133
+ sh:path knora-api:relatesTo
134
+ ] ,
135
+ [
136
+ a sh:PropertyShape ;
137
+ sh:path knora-api:hasDescription
138
+ ] ,
139
+ [
140
+ a sh:PropertyShape ;
141
+ sh:path knora-api:hasStandoffLinkTo
142
+ ] .
143
+
144
+
145
+ ###########################
146
+ # VideoSegment
147
+
148
+ knora-api:VideoSegment
149
+ a sh:NodeShape ;
150
+ dash:closedByTypes true ;
151
+ sh:property api-shapes:rdfsLabel_Cardinality,
152
+ api-shapes:hasPermissions_Cardinality ,
153
+ [ a sh:PropertyShape ;
154
+ sh:path knora-api:hasSegmentBounds ;
155
+ sh:minCount 1 ;
156
+ sh:maxCount 1 ;
157
+ sh:severity sh:Violation ;
158
+ sh:message "Cardinality 1"
159
+ ] ,
160
+ [ a sh:PropertyShape ;
161
+ sh:path knora-api:isVideoSegmentOf ;
162
+ sh:minCount 1 ;
163
+ sh:maxCount 1 ;
164
+ sh:severity sh:Violation ;
165
+ sh:message "Cardinality 1"
166
+ ] ,
167
+ [ a sh:PropertyShape ;
168
+ sh:path knora-api:hasTitle ;
169
+ sh:maxCount 1 ;
170
+ sh:severity sh:Violation ;
171
+ sh:message "Cardinality 0-1"
172
+ ] ,
173
+ [ a sh:PropertyShape ;
174
+ sh:path knora-api:hasKeyword
175
+ ] ,
176
+ [
177
+ a sh:PropertyShape ;
178
+ sh:path knora-api:hasComment
179
+ ] ,
180
+ [
181
+ a sh:PropertyShape ;
182
+ sh:path knora-api:relatesTo
183
+ ] ,
184
+ [
185
+ a sh:PropertyShape ;
186
+ sh:path knora-api:hasDescription
187
+ ] ,
188
+ [
189
+ a sh:PropertyShape ;
190
+ sh:path knora-api:hasStandoffLinkTo
191
+ ] .