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
@@ -0,0 +1,143 @@
1
+ from rdflib import RDF
2
+ from rdflib import RDFS
3
+ from rdflib import XSD
4
+
5
+ from dsp_tools.commands.validate_data.constants import ARCHIVE_FILE_VALUE
6
+ from dsp_tools.commands.validate_data.constants import AUDIO_FILE_VALUE
7
+ from dsp_tools.commands.validate_data.constants import DOCUMENT_FILE_VALUE
8
+ from dsp_tools.commands.validate_data.constants import IIIF_URI_VALUE
9
+ from dsp_tools.commands.validate_data.constants import MOVING_IMAGE_FILE_VALUE
10
+ from dsp_tools.commands.validate_data.constants import STILL_IMAGE_FILE_VALUE
11
+ from dsp_tools.commands.validate_data.constants import TEXT_FILE_VALUE
12
+ from dsp_tools.commands.validate_data.models.input_problems import ProblemType
13
+ from dsp_tools.commands.validate_data.models.rdf_like_data import TripleObjectType
14
+ from dsp_tools.commands.validate_data.models.rdf_like_data import TriplePropertyType
15
+ from dsp_tools.commands.validate_data.models.validation import ViolationType
16
+ from dsp_tools.commands.xmlupload.make_rdf_graph.constants import BOOLEAN_PROP_TYPE_INFO
17
+ from dsp_tools.commands.xmlupload.make_rdf_graph.constants import COLOR_PROP_TYPE_INFO
18
+ from dsp_tools.commands.xmlupload.make_rdf_graph.constants import DECIMAL_PROP_TYPE_INFO
19
+ from dsp_tools.commands.xmlupload.make_rdf_graph.constants import GEOMETRY_PROP_TYPE_INFO
20
+ from dsp_tools.commands.xmlupload.make_rdf_graph.constants import GEONAME_PROP_TYPE_INFO
21
+ from dsp_tools.commands.xmlupload.make_rdf_graph.constants import INT_PROP_TYPE_INFO
22
+ from dsp_tools.commands.xmlupload.make_rdf_graph.constants import RICHTEXT_PROP_TYPE_INFO
23
+ from dsp_tools.commands.xmlupload.make_rdf_graph.constants import SIMPLE_TEXT_PROP_TYPE_INFO
24
+ from dsp_tools.commands.xmlupload.make_rdf_graph.constants import TIME_PROP_TYPE_INFO
25
+ from dsp_tools.commands.xmlupload.make_rdf_graph.constants import URI_PROP_TYPE_INFO
26
+ from dsp_tools.commands.xmlupload.models.rdf_models import RDFPropTypeInfo
27
+ from dsp_tools.utils.rdf_constants import API_SHAPES
28
+ from dsp_tools.utils.rdf_constants import KNORA_API
29
+ from dsp_tools.utils.rdf_constants import KNORA_API_PREFIX
30
+ from dsp_tools.utils.xml_parsing.models.parsed_resource import KnoraValueType
31
+
32
+ FILE_TYPE_TO_PROP = {
33
+ KnoraValueType.ARCHIVE_FILE: f"{KNORA_API_PREFIX}hasArchiveFileValue",
34
+ KnoraValueType.AUDIO_FILE: f"{KNORA_API_PREFIX}hasAudioFileValue",
35
+ KnoraValueType.DOCUMENT_FILE: f"{KNORA_API_PREFIX}hasDocumentFileValue",
36
+ KnoraValueType.MOVING_IMAGE_FILE: f"{KNORA_API_PREFIX}hasMovingImageFileValue",
37
+ KnoraValueType.STILL_IMAGE_FILE: f"{KNORA_API_PREFIX}hasStillImageFileValue",
38
+ KnoraValueType.STILL_IMAGE_IIIF: f"{KNORA_API_PREFIX}hasStillImageFileValue",
39
+ KnoraValueType.TEXT_FILE: f"{KNORA_API_PREFIX}hasTextFileValue",
40
+ }
41
+
42
+ # Mappers from internal representation to API format
43
+ XML_TAG_TO_VALUE_TYPE_MAPPER = {
44
+ "boolean-prop": KnoraValueType.BOOLEAN_VALUE,
45
+ "color-prop": KnoraValueType.COLOR_VALUE,
46
+ "date-prop": KnoraValueType.DATE_VALUE,
47
+ "decimal-prop": KnoraValueType.DECIMAL_VALUE,
48
+ "geometry-prop": KnoraValueType.GEOM_VALUE,
49
+ "geoname-prop": KnoraValueType.GEONAME_VALUE,
50
+ "list-prop": KnoraValueType.LIST_VALUE,
51
+ "integer-prop": KnoraValueType.INT_VALUE,
52
+ "resptr-prop": KnoraValueType.LINK_VALUE,
53
+ "time-prop": KnoraValueType.TIME_VALUE,
54
+ "uri-prop": KnoraValueType.URI_VALUE,
55
+ }
56
+
57
+ TRIPLE_PROP_TYPE_TO_IRI_MAPPER = {
58
+ TriplePropertyType.RDF_TYPE: RDF.type,
59
+ TriplePropertyType.RDFS_LABEL: RDFS.label,
60
+ TriplePropertyType.KNORA_COMMENT_ON_VALUE: KNORA_API.valueHasComment,
61
+ TriplePropertyType.KNORA_PERMISSIONS: KNORA_API.hasPermissions,
62
+ TriplePropertyType.KNORA_INTERVAL_START: KNORA_API.intervalValueHasStart,
63
+ TriplePropertyType.KNORA_INTERVAL_END: KNORA_API.intervalValueHasEnd,
64
+ TriplePropertyType.KNORA_STANDOFF_LINK: KNORA_API.hasStandoffLinkTo,
65
+ TriplePropertyType.KNORA_LICENSE: KNORA_API.hasLicense,
66
+ TriplePropertyType.KNORA_AUTHORSHIP: KNORA_API.hasAuthorship,
67
+ TriplePropertyType.KNORA_COPYRIGHT_HOLDER: KNORA_API.hasCopyrightHolder,
68
+ TriplePropertyType.KNORA_DATE_START: API_SHAPES.dateHasStart,
69
+ TriplePropertyType.KNORA_DATE_END: API_SHAPES.dateHasEnd,
70
+ }
71
+
72
+ VALUE_INFO_TO_RDF_MAPPER = {
73
+ KnoraValueType.BOOLEAN_VALUE: BOOLEAN_PROP_TYPE_INFO,
74
+ KnoraValueType.COLOR_VALUE: COLOR_PROP_TYPE_INFO,
75
+ KnoraValueType.DATE_VALUE: RDFPropTypeInfo(KNORA_API.DateValue, KNORA_API.valueAsString, XSD.string),
76
+ KnoraValueType.DECIMAL_VALUE: DECIMAL_PROP_TYPE_INFO,
77
+ KnoraValueType.GEONAME_VALUE: GEONAME_PROP_TYPE_INFO,
78
+ KnoraValueType.GEOM_VALUE: GEOMETRY_PROP_TYPE_INFO,
79
+ KnoraValueType.LIST_VALUE: RDFPropTypeInfo(KNORA_API.ListValue, KNORA_API.listValueAsListNode, XSD.string),
80
+ KnoraValueType.LINK_VALUE: RDFPropTypeInfo(KNORA_API.LinkValue, API_SHAPES.linkValueHasTargetID, XSD.string),
81
+ KnoraValueType.INT_VALUE: INT_PROP_TYPE_INFO,
82
+ KnoraValueType.INTERVAL_VALUE: RDFPropTypeInfo(KNORA_API.IntervalValue, KNORA_API.hasSegmentBounds),
83
+ KnoraValueType.SIMPLETEXT_VALUE: SIMPLE_TEXT_PROP_TYPE_INFO,
84
+ KnoraValueType.RICHTEXT_VALUE: RICHTEXT_PROP_TYPE_INFO,
85
+ KnoraValueType.TIME_VALUE: TIME_PROP_TYPE_INFO,
86
+ KnoraValueType.URI_VALUE: URI_PROP_TYPE_INFO,
87
+ KnoraValueType.ARCHIVE_FILE: ARCHIVE_FILE_VALUE,
88
+ KnoraValueType.AUDIO_FILE: AUDIO_FILE_VALUE,
89
+ KnoraValueType.DOCUMENT_FILE: DOCUMENT_FILE_VALUE,
90
+ KnoraValueType.MOVING_IMAGE_FILE: MOVING_IMAGE_FILE_VALUE,
91
+ KnoraValueType.STILL_IMAGE_FILE: STILL_IMAGE_FILE_VALUE,
92
+ KnoraValueType.STILL_IMAGE_IIIF: IIIF_URI_VALUE,
93
+ KnoraValueType.TEXT_FILE: TEXT_FILE_VALUE,
94
+ }
95
+
96
+ VALUE_INFO_TRIPLE_OBJECT_TYPE = {
97
+ KnoraValueType.BOOLEAN_VALUE: TripleObjectType.BOOLEAN,
98
+ KnoraValueType.COLOR_VALUE: TripleObjectType.STRING,
99
+ KnoraValueType.DATE_VALUE: TripleObjectType.STRING,
100
+ KnoraValueType.DECIMAL_VALUE: TripleObjectType.DECIMAL,
101
+ KnoraValueType.GEOM_VALUE: TripleObjectType.STRING,
102
+ KnoraValueType.GEONAME_VALUE: TripleObjectType.STRING,
103
+ KnoraValueType.LIST_VALUE: TripleObjectType.STRING,
104
+ KnoraValueType.LINK_VALUE: TripleObjectType.IRI,
105
+ KnoraValueType.INT_VALUE: TripleObjectType.INTEGER,
106
+ KnoraValueType.SIMPLETEXT_VALUE: TripleObjectType.STRING,
107
+ KnoraValueType.RICHTEXT_VALUE: TripleObjectType.STRING,
108
+ KnoraValueType.TIME_VALUE: TripleObjectType.DATETIME,
109
+ KnoraValueType.URI_VALUE: TripleObjectType.URI,
110
+ KnoraValueType.ARCHIVE_FILE: TripleObjectType.STRING,
111
+ KnoraValueType.AUDIO_FILE: TripleObjectType.STRING,
112
+ KnoraValueType.DOCUMENT_FILE: TripleObjectType.STRING,
113
+ KnoraValueType.MOVING_IMAGE_FILE: TripleObjectType.STRING,
114
+ KnoraValueType.STILL_IMAGE_FILE: TripleObjectType.STRING,
115
+ KnoraValueType.STILL_IMAGE_IIIF: TripleObjectType.URI,
116
+ KnoraValueType.TEXT_FILE: TripleObjectType.STRING,
117
+ }
118
+
119
+ TRIPLE_OBJECT_TYPE_TO_XSD = {
120
+ TripleObjectType.BOOLEAN: XSD.boolean,
121
+ TripleObjectType.DATETIME: XSD.dateTimeStamp,
122
+ TripleObjectType.DECIMAL: XSD.decimal,
123
+ TripleObjectType.INTEGER: XSD.int,
124
+ TripleObjectType.STRING: XSD.string,
125
+ TripleObjectType.URI: XSD.anyURI,
126
+ TripleObjectType.DATE_YYYY_MM_DD: XSD.date,
127
+ }
128
+
129
+ # validation results
130
+
131
+ RESULT_TO_PROBLEM_MAPPER = {
132
+ ViolationType.SEQNUM_IS_PART_OF: ProblemType.GENERIC,
133
+ ViolationType.UNIQUE_VALUE: ProblemType.DUPLICATE_VALUE,
134
+ ViolationType.VALUE_TYPE: ProblemType.VALUE_TYPE_MISMATCH,
135
+ ViolationType.PATTERN: ProblemType.INPUT_REGEX,
136
+ ViolationType.GENERIC: ProblemType.GENERIC,
137
+ ViolationType.LINK_TARGET: ProblemType.LINK_TARGET_TYPE_MISMATCH,
138
+ ViolationType.MAX_CARD: ProblemType.MAX_CARD,
139
+ ViolationType.MIN_CARD: ProblemType.MIN_CARD,
140
+ ViolationType.NON_EXISTING_CARD: ProblemType.NON_EXISTING_CARD,
141
+ ViolationType.FILE_VALUE_PROHIBITED: ProblemType.FILE_VALUE_PROHIBITED,
142
+ ViolationType.FILE_VALUE_MISSING: ProblemType.FILE_VALUE_MISSING,
143
+ }
File without changes
@@ -0,0 +1,45 @@
1
+ from __future__ import annotations
2
+
3
+ from dataclasses import dataclass
4
+
5
+ from rdflib import Graph
6
+ from rdflib import URIRef
7
+
8
+ from dsp_tools.clients.list_client import OneList
9
+
10
+
11
+ @dataclass
12
+ class SHACLValidationReport:
13
+ conforms: bool
14
+ validation_graph: Graph
15
+
16
+
17
+ @dataclass
18
+ class ProjectDataFromApi:
19
+ all_lists: list[OneList]
20
+ enabled_licenses: EnabledLicenseIris
21
+ resource_iris_in_db: list[InfoForResourceInDB]
22
+
23
+
24
+ @dataclass
25
+ class ListLookup:
26
+ lists: dict[tuple[str, str], str]
27
+
28
+
29
+ @dataclass
30
+ class SHACLListInfo:
31
+ list_iri: URIRef
32
+ sh_path: URIRef
33
+ sh_message: str
34
+ sh_in: list[str]
35
+
36
+
37
+ @dataclass
38
+ class EnabledLicenseIris:
39
+ enabled_licenses: list[str]
40
+
41
+
42
+ @dataclass
43
+ class InfoForResourceInDB:
44
+ res_iri: str
45
+ res_type: str
@@ -0,0 +1,119 @@
1
+ from __future__ import annotations
2
+
3
+ from dataclasses import dataclass
4
+ from enum import Enum
5
+ from enum import StrEnum
6
+ from enum import auto
7
+
8
+ import pandas as pd
9
+ import regex
10
+
11
+ from dsp_tools.commands.validate_data.models.validation import UnexpectedComponent
12
+ from dsp_tools.commands.validate_data.models.validation import ValidationReportGraphs
13
+
14
+
15
+ @dataclass
16
+ class ValidateDataResult:
17
+ no_problems: bool
18
+ problems: None | UnknownClassesInData | OntologyValidationProblem | SortedProblems
19
+ report_graphs: None | ValidationReportGraphs
20
+
21
+
22
+ @dataclass
23
+ class OntologyValidationProblem:
24
+ problems: list[OntologyResourceProblem]
25
+
26
+
27
+ @dataclass
28
+ class OntologyResourceProblem:
29
+ res_iri: str
30
+ msg: str
31
+
32
+
33
+ @dataclass
34
+ class UnknownClassesInData:
35
+ unknown_classes: set[str]
36
+ defined_classes: set[str]
37
+
38
+
39
+ @dataclass
40
+ class DuplicateFileWarning:
41
+ problems: list[InputProblem]
42
+
43
+
44
+ @dataclass
45
+ class AllProblems:
46
+ problems: list[InputProblem]
47
+ unexpected_results: list[UnexpectedComponent]
48
+
49
+
50
+ @dataclass
51
+ class SortedProblems:
52
+ unique_violations: list[InputProblem]
53
+ user_warnings: list[InputProblem]
54
+ user_info: list[InputProblem]
55
+ unexpected_shacl_validation_components: list[str]
56
+
57
+
58
+ @dataclass
59
+ class MessageComponents:
60
+ message_header: str
61
+ message_body: str | None
62
+ message_df: pd.DataFrame | None
63
+
64
+
65
+ @dataclass
66
+ class UserPrintMessages:
67
+ violations: MessageComponents | None
68
+ warnings: MessageComponents | None
69
+ infos: MessageComponents | None
70
+ unexpected_violations: MessageComponents | None
71
+
72
+
73
+ @dataclass
74
+ class InputProblem:
75
+ problem_type: ProblemType
76
+ res_id: str | None
77
+ res_type: str | None
78
+ prop_name: str
79
+ severity: Severity
80
+ message: str | None = None
81
+ input_value: str | None = None
82
+ input_type: str | None = None
83
+ expected: str | None = None
84
+
85
+ def __post_init__(self) -> None:
86
+ self.message = self._clean_input(self.message)
87
+ self.expected = self._clean_input(self.expected)
88
+
89
+ def _clean_input(self, to_clean: str | None) -> str | None:
90
+ if not to_clean:
91
+ return None
92
+ if not regex.search(r"\S+", to_clean):
93
+ return None
94
+ str_split = [content for x in to_clean.split(" ") if (content := x.strip())]
95
+ return " ".join(str_split)
96
+
97
+
98
+ class Severity(Enum):
99
+ VIOLATION = auto()
100
+ WARNING = auto()
101
+ INFO = auto()
102
+
103
+
104
+ class ProblemType(StrEnum):
105
+ GENERIC = "generic"
106
+ FILE_VALUE_MISSING = "file problem"
107
+ FILE_DUPLICATE = "Duplicate Filepath / IIIF-URI"
108
+ FILE_VALUE_PROHIBITED = "A file was added to the resource. This resource type must not have a file."
109
+ MAX_CARD = "Maximum Cardinality Violation"
110
+ MIN_CARD = "Minimum Cardinality Violation"
111
+ NON_EXISTING_CARD = "The resource class does not have a cardinality for this property."
112
+ VALUE_TYPE_MISMATCH = "Value Type Mismatch"
113
+ INPUT_REGEX = "Wrong Format of Input"
114
+ LINK_TARGET_TYPE_MISMATCH = "Linked Resource Type Mismatch"
115
+ LINK_TARGET_OF_ANOTHER_PROJECT = "Linked Resource is from another project"
116
+ LINK_TARGET_IS_IRI_OF_PROJECT = "Linked resource is an IRI of the project"
117
+ LINK_TARGET_NOT_FOUND_IN_DB = "Linked resource is an IRI and could not be found in the database."
118
+ INEXISTENT_LINKED_RESOURCE = "Linked Resource does not exist"
119
+ DUPLICATE_VALUE = "Your input is duplicated"
@@ -0,0 +1,117 @@
1
+ from __future__ import annotations
2
+
3
+ from dataclasses import dataclass
4
+ from dataclasses import field
5
+ from enum import Enum
6
+ from enum import auto
7
+ from uuid import uuid4
8
+
9
+ from dsp_tools.legacy_models.datetimestamp import DateTimeStamp
10
+ from dsp_tools.utils.xml_parsing.models.parsed_resource import KnoraValueType
11
+
12
+
13
+ @dataclass
14
+ class RdfLikeData:
15
+ resources: list[RdfLikeResource]
16
+
17
+
18
+ @dataclass
19
+ class RdfLikeResource:
20
+ """
21
+ Represents a user facing project-specific resource.
22
+
23
+ Args:
24
+ res_id: resource ID provided by the user in the XML
25
+ property_objects: A list of properties and objects where the subject is the resource itself.
26
+ They are non-reified triples (not values).
27
+ For example, the label of a resource is here.
28
+ values: a list of user-facing values (e.g. BooleanValue)
29
+ migration_metadata: Metadata used for salsah migration
30
+ """
31
+
32
+ res_id: str
33
+ property_objects: list[PropertyObject]
34
+ values: list[RdfLikeValue]
35
+ migration_metadata: MigrationMetadata
36
+
37
+
38
+ @dataclass
39
+ class MigrationMetadata:
40
+ iri: str | None = None
41
+ ark: str | None = None
42
+ creation_date: DateTimeStamp | None = None
43
+
44
+ def any(self) -> bool:
45
+ return any([self.iri, self.ark, self.creation_date])
46
+
47
+
48
+ @dataclass
49
+ class PropertyObject:
50
+ """
51
+ Property and object of a triple.
52
+
53
+ Args:
54
+ property_type: maps to a specific knora-api or rdf(s) property
55
+ object_value: object of the triple, may be user facing (e.g. label) or metadata (e.g. permissions)
56
+ object_type: datatype for literals (e.g. boolean) or that it is an IRI (not a literal)
57
+ """
58
+
59
+ property_type: TriplePropertyType
60
+ object_value: str | None
61
+ object_type: TripleObjectType
62
+
63
+
64
+ @dataclass
65
+ class RdfLikeValue:
66
+ """
67
+ Contains information about a user-facing value, for example BooleanValue.
68
+
69
+ Args:
70
+ user_facing_prop: Absolute IRI of the property as defined in the ontology
71
+ user_facing_value: User-facing value, for example a number
72
+ knora_type: Maps to a knora value type (e.g. BooleanValue)
73
+ value_metadata: metadata of the value for example permissions, comments, etc.
74
+ """
75
+
76
+ user_facing_prop: str
77
+ user_facing_value: str | None
78
+ knora_type: KnoraValueType
79
+ value_metadata: list[PropertyObject]
80
+ value_uuid: str = field(default_factory=lambda: str(uuid4()))
81
+
82
+
83
+ class TriplePropertyType(Enum):
84
+ """
85
+ Maps to a specific knora-api or rdf(s) property.
86
+ For example: KNORA_COMMENT_ON_VALUE -> knora-api:valueHasComment
87
+ """
88
+
89
+ RDFS_LABEL = auto()
90
+ RDF_TYPE = auto()
91
+ KNORA_PERMISSIONS = auto()
92
+ KNORA_COMMENT_ON_VALUE = auto()
93
+ KNORA_INTERVAL_START = auto()
94
+ KNORA_INTERVAL_END = auto()
95
+ KNORA_STANDOFF_LINK = auto()
96
+ KNORA_LICENSE = auto()
97
+ KNORA_AUTHORSHIP = auto()
98
+ KNORA_COPYRIGHT_HOLDER = auto()
99
+ KNORA_DATE_START = auto()
100
+ KNORA_DATE_END = auto()
101
+
102
+
103
+ class TripleObjectType(Enum):
104
+ """
105
+ Maps to an xsd data type in case of literals, for example: BOOLEAN -> xsd:boolean
106
+ Or Indicates that it is an IRI, in which case it is not an RDF Literal
107
+ """
108
+
109
+ BOOLEAN = auto()
110
+ DATETIME = auto()
111
+ DECIMAL = auto()
112
+ INTEGER = auto()
113
+ IRI = auto()
114
+ INTERNAL_ID = auto()
115
+ STRING = auto()
116
+ URI = auto()
117
+ DATE_YYYY_MM_DD = auto()
@@ -0,0 +1,106 @@
1
+ from __future__ import annotations
2
+
3
+ from dataclasses import dataclass
4
+ from enum import Enum
5
+ from enum import auto
6
+ from pathlib import Path
7
+
8
+ from rdflib import Graph
9
+
10
+ from dsp_tools.utils.rdf_constants import SubjectObjectTypeAlias
11
+
12
+
13
+ @dataclass
14
+ class SHACLGraphs:
15
+ cardinality: Graph
16
+ content: Graph
17
+
18
+
19
+ @dataclass
20
+ class RDFGraphs:
21
+ data: Graph
22
+ ontos: Graph
23
+ cardinality_shapes: Graph
24
+ content_shapes: Graph
25
+ knora_api: Graph
26
+ resources_in_db_graph: Graph
27
+
28
+
29
+ @dataclass
30
+ class ValidationFilePaths:
31
+ directory: Path
32
+ data_file: str
33
+ shacl_file: str
34
+ report_file: str
35
+
36
+
37
+ @dataclass
38
+ class ValidationReportGraphs:
39
+ conforms: bool
40
+ validation_graph: Graph
41
+ shacl_graph: Graph
42
+ onto_graph: Graph
43
+ data_graph: Graph
44
+
45
+
46
+ @dataclass
47
+ class QueryInfo:
48
+ validation_bn: SubjectObjectTypeAlias
49
+ focus_iri: SubjectObjectTypeAlias
50
+ focus_rdf_type: SubjectObjectTypeAlias
51
+
52
+
53
+ @dataclass
54
+ class UnexpectedComponent:
55
+ component_type: str
56
+
57
+
58
+ @dataclass
59
+ class ValidationResultBaseInfo:
60
+ result_bn: SubjectObjectTypeAlias
61
+ source_constraint_component: SubjectObjectTypeAlias
62
+ focus_node_iri: SubjectObjectTypeAlias
63
+ focus_node_type: SubjectObjectTypeAlias
64
+ result_path: SubjectObjectTypeAlias
65
+ severity: SubjectObjectTypeAlias
66
+ detail: DetailBaseInfo | None = None
67
+
68
+
69
+ @dataclass
70
+ class DetailBaseInfo:
71
+ detail_bn: SubjectObjectTypeAlias
72
+ source_constraint_component: SubjectObjectTypeAlias
73
+
74
+
75
+ @dataclass
76
+ class ValidationResult:
77
+ violation_type: ViolationType
78
+ res_iri: SubjectObjectTypeAlias
79
+ res_class: SubjectObjectTypeAlias
80
+ severity: SubjectObjectTypeAlias
81
+ property: SubjectObjectTypeAlias | None = None
82
+ message: SubjectObjectTypeAlias | None = None
83
+ input_value: SubjectObjectTypeAlias | None = None
84
+ input_type: SubjectObjectTypeAlias | None = None
85
+ expected: SubjectObjectTypeAlias | None = None
86
+
87
+
88
+ class ViolationType(Enum):
89
+ SEQNUM_IS_PART_OF = auto()
90
+ UNIQUE_VALUE = auto()
91
+ VALUE_TYPE = auto()
92
+ PATTERN = auto()
93
+ GENERIC = auto()
94
+ LINK_TARGET = auto()
95
+ MAX_CARD = auto()
96
+ MIN_CARD = auto()
97
+ NON_EXISTING_CARD = auto()
98
+ FILE_VALUE_PROHIBITED = auto()
99
+ FILE_VALUE_MISSING = auto()
100
+
101
+
102
+ @dataclass
103
+ class ReformattedIRI:
104
+ res_id: str
105
+ res_type: str
106
+ prop_name: str