dsp-tools 0.9.13__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 (348) hide show
  1. dsp_tools/__init__.py +5 -0
  2. dsp_tools/cli/args.py +47 -0
  3. dsp_tools/cli/call_action.py +85 -0
  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 +479 -0
  7. dsp_tools/cli/entry_point.py +322 -0
  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/clients/connection.py +35 -0
  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 +321 -0
  58. dsp_tools/commands/excel2json/lists/__init__.py +0 -0
  59. dsp_tools/commands/excel2json/lists/compliance_checks.py +292 -0
  60. dsp_tools/commands/excel2json/lists/make_lists.py +247 -0
  61. dsp_tools/commands/excel2json/lists/models/__init__.py +0 -0
  62. dsp_tools/commands/excel2json/lists/models/deserialise.py +30 -0
  63. dsp_tools/commands/excel2json/lists/models/input_error.py +216 -0
  64. dsp_tools/commands/excel2json/lists/models/serialise.py +57 -0
  65. dsp_tools/commands/excel2json/lists/utils.py +81 -0
  66. dsp_tools/commands/excel2json/models/__init__.py +0 -0
  67. dsp_tools/commands/excel2json/models/input_error.py +416 -0
  68. dsp_tools/commands/excel2json/models/json_header.py +175 -0
  69. dsp_tools/commands/excel2json/models/list_node_name.py +16 -0
  70. dsp_tools/commands/excel2json/models/ontology.py +76 -0
  71. dsp_tools/commands/excel2json/old_lists.py +328 -0
  72. dsp_tools/commands/excel2json/project.py +280 -0
  73. dsp_tools/commands/excel2json/properties.py +370 -0
  74. dsp_tools/commands/excel2json/resources.py +336 -0
  75. dsp_tools/commands/excel2json/utils.py +352 -0
  76. dsp_tools/commands/excel2xml/__init__.py +7 -0
  77. dsp_tools/commands/excel2xml/excel2xml_cli.py +523 -0
  78. dsp_tools/commands/excel2xml/excel2xml_lib.py +1953 -0
  79. dsp_tools/commands/excel2xml/propertyelement.py +47 -0
  80. dsp_tools/commands/get/__init__.py +0 -0
  81. dsp_tools/commands/get/get.py +166 -0
  82. dsp_tools/commands/get/get_permissions.py +257 -0
  83. dsp_tools/commands/get/get_permissions_legacy.py +89 -0
  84. dsp_tools/commands/get/legacy_models/__init__.py +0 -0
  85. dsp_tools/commands/get/legacy_models/context.py +318 -0
  86. dsp_tools/commands/get/legacy_models/group.py +241 -0
  87. dsp_tools/commands/get/legacy_models/helpers.py +47 -0
  88. dsp_tools/commands/get/legacy_models/listnode.py +390 -0
  89. dsp_tools/commands/get/legacy_models/model.py +12 -0
  90. dsp_tools/commands/get/legacy_models/ontology.py +324 -0
  91. dsp_tools/commands/get/legacy_models/project.py +366 -0
  92. dsp_tools/commands/get/legacy_models/propertyclass.py +417 -0
  93. dsp_tools/commands/get/legacy_models/resourceclass.py +676 -0
  94. dsp_tools/commands/get/legacy_models/user.py +438 -0
  95. dsp_tools/commands/get/models/__init__.py +0 -0
  96. dsp_tools/commands/get/models/permissions_models.py +10 -0
  97. dsp_tools/commands/id2iri.py +258 -0
  98. dsp_tools/commands/ingest_xmlupload/__init__.py +0 -0
  99. dsp_tools/commands/ingest_xmlupload/bulk_ingest_client.py +178 -0
  100. dsp_tools/commands/ingest_xmlupload/create_resources/__init__.py +0 -0
  101. dsp_tools/commands/ingest_xmlupload/create_resources/apply_ingest_id.py +69 -0
  102. dsp_tools/commands/ingest_xmlupload/create_resources/upload_xml.py +166 -0
  103. dsp_tools/commands/ingest_xmlupload/create_resources/user_information.py +121 -0
  104. dsp_tools/commands/ingest_xmlupload/ingest_files/__init__.py +0 -0
  105. dsp_tools/commands/ingest_xmlupload/ingest_files/ingest_files.py +64 -0
  106. dsp_tools/commands/ingest_xmlupload/upload_files/__init__.py +0 -0
  107. dsp_tools/commands/ingest_xmlupload/upload_files/filechecker.py +20 -0
  108. dsp_tools/commands/ingest_xmlupload/upload_files/input_error.py +57 -0
  109. dsp_tools/commands/ingest_xmlupload/upload_files/upload_failures.py +66 -0
  110. dsp_tools/commands/ingest_xmlupload/upload_files/upload_files.py +67 -0
  111. dsp_tools/commands/resume_xmlupload/__init__.py +0 -0
  112. dsp_tools/commands/resume_xmlupload/resume_xmlupload.py +96 -0
  113. dsp_tools/commands/start_stack.py +428 -0
  114. dsp_tools/commands/update_legal/CLAUDE.md +344 -0
  115. dsp_tools/commands/update_legal/__init__.py +0 -0
  116. dsp_tools/commands/update_legal/core.py +182 -0
  117. dsp_tools/commands/update_legal/csv_operations.py +135 -0
  118. dsp_tools/commands/update_legal/models.py +87 -0
  119. dsp_tools/commands/update_legal/xml_operations.py +247 -0
  120. dsp_tools/commands/validate_data/CLAUDE.md +159 -0
  121. dsp_tools/commands/validate_data/__init__.py +0 -0
  122. dsp_tools/commands/validate_data/constants.py +59 -0
  123. dsp_tools/commands/validate_data/mappers.py +143 -0
  124. dsp_tools/commands/validate_data/models/__init__.py +0 -0
  125. dsp_tools/commands/validate_data/models/api_responses.py +45 -0
  126. dsp_tools/commands/validate_data/models/input_problems.py +119 -0
  127. dsp_tools/commands/validate_data/models/rdf_like_data.py +117 -0
  128. dsp_tools/commands/validate_data/models/validation.py +106 -0
  129. dsp_tools/commands/validate_data/prepare_data/__init__.py +0 -0
  130. dsp_tools/commands/validate_data/prepare_data/get_rdf_like_data.py +296 -0
  131. dsp_tools/commands/validate_data/prepare_data/make_data_graph.py +91 -0
  132. dsp_tools/commands/validate_data/prepare_data/prepare_data.py +184 -0
  133. dsp_tools/commands/validate_data/process_validation_report/__init__.py +0 -0
  134. dsp_tools/commands/validate_data/process_validation_report/get_user_validation_message.py +358 -0
  135. dsp_tools/commands/validate_data/process_validation_report/query_validation_result.py +507 -0
  136. dsp_tools/commands/validate_data/process_validation_report/reformat_validation_results.py +150 -0
  137. dsp_tools/commands/validate_data/shacl_cli_validator.py +70 -0
  138. dsp_tools/commands/validate_data/sparql/__init__.py +0 -0
  139. dsp_tools/commands/validate_data/sparql/cardinality_shacl.py +209 -0
  140. dsp_tools/commands/validate_data/sparql/construct_shacl.py +92 -0
  141. dsp_tools/commands/validate_data/sparql/legal_info_shacl.py +36 -0
  142. dsp_tools/commands/validate_data/sparql/value_shacl.py +357 -0
  143. dsp_tools/commands/validate_data/utils.py +59 -0
  144. dsp_tools/commands/validate_data/validate_data.py +283 -0
  145. dsp_tools/commands/validate_data/validation/__init__.py +0 -0
  146. dsp_tools/commands/validate_data/validation/check_duplicate_files.py +55 -0
  147. dsp_tools/commands/validate_data/validation/check_for_unknown_classes.py +67 -0
  148. dsp_tools/commands/validate_data/validation/get_validation_report.py +94 -0
  149. dsp_tools/commands/validate_data/validation/validate_ontology.py +107 -0
  150. dsp_tools/commands/xmlupload/CLAUDE.md +292 -0
  151. dsp_tools/commands/xmlupload/__init__.py +0 -0
  152. dsp_tools/commands/xmlupload/iri_resolver.py +21 -0
  153. dsp_tools/commands/xmlupload/make_rdf_graph/__init__.py +0 -0
  154. dsp_tools/commands/xmlupload/make_rdf_graph/constants.py +63 -0
  155. dsp_tools/commands/xmlupload/make_rdf_graph/jsonld_utils.py +44 -0
  156. dsp_tools/commands/xmlupload/make_rdf_graph/make_file_value.py +77 -0
  157. dsp_tools/commands/xmlupload/make_rdf_graph/make_resource_and_values.py +114 -0
  158. dsp_tools/commands/xmlupload/make_rdf_graph/make_values.py +262 -0
  159. dsp_tools/commands/xmlupload/models/__init__.py +0 -0
  160. dsp_tools/commands/xmlupload/models/bitstream_info.py +18 -0
  161. dsp_tools/commands/xmlupload/models/formatted_text_value.py +10 -0
  162. dsp_tools/commands/xmlupload/models/ingest.py +143 -0
  163. dsp_tools/commands/xmlupload/models/input_problems.py +58 -0
  164. dsp_tools/commands/xmlupload/models/lookup_models.py +21 -0
  165. dsp_tools/commands/xmlupload/models/permission.py +45 -0
  166. dsp_tools/commands/xmlupload/models/permissions_parsed.py +93 -0
  167. dsp_tools/commands/xmlupload/models/processed/__init__.py +0 -0
  168. dsp_tools/commands/xmlupload/models/processed/file_values.py +29 -0
  169. dsp_tools/commands/xmlupload/models/processed/res.py +27 -0
  170. dsp_tools/commands/xmlupload/models/processed/values.py +101 -0
  171. dsp_tools/commands/xmlupload/models/rdf_models.py +26 -0
  172. dsp_tools/commands/xmlupload/models/upload_clients.py +14 -0
  173. dsp_tools/commands/xmlupload/models/upload_state.py +20 -0
  174. dsp_tools/commands/xmlupload/prepare_xml_input/__init__.py +0 -0
  175. dsp_tools/commands/xmlupload/prepare_xml_input/ark2iri.py +55 -0
  176. dsp_tools/commands/xmlupload/prepare_xml_input/get_processed_resources.py +252 -0
  177. dsp_tools/commands/xmlupload/prepare_xml_input/iiif_uri_validator.py +50 -0
  178. dsp_tools/commands/xmlupload/prepare_xml_input/list_client.py +120 -0
  179. dsp_tools/commands/xmlupload/prepare_xml_input/prepare_xml_input.py +67 -0
  180. dsp_tools/commands/xmlupload/prepare_xml_input/read_validate_xml_file.py +58 -0
  181. dsp_tools/commands/xmlupload/prepare_xml_input/transform_input_values.py +118 -0
  182. dsp_tools/commands/xmlupload/resource_create_client.py +25 -0
  183. dsp_tools/commands/xmlupload/richtext_id2iri.py +37 -0
  184. dsp_tools/commands/xmlupload/stash/__init__.py +0 -0
  185. dsp_tools/commands/xmlupload/stash/analyse_circular_reference_graph.py +236 -0
  186. dsp_tools/commands/xmlupload/stash/create_info_for_graph.py +53 -0
  187. dsp_tools/commands/xmlupload/stash/graph_models.py +87 -0
  188. dsp_tools/commands/xmlupload/stash/stash_circular_references.py +68 -0
  189. dsp_tools/commands/xmlupload/stash/stash_models.py +109 -0
  190. dsp_tools/commands/xmlupload/stash/upload_stashed_resptr_props.py +106 -0
  191. dsp_tools/commands/xmlupload/stash/upload_stashed_xml_texts.py +196 -0
  192. dsp_tools/commands/xmlupload/upload_config.py +76 -0
  193. dsp_tools/commands/xmlupload/write_diagnostic_info.py +27 -0
  194. dsp_tools/commands/xmlupload/xmlupload.py +516 -0
  195. dsp_tools/config/__init__.py +0 -0
  196. dsp_tools/config/logger_config.py +69 -0
  197. dsp_tools/config/warnings_config.py +32 -0
  198. dsp_tools/error/__init__.py +0 -0
  199. dsp_tools/error/custom_warnings.py +39 -0
  200. dsp_tools/error/exceptions.py +204 -0
  201. dsp_tools/error/problems.py +10 -0
  202. dsp_tools/error/xmllib_errors.py +20 -0
  203. dsp_tools/error/xmllib_warnings.py +54 -0
  204. dsp_tools/error/xmllib_warnings_util.py +159 -0
  205. dsp_tools/error/xsd_validation_error_msg.py +19 -0
  206. dsp_tools/legacy_models/__init__.py +0 -0
  207. dsp_tools/legacy_models/datetimestamp.py +81 -0
  208. dsp_tools/legacy_models/langstring.py +253 -0
  209. dsp_tools/legacy_models/projectContext.py +49 -0
  210. dsp_tools/py.typed +0 -0
  211. dsp_tools/resources/schema/data.xsd +648 -0
  212. dsp_tools/resources/schema/lists-only.json +72 -0
  213. dsp_tools/resources/schema/project.json +1258 -0
  214. dsp_tools/resources/schema/properties-only.json +874 -0
  215. dsp_tools/resources/schema/resources-only.json +140 -0
  216. dsp_tools/resources/start-stack/docker-compose.override-host.j2 +11 -0
  217. dsp_tools/resources/start-stack/docker-compose.override.yml +11 -0
  218. dsp_tools/resources/start-stack/docker-compose.yml +88 -0
  219. dsp_tools/resources/start-stack/dsp-app-config.json +45 -0
  220. dsp_tools/resources/start-stack/dsp-app-config.override-host.j2 +26 -0
  221. dsp_tools/resources/validate_data/api-shapes-resource-cardinalities.ttl +191 -0
  222. dsp_tools/resources/validate_data/api-shapes.ttl +804 -0
  223. dsp_tools/resources/validate_data/shacl-cli-image.yml +4 -0
  224. dsp_tools/resources/validate_data/validate-ontology.ttl +99 -0
  225. dsp_tools/utils/__init__.py +0 -0
  226. dsp_tools/utils/ansi_colors.py +32 -0
  227. dsp_tools/utils/data_formats/__init__.py +0 -0
  228. dsp_tools/utils/data_formats/date_util.py +166 -0
  229. dsp_tools/utils/data_formats/iri_util.py +30 -0
  230. dsp_tools/utils/data_formats/shared.py +81 -0
  231. dsp_tools/utils/data_formats/uri_util.py +76 -0
  232. dsp_tools/utils/fuseki_bloating.py +63 -0
  233. dsp_tools/utils/json_parsing.py +22 -0
  234. dsp_tools/utils/rdf_constants.py +42 -0
  235. dsp_tools/utils/rdflib_utils.py +10 -0
  236. dsp_tools/utils/replace_id_with_iri.py +66 -0
  237. dsp_tools/utils/request_utils.py +238 -0
  238. dsp_tools/utils/xml_parsing/__init__.py +0 -0
  239. dsp_tools/utils/xml_parsing/get_lookups.py +32 -0
  240. dsp_tools/utils/xml_parsing/get_parsed_resources.py +325 -0
  241. dsp_tools/utils/xml_parsing/models/__init__.py +0 -0
  242. dsp_tools/utils/xml_parsing/models/parsed_resource.py +76 -0
  243. dsp_tools/utils/xml_parsing/parse_clean_validate_xml.py +137 -0
  244. dsp_tools/xmllib/CLAUDE.md +302 -0
  245. dsp_tools/xmllib/__init__.py +49 -0
  246. dsp_tools/xmllib/general_functions.py +877 -0
  247. dsp_tools/xmllib/internal/__init__.py +0 -0
  248. dsp_tools/xmllib/internal/checkers.py +162 -0
  249. dsp_tools/xmllib/internal/circumvent_circular_imports.py +36 -0
  250. dsp_tools/xmllib/internal/constants.py +46 -0
  251. dsp_tools/xmllib/internal/input_converters.py +155 -0
  252. dsp_tools/xmllib/internal/serialise_file_value.py +57 -0
  253. dsp_tools/xmllib/internal/serialise_resource.py +177 -0
  254. dsp_tools/xmllib/internal/serialise_values.py +152 -0
  255. dsp_tools/xmllib/internal/type_aliases.py +11 -0
  256. dsp_tools/xmllib/models/__init__.py +0 -0
  257. dsp_tools/xmllib/models/config_options.py +28 -0
  258. dsp_tools/xmllib/models/date_formats.py +48 -0
  259. dsp_tools/xmllib/models/dsp_base_resources.py +1542 -0
  260. dsp_tools/xmllib/models/internal/__init__.py +0 -0
  261. dsp_tools/xmllib/models/internal/file_values.py +172 -0
  262. dsp_tools/xmllib/models/internal/geometry.py +162 -0
  263. dsp_tools/xmllib/models/internal/migration_metadata.py +55 -0
  264. dsp_tools/xmllib/models/internal/serialise_permissions.py +66 -0
  265. dsp_tools/xmllib/models/internal/values.py +342 -0
  266. dsp_tools/xmllib/models/licenses/__init__.py +0 -0
  267. dsp_tools/xmllib/models/licenses/other.py +59 -0
  268. dsp_tools/xmllib/models/licenses/recommended.py +107 -0
  269. dsp_tools/xmllib/models/permissions.py +41 -0
  270. dsp_tools/xmllib/models/res.py +1782 -0
  271. dsp_tools/xmllib/models/root.py +348 -0
  272. dsp_tools/xmllib/value_checkers.py +434 -0
  273. dsp_tools/xmllib/value_converters.py +777 -0
  274. dsp_tools-18.3.0.post13.dist-info/METADATA +90 -0
  275. dsp_tools-18.3.0.post13.dist-info/RECORD +286 -0
  276. dsp_tools-18.3.0.post13.dist-info/WHEEL +4 -0
  277. dsp_tools-18.3.0.post13.dist-info/entry_points.txt +3 -0
  278. dsp_tools-0.9.13.dist-info/LICENSE +0 -674
  279. dsp_tools-0.9.13.dist-info/METADATA +0 -144
  280. dsp_tools-0.9.13.dist-info/RECORD +0 -71
  281. dsp_tools-0.9.13.dist-info/WHEEL +0 -5
  282. dsp_tools-0.9.13.dist-info/entry_points.txt +0 -3
  283. dsp_tools-0.9.13.dist-info/top_level.txt +0 -1
  284. dsplib/models/connection.py +0 -272
  285. dsplib/models/group.py +0 -296
  286. dsplib/models/helpers.py +0 -505
  287. dsplib/models/langstring.py +0 -277
  288. dsplib/models/listnode.py +0 -578
  289. dsplib/models/model.py +0 -20
  290. dsplib/models/ontology.py +0 -448
  291. dsplib/models/permission.py +0 -112
  292. dsplib/models/project.py +0 -547
  293. dsplib/models/propertyclass.py +0 -505
  294. dsplib/models/resource.py +0 -366
  295. dsplib/models/resourceclass.py +0 -810
  296. dsplib/models/sipi.py +0 -30
  297. dsplib/models/user.py +0 -731
  298. dsplib/models/value.py +0 -1000
  299. dsplib/utils/knora-data-schema.xsd +0 -454
  300. dsplib/utils/knora-schema-lists.json +0 -83
  301. dsplib/utils/knora-schema.json +0 -434
  302. dsplib/utils/onto_commons.py +0 -24
  303. dsplib/utils/onto_create_lists.py +0 -73
  304. dsplib/utils/onto_create_ontology.py +0 -442
  305. dsplib/utils/onto_get.py +0 -58
  306. dsplib/utils/onto_validate.py +0 -33
  307. dsplib/utils/xml_upload.py +0 -539
  308. dsplib/widgets/doublepassword.py +0 -80
  309. knora/MLS-import-libraries.py +0 -84
  310. knora/dsp_tools.py +0 -96
  311. knora/dsplib/models/connection.py +0 -272
  312. knora/dsplib/models/group.py +0 -296
  313. knora/dsplib/models/helpers.py +0 -506
  314. knora/dsplib/models/langstring.py +0 -277
  315. knora/dsplib/models/listnode.py +0 -578
  316. knora/dsplib/models/model.py +0 -20
  317. knora/dsplib/models/ontology.py +0 -448
  318. knora/dsplib/models/permission.py +0 -112
  319. knora/dsplib/models/project.py +0 -583
  320. knora/dsplib/models/propertyclass.py +0 -505
  321. knora/dsplib/models/resource.py +0 -416
  322. knora/dsplib/models/resourceclass.py +0 -811
  323. knora/dsplib/models/sipi.py +0 -35
  324. knora/dsplib/models/user.py +0 -731
  325. knora/dsplib/models/value.py +0 -1000
  326. knora/dsplib/utils/knora-data-schema.xsd +0 -464
  327. knora/dsplib/utils/knora-schema-lists.json +0 -83
  328. knora/dsplib/utils/knora-schema.json +0 -444
  329. knora/dsplib/utils/onto_commons.py +0 -24
  330. knora/dsplib/utils/onto_create_lists.py +0 -73
  331. knora/dsplib/utils/onto_create_ontology.py +0 -451
  332. knora/dsplib/utils/onto_get.py +0 -58
  333. knora/dsplib/utils/onto_validate.py +0 -33
  334. knora/dsplib/utils/xml_upload.py +0 -540
  335. knora/dsplib/widgets/doublepassword.py +0 -80
  336. knora/knora.py +0 -2108
  337. knora/test.py +0 -99
  338. knora/testit.py +0 -76
  339. knora/xml2knora.py +0 -633
  340. {dsplib → dsp_tools/cli}/__init__.py +0 -0
  341. {dsplib/models → dsp_tools/clients}/__init__.py +0 -0
  342. {dsplib/utils → dsp_tools/commands}/__init__.py +0 -0
  343. {dsplib/widgets → dsp_tools/commands/create}/__init__.py +0 -0
  344. {knora → dsp_tools/commands/create/create_on_server}/__init__.py +0 -0
  345. {knora/dsplib → dsp_tools/commands/create/models}/__init__.py +0 -0
  346. {knora/dsplib/models → dsp_tools/commands/create/parsing}/__init__.py +0 -0
  347. {knora/dsplib/utils → dsp_tools/commands/create/serialisation}/__init__.py +0 -0
  348. {knora/dsplib/widgets → dsp_tools/commands/excel2json}/__init__.py +0 -0
@@ -0,0 +1,1258 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://dasch.swiss/schema/project.json",
4
+ "title": "JSON schema for DSP ontologies",
5
+ "description": "JSON schema for DSP ontologies",
6
+ "definitions": {
7
+ "langstring": {
8
+ "type": "object",
9
+ "patternProperties": {
10
+ "^(en|de|fr|it|rm)$": {
11
+ "type": "string"
12
+ }
13
+ },
14
+ "minProperties": 1,
15
+ "additionalProperties": false
16
+ },
17
+ "ncname": {
18
+ "type": "string",
19
+ "pattern": "^[a-zA-Z_][\\w.-]*$"
20
+ },
21
+ "prefixedname": {
22
+ "type": "string",
23
+ "pattern": "^([a-zA-Z_][\\w.-]*)?:([\\w.-]+)$"
24
+ },
25
+ "prefixedname_or_uri": {
26
+ "type": "string",
27
+ "pattern": "^(([a-zA-Z_][\\w.-]*)?:([\\w.-]+))|(https?://.*)$"
28
+ },
29
+ "baseresource": {
30
+ "type": "string",
31
+ "enum": [
32
+ "Resource",
33
+ "Region",
34
+ "Representation",
35
+ "StillImageRepresentation",
36
+ "TextRepresentation",
37
+ "AudioRepresentation",
38
+ "DDDRepresentation",
39
+ "DocumentRepresentation",
40
+ "MovingImageRepresentation",
41
+ "ArchiveRepresentation"
42
+ ]
43
+ },
44
+ "super_resource": {
45
+ "type": [
46
+ "string"
47
+ ],
48
+ "oneOf": [
49
+ {
50
+ "$ref": "#/definitions/baseresource"
51
+ },
52
+ {
53
+ "$ref": "#/definitions/prefixedname_or_uri"
54
+ }
55
+ ]
56
+ },
57
+ "super_resource_as_string_or_array": {
58
+ "oneOf": [
59
+ {
60
+ "$ref": "#/definitions/super_resource"
61
+ },
62
+ {
63
+ "type": "array",
64
+ "items": {
65
+ "$ref": "#/definitions/super_resource"
66
+ }
67
+ }
68
+ ]
69
+ },
70
+ "baseproperty": {
71
+ "type": "string",
72
+ "enum": [
73
+ "hasValue",
74
+ "hasLinkTo",
75
+ "hasColor",
76
+ "hasComment",
77
+ "isPartOf",
78
+ "hasRepresentation",
79
+ "seqnum"
80
+ ]
81
+ },
82
+ "basevalue": {
83
+ "type": "string",
84
+ "enum": [
85
+ "BooleanValue",
86
+ "ColorValue",
87
+ "DateValue",
88
+ "DecimalValue",
89
+ "GeonameValue",
90
+ "IntValue",
91
+ "ListValue",
92
+ "TextValue",
93
+ "TimeValue",
94
+ "UriValue"
95
+ ]
96
+ },
97
+ "gui_element": {
98
+ "type": "string",
99
+ "enum": [
100
+ "Checkbox",
101
+ "Colorpicker",
102
+ "Date",
103
+ "Geonames",
104
+ "List",
105
+ "Radio",
106
+ "Pulldown",
107
+ "Richtext",
108
+ "Searchbox",
109
+ "SimpleText",
110
+ "Spinbox",
111
+ "Textarea",
112
+ "TimeStamp"
113
+ ]
114
+ },
115
+ "groupdef": {
116
+ "type": "string",
117
+ "pattern": "^([a-zA-Z_][\\w.-]*)?:([-\\w .]+)$"
118
+ },
119
+ "projectdef": {
120
+ "type": "string",
121
+ "pattern": "^([a-zA-Z_][\\w.-]*)?:(member|admin)$"
122
+ },
123
+ "user": {
124
+ "type": "object",
125
+ "properties": {
126
+ "username": {
127
+ "type": "string",
128
+ "pattern": "^(?=.{3,50}$)(?![_.-])(?!.*[_.-]{2})[a-zA-Z0-9._-]+(?<![_.-])$"
129
+ },
130
+ "email": {
131
+ "type": "string",
132
+ "pattern": "^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$"
133
+ },
134
+ "givenName": {
135
+ "type": "string"
136
+ },
137
+ "familyName": {
138
+ "type": "string"
139
+ },
140
+ "password": {
141
+ "type": ["string", "null"]
142
+ },
143
+ "lang": {
144
+ "type": "string",
145
+ "pattern": "^(en|de|fr|it|rm)$"
146
+ },
147
+ "groups": {
148
+ "type": "array",
149
+ "items": {
150
+ "$ref": "#/definitions/groupdef"
151
+ }
152
+ },
153
+ "projects": {
154
+ "type": "array",
155
+ "items": {
156
+ "$ref": "#/definitions/projectdef"
157
+ }
158
+ }
159
+ },
160
+ "required": [
161
+ "username",
162
+ "email",
163
+ "givenName",
164
+ "familyName",
165
+ "password"
166
+ ]
167
+ },
168
+ "group": {
169
+ "type": "object",
170
+ "properties": {
171
+ "name": {
172
+ "type": "string"
173
+ },
174
+ "descriptions": {
175
+ "$ref": "#/definitions/langstring"
176
+ },
177
+ "status": {
178
+ "type": "boolean"
179
+ },
180
+ "selfjoin": {
181
+ "type": "boolean"
182
+ }
183
+ },
184
+ "required": [
185
+ "name",
186
+ "descriptions"
187
+ ]
188
+ },
189
+ "node": {
190
+ "type": "object",
191
+ "properties": {
192
+ "name": {
193
+ "type": "string"
194
+ },
195
+ "labels": {
196
+ "$ref": "#/definitions/langstring"
197
+ },
198
+ "comments": {
199
+ "$ref": "#/definitions/langstring"
200
+ },
201
+ "nodes": {
202
+ "type": "array",
203
+ "minItems": 1,
204
+ "items": {
205
+ "$ref": "#/definitions/node"
206
+ }
207
+ }
208
+ },
209
+ "required": [
210
+ "name",
211
+ "labels"
212
+ ],
213
+ "additionalProperties": false
214
+ },
215
+ "ontology": {
216
+ "type": "object",
217
+ "properties": {
218
+ "name": {
219
+ "$ref": "#/definitions/ncname"
220
+ },
221
+ "label": {
222
+ "type": "string"
223
+ },
224
+ "comment": {
225
+ "type": "string"
226
+ },
227
+ "properties": {
228
+ "type": "array",
229
+ "minItems": 1,
230
+ "items": {
231
+ "$ref": "#/definitions/property"
232
+ }
233
+ },
234
+ "resources": {
235
+ "type": "array",
236
+ "minItems": 1,
237
+ "items": {
238
+ "$ref": "#/definitions/resource"
239
+ }
240
+ }
241
+ },
242
+ "required": [
243
+ "name",
244
+ "label",
245
+ "properties",
246
+ "resources"
247
+ ],
248
+ "additionalProperties": false
249
+ },
250
+ "property": {
251
+ "type": "object",
252
+ "properties": {
253
+ "name": {
254
+ "$ref": "#/definitions/ncname"
255
+ },
256
+ "super": {
257
+ "type": "array",
258
+ "items": {
259
+ "type": "string",
260
+ "oneOf": [
261
+ {
262
+ "$ref": "#/definitions/baseproperty"
263
+ },
264
+ {
265
+ "$ref": "#/definitions/prefixedname_or_uri"
266
+ }
267
+ ]
268
+ }
269
+ },
270
+ "object": {
271
+ "type": "string",
272
+ "oneOf": [
273
+ {
274
+ "$ref": "#/definitions/basevalue"
275
+ },
276
+ {
277
+ "$ref": "#/definitions/baseresource"
278
+ },
279
+ {
280
+ "$ref": "#/definitions/prefixedname"
281
+ }
282
+ ]
283
+ },
284
+ "subject": {
285
+ "$ref": "#/definitions/prefixedname"
286
+ },
287
+ "labels": {
288
+ "$ref": "#/definitions/langstring"
289
+ },
290
+ "gui_element": {
291
+ "$ref": "#/definitions/gui_element"
292
+ },
293
+ "gui_attributes": {
294
+ "type": "object",
295
+ "properties": {
296
+ "size": {
297
+ "type": "integer"
298
+ },
299
+ "maxlength": {
300
+ "type": "integer"
301
+ },
302
+ "hlist": {
303
+ "type": "string"
304
+ },
305
+ "numprops": {
306
+ "type": "integer"
307
+ },
308
+ "ncolors": {
309
+ "type": "integer"
310
+ },
311
+ "cols": {
312
+ "type": "integer"
313
+ },
314
+ "rows": {
315
+ "type": "integer"
316
+ },
317
+ "width": {
318
+ "type": "string",
319
+ "pattern": "^[0-9]*%?$"
320
+ },
321
+ "wrap": {
322
+ "type": "string",
323
+ "enum": [
324
+ "soft",
325
+ "hard"
326
+ ]
327
+ },
328
+ "max": {
329
+ "type": "number"
330
+ },
331
+ "min": {
332
+ "type": "number"
333
+ }
334
+ }
335
+ },
336
+ "comments": {
337
+ "$ref": "#/definitions/langstring"
338
+ }
339
+ },
340
+ "required": [
341
+ "name",
342
+ "super",
343
+ "object",
344
+ "labels",
345
+ "gui_element"
346
+ ],
347
+ "additionalProperties": false,
348
+ "allOf": [
349
+ {
350
+ "if": {
351
+ "properties": {
352
+ "super": {
353
+ "const": "hasLinkTo"
354
+ }
355
+ },
356
+ "required": [
357
+ "super"
358
+ ]
359
+ },
360
+ "then": {
361
+ "properties": {
362
+ "gui_element": {
363
+ "const": "Searchbox"
364
+ }
365
+ }
366
+ }
367
+ },
368
+ {
369
+ "if": {
370
+ "properties": {
371
+ "super": {
372
+ "const": "isPartOf"
373
+ }
374
+ },
375
+ "required": [
376
+ "super"
377
+ ]
378
+ },
379
+ "then": {
380
+ "properties": {
381
+ "gui_element": {
382
+ "const": "Searchbox"
383
+ }
384
+ }
385
+ }
386
+ },
387
+ {
388
+ "if": {
389
+ "properties": {
390
+ "object": {
391
+ "const": "Representation"
392
+ }
393
+ },
394
+ "required": [
395
+ "object"
396
+ ]
397
+ },
398
+ "then": {
399
+ "properties": {
400
+ "super": {
401
+ "type": "array",
402
+ "items": {
403
+ "type": "string",
404
+ "oneOf": [
405
+ {
406
+ "enum": [
407
+ "hasRepresentation",
408
+ "hasLinkTo"
409
+ ]
410
+ },
411
+ {
412
+ "$ref": "#/definitions/prefixedname_or_uri"
413
+ }
414
+ ]
415
+ }
416
+ },
417
+ "gui_element": {
418
+ "const": "Searchbox"
419
+ }
420
+ }
421
+ }
422
+ },
423
+ {
424
+ "if": {
425
+ "properties": {
426
+ "object": {
427
+ "const": "TextValue"
428
+ }
429
+ },
430
+ "required": [
431
+ "object"
432
+ ]
433
+ },
434
+ "then": {
435
+ "properties": {
436
+ "super": {
437
+ "type": "array",
438
+ "items": {
439
+ "type": "string",
440
+ "oneOf": [
441
+ {
442
+ "enum": [
443
+ "hasComment",
444
+ "hasValue"
445
+ ]
446
+ },
447
+ {
448
+ "$ref": "#/definitions/prefixedname_or_uri"
449
+ }
450
+ ]
451
+ }
452
+ },
453
+ "gui_element": {
454
+ "enum": [
455
+ "SimpleText",
456
+ "Textarea",
457
+ "Richtext"
458
+ ]
459
+ }
460
+ }
461
+ }
462
+ },
463
+ {
464
+ "if": {
465
+ "properties": {
466
+ "object": {
467
+ "const": "ColorValue"
468
+ }
469
+ },
470
+ "required": [
471
+ "object"
472
+ ]
473
+ },
474
+ "then": {
475
+ "properties": {
476
+ "super": {
477
+ "type": "array",
478
+ "items": {
479
+ "type": "string",
480
+ "oneOf": [
481
+ {
482
+ "enum": [
483
+ "hasColor"
484
+ ]
485
+ },
486
+ {
487
+ "$ref": "#/definitions/prefixedname_or_uri"
488
+ }
489
+ ]
490
+ }
491
+ },
492
+ "gui_element": {
493
+ "const": "Colorpicker"
494
+ }
495
+ }
496
+ }
497
+ },
498
+ {
499
+ "if": {
500
+ "properties": {
501
+ "object": {
502
+ "const": "DateValue"
503
+ }
504
+ },
505
+ "required": [
506
+ "object"
507
+ ]
508
+ },
509
+ "then": {
510
+ "properties": {
511
+ "super": {
512
+ "type": "array",
513
+ "items": {
514
+ "type": "string",
515
+ "oneOf": [
516
+ {
517
+ "enum": [
518
+ "hasValue"
519
+ ]
520
+ },
521
+ {
522
+ "$ref": "#/definitions/prefixedname_or_uri"
523
+ }
524
+ ]
525
+ }
526
+ },
527
+ "gui_element": {
528
+ "const": "Date"
529
+ }
530
+ }
531
+ }
532
+ },
533
+ {
534
+ "if": {
535
+ "properties": {
536
+ "object": {
537
+ "const": "TimeValue"
538
+ }
539
+ },
540
+ "required": [
541
+ "object"
542
+ ]
543
+ },
544
+ "then": {
545
+ "properties": {
546
+ "super": {
547
+ "type": "array",
548
+ "items": {
549
+ "type": "string",
550
+ "oneOf": [
551
+ {
552
+ "enum": [
553
+ "hasValue"
554
+ ]
555
+ },
556
+ {
557
+ "$ref": "#/definitions/prefixedname_or_uri"
558
+ }
559
+ ]
560
+ }
561
+ },
562
+ "gui_element": {
563
+ "const": "TimeStamp"
564
+ }
565
+ }
566
+ }
567
+ },
568
+ {
569
+ "if": {
570
+ "properties": {
571
+ "object": {
572
+ "const": "DecimalValue"
573
+ }
574
+ },
575
+ "required": [
576
+ "object"
577
+ ]
578
+ },
579
+ "then": {
580
+ "properties": {
581
+ "super": {
582
+ "type": "array",
583
+ "items": {
584
+ "type": "string",
585
+ "oneOf": [
586
+ {
587
+ "enum": [
588
+ "hasValue"
589
+ ]
590
+ },
591
+ {
592
+ "$ref": "#/definitions/prefixedname_or_uri"
593
+ }
594
+ ]
595
+ }
596
+ },
597
+ "gui_element": {
598
+ "enum": [
599
+ "Spinbox",
600
+ "SimpleText"
601
+ ]
602
+ }
603
+ }
604
+ }
605
+ },
606
+ {
607
+ "if": {
608
+ "properties": {
609
+ "object": {
610
+ "const": "GeonameValue"
611
+ }
612
+ },
613
+ "required": [
614
+ "object"
615
+ ]
616
+ },
617
+ "then": {
618
+ "properties": {
619
+ "super": {
620
+ "type": "array",
621
+ "items": {
622
+ "type": "string",
623
+ "oneOf": [
624
+ {
625
+ "enum": [
626
+ "hasValue"
627
+ ]
628
+ },
629
+ {
630
+ "$ref": "#/definitions/prefixedname_or_uri"
631
+ }
632
+ ]
633
+ }
634
+ },
635
+ "gui_element": {
636
+ "const": "Geonames"
637
+ }
638
+ }
639
+ }
640
+ },
641
+ {
642
+ "if": {
643
+ "properties": {
644
+ "object": {
645
+ "const": "IntValue"
646
+ }
647
+ },
648
+ "required": [
649
+ "object"
650
+ ]
651
+ },
652
+ "then": {
653
+ "properties": {
654
+ "super": {
655
+ "type": "array",
656
+ "items": {
657
+ "type": "string",
658
+ "oneOf": [
659
+ {
660
+ "enum": [
661
+ "hasValue",
662
+ "seqnum"
663
+ ]
664
+ },
665
+ {
666
+ "$ref": "#/definitions/prefixedname_or_uri"
667
+ }
668
+ ]
669
+ }
670
+ },
671
+ "gui_element": {
672
+ "enum": [
673
+ "Spinbox",
674
+ "SimpleText"
675
+ ]
676
+ }
677
+ }
678
+ }
679
+ },
680
+ {
681
+ "if": {
682
+ "properties": {
683
+ "object": {
684
+ "const": "BooleanValue"
685
+ }
686
+ },
687
+ "required": [
688
+ "object"
689
+ ]
690
+ },
691
+ "then": {
692
+ "properties": {
693
+ "super": {
694
+ "type": "array",
695
+ "items": {
696
+ "type": "string",
697
+ "oneOf": [
698
+ {
699
+ "enum": [
700
+ "hasValue"
701
+ ]
702
+ },
703
+ {
704
+ "$ref": "#/definitions/prefixedname_or_uri"
705
+ }
706
+ ]
707
+ }
708
+ },
709
+ "gui_element": {
710
+ "const": "Checkbox"
711
+ }
712
+ }
713
+ }
714
+ },
715
+ {
716
+ "if": {
717
+ "properties": {
718
+ "object": {
719
+ "const": "UriValue"
720
+ }
721
+ },
722
+ "required": [
723
+ "object"
724
+ ]
725
+ },
726
+ "then": {
727
+ "properties": {
728
+ "super": {
729
+ "type": "array",
730
+ "items": {
731
+ "type": "string",
732
+ "oneOf": [
733
+ {
734
+ "enum": [
735
+ "hasValue"
736
+ ]
737
+ },
738
+ {
739
+ "$ref": "#/definitions/prefixedname_or_uri"
740
+ }
741
+ ]
742
+ }
743
+ },
744
+ "gui_element": {
745
+ "const": "SimpleText"
746
+ }
747
+ }
748
+ }
749
+ },
750
+ {
751
+ "if": {
752
+ "properties": {
753
+ "object": {
754
+ "const": "ListValue"
755
+ }
756
+ },
757
+ "required": [
758
+ "object"
759
+ ]
760
+ },
761
+ "then": {
762
+ "properties": {
763
+ "super": {
764
+ "type": "array",
765
+ "items": {
766
+ "type": "string",
767
+ "oneOf": [
768
+ {
769
+ "enum": [
770
+ "hasValue"
771
+ ]
772
+ },
773
+ {
774
+ "$ref": "#/definitions/prefixedname_or_uri"
775
+ }
776
+ ]
777
+ }
778
+ },
779
+ "gui_element": {
780
+ "enum": [
781
+ "List",
782
+ "Radio",
783
+ "Pulldown"
784
+ ]
785
+ },
786
+ "gui_attributes": {
787
+ "type": "object",
788
+ "properties": {
789
+ "hlist": {
790
+ "type": "string"
791
+ }
792
+ },
793
+ "required": [
794
+ "hlist"
795
+ ],
796
+ "additionalProperties": false
797
+ }
798
+ },
799
+ "required": [
800
+ "gui_element",
801
+ "gui_attributes"
802
+ ]
803
+ }
804
+ },
805
+ {
806
+ "if": {
807
+ "properties": {
808
+ "object": {
809
+ "$ref": "#/definitions/prefixedname"
810
+ }
811
+ },
812
+ "required": [
813
+ "object"
814
+ ]
815
+ },
816
+ "then": {
817
+ "properties": {
818
+ "gui_element": {
819
+ "const": "Searchbox"
820
+ }
821
+ }
822
+ }
823
+ },
824
+ {
825
+ "if": {
826
+ "properties": {
827
+ "gui_element": {
828
+ "const": "SimpleText"
829
+ }
830
+ },
831
+ "required": [
832
+ "gui_element"
833
+ ]
834
+ },
835
+ "then": {
836
+ "properties": {
837
+ "gui_attributes": {
838
+ "type": "object",
839
+ "properties": {
840
+ "maxlength": {
841
+ "type": "integer"
842
+ },
843
+ "size": {
844
+ "type": "integer"
845
+ }
846
+ },
847
+ "additionalProperties": false
848
+ }
849
+ }
850
+ }
851
+ },
852
+ {
853
+ "if": {
854
+ "properties": {
855
+ "gui_element": {
856
+ "const": "Textarea"
857
+ }
858
+ },
859
+ "required": [
860
+ "gui_element"
861
+ ]
862
+ },
863
+ "then": {
864
+ "properties": {
865
+ "gui_attributes": {
866
+ "type": "object",
867
+ "properties": {
868
+ "cols": {
869
+ "type": "integer"
870
+ },
871
+ "rows": {
872
+ "type": "integer"
873
+ },
874
+ "width": {
875
+ "type": "string",
876
+ "pattern": "^[0-9]*%?$"
877
+ },
878
+ "wrap": {
879
+ "enum": [
880
+ "soft",
881
+ "hard"
882
+ ]
883
+ }
884
+ },
885
+ "additionalProperties": false
886
+ }
887
+ }
888
+ }
889
+ },
890
+ {
891
+ "if": {
892
+ "properties": {
893
+ "gui_element": {
894
+ "const": "Colorpicker"
895
+ }
896
+ },
897
+ "required": [
898
+ "gui_element"
899
+ ]
900
+ },
901
+ "then": {
902
+ "properties": {
903
+ "gui_attributes": {
904
+ "type": "object",
905
+ "properties": {
906
+ "ncolors": {
907
+ "type": "integer"
908
+ }
909
+ },
910
+ "additionalProperties": false
911
+ }
912
+ }
913
+ }
914
+ },
915
+ {
916
+ "if": {
917
+ "properties": {
918
+ "gui_element": {
919
+ "const": "Spinbox"
920
+ }
921
+ },
922
+ "required": [
923
+ "gui_element"
924
+ ]
925
+ },
926
+ "then": {
927
+ "properties": {
928
+ "gui_attributes": {
929
+ "type": "object",
930
+ "properties": {
931
+ "max": {
932
+ "type": "number"
933
+ },
934
+ "min": {
935
+ "type": "number"
936
+ }
937
+ },
938
+ "additionalProperties": false
939
+ }
940
+ }
941
+ }
942
+ },
943
+ {
944
+ "if": {
945
+ "properties": {
946
+ "gui_element": {
947
+ "enum": [
948
+ "List",
949
+ "Radio",
950
+ "Pulldown"
951
+ ]
952
+ }
953
+ },
954
+ "required": [
955
+ "gui_element"
956
+ ]
957
+ },
958
+ "then": {
959
+ "properties": {
960
+ "gui_attributes": {
961
+ "type": "object",
962
+ "properties": {
963
+ "hlist": {
964
+ "type": "string"
965
+ }
966
+ },
967
+ "required": [
968
+ "hlist"
969
+ ],
970
+ "additionalProperties": false
971
+ }
972
+ },
973
+ "required": [
974
+ "gui_attributes"
975
+ ]
976
+ }
977
+ },
978
+ {
979
+ "if": {
980
+ "properties": {
981
+ "gui_element": {
982
+ "const": "Searchbox"
983
+ }
984
+ },
985
+ "required": [
986
+ "gui_element"
987
+ ]
988
+ },
989
+ "then": {
990
+ "properties": {
991
+ "gui_attributes": {
992
+ "type": "object",
993
+ "properties": {
994
+ "numprops": {
995
+ "type": "integer"
996
+ }
997
+ },
998
+ "additionalProperties": false
999
+ }
1000
+ }
1001
+ }
1002
+ },
1003
+ {
1004
+ "if": {
1005
+ "properties": {
1006
+ "gui_element": {
1007
+ "enum": [
1008
+ "Richtext",
1009
+ "Date",
1010
+ "TimeStamp",
1011
+ "Geonames",
1012
+ "Checkbox"
1013
+ ]
1014
+ }
1015
+ },
1016
+ "required": [
1017
+ "gui_element"
1018
+ ]
1019
+ },
1020
+ "then": {
1021
+ "not": {
1022
+ "required": [
1023
+ "gui_attributes"
1024
+ ]
1025
+ }
1026
+ }
1027
+ }
1028
+ ]
1029
+ },
1030
+ "cardinality": {
1031
+ "type": "object",
1032
+ "properties": {
1033
+ "propname": {
1034
+ "type": "string",
1035
+ "oneOf": [
1036
+ {
1037
+ "enum": [
1038
+ "isPartOf",
1039
+ "seqnum"
1040
+ ]
1041
+ },
1042
+ {
1043
+ "$ref": "#/definitions/prefixedname"
1044
+ }
1045
+ ]
1046
+ },
1047
+ "cardinality": {
1048
+ "type": "string",
1049
+ "enum": [
1050
+ "1",
1051
+ "0-1",
1052
+ "1-n",
1053
+ "0-n"
1054
+ ]
1055
+ },
1056
+ "gui_order": {
1057
+ "type": "integer"
1058
+ }
1059
+ },
1060
+ "required": [
1061
+ "propname",
1062
+ "cardinality"
1063
+ ],
1064
+ "additionalProperties": false
1065
+ },
1066
+ "resource": {
1067
+ "type": "object",
1068
+ "properties": {
1069
+ "name": {
1070
+ "$ref": "#/definitions/ncname"
1071
+ },
1072
+ "super": {
1073
+ "$ref": "#/definitions/super_resource_as_string_or_array"
1074
+ },
1075
+ "labels": {
1076
+ "$ref": "#/definitions/langstring"
1077
+ },
1078
+ "comments": {
1079
+ "$ref": "#/definitions/langstring"
1080
+ },
1081
+ "cardinalities": {
1082
+ "type": "array",
1083
+ "items": {
1084
+ "$ref": "#/definitions/cardinality"
1085
+ },
1086
+ "minItems": 1
1087
+ }
1088
+ },
1089
+ "required": [
1090
+ "name",
1091
+ "super",
1092
+ "labels"
1093
+ ],
1094
+ "additionalProperties": false
1095
+ }
1096
+ },
1097
+ "type": "object",
1098
+ "properties": {
1099
+ "prefixes": {
1100
+ "type": "object",
1101
+ "patternProperties": {
1102
+ "^[-\\w]+$": {
1103
+ "pattern": "^https?://.*"
1104
+ }
1105
+ },
1106
+ "additionalProperties": false
1107
+ },
1108
+ "$schema": {
1109
+ "type": "string"
1110
+ },
1111
+ "project": {
1112
+ "type": "object",
1113
+ "properties": {
1114
+ "shortcode": {
1115
+ "type": "string",
1116
+ "pattern": "^[0-9A-F]{4}$"
1117
+ },
1118
+ "shortname": {
1119
+ "$ref": "#/definitions/ncname"
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
+ },
1154
+ "longname": {
1155
+ "type": "string"
1156
+ },
1157
+ "descriptions": {
1158
+ "$ref": "#/definitions/langstring"
1159
+ },
1160
+ "keywords": {
1161
+ "type": "array",
1162
+ "minItems": 1,
1163
+ "items": {
1164
+ "type": "string"
1165
+ }
1166
+ },
1167
+ "enabled_licenses": {
1168
+ "type": "array",
1169
+ "minItems": 1,
1170
+ "items": {
1171
+ "pattern": "^http://rdfh\\.ch/licenses/.+"
1172
+ }
1173
+ },
1174
+ "groups": {
1175
+ "type": "array",
1176
+ "items": {
1177
+ "$ref": "#/definitions/group"
1178
+ }
1179
+ },
1180
+ "users": {
1181
+ "type": "array",
1182
+ "items": {
1183
+ "$ref": "#/definitions/user"
1184
+ }
1185
+ },
1186
+ "lists": {
1187
+ "type": "array",
1188
+ "items": {
1189
+ "type": "object",
1190
+ "properties": {
1191
+ "name": {
1192
+ "type": "string"
1193
+ },
1194
+ "labels": {
1195
+ "$ref": "#/definitions/langstring"
1196
+ },
1197
+ "comments": {
1198
+ "$ref": "#/definitions/langstring"
1199
+ },
1200
+ "nodes": {
1201
+ "type": "array",
1202
+ "items": {
1203
+ "$ref": "#/definitions/node"
1204
+ }
1205
+ }
1206
+ },
1207
+ "required": [
1208
+ "name",
1209
+ "labels",
1210
+ "comments",
1211
+ "nodes"
1212
+ ],
1213
+ "additionalProperties": false
1214
+ }
1215
+ },
1216
+ "ontologies": {
1217
+ "type": "array",
1218
+ "minItems": 1,
1219
+ "items": {
1220
+ "$ref": "#/definitions/ontology"
1221
+ }
1222
+ }
1223
+ },
1224
+ "required": [
1225
+ "shortcode",
1226
+ "shortname",
1227
+ "descriptions",
1228
+ "ontologies",
1229
+ "keywords",
1230
+ "default_permissions"
1231
+ ],
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
+ ]
1251
+ }
1252
+ },
1253
+ "required": [
1254
+ "$schema",
1255
+ "project"
1256
+ ],
1257
+ "additionalProperties": false
1258
+ }