Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update to BcoValidator.load_schema #341

Merged
merged 1 commit into from
Aug 5, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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.
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"
}
}
}
}
}
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.
Loading