Skip to content

Commit

Permalink
Update to BcoValidator.load_schema (#341)
Browse files Browse the repository at this point in the history
Updated the function to check locally for the most used schemas. Improves
testing and speed in BCO validation.

Changes to be committed:
	modified:   biocompute/services.py
	renamed:    config/IEEE/2791object.json -> config/schemas/2791object.json
	new file:   config/schemas/dataset_extension.json
	renamed:    config/IEEE/description_domain.json -> config/schemas/description_domain.json
	renamed:    config/IEEE/error_domain.json -> config/schemas/error_domain.json
	renamed:    config/IEEE/execution_domain.json -> config/schemas/execution_domain.json
	new file:   config/schemas/fhir_extension.json
	new file:   config/schemas/galaxy_extension.json
	renamed:    config/IEEE/io_domain.json -> config/schemas/io_domain.json
	new file:   config/schemas/license_extension.json
	renamed:    config/IEEE/parametric_domain.json -> config/schemas/parametric_domain.json
	renamed:    config/IEEE/provenance_domain.json -> config/schemas/provenance_domain.json
	new file:   config/schemas/scm_extension.json
	renamed:    config/IEEE/usability_domain.json -> config/schemas/usability_domain.json
  • Loading branch information
HadleyKing authored Aug 5, 2024
1 parent 5c5c1f7 commit 588156e
Show file tree
Hide file tree
Showing 14 changed files with 265 additions and 6 deletions.
16 changes: 10 additions & 6 deletions biocompute/services.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,12 +50,16 @@ def load_schema(schema_uri):
Returns:
- dict: The loaded JSON schema.
"""

if schema_uri == \
"https://w3id.org/ieee/ieee-2791-schema/2791object.json":
return jsonref.load_uri(
f"file://{BASE_DIR}/config/IEEE/2791object.json"
)
schema_mapping = {
"https://w3id.org/ieee/ieee-2791-schema/2791object.json": f"{BASE_DIR}/config/schemas/2791object.json",
"https://raw.githubusercontent.com/biocompute-objects/extension_domain/1.1.0/dataset_extension.json": f"{BASE_DIR}/config/schemas/dataset_extension.json",
"https://raw.githubusercontent.com/biocompute-objects/extension_domain/1.1.0/fhir_extension.json": f"{BASE_DIR}/config/schemas/fhir_extension.json",
"https://raw.githubusercontent.com/biocompute-objects/extension_domain/1.1.0/galaxy_extension.json": f"{BASE_DIR}/config/schemas/galaxy_extension.json",
"https://raw.githubusercontent.com/biocompute-objects/extension_domain/1.1.0/license_extension.json": f"{BASE_DIR}/config/schemas/license_extension.json",
"https://raw.githubusercontent.com/biocompute-objects/extension_domain/1.1.0/scm_extension.json": f"{BASE_DIR}/config/schemas/scm_extension.json"
}
if schema_uri in schema_mapping:
return jsonref.load_uri(f"file://{schema_mapping[schema_uri]}")
try:
return jsonref.load_uri(schema_uri)
except (JSONDecodeError, TypeError, RequestsConnectionError) as e:
Expand Down
File renamed without changes.
78 changes: 78 additions & 0 deletions config/schemas/dataset_extension.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "http://www.w3id.org/biocompute/extension_domain/1.1.0/dataset/dataset_extension.json",
"title": "dataset_extension",
"type": "object",
"description": "The external references extension to list additional licenses and dataset catagories for a dataset BCO (dsBCO).",
"required": ["dataset_extension", "extension_schema"],
"additionalProperties": false,
"properties": {
"dataset_extension": {
"type": "object",
"additionalProperties": false,
"required": ["dataset_categories"],
"properties": {
"additional_license": {
"type": "object",
"description": "The additional license property contains the details about the licenses applied to the dataset and the script or tool/software used to process the given dataset.",
"additionalProperties": false,
"properties": {
"data_license": {
"title": "data_license",
"type": "string",
"description": "The license applied to the data or the dataset by the author",
"examples": ["https://creativecommons.org/licenses/by/4.0/"]
},
"script_license": {
"title": "script_license",
"type": "string",
"description": "The license applied to the computational script or the tool/software developed to process (parse, QC, align) the input dataset for a final output dataset.",
"examples": ["https://www.gnu.org/licenses/gpl-3.0.en.html"]
}
}
},
"dataset_categories": {
"title": "dataset_categories",
"type": "array",
"description": "Dataset categories describe and provide more information about the dataset which can be used to classify, group, sort and filter datasets.",
"items": {
"required": ["category_value", "category_name"],
"additionalProperties": false,
"properties": {
"category_value": {
"type": "string",
"title": "category_value",
"description": "An explanation about the purpose of this instance.",
"examples": ["Homo sapiens"]
},
"category_name": {
"type": "string",
"title": "category_name",
"description": "An explanation about the purpose of this instance.",
"enum": [
"species",
"molecule",
"tag",
"tags",
"priority",
"file_type",
"status",
"scope"
]
}
}
}
}
}
},
"extension_schema": {
"title": "extension_schema",
"type": "string",
"format": "uri",
"description": "The schema applied to the extension object",
"examples": [
"http://www.w3id.org/biocompute/extension_domain/example.json"
]
}
}
}
File renamed without changes.
File renamed without changes.
File renamed without changes.
57 changes: 57 additions & 0 deletions config/schemas/fhir_extension.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "https://w3id.org/biocompute/extension_domain/1.1.0/fhir/fhir_extension.json",
"title": "fhir_extension",
"type": "object",
"description": "The external references extension to FHIR resource",
"required": ["fhir_extension", "extension_schema"],
"additionalProperties": false,
"properties": {
"extension_schema": {
"title": "extension_schema",
"type": "string",
"format": "uri",
"description": "The schema applied to the extension object",
"examples": [
"http://www.w3id.org/biocompute/extension_domain/example.json"
]
},
"fhir_extension": {
"title": "",
"type": "array",
"decription": "",
"items": {
"required": ["fhir_endpoint", "fhir_version", "fhir_resources"],
"properties": {
"fhir_endpoint": {
"type": "string",
"description": "Base URI of FHIR server where the resources are stored",
"examples": ["http://fhirtest.uhn.ca/baseDstu3"],
"format": "uri"
},
"fhir_version": {
"type": "string",
"description": "FHIR version of the server endpoint"
},
"fhir_resources": {
"type": "array",
"items": {
"type": "object",
"required": ["fhir_resource", "fhir_id"],
"properties": {
"fhir_resource": {
"type": "string",
"description": "Type of FHIR resource used"
},
"fhir_id": {
"type": "string",
"description": "Server-specific identifier string"
}
}
}
}
}
}
}
}
}
36 changes: 36 additions & 0 deletions config/schemas/galaxy_extension.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "http://www.w3id.org/biocompute/extension_domain/1.1.0/galaxy/galaxy_extension.json",
"title": "galaxy_extension",
"type": "object",
"description": "The external references **example** extension for a Galaxy BCO.",
"required": ["galaxy_extension", "extension_schema"],
"additionalProperties": false,
"properties": {
"extension_schema": {
"type": "string",
"format": "uri",
"description": "The schema applied to the extension object",
"examples": [
"http://www.w3id.org/biocompute/extension_domain/example.json"
]
},
"galaxy_extension": {
"type": "object",
"required": ["galaxy_url", "galaxy_version"],
"properties": {
"galaxy_url": {
"type": "string",
"description": "The base url for the galaxy instance used to create the BioCompute Object.",
"examples": ["https://galaxy.aws.biochemistry.gwu.edu/"],
"format": "uri"
},
"galaxy_version": {
"type": "string",
"description": "The specific version of the Galaxy software used to generate the BioCompute Object.",
"examples": ["20.01"]
}
}
}
}
}
File renamed without changes.
34 changes: 34 additions & 0 deletions config/schemas/license_extension.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "http://www.w3id.org/biocompute/extension_domain/1.1.0/license/license_extension.json",
"type": "object",
"description": "The extension to add additional licenses.",
"required": ["licence_extension", "extension_schema"],
"additionalProperties": false,
"properties": {
"extension_schema": {
"title": "extension_schema",
"type": "string",
"format": "uri",
"description": "The schema applied to the extension object",
"examples": [
"http://www.w3id.org/biocompute/extension_domain/example.json"
]
},
"licence_extension": {
"required": ["data_license", "scripts_license"],
"properties": {
"data_license": {
"type": "string",
"examples": ["https://github.com/example/repo1"],
"format": "uri"
},
"scripts_license": {
"type": "string",
"examples": ["https://github.com/example/repo1"],
"format": "uri"
}
}
}
}
}
File renamed without changes.
File renamed without changes.
50 changes: 50 additions & 0 deletions config/schemas/scm_extension.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "https://w3id.org/biocompute/extension_domain/1.1.0/scm/scm_extension.json",
"title": "scm_extension",
"type": "object",
"description": "The external references extension to a SCM repository",
"required": ["scm_extension", "extension_schema"],
"additionalProperties": false,
"properties": {
"extension_schema": {
"title": "extension_schema",
"type": "string",
"format": "uri",
"description": "The schema applied to the extension object",
"examples": [
"http://www.w3id.org/biocompute/extension_domain/example.json"
]
},
"scm_extension": {
"required": ["scm_repository", "scm_type", "scm_commit", "scm_path"],
"properties": {
"scm_repository": {
"type": "string",
"examples": ["https://github.com/example/repo1"],
"format": "uri"
},
"scm_type": {
"type": "string",
"enum": ["git", "svn", "hg", "other"]
},
"scm_commit": {
"type": "string",
"examples": ["c9ffea0b60fa3bcf8e138af7c99ca141a6b8fb21"]
},
"scm_path": {
"type": "string",
"examples": ["workflow/hive-viral-mutation-detection.cwl"],
"format": "string"
},
"scm_preview": {
"type": "string",
"examples": [
"https://github.com/example/repo1/blob/c9ffea0b60fa3bcf8e138af7c99ca141a6b8fb21/workflow/hive-viral-mutation-detection.cwl"
],
"format": "uri"
}
}
}
}
}
File renamed without changes.

0 comments on commit 588156e

Please sign in to comment.