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.
- dsp_tools/__init__.py +4 -0
- dsp_tools/cli/args.py +36 -0
- dsp_tools/cli/call_action.py +51 -231
- dsp_tools/cli/call_action_files_only.py +101 -0
- dsp_tools/cli/call_action_with_network.py +207 -0
- dsp_tools/cli/create_parsers.py +156 -58
- dsp_tools/cli/entry_point.py +56 -26
- dsp_tools/cli/utils.py +87 -0
- dsp_tools/clients/CLAUDE.md +420 -0
- dsp_tools/clients/authentication_client.py +14 -0
- dsp_tools/clients/authentication_client_live.py +66 -0
- dsp_tools/{utils → clients}/connection.py +2 -18
- dsp_tools/clients/connection_live.py +233 -0
- dsp_tools/clients/fuseki_metrics.py +60 -0
- dsp_tools/clients/group_user_clients.py +35 -0
- dsp_tools/clients/group_user_clients_live.py +181 -0
- dsp_tools/clients/legal_info_client.py +23 -0
- dsp_tools/clients/legal_info_client_live.py +132 -0
- dsp_tools/clients/list_client.py +49 -0
- dsp_tools/clients/list_client_live.py +166 -0
- dsp_tools/clients/metadata_client.py +24 -0
- dsp_tools/clients/metadata_client_live.py +47 -0
- dsp_tools/clients/ontology_clients.py +49 -0
- dsp_tools/clients/ontology_create_client_live.py +166 -0
- dsp_tools/clients/ontology_get_client_live.py +80 -0
- dsp_tools/clients/permissions_client.py +68 -0
- dsp_tools/clients/project_client.py +16 -0
- dsp_tools/clients/project_client_live.py +66 -0
- dsp_tools/commands/create/communicate_problems.py +24 -0
- dsp_tools/commands/create/create.py +134 -0
- dsp_tools/commands/create/create_on_server/cardinalities.py +111 -0
- dsp_tools/commands/create/create_on_server/classes.py +99 -0
- dsp_tools/commands/create/create_on_server/complete_ontologies.py +116 -0
- dsp_tools/commands/create/create_on_server/default_permissions.py +134 -0
- dsp_tools/commands/create/create_on_server/group_users.py +165 -0
- dsp_tools/commands/create/create_on_server/lists.py +163 -0
- dsp_tools/commands/create/create_on_server/mappers.py +12 -0
- dsp_tools/commands/create/create_on_server/onto_utils.py +74 -0
- dsp_tools/commands/create/create_on_server/ontology.py +52 -0
- dsp_tools/commands/create/create_on_server/project.py +68 -0
- dsp_tools/commands/create/create_on_server/properties.py +119 -0
- dsp_tools/commands/create/exceptions.py +29 -0
- dsp_tools/commands/create/lists_only.py +66 -0
- dsp_tools/commands/create/models/create_problems.py +87 -0
- dsp_tools/commands/create/models/parsed_ontology.py +88 -0
- dsp_tools/commands/create/models/parsed_project.py +81 -0
- dsp_tools/commands/create/models/rdf_ontology.py +12 -0
- dsp_tools/commands/create/models/server_project_info.py +100 -0
- dsp_tools/commands/create/parsing/parse_lists.py +45 -0
- dsp_tools/commands/create/parsing/parse_ontology.py +243 -0
- dsp_tools/commands/create/parsing/parse_project.py +149 -0
- dsp_tools/commands/create/parsing/parsing_utils.py +40 -0
- dsp_tools/commands/create/project_validate.py +595 -0
- dsp_tools/commands/create/serialisation/ontology.py +119 -0
- dsp_tools/commands/create/serialisation/project.py +44 -0
- dsp_tools/commands/excel2json/CLAUDE.md +101 -0
- dsp_tools/commands/excel2json/json_header.py +57 -23
- dsp_tools/commands/excel2json/{new_lists → lists}/compliance_checks.py +26 -26
- dsp_tools/commands/excel2json/{new_lists/make_new_lists.py → lists/make_lists.py} +19 -18
- dsp_tools/commands/excel2json/{new_lists → lists}/models/input_error.py +1 -12
- dsp_tools/commands/excel2json/{new_lists → lists}/models/serialise.py +9 -5
- dsp_tools/commands/excel2json/{new_lists → lists}/utils.py +4 -4
- dsp_tools/commands/excel2json/models/input_error.py +31 -11
- dsp_tools/commands/excel2json/models/json_header.py +53 -15
- dsp_tools/commands/excel2json/models/ontology.py +4 -3
- dsp_tools/commands/excel2json/{lists.py → old_lists.py} +26 -112
- dsp_tools/commands/excel2json/project.py +78 -34
- dsp_tools/commands/excel2json/properties.py +57 -36
- dsp_tools/commands/excel2json/resources.py +32 -12
- dsp_tools/commands/excel2json/utils.py +20 -1
- dsp_tools/commands/excel2xml/__init__.py +2 -2
- dsp_tools/commands/excel2xml/excel2xml_cli.py +7 -15
- dsp_tools/commands/excel2xml/excel2xml_lib.py +138 -493
- dsp_tools/commands/excel2xml/propertyelement.py +5 -5
- dsp_tools/commands/{project → get}/get.py +29 -13
- dsp_tools/commands/get/get_permissions.py +257 -0
- dsp_tools/commands/get/get_permissions_legacy.py +89 -0
- dsp_tools/commands/{project/models → get/legacy_models}/context.py +6 -6
- dsp_tools/commands/{project/models → get/legacy_models}/group.py +5 -10
- dsp_tools/commands/{project/models → get/legacy_models}/listnode.py +5 -35
- dsp_tools/commands/{project/models → get/legacy_models}/model.py +1 -1
- dsp_tools/commands/{project/models → get/legacy_models}/ontology.py +9 -14
- dsp_tools/commands/{project/models → get/legacy_models}/project.py +13 -6
- dsp_tools/commands/{project/models → get/legacy_models}/propertyclass.py +9 -16
- dsp_tools/commands/{project/models → get/legacy_models}/resourceclass.py +8 -46
- dsp_tools/commands/{project/models → get/legacy_models}/user.py +19 -60
- dsp_tools/commands/get/models/permissions_models.py +10 -0
- dsp_tools/commands/id2iri.py +20 -10
- dsp_tools/commands/ingest_xmlupload/bulk_ingest_client.py +81 -56
- dsp_tools/commands/ingest_xmlupload/create_resources/apply_ingest_id.py +4 -10
- dsp_tools/commands/ingest_xmlupload/create_resources/upload_xml.py +97 -37
- dsp_tools/commands/ingest_xmlupload/create_resources/user_information.py +2 -2
- dsp_tools/commands/ingest_xmlupload/ingest_files/ingest_files.py +9 -10
- dsp_tools/commands/ingest_xmlupload/upload_files/filechecker.py +3 -3
- dsp_tools/commands/ingest_xmlupload/upload_files/input_error.py +2 -10
- dsp_tools/commands/ingest_xmlupload/upload_files/upload_failures.py +12 -2
- dsp_tools/commands/ingest_xmlupload/upload_files/upload_files.py +8 -9
- dsp_tools/commands/resume_xmlupload/resume_xmlupload.py +18 -18
- dsp_tools/commands/start_stack.py +126 -77
- dsp_tools/commands/update_legal/CLAUDE.md +344 -0
- dsp_tools/commands/update_legal/__init__.py +0 -0
- dsp_tools/commands/update_legal/core.py +182 -0
- dsp_tools/commands/update_legal/csv_operations.py +135 -0
- dsp_tools/commands/update_legal/models.py +87 -0
- dsp_tools/commands/update_legal/xml_operations.py +247 -0
- dsp_tools/commands/validate_data/CLAUDE.md +159 -0
- dsp_tools/commands/validate_data/__init__.py +0 -0
- dsp_tools/commands/validate_data/constants.py +59 -0
- dsp_tools/commands/validate_data/mappers.py +143 -0
- dsp_tools/commands/validate_data/models/__init__.py +0 -0
- dsp_tools/commands/validate_data/models/api_responses.py +45 -0
- dsp_tools/commands/validate_data/models/input_problems.py +119 -0
- dsp_tools/commands/validate_data/models/rdf_like_data.py +117 -0
- dsp_tools/commands/validate_data/models/validation.py +106 -0
- dsp_tools/commands/validate_data/prepare_data/__init__.py +0 -0
- dsp_tools/commands/validate_data/prepare_data/get_rdf_like_data.py +296 -0
- dsp_tools/commands/validate_data/prepare_data/make_data_graph.py +91 -0
- dsp_tools/commands/validate_data/prepare_data/prepare_data.py +184 -0
- dsp_tools/commands/validate_data/process_validation_report/__init__.py +0 -0
- dsp_tools/commands/validate_data/process_validation_report/get_user_validation_message.py +358 -0
- dsp_tools/commands/validate_data/process_validation_report/query_validation_result.py +507 -0
- dsp_tools/commands/validate_data/process_validation_report/reformat_validation_results.py +150 -0
- dsp_tools/commands/validate_data/shacl_cli_validator.py +70 -0
- dsp_tools/commands/validate_data/sparql/__init__.py +0 -0
- dsp_tools/commands/{xml_validate/sparql/resource_shacl.py → validate_data/sparql/cardinality_shacl.py} +45 -47
- dsp_tools/commands/validate_data/sparql/construct_shacl.py +92 -0
- dsp_tools/commands/validate_data/sparql/legal_info_shacl.py +36 -0
- dsp_tools/commands/validate_data/sparql/value_shacl.py +357 -0
- dsp_tools/commands/validate_data/utils.py +59 -0
- dsp_tools/commands/validate_data/validate_data.py +283 -0
- dsp_tools/commands/validate_data/validation/__init__.py +0 -0
- dsp_tools/commands/validate_data/validation/check_duplicate_files.py +55 -0
- dsp_tools/commands/validate_data/validation/check_for_unknown_classes.py +67 -0
- dsp_tools/commands/validate_data/validation/get_validation_report.py +94 -0
- dsp_tools/commands/validate_data/validation/validate_ontology.py +107 -0
- dsp_tools/commands/xmlupload/CLAUDE.md +292 -0
- dsp_tools/commands/xmlupload/make_rdf_graph/__init__.py +0 -0
- dsp_tools/commands/xmlupload/make_rdf_graph/constants.py +63 -0
- dsp_tools/commands/xmlupload/make_rdf_graph/jsonld_utils.py +44 -0
- dsp_tools/commands/xmlupload/make_rdf_graph/make_file_value.py +77 -0
- dsp_tools/commands/xmlupload/make_rdf_graph/make_resource_and_values.py +114 -0
- dsp_tools/commands/xmlupload/make_rdf_graph/make_values.py +262 -0
- dsp_tools/commands/xmlupload/models/bitstream_info.py +18 -0
- dsp_tools/commands/xmlupload/models/formatted_text_value.py +0 -25
- dsp_tools/commands/xmlupload/models/ingest.py +56 -70
- dsp_tools/commands/xmlupload/models/input_problems.py +6 -14
- dsp_tools/commands/xmlupload/models/lookup_models.py +21 -0
- dsp_tools/commands/xmlupload/models/permission.py +0 -39
- dsp_tools/commands/xmlupload/models/{deserialise/xmlpermission.py → permissions_parsed.py} +2 -2
- dsp_tools/commands/xmlupload/models/processed/__init__.py +0 -0
- dsp_tools/commands/xmlupload/models/processed/file_values.py +29 -0
- dsp_tools/commands/xmlupload/models/processed/res.py +27 -0
- dsp_tools/commands/xmlupload/models/processed/values.py +101 -0
- dsp_tools/commands/xmlupload/models/rdf_models.py +26 -0
- dsp_tools/commands/xmlupload/models/upload_clients.py +3 -3
- dsp_tools/commands/xmlupload/models/upload_state.py +2 -4
- dsp_tools/commands/xmlupload/prepare_xml_input/__init__.py +0 -0
- dsp_tools/commands/xmlupload/{ark2iri.py → prepare_xml_input/ark2iri.py} +1 -1
- dsp_tools/commands/xmlupload/prepare_xml_input/get_processed_resources.py +252 -0
- dsp_tools/commands/xmlupload/{iiif_uri_validator.py → prepare_xml_input/iiif_uri_validator.py} +2 -14
- dsp_tools/commands/xmlupload/{list_client.py → prepare_xml_input/list_client.py} +15 -10
- dsp_tools/commands/xmlupload/prepare_xml_input/prepare_xml_input.py +67 -0
- dsp_tools/commands/xmlupload/prepare_xml_input/read_validate_xml_file.py +58 -0
- dsp_tools/commands/xmlupload/prepare_xml_input/transform_input_values.py +118 -0
- dsp_tools/commands/xmlupload/resource_create_client.py +7 -468
- dsp_tools/commands/xmlupload/richtext_id2iri.py +37 -0
- dsp_tools/commands/xmlupload/stash/{construct_and_analyze_graph.py → analyse_circular_reference_graph.py} +64 -157
- dsp_tools/commands/xmlupload/stash/create_info_for_graph.py +53 -0
- dsp_tools/commands/xmlupload/stash/graph_models.py +13 -8
- dsp_tools/commands/xmlupload/stash/stash_circular_references.py +48 -115
- dsp_tools/commands/xmlupload/stash/stash_models.py +4 -9
- dsp_tools/commands/xmlupload/stash/upload_stashed_resptr_props.py +34 -40
- dsp_tools/commands/xmlupload/stash/upload_stashed_xml_texts.py +98 -108
- dsp_tools/commands/xmlupload/upload_config.py +8 -0
- dsp_tools/commands/xmlupload/write_diagnostic_info.py +14 -9
- dsp_tools/commands/xmlupload/xmlupload.py +214 -192
- dsp_tools/config/__init__.py +0 -0
- dsp_tools/config/logger_config.py +69 -0
- dsp_tools/{utils → config}/warnings_config.py +4 -1
- dsp_tools/error/__init__.py +0 -0
- dsp_tools/error/custom_warnings.py +39 -0
- dsp_tools/error/exceptions.py +204 -0
- dsp_tools/error/problems.py +10 -0
- dsp_tools/error/xmllib_errors.py +20 -0
- dsp_tools/error/xmllib_warnings.py +54 -0
- dsp_tools/error/xmllib_warnings_util.py +159 -0
- dsp_tools/error/xsd_validation_error_msg.py +19 -0
- dsp_tools/legacy_models/__init__.py +0 -0
- dsp_tools/{models → legacy_models}/datetimestamp.py +7 -7
- dsp_tools/{models → legacy_models}/langstring.py +1 -1
- dsp_tools/{models → legacy_models}/projectContext.py +4 -4
- dsp_tools/resources/schema/data.xsd +108 -83
- dsp_tools/resources/schema/lists-only.json +4 -23
- dsp_tools/resources/schema/project.json +80 -35
- dsp_tools/resources/schema/properties-only.json +1 -4
- dsp_tools/resources/start-stack/docker-compose.override-host.j2 +11 -0
- dsp_tools/resources/start-stack/docker-compose.yml +34 -30
- dsp_tools/resources/start-stack/dsp-app-config.json +45 -0
- dsp_tools/resources/start-stack/dsp-app-config.override-host.j2 +26 -0
- dsp_tools/resources/validate_data/api-shapes-resource-cardinalities.ttl +191 -0
- dsp_tools/resources/validate_data/api-shapes.ttl +804 -0
- dsp_tools/resources/validate_data/shacl-cli-image.yml +4 -0
- dsp_tools/resources/validate_data/validate-ontology.ttl +99 -0
- dsp_tools/utils/ansi_colors.py +32 -0
- dsp_tools/utils/data_formats/__init__.py +0 -0
- dsp_tools/utils/{date_util.py → data_formats/date_util.py} +13 -1
- dsp_tools/utils/data_formats/iri_util.py +30 -0
- dsp_tools/utils/{shared.py → data_formats/shared.py} +1 -35
- dsp_tools/utils/{uri_util.py → data_formats/uri_util.py} +12 -2
- dsp_tools/utils/fuseki_bloating.py +63 -0
- dsp_tools/utils/json_parsing.py +22 -0
- dsp_tools/utils/rdf_constants.py +42 -0
- dsp_tools/utils/rdflib_utils.py +10 -0
- dsp_tools/utils/replace_id_with_iri.py +66 -0
- dsp_tools/utils/request_utils.py +238 -0
- dsp_tools/utils/xml_parsing/__init__.py +0 -0
- dsp_tools/utils/xml_parsing/get_lookups.py +32 -0
- dsp_tools/utils/xml_parsing/get_parsed_resources.py +325 -0
- dsp_tools/utils/xml_parsing/models/__init__.py +0 -0
- dsp_tools/utils/xml_parsing/models/parsed_resource.py +76 -0
- dsp_tools/utils/xml_parsing/parse_clean_validate_xml.py +137 -0
- dsp_tools/xmllib/CLAUDE.md +302 -0
- dsp_tools/xmllib/__init__.py +49 -0
- dsp_tools/xmllib/general_functions.py +877 -0
- dsp_tools/xmllib/internal/__init__.py +0 -0
- dsp_tools/xmllib/internal/checkers.py +162 -0
- dsp_tools/xmllib/internal/circumvent_circular_imports.py +36 -0
- dsp_tools/xmllib/internal/constants.py +46 -0
- dsp_tools/xmllib/internal/input_converters.py +155 -0
- dsp_tools/xmllib/internal/serialise_file_value.py +57 -0
- dsp_tools/xmllib/internal/serialise_resource.py +177 -0
- dsp_tools/xmllib/internal/serialise_values.py +152 -0
- dsp_tools/xmllib/internal/type_aliases.py +11 -0
- dsp_tools/xmllib/models/config_options.py +28 -0
- dsp_tools/xmllib/models/date_formats.py +48 -0
- dsp_tools/xmllib/models/dsp_base_resources.py +1380 -400
- dsp_tools/xmllib/models/internal/__init__.py +0 -0
- dsp_tools/xmllib/models/internal/file_values.py +172 -0
- dsp_tools/xmllib/models/internal/geometry.py +162 -0
- dsp_tools/xmllib/models/{migration_metadata.py → internal/migration_metadata.py} +14 -10
- dsp_tools/xmllib/models/internal/serialise_permissions.py +66 -0
- dsp_tools/xmllib/models/internal/values.py +342 -0
- dsp_tools/xmllib/models/licenses/__init__.py +0 -0
- dsp_tools/xmllib/models/licenses/other.py +59 -0
- dsp_tools/xmllib/models/licenses/recommended.py +107 -0
- dsp_tools/xmllib/models/permissions.py +41 -0
- dsp_tools/xmllib/models/res.py +1782 -0
- dsp_tools/xmllib/models/root.py +313 -26
- dsp_tools/xmllib/value_checkers.py +310 -47
- dsp_tools/xmllib/value_converters.py +765 -8
- dsp_tools-18.3.0.post13.dist-info/METADATA +90 -0
- dsp_tools-18.3.0.post13.dist-info/RECORD +286 -0
- dsp_tools-18.3.0.post13.dist-info/WHEEL +4 -0
- {dsp_tools-9.1.0.post11.dist-info → dsp_tools-18.3.0.post13.dist-info}/entry_points.txt +1 -0
- dsp_tools/commands/project/create/project_create.py +0 -1107
- dsp_tools/commands/project/create/project_create_lists.py +0 -204
- dsp_tools/commands/project/create/project_validate.py +0 -453
- dsp_tools/commands/project/models/project_definition.py +0 -12
- dsp_tools/commands/rosetta.py +0 -124
- dsp_tools/commands/template.py +0 -30
- dsp_tools/commands/xml_validate/api_connection.py +0 -122
- dsp_tools/commands/xml_validate/deserialise_input.py +0 -135
- dsp_tools/commands/xml_validate/make_data_rdf.py +0 -193
- dsp_tools/commands/xml_validate/models/data_deserialised.py +0 -108
- dsp_tools/commands/xml_validate/models/data_rdf.py +0 -214
- dsp_tools/commands/xml_validate/models/input_problems.py +0 -191
- dsp_tools/commands/xml_validate/models/validation.py +0 -29
- dsp_tools/commands/xml_validate/reformat_validaton_result.py +0 -89
- dsp_tools/commands/xml_validate/sparql/construct_shapes.py +0 -16
- dsp_tools/commands/xml_validate/xml_validate.py +0 -151
- dsp_tools/commands/xmlupload/check_consistency_with_ontology.py +0 -253
- dsp_tools/commands/xmlupload/models/deserialise/deserialise_value.py +0 -236
- dsp_tools/commands/xmlupload/models/deserialise/xmlresource.py +0 -171
- dsp_tools/commands/xmlupload/models/namespace_context.py +0 -39
- dsp_tools/commands/xmlupload/models/ontology_lookup_models.py +0 -161
- dsp_tools/commands/xmlupload/models/ontology_problem_models.py +0 -178
- dsp_tools/commands/xmlupload/models/serialise/jsonld_serialiser.py +0 -40
- dsp_tools/commands/xmlupload/models/serialise/serialise_value.py +0 -51
- dsp_tools/commands/xmlupload/ontology_client.py +0 -92
- dsp_tools/commands/xmlupload/project_client.py +0 -91
- dsp_tools/commands/xmlupload/read_validate_xml_file.py +0 -99
- dsp_tools/models/custom_warnings.py +0 -31
- dsp_tools/models/exceptions.py +0 -90
- dsp_tools/resources/0100-template-repo/template.json +0 -45
- dsp_tools/resources/0100-template-repo/template.xml +0 -27
- dsp_tools/resources/start-stack/docker-compose-validation.yml +0 -5
- dsp_tools/resources/start-stack/start-stack-config.yml +0 -4
- dsp_tools/resources/xml_validate/api-shapes.ttl +0 -411
- dsp_tools/resources/xml_validate/replace_namespace.xslt +0 -61
- dsp_tools/utils/connection_live.py +0 -383
- dsp_tools/utils/iri_util.py +0 -14
- dsp_tools/utils/logger_config.py +0 -41
- dsp_tools/utils/set_encoder.py +0 -20
- dsp_tools/utils/xml_utils.py +0 -145
- dsp_tools/utils/xml_validation.py +0 -197
- dsp_tools/utils/xml_validation_models.py +0 -68
- dsp_tools/xmllib/models/file_values.py +0 -78
- dsp_tools/xmllib/models/resource.py +0 -415
- dsp_tools/xmllib/models/values.py +0 -428
- dsp_tools-9.1.0.post11.dist-info/METADATA +0 -130
- dsp_tools-9.1.0.post11.dist-info/RECORD +0 -167
- dsp_tools-9.1.0.post11.dist-info/WHEEL +0 -4
- dsp_tools-9.1.0.post11.dist-info/licenses/LICENSE +0 -674
- /dsp_tools/{commands/excel2json/new_lists → clients}/__init__.py +0 -0
- /dsp_tools/commands/{excel2json/new_lists/models → create}/__init__.py +0 -0
- /dsp_tools/commands/{project → create/create_on_server}/__init__.py +0 -0
- /dsp_tools/commands/{project/create → create/models}/__init__.py +0 -0
- /dsp_tools/commands/{project/models → create/parsing}/__init__.py +0 -0
- /dsp_tools/commands/{xml_validate → create/serialisation}/__init__.py +0 -0
- /dsp_tools/commands/{xml_validate/models → excel2json/lists}/__init__.py +0 -0
- /dsp_tools/commands/{xml_validate/sparql → excel2json/lists/models}/__init__.py +0 -0
- /dsp_tools/commands/excel2json/{new_lists → lists}/models/deserialise.py +0 -0
- /dsp_tools/commands/{xmlupload/models/deserialise → get}/__init__.py +0 -0
- /dsp_tools/commands/{xmlupload/models/serialise → get/legacy_models}/__init__.py +0 -0
- /dsp_tools/commands/{project/models → get/legacy_models}/helpers.py +0 -0
- /dsp_tools/{models → commands/get/models}/__init__.py +0 -0
|
@@ -1,411 +0,0 @@
|
|
|
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 knora-api: <http://api.knora.org/ontology/knora-api/v2#> .
|
|
6
|
-
|
|
7
|
-
@prefix api-shapes: <http://api.knora.org/ontology/knora-api/shapes/v2#> .
|
|
8
|
-
|
|
9
|
-
#########################################
|
|
10
|
-
# GENERAL SHAPES
|
|
11
|
-
#########################################
|
|
12
|
-
|
|
13
|
-
api-shapes:RDFS_label
|
|
14
|
-
a sh:PropertyShape ;
|
|
15
|
-
sh:name "Validates that the label is not empty." ;
|
|
16
|
-
sh:message "The label of a resource must be a non-empty string." ;
|
|
17
|
-
sh:targetClass knora-api:Resource ;
|
|
18
|
-
sh:path rdfs:label ;
|
|
19
|
-
sh:pattern "\\S+" ;
|
|
20
|
-
sh:severity sh:Violation .
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
api-shapes:UniqueValuesShape_ValueHas
|
|
24
|
-
a sh:NodeShape ;
|
|
25
|
-
sh:name "Checks that one resources does not have two identical values with the same property." ;
|
|
26
|
-
sh:sparql [
|
|
27
|
-
a sh:SPARQLConstraint ;
|
|
28
|
-
sh:message "A resource may not have the same property and value more than one time." ;
|
|
29
|
-
sh:select """
|
|
30
|
-
PREFIX knora-api: <http://api.knora.org/ontology/knora-api/v2#>
|
|
31
|
-
SELECT $this ?path ?value WHERE {
|
|
32
|
-
$this ?path ?valueClass .
|
|
33
|
-
?prop rdfs:subPropertyOf* knora-api:valueHas .
|
|
34
|
-
?valueClass ?prop ?value .
|
|
35
|
-
}
|
|
36
|
-
GROUP BY $this ?path ?value
|
|
37
|
-
HAVING (COUNT(?value) > 1)
|
|
38
|
-
""" ;
|
|
39
|
-
] ;
|
|
40
|
-
sh:severity sh:Violation .
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
api-shapes:UniqueValuesShape_ValueString
|
|
44
|
-
a sh:NodeShape ;
|
|
45
|
-
sh:name "Checks that one resources does not have two identical values with the same property." ;
|
|
46
|
-
sh:sparql [
|
|
47
|
-
a sh:SPARQLConstraint ;
|
|
48
|
-
sh:message "A resource may not have the same property and value more than one time." ;
|
|
49
|
-
sh:select """
|
|
50
|
-
PREFIX knora-api: <http://api.knora.org/ontology/knora-api/v2#>
|
|
51
|
-
SELECT $this ?path ?value WHERE {
|
|
52
|
-
$this ?path ?valueClass .
|
|
53
|
-
?valueClass knora-api:valueAsString ?value .
|
|
54
|
-
}
|
|
55
|
-
GROUP BY $this ?path ?value
|
|
56
|
-
HAVING (COUNT(?value) > 1)
|
|
57
|
-
""" ;
|
|
58
|
-
] ;
|
|
59
|
-
sh:severity sh:Violation .
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
#########################################
|
|
63
|
-
# USER FACING VALUES
|
|
64
|
-
#########################################
|
|
65
|
-
|
|
66
|
-
##############
|
|
67
|
-
# BooleanValue
|
|
68
|
-
##############
|
|
69
|
-
|
|
70
|
-
api-shapes:BooleanValue_ClassShape
|
|
71
|
-
a sh:NodeShape ;
|
|
72
|
-
sh:name "Validates the class type" ;
|
|
73
|
-
sh:message "Object must be a of type 'BooleanValue'." ;
|
|
74
|
-
sh:class knora-api:BooleanValue ;
|
|
75
|
-
sh:severity sh:Violation .
|
|
76
|
-
|
|
77
|
-
api-shapes:BooleanValue_NodeShape
|
|
78
|
-
a sh:NodeShape ;
|
|
79
|
-
sh:name "Validates the content of the value" ;
|
|
80
|
-
sh:property [
|
|
81
|
-
a sh:PropertyShape ;
|
|
82
|
-
sh:path knora-api:booleanValueAsBoolean ;
|
|
83
|
-
sh:datatype xsd:boolean ;
|
|
84
|
-
sh:message "The value must be either 'true' or 'false'." ;
|
|
85
|
-
] ;
|
|
86
|
-
sh:severity sh:Violation .
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
##############
|
|
90
|
-
# ColorValue
|
|
91
|
-
##############
|
|
92
|
-
|
|
93
|
-
api-shapes:ColorValue_ClassShape
|
|
94
|
-
a sh:NodeShape ;
|
|
95
|
-
sh:name "Validates the class type" ;
|
|
96
|
-
sh:message "Object must be a of type 'ColorValue'." ;
|
|
97
|
-
sh:class knora-api:ColorValue ;
|
|
98
|
-
sh:severity sh:Violation .
|
|
99
|
-
|
|
100
|
-
api-shapes:ColorValue_NodeShape
|
|
101
|
-
a sh:NodeShape ;
|
|
102
|
-
sh:name "Validates the content of the value" ;
|
|
103
|
-
sh:property [
|
|
104
|
-
a sh:PropertyShape ;
|
|
105
|
-
sh:path knora-api:colorValueAsColor ;
|
|
106
|
-
sh:pattern "^#[0-9a-f]{6}$" ;
|
|
107
|
-
sh:message "Value must start with a '#' and end with the characters 0-9 and/or a-f." ;
|
|
108
|
-
] ;
|
|
109
|
-
sh:severity sh:Violation .
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
##############
|
|
113
|
-
# DateValue
|
|
114
|
-
##############
|
|
115
|
-
|
|
116
|
-
api-shapes:DateValue_ClassShape
|
|
117
|
-
a sh:NodeShape ;
|
|
118
|
-
sh:name "Validates the class type" ;
|
|
119
|
-
sh:message "Object must be a of type 'DateValue'." ;
|
|
120
|
-
sh:class knora-api:DateValue ;
|
|
121
|
-
sh:severity sh:Violation .
|
|
122
|
-
|
|
123
|
-
api-shapes:DateValue_NodeShape
|
|
124
|
-
a sh:NodeShape ;
|
|
125
|
-
sh:name "Validates the content of the value" ;
|
|
126
|
-
sh:property [
|
|
127
|
-
a sh:PropertyShape ;
|
|
128
|
-
sh:path knora-api:valueAsString ;
|
|
129
|
-
sh:pattern "^((GREGORIAN|JULIAN|ISLAMIC):)?((CE|BCE|BC|AD):)?(\\d{1,4}(?:-\\d{1,2})?(?:-\\d{1,2})?)(:(CE|BCE|BC|AD))?(:\\d{1,4}(?:-\\d{1,2})?(?:-\\d{1,2})?)?$" ;
|
|
130
|
-
sh:message "The value must be a valid date according to the DSP specification." ;
|
|
131
|
-
] ;
|
|
132
|
-
sh:severity sh:Violation .
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
##############
|
|
136
|
-
# DecimalValue
|
|
137
|
-
##############
|
|
138
|
-
|
|
139
|
-
api-shapes:DecimalValue_ClassShape
|
|
140
|
-
a sh:NodeShape ;
|
|
141
|
-
sh:name "Validates the class type" ;
|
|
142
|
-
sh:message "Object must be a of type 'DecimalValue'." ;
|
|
143
|
-
sh:class knora-api:DecimalValue ;
|
|
144
|
-
sh:severity sh:Violation .
|
|
145
|
-
|
|
146
|
-
api-shapes:DecimalValue_NodeShape
|
|
147
|
-
a sh:NodeShape ;
|
|
148
|
-
sh:name "Validates the content of the value" ;
|
|
149
|
-
sh:property [
|
|
150
|
-
a sh:PropertyShape ;
|
|
151
|
-
sh:path knora-api:decimalValueAsDecimal ;
|
|
152
|
-
sh:datatype xsd:decimal ;
|
|
153
|
-
sh:message "Value must be a valid decimal (floating point with a '.' as separator)." ;
|
|
154
|
-
] ;
|
|
155
|
-
sh:severity sh:Violation .
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
##############
|
|
159
|
-
# GeonameValue
|
|
160
|
-
##############
|
|
161
|
-
|
|
162
|
-
api-shapes:GeonameValue_ClassShape
|
|
163
|
-
a sh:NodeShape ;
|
|
164
|
-
sh:name "Validates the class type" ;
|
|
165
|
-
sh:message "Object must be a of type 'GeonameValue'." ;
|
|
166
|
-
sh:class knora-api:GeonameValue ;
|
|
167
|
-
sh:severity sh:Violation .
|
|
168
|
-
|
|
169
|
-
api-shapes:GeonameValue_NodeShape
|
|
170
|
-
a sh:NodeShape ;
|
|
171
|
-
sh:name "Validates the content of the value" ;
|
|
172
|
-
sh:property [
|
|
173
|
-
a sh:PropertyShape ;
|
|
174
|
-
sh:path knora-api:geonameValueAsGeonameCode ;
|
|
175
|
-
sh:pattern "^\\d+$" ;
|
|
176
|
-
sh:message "The GeonameValue must be a valid integer." ;
|
|
177
|
-
] ;
|
|
178
|
-
sh:severity sh:Violation .
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
##############
|
|
182
|
-
# IntValue
|
|
183
|
-
##############
|
|
184
|
-
|
|
185
|
-
api-shapes:IntValue_ClassShape
|
|
186
|
-
a sh:NodeShape ;
|
|
187
|
-
sh:name "Validates the class type" ;
|
|
188
|
-
sh:message "Object must be a of type 'IntValue'." ;
|
|
189
|
-
sh:class knora-api:IntValue ;
|
|
190
|
-
sh:severity sh:Violation .
|
|
191
|
-
|
|
192
|
-
api-shapes:IntValue_NodeShape
|
|
193
|
-
a sh:NodeShape ;
|
|
194
|
-
sh:name "Validates the content of the value" ;
|
|
195
|
-
sh:property [
|
|
196
|
-
a sh:PropertyShape ;
|
|
197
|
-
sh:path knora-api:intValueAsInt ;
|
|
198
|
-
sh:datatype xsd:integer ;
|
|
199
|
-
sh:message "Value must be a valid integer." ;
|
|
200
|
-
] ;
|
|
201
|
-
sh:severity sh:Violation .
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
##############
|
|
205
|
-
# LinkValue
|
|
206
|
-
##############
|
|
207
|
-
|
|
208
|
-
api-shapes:LinkValue_ClassShape
|
|
209
|
-
a sh:NodeShape ;
|
|
210
|
-
sh:name "Validates the class type" ;
|
|
211
|
-
sh:message "Object must be a of type 'LinkValue'." ;
|
|
212
|
-
sh:class knora-api:LinkValue ;
|
|
213
|
-
sh:severity sh:Violation .
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
api-shapes:linkValueHasTargetID
|
|
217
|
-
a owl:ObjectProperty ;
|
|
218
|
-
rdfs:label "Property for the internal ID of the LinkValue target." ;
|
|
219
|
-
rdfs:comment "This is to be used for validation only." .
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
##############
|
|
223
|
-
# ListValue
|
|
224
|
-
##############
|
|
225
|
-
|
|
226
|
-
# -> if we do not check the list name itself we cannot say if the problem is whether the node does not exist or the list itself
|
|
227
|
-
api-shapes:ListValue_ClassShape
|
|
228
|
-
a sh:NodeShape ;
|
|
229
|
-
sh:name "Validates the class type" ;
|
|
230
|
-
sh:message "Object must be a of type 'ListValue'." ;
|
|
231
|
-
sh:class knora-api:ListValue ;
|
|
232
|
-
sh:severity sh:Violation .
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
api-shapes:listNameAsString
|
|
236
|
-
a owl:DatatypeProperty ;
|
|
237
|
-
rdfs:label "Property for the 'name' of a list." ;
|
|
238
|
-
rdfs:comment "This is to be used for validation only." .
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
api-shapes:listNodeAsString
|
|
242
|
-
a owl:DatatypeProperty ;
|
|
243
|
-
rdfs:label "Property for the 'name' of a list node." ;
|
|
244
|
-
rdfs:comment "This is to be used for validation only." .
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
##############
|
|
248
|
-
# TextValue
|
|
249
|
-
##############
|
|
250
|
-
|
|
251
|
-
###
|
|
252
|
-
# SimpleTextValue
|
|
253
|
-
api-shapes:SimpleTextValue_ClassShape
|
|
254
|
-
a sh:NodeShape ;
|
|
255
|
-
sh:name "Validates the class type" ;
|
|
256
|
-
sh:message "Object must be a of type 'TextValue' without formatting." ;
|
|
257
|
-
sh:severity sh:Violation .
|
|
258
|
-
|
|
259
|
-
api-shapes:SimpleTextValue_NodeShape
|
|
260
|
-
a sh:NodeShape ;
|
|
261
|
-
sh:name "Validates the content of the value" ;
|
|
262
|
-
sh:property [
|
|
263
|
-
a sh:PropertyShape ;
|
|
264
|
-
sh:path knora-api:valueAsString ;
|
|
265
|
-
sh:pattern "\\S+" ;
|
|
266
|
-
sh:message "Value must be a valid non-empty string." ;
|
|
267
|
-
] ;
|
|
268
|
-
sh:severity sh:Violation .
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
###
|
|
272
|
-
# FormattedTextValue
|
|
273
|
-
api-shapes:FormattedTextValue_ClassShape
|
|
274
|
-
a sh:NodeShape ;
|
|
275
|
-
sh:name "Validates the class type" ;
|
|
276
|
-
sh:message "Object must be a of type 'TextValue' with formatting." ;
|
|
277
|
-
sh:severity sh:Violation .
|
|
278
|
-
|
|
279
|
-
api-shapes:FormattedTextValue_NodeShape
|
|
280
|
-
a sh:NodeShape ;
|
|
281
|
-
sh:name "Validates the content of the value" ;
|
|
282
|
-
sh:property [
|
|
283
|
-
a sh:PropertyShape ;
|
|
284
|
-
sh:path knora-api:textValueAsXml ;
|
|
285
|
-
sh:pattern "\\S+" ;
|
|
286
|
-
sh:message "Value must be a valid non-empty string." ;
|
|
287
|
-
] ;
|
|
288
|
-
sh:severity sh:Violation .
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
##############
|
|
292
|
-
# TimeValue
|
|
293
|
-
##############
|
|
294
|
-
|
|
295
|
-
api-shapes:TimeValue_ClassShape
|
|
296
|
-
a sh:NodeShape ;
|
|
297
|
-
sh:name "Validates the class type" ;
|
|
298
|
-
sh:message "Object must be a of type 'TimeValue'." ;
|
|
299
|
-
sh:class knora-api:TimeValue ;
|
|
300
|
-
sh:severity sh:Violation .
|
|
301
|
-
|
|
302
|
-
api-shapes:TimeValue_NodeShape
|
|
303
|
-
a sh:NodeShape ;
|
|
304
|
-
sh:name "Validates the content of the value" ;
|
|
305
|
-
sh:property [
|
|
306
|
-
a sh:PropertyShape ;
|
|
307
|
-
sh:path knora-api:timeValueAsTimeStamp ;
|
|
308
|
-
sh:datatype xsd:dateTimeStamp ;
|
|
309
|
-
sh:message "Value must be a valid xsd:dateTimeStamp." ;
|
|
310
|
-
] ;
|
|
311
|
-
sh:severity sh:Violation .
|
|
312
|
-
|
|
313
|
-
##############
|
|
314
|
-
# UriValue
|
|
315
|
-
##############
|
|
316
|
-
|
|
317
|
-
api-shapes:UriValue_ClassShape
|
|
318
|
-
a sh:NodeShape ;
|
|
319
|
-
sh:name "Validates the class type" ;
|
|
320
|
-
sh:message "Object must be a of type 'UriValue'." ;
|
|
321
|
-
sh:class knora-api:UriValue ;
|
|
322
|
-
sh:severity sh:Violation .
|
|
323
|
-
|
|
324
|
-
api-shapes:UriValue_NodeShape
|
|
325
|
-
a sh:NodeShape ;
|
|
326
|
-
sh:name "Validates the content of the value" ;
|
|
327
|
-
sh:property [
|
|
328
|
-
a sh:PropertyShape ;
|
|
329
|
-
sh:path knora-api:uriValueAsUri ;
|
|
330
|
-
sh:datatype xsd:anyURI ;
|
|
331
|
-
sh:message "The value must be a valid URI." ;
|
|
332
|
-
] ;
|
|
333
|
-
sh:severity sh:Violation .
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
#########################################
|
|
337
|
-
# RESOURCES WITH FILES
|
|
338
|
-
#########################################
|
|
339
|
-
|
|
340
|
-
###########################
|
|
341
|
-
# ArchiveRepresentation
|
|
342
|
-
###########################
|
|
343
|
-
|
|
344
|
-
# knora-api:ArchiveFileValue -> knora-api:hasArchiveFileValue
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
###########################
|
|
348
|
-
# AudioRepresentation
|
|
349
|
-
###########################
|
|
350
|
-
|
|
351
|
-
# knora-api:AudioFileValue -> knora-api:hasAudioFileValue
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
###########################
|
|
355
|
-
# DocumentRepresentation
|
|
356
|
-
###########################
|
|
357
|
-
|
|
358
|
-
# knora-api:DocumentFileValue -> knora-api:hasDocumentFileValue
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
###########################
|
|
362
|
-
# MovingImageRepresentation
|
|
363
|
-
###########################
|
|
364
|
-
|
|
365
|
-
# knora-api:MovingImageFileValue -> knora-api:hasMovingImageFileValue
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
###########################
|
|
369
|
-
# StillImageRepresentation
|
|
370
|
-
###########################
|
|
371
|
-
|
|
372
|
-
# knora-api:StillImageExternalFileValue -> knora-api:fileValueHasExternalUrl
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
# knora-api:StillImageFileValue -> knora-api:hasStillImageFileValue
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
###########################
|
|
379
|
-
# TextRepresentation
|
|
380
|
-
###########################
|
|
381
|
-
|
|
382
|
-
# knora-api:TextFileValue -> knora-api:hasTextFileValue
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
#########################################
|
|
386
|
-
# DSP BUILT IN RESOURCES
|
|
387
|
-
#########################################
|
|
388
|
-
|
|
389
|
-
###########################
|
|
390
|
-
# Annotation
|
|
391
|
-
###########################
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
###########################
|
|
395
|
-
# Region
|
|
396
|
-
###########################
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
###########################
|
|
400
|
-
# LinkObj
|
|
401
|
-
###########################
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
###########################
|
|
405
|
-
# VideoSegment
|
|
406
|
-
###########################
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
###########################
|
|
410
|
-
# AudioSegment
|
|
411
|
-
###########################
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
|
|
2
|
-
xmlns:knora="https://dasch.swiss/schema"
|
|
3
|
-
exclude-result-prefixes="knora">
|
|
4
|
-
|
|
5
|
-
<!-- Define the parameter to receive the replacement value from Python -->
|
|
6
|
-
<xsl:param name="replacementValue"/>
|
|
7
|
-
|
|
8
|
-
<xsl:template match="*">
|
|
9
|
-
<xsl:copy>
|
|
10
|
-
<!-- Process the attributes -->
|
|
11
|
-
<xsl:for-each select="@*">
|
|
12
|
-
<xsl:choose>
|
|
13
|
-
<!-- For restype: Leave unchanged if it starts with knora-api or replacementValue -->
|
|
14
|
-
<xsl:when test="name() = 'restype' and (starts-with(., 'http://') or starts-with(., concat('-', $replacementValue)))">
|
|
15
|
-
<xsl:attribute name="restype">
|
|
16
|
-
<xsl:value-of select="." />
|
|
17
|
-
</xsl:attribute>
|
|
18
|
-
</xsl:when>
|
|
19
|
-
<!-- For restype: Replace the colon with the custom value if not knora-api or replacementValue -->
|
|
20
|
-
<xsl:when test="name() = 'restype' and contains(., ':')">
|
|
21
|
-
<xsl:attribute name="restype">
|
|
22
|
-
<xsl:value-of select="concat(substring-before(., ':'), $replacementValue, substring-after(., ':'))" />
|
|
23
|
-
</xsl:attribute>
|
|
24
|
-
</xsl:when>
|
|
25
|
-
<!-- For restype: Prepend knora-api if no colon is found and no special prefixes -->
|
|
26
|
-
<xsl:when test="name() = 'restype' and not(contains(., ':'))">
|
|
27
|
-
<xsl:attribute name="restype">
|
|
28
|
-
<xsl:value-of select="concat('http://api.knora.org/ontology/knora-api/v2#', .)" />
|
|
29
|
-
</xsl:attribute>
|
|
30
|
-
</xsl:when>
|
|
31
|
-
<!-- For name: Leave unchanged if it starts with knora-api or replacementValue -->
|
|
32
|
-
<xsl:when test="name() = 'name' and (starts-with(., 'http://') or starts-with(., concat('-', $replacementValue)))">
|
|
33
|
-
<xsl:attribute name="name">
|
|
34
|
-
<xsl:value-of select="." />
|
|
35
|
-
</xsl:attribute>
|
|
36
|
-
</xsl:when>
|
|
37
|
-
<!-- For restype: Replace the colon with the custom value if not knora-api or replacementValue -->
|
|
38
|
-
<xsl:when test="name() = 'name' and contains(., ':')">
|
|
39
|
-
<xsl:attribute name="name">
|
|
40
|
-
<xsl:value-of select="concat(substring-before(., ':'), $replacementValue, substring-after(., ':'))" />
|
|
41
|
-
</xsl:attribute>
|
|
42
|
-
</xsl:when>
|
|
43
|
-
<!-- For restype: Prepend knora-api if no colon is found and no special prefixes -->
|
|
44
|
-
<xsl:when test="name() = 'name' and not(contains(., ':'))">
|
|
45
|
-
<xsl:attribute name="name">
|
|
46
|
-
<xsl:value-of select="concat('http://api.knora.org/ontology/knora-api/v2#', .)" />
|
|
47
|
-
</xsl:attribute>
|
|
48
|
-
</xsl:when>
|
|
49
|
-
<!-- Copy other attributes unchanged -->
|
|
50
|
-
<xsl:otherwise>
|
|
51
|
-
<xsl:copy-of select="."/>
|
|
52
|
-
</xsl:otherwise>
|
|
53
|
-
</xsl:choose>
|
|
54
|
-
</xsl:for-each>
|
|
55
|
-
|
|
56
|
-
<!-- Process child elements -->
|
|
57
|
-
<xsl:apply-templates/>
|
|
58
|
-
</xsl:copy>
|
|
59
|
-
</xsl:template>
|
|
60
|
-
|
|
61
|
-
</xsl:stylesheet>
|