From c13db3d6f1a8b648fab5975e0024f7089b479651 Mon Sep 17 00:00:00 2001 From: Andrew Davison Date: Sat, 20 Sep 2025 12:28:37 +0200 Subject: [PATCH 1/5] Schemas for a more fine-grained representation of services (digital or physical) --- schemas/deployedInterface.schema.tpl.json | 26 ++++++++ schemas/interface.schema.tpl.json | 73 +++++++++++++++++++++ schemas/interfaceDependency.schema.tpl.json | 21 ++++++ schemas/serviceDeployment.schema.tpl.json | 68 +++++++++++++++++++ 4 files changed, 188 insertions(+) create mode 100644 schemas/deployedInterface.schema.tpl.json create mode 100644 schemas/interface.schema.tpl.json create mode 100644 schemas/interfaceDependency.schema.tpl.json create mode 100644 schemas/serviceDeployment.schema.tpl.json diff --git a/schemas/deployedInterface.schema.tpl.json b/schemas/deployedInterface.schema.tpl.json new file mode 100644 index 0000000..af9ab51 --- /dev/null +++ b/schemas/deployedInterface.schema.tpl.json @@ -0,0 +1,26 @@ +{ + "_type": "computation:DeployedInterface", + "required": [ + "accessibility", + "interface", + "location" + ], + "properties": { + "accessibility": { + "_instruction": "Add the accessibility of this deployed interface.", + "_linkedTypes": ["controlledTerms.ProductAccessibility"] + }, + "interface": { + "_linkedTypes": [ + "computation.Interface" + ] + }, + "location": { + "_instruction": "Add the location (for physical services) or URL (for digital services) where this deployed interface may be accessed.", + "_linkedTypes": [ + "core.Location", + "core.WebResource" + ] + } + } +} diff --git a/schemas/interface.schema.tpl.json b/schemas/interface.schema.tpl.json new file mode 100644 index 0000000..48343de --- /dev/null +++ b/schemas/interface.schema.tpl.json @@ -0,0 +1,73 @@ +{ + "_type": "computation:Interface", + "required": [ + "communicationProtocol", + "definition", + "name", + "type", + "versionIdentifier" + ], + "properties": { + "communicationProtocol": { + "_instruction": "Enter the communication protocol used by this interface.", + "_linkedTypes": [ + "controlledTerms:CommunicationProtocol" + ] + }, + "custodian": { + "type": "array", + "minItems": 1, + "uniqueItems": true, + "_instruction": "Add all parties that fulfill the role of a custodian for the definition of this interface.", + "_linkedCategories": [ + "legalPerson" + ] + }, + "definition": { + "_instruction": "Enter a web resource that defines this interface, e.g., an OpenAPI.json document.", + "_linkedTypes": [ + "core.WebResource" + ] + }, + "description": { + "type": "string", + "_instruction": "Enter a description of this interface." + }, + "developer": { + "type": "array", + "minItems": 1, + "uniqueItems": true, + "_instruction": "Add all parties that developed this interface definition.", + "_linkedCategories": [ + "legalPerson" + ] + }, + "name": { + "type": "string", + "_instruction": "Enter the name of this interface." + }, + "type": { + "_instruction": "Enter the type of this interface.", + "_linkedTypes": [ + "controlledTerms:InterfaceType" + ] + }, + "userDocumentation": { + "_instruction": "Add the publication or file that acts as the full documentation of this interface.", + "_linkedTypes": [ + "core:DOI", + "core:File", + "core:ISBN", + "core:WebResource" + ] + }, + "versionIdentifier": { + "type": "string", + "_instruction": "Enter the version identifier of this interface version." + }, + "versionInnovation": { + "type": "string", + "_instruction": "Enter a short description (or summary) of the novelties/peculiarities of this interface version in comparison to its preceding versions." + } + } +} diff --git a/schemas/interfaceDependency.schema.tpl.json b/schemas/interfaceDependency.schema.tpl.json new file mode 100644 index 0000000..69d7052 --- /dev/null +++ b/schemas/interfaceDependency.schema.tpl.json @@ -0,0 +1,21 @@ +{ + "_type": "computation:InterfaceDependency", + "required": [ + "failureImpact", + "fulfilledBy" + ], + "properties": { + "failureImpact": { + "_instruction": "Add the impact(s) on the software if the service interface is unavailable.", + "_linkedTypes": [ + "controlledTerms.Impact" + ] + }, + "fulfilledBy": { + "_instruction": "Add the service interface that fulfills this dependency.", + "_linkedTypes": [ + "computation.Interface" + ] + } + } +} diff --git a/schemas/serviceDeployment.schema.tpl.json b/schemas/serviceDeployment.schema.tpl.json new file mode 100644 index 0000000..4bd1e16 --- /dev/null +++ b/schemas/serviceDeployment.schema.tpl.json @@ -0,0 +1,68 @@ +{ + "_type": "computation:ServiceDeployment", + "required": [ + "name", + "provides", + "service", + "startTime" + ], + "properties": { + "endTime": { + "type": "string", + "_formats": [ + "datetime" + ], + "_instruction": "Enter the date and time at which this deployment ended, formatted acoording to ISO-8601." + }, + "dependsOn": { + "_instruction": "Add the software that was deployed.", + "type": "array", + "minItems": 1, + "uniqueItems": true, + "_linkedTypes": [ + "core:SoftwareVersion" + ] + }, + "deployedBy": { + "_instruction": "Add the provenance of the deployment workflow.", + "_linkedTypes": ["computation:WorkflowExecution"] + }, + "deploymentType": { + "_instruction": "Enter the type of deployment environment, for example, 'productionù or 'integration'.", + "_linkedTypes": ["controlledTerms:DeploymentEnvironmentType"] + }, + "name": { + "type": "string", + "_instruction": "Enter a label for this deployment" + }, + "provides": { + "_instruction": "Add the interfaces that have been deployed.", + "type": "array", + "minItems": 1, + "uniqueItems": true, + "_embeddedTypes": [ + "computation.DeployedInterface" + ] + }, + "service": { + "_instruction": "Add the service that has been deployed.", + "_linkedTypes": ["core.Service"] + }, + "startTime": { + "type": "string", + "_formats": [ + "datetime" + ], + "_instruction": "Enter the date and time at which this deployment was started, formatted acoording to ISO-8601." + }, + "uses": { + "_instruction": "Add the deployed interfaces that are used by this deployment.", + "type": "array", + "minItems": 1, + "uniqueItems": true, + "_embeddedTypes": [ + "computation.DeployedInterface" + ] + } + } +} From a813edab4a2b657b47e5817d3f8db3e064dbbafd Mon Sep 17 00:00:00 2001 From: Andrew Davison Date: Mon, 29 Sep 2025 10:58:04 +0200 Subject: [PATCH 2/5] update following discussion with @lzehl --- schemas/deployedInterface.schema.tpl.json | 6 +- schemas/interface.schema.tpl.json | 73 --------------------- schemas/interfaceDependency.schema.tpl.json | 21 ------ schemas/serviceDeployment.schema.tpl.json | 12 +++- 4 files changed, 13 insertions(+), 99 deletions(-) delete mode 100644 schemas/interface.schema.tpl.json delete mode 100644 schemas/interfaceDependency.schema.tpl.json diff --git a/schemas/deployedInterface.schema.tpl.json b/schemas/deployedInterface.schema.tpl.json index af9ab51..e36482b 100644 --- a/schemas/deployedInterface.schema.tpl.json +++ b/schemas/deployedInterface.schema.tpl.json @@ -8,11 +8,13 @@ "properties": { "accessibility": { "_instruction": "Add the accessibility of this deployed interface.", - "_linkedTypes": ["controlledTerms.ProductAccessibility"] + "_linkedTypes": [ + "controlledTerms.ProductAccessibility" + ] }, "interface": { "_linkedTypes": [ - "computation.Interface" + "core.Interface" ] }, "location": { diff --git a/schemas/interface.schema.tpl.json b/schemas/interface.schema.tpl.json deleted file mode 100644 index 48343de..0000000 --- a/schemas/interface.schema.tpl.json +++ /dev/null @@ -1,73 +0,0 @@ -{ - "_type": "computation:Interface", - "required": [ - "communicationProtocol", - "definition", - "name", - "type", - "versionIdentifier" - ], - "properties": { - "communicationProtocol": { - "_instruction": "Enter the communication protocol used by this interface.", - "_linkedTypes": [ - "controlledTerms:CommunicationProtocol" - ] - }, - "custodian": { - "type": "array", - "minItems": 1, - "uniqueItems": true, - "_instruction": "Add all parties that fulfill the role of a custodian for the definition of this interface.", - "_linkedCategories": [ - "legalPerson" - ] - }, - "definition": { - "_instruction": "Enter a web resource that defines this interface, e.g., an OpenAPI.json document.", - "_linkedTypes": [ - "core.WebResource" - ] - }, - "description": { - "type": "string", - "_instruction": "Enter a description of this interface." - }, - "developer": { - "type": "array", - "minItems": 1, - "uniqueItems": true, - "_instruction": "Add all parties that developed this interface definition.", - "_linkedCategories": [ - "legalPerson" - ] - }, - "name": { - "type": "string", - "_instruction": "Enter the name of this interface." - }, - "type": { - "_instruction": "Enter the type of this interface.", - "_linkedTypes": [ - "controlledTerms:InterfaceType" - ] - }, - "userDocumentation": { - "_instruction": "Add the publication or file that acts as the full documentation of this interface.", - "_linkedTypes": [ - "core:DOI", - "core:File", - "core:ISBN", - "core:WebResource" - ] - }, - "versionIdentifier": { - "type": "string", - "_instruction": "Enter the version identifier of this interface version." - }, - "versionInnovation": { - "type": "string", - "_instruction": "Enter a short description (or summary) of the novelties/peculiarities of this interface version in comparison to its preceding versions." - } - } -} diff --git a/schemas/interfaceDependency.schema.tpl.json b/schemas/interfaceDependency.schema.tpl.json deleted file mode 100644 index 69d7052..0000000 --- a/schemas/interfaceDependency.schema.tpl.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "_type": "computation:InterfaceDependency", - "required": [ - "failureImpact", - "fulfilledBy" - ], - "properties": { - "failureImpact": { - "_instruction": "Add the impact(s) on the software if the service interface is unavailable.", - "_linkedTypes": [ - "controlledTerms.Impact" - ] - }, - "fulfilledBy": { - "_instruction": "Add the service interface that fulfills this dependency.", - "_linkedTypes": [ - "computation.Interface" - ] - } - } -} diff --git a/schemas/serviceDeployment.schema.tpl.json b/schemas/serviceDeployment.schema.tpl.json index 4bd1e16..c032bcd 100644 --- a/schemas/serviceDeployment.schema.tpl.json +++ b/schemas/serviceDeployment.schema.tpl.json @@ -25,11 +25,15 @@ }, "deployedBy": { "_instruction": "Add the provenance of the deployment workflow.", - "_linkedTypes": ["computation:WorkflowExecution"] + "_linkedTypes": [ + "computation:WorkflowExecution" + ] }, "deploymentType": { "_instruction": "Enter the type of deployment environment, for example, 'productionù or 'integration'.", - "_linkedTypes": ["controlledTerms:DeploymentEnvironmentType"] + "_linkedTypes": [ + "controlledTerms:DeploymentEnvironmentType" + ] }, "name": { "type": "string", @@ -46,7 +50,9 @@ }, "service": { "_instruction": "Add the service that has been deployed.", - "_linkedTypes": ["core.Service"] + "_linkedTypes": [ + "core.Service" + ] }, "startTime": { "type": "string", From 0bbe657725ab801fd21916c8ff2451ea742944fe Mon Sep 17 00:00:00 2001 From: Andrew Davison Date: Wed, 28 Jan 2026 17:08:26 +0100 Subject: [PATCH 3/5] Updates to match v0.4 of the specification document https://notes.ebrains.eu/Ye6clhnMRv6y5zsIBRZx8w?view --- schemas/deployedInterface.schema.tpl.json | 3 ++- schemas/serviceDeployment.schema.tpl.json | 22 ++++++++-------------- 2 files changed, 10 insertions(+), 15 deletions(-) diff --git a/schemas/deployedInterface.schema.tpl.json b/schemas/deployedInterface.schema.tpl.json index e36482b..753ce91 100644 --- a/schemas/deployedInterface.schema.tpl.json +++ b/schemas/deployedInterface.schema.tpl.json @@ -13,8 +13,9 @@ ] }, "interface": { + "_instruction": "Enter the interface version that is deployed.", "_linkedTypes": [ - "core.Interface" + "core.InterfaceVersion" ] }, "location": { diff --git a/schemas/serviceDeployment.schema.tpl.json b/schemas/serviceDeployment.schema.tpl.json index c032bcd..f86b33f 100644 --- a/schemas/serviceDeployment.schema.tpl.json +++ b/schemas/serviceDeployment.schema.tpl.json @@ -7,13 +7,6 @@ "startTime" ], "properties": { - "endTime": { - "type": "string", - "_formats": [ - "datetime" - ], - "_instruction": "Enter the date and time at which this deployment ended, formatted acoording to ISO-8601." - }, "dependsOn": { "_instruction": "Add the software that was deployed.", "type": "array", @@ -23,21 +16,22 @@ "core:SoftwareVersion" ] }, - "deployedBy": { - "_instruction": "Add the provenance of the deployment workflow.", - "_linkedTypes": [ - "computation:WorkflowExecution" - ] - }, "deploymentType": { "_instruction": "Enter the type of deployment environment, for example, 'productionù or 'integration'.", "_linkedTypes": [ "controlledTerms:DeploymentEnvironmentType" ] }, + "endTime": { + "type": "string", + "_formats": [ + "datetime" + ], + "_instruction": "Enter the date and time at which this deployment ended, formatted acoording to ISO-8601." + }, "name": { "type": "string", - "_instruction": "Enter a label for this deployment" + "_instruction": "Enter a label for this service deployment" }, "provides": { "_instruction": "Add the interfaces that have been deployed.", From e370a3fedf609cfbbd7b467873cbf9c33849d692 Mon Sep 17 00:00:00 2001 From: Lyuba Zehl Date: Thu, 19 Feb 2026 11:14:17 +0100 Subject: [PATCH 4/5] Update deployedInterface.schema.tpl.json --- schemas/deployedInterface.schema.tpl.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/schemas/deployedInterface.schema.tpl.json b/schemas/deployedInterface.schema.tpl.json index 753ce91..9eb622b 100644 --- a/schemas/deployedInterface.schema.tpl.json +++ b/schemas/deployedInterface.schema.tpl.json @@ -9,20 +9,20 @@ "accessibility": { "_instruction": "Add the accessibility of this deployed interface.", "_linkedTypes": [ - "controlledTerms.ProductAccessibility" + "core:Accessibility" ] }, "interface": { "_instruction": "Enter the interface version that is deployed.", "_linkedTypes": [ - "core.InterfaceVersion" + "core:InterfaceVersion" ] }, "location": { "_instruction": "Add the location (for physical services) or URL (for digital services) where this deployed interface may be accessed.", "_linkedTypes": [ - "core.Location", - "core.WebResource" + "core:Location", + "core:WebResource" ] } } From 8ca07dfb800f8bf82230952a18d855f56bf9891a Mon Sep 17 00:00:00 2001 From: Lyuba Zehl Date: Thu, 19 Feb 2026 11:33:37 +0100 Subject: [PATCH 5/5] Update serviceDeployment.schema.tpl.json --- schemas/serviceDeployment.schema.tpl.json | 30 ++++++++++++++++------- 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/schemas/serviceDeployment.schema.tpl.json b/schemas/serviceDeployment.schema.tpl.json index f86b33f..1861bd0 100644 --- a/schemas/serviceDeployment.schema.tpl.json +++ b/schemas/serviceDeployment.schema.tpl.json @@ -8,16 +8,22 @@ ], "properties": { "dependsOn": { - "_instruction": "Add the software that was deployed.", + "_instruction": "Add the software version and any other relevant research product version that was deployed.", "type": "array", "minItems": 1, "uniqueItems": true, "_linkedTypes": [ - "core:SoftwareVersion" + "computation:WorkflowRecipeVersion", + "core:DatasetVersion", + "core:MetaDataModelVersion", + "core:ModelVersion", + "core:SoftwareVersion", + "sands:AnatomicalAtlasVersion", + "sands:CommonCoordinateFrameworkVersion" ] }, "deploymentType": { - "_instruction": "Enter the type of deployment environment, for example, 'productionù or 'integration'.", + "_instruction": "Enter the type of deployment environment, for example, 'production' or 'integration'.", "_linkedTypes": [ "controlledTerms:DeploymentEnvironmentType" ] @@ -31,7 +37,7 @@ }, "name": { "type": "string", - "_instruction": "Enter a label for this service deployment" + "_instruction": "Enter a label for this service deployment." }, "provides": { "_instruction": "Add the interfaces that have been deployed.", @@ -39,13 +45,13 @@ "minItems": 1, "uniqueItems": true, "_embeddedTypes": [ - "computation.DeployedInterface" + "computation:DeployedInterface" ] }, "service": { "_instruction": "Add the service that has been deployed.", "_linkedTypes": [ - "core.Service" + "core:Service" ] }, "startTime": { @@ -56,12 +62,18 @@ "_instruction": "Enter the date and time at which this deployment was started, formatted acoording to ISO-8601." }, "uses": { - "_instruction": "Add the deployed interfaces that are used by this deployment.", + "_instruction": "Add the deployed interfaces and any other relevant research product versions that are used by this deployment.", "type": "array", "minItems": 1, "uniqueItems": true, - "_embeddedTypes": [ - "computation.DeployedInterface" + "_linkedTypes": [ + "computation:WorkflowRecipeVersion", + "computation:DeployedInterface", + "core:DatasetVersion", + "core:MetaDataModelVersion", + "core:ModelVersion", + "sands:AnatomicalAtlasVersion", + "sands:CommonCoordinateFrameworkVersion" ] } }