Skip to content

Use pointers to external schema definitions for user and identifier descriptions#22

Open
gabinoumbe wants to merge 7 commits intomainfrom
dev_ext_id_description
Open

Use pointers to external schema definitions for user and identifier descriptions#22
gabinoumbe wants to merge 7 commits intomainfrom
dev_ext_id_description

Conversation

@gabinoumbe
Copy link
Copy Markdown
Contributor

Refer to an external identifier_description

@github-actions
Copy link
Copy Markdown

📋 Schema Check Report

Schema Path: SEM/SEM_schema.json
Tag Prefix: SEM_
Latest Tag for Comparison: SEM_v0.1.0

JSON Schema Check Results

Validate JSON Schema

✅ The schema is valid JSON.

Diff to Latest Release

 {
   $defs: {
     entry: {
       properties: {
         entryID: {
-          $ref: "#/$defs/identifier"
+          $ref: "#/%24defs/identifier"
         }
       }
     }
     identifier: {
+      $schema: "https://json-schema.org/draft/2019-09/schema"
+      title: "identifier_description"
     }
     revision: {
       properties: {
         revisonID: {
-          $ref: "#/$defs/identifier"
+          $ref: "#/%24defs/identifier"
         }
       }
     }
     institutionDetails: {
       properties: {
         institutionID: {
-          $ref: "#/$defs/identifier"
+          $ref: "#/%24defs/identifier"
         }
       }
     }
     samplePrepType: {
       properties: {
         preparationID: {
-          $ref: "#/$defs/identifier"
+          $ref: "#/%24defs/identifier"
         }
       }
     }
     instrumentDetails: {
       properties: {
         instrumentID: {
-          $ref: "#/$defs/identifier"
+          $ref: "#/%24defs/identifier"
         }
       }
     }
     manufacturerDetails: {
       properties: {
         manufacturerID: {
-          $ref: "#/$defs/identifier"
+          $ref: "#/%24defs/identifier"
         }
       }
     }
     sourceDetails: {
       properties: {
         sourceID: {
-          $ref: "#/$defs/identifier"
+          $ref: "#/%24defs/identifier"
         }
       }
     }
     detectorDetails: {
       properties: {
         detectorID: {
-          $ref: "#/$defs/identifier"
+          $ref: "#/%24defs/identifier"
         }
       }
     }
   }
 }

Tip

To check schema backwards compatibility, you may use any AI chatbot with a prompt like:

Assuming I have two JSON schemas, both are different according to the following diff, are both schemas compatible?
<PASTE_DIFF_HERE>

If you like, you may add additional rendering instructions, e.g.:

Render the result as table showing the changed attributes, a columns to check backward compatibility, > and a column to provide comments on why a certain property is not backwards compatible.

Furthermore, you can also use the diff to get a hint on which schema version to use next:
Assuming I have a JSON schema in version 1.0.0 and the next version has the following changes in diff format. Which would be the next version number following semantic versioning principles?
<PASTE_DIFF_HERE>

Next Steps

  • Fix validation errors
  • Check backwards compatibility based on diff
  • React with 👍 to mark the PR as ready

@github-actions
Copy link
Copy Markdown

📋 Schema Check Report

Schema Path: MRI/MRI_schema.json
Tag Prefix: MRI_
Latest Tag for Comparison: MRI_v0.1.0

JSON Schema Check Results

Validate JSON Schema

✅ The schema is valid JSON.

Diff to Latest Release

No difference found to previous version.

Next Steps

  • Fix validation errors
  • Check backwards compatibility based on diff
  • React with 👍 to mark the PR as ready

@github-actions
Copy link
Copy Markdown

📋 Schema Check Report

Schema Path: TEM/TEM_schema.json
Tag Prefix: TEM_
Latest Tag for Comparison: TEM_v0.1.0

JSON Schema Check Results

Validate JSON Schema

✅ The schema is valid JSON.

Diff to Latest Release

 {
   properties: {
     entryID: {
-      $ref: "#/$defs/identifier"
+      $ref: "#/%24defs/identifier"
     }
   }
   $defs: {
     identifier: {
+      $schema: "https://json-schema.org/draft/2019-09/schema"
+      title: "identifier_description"
-      description: "(Optional, NAE) - Details of an identifier element"
+      description: "(Optional) - Details of an identifier element."
       properties: {
         identifierValue: {
-          description: "(Optional, NAE) - a string containing the value of an identifier."
+          description: "(Optional) - String containing the value of an identifier"
         }
         identifierType: {
-          description: "(Optional, NAE) - type of the identifier to be chosen from a controlled list of values -*ROR *GRID *ISNI *URL *DOI *Handle *Internal."
+          description: "(Optional) - Type of the identifier to be selected from: *ROR *GRID *ISNI *URL *DOI *Handle"
           enum: [
             ...
             ...
             ...
             ...
             ...
             ...
-            "Internal"
           ]
         }
       }
     }
     revision: {
       properties: {
         revisonID: {
-          $ref: "#/$defs/identifier"
+          $ref: "#/%24defs/identifier"
         }
       }
     }
     institutionDetails: {
       properties: {
         institutionID: {
-          $ref: "#/$defs/identifier"
+          $ref: "#/%24defs/identifier"
         }
       }
     }
     instrumentDetails: {
       properties: {
         instrumentID: {
-          $ref: "#/$defs/identifier"
+          $ref: "#/%24defs/identifier"
         }
       }
     }
     manufacturerDetails: {
       properties: {
         manufacturerID: {
-          $ref: "#/$defs/identifier"
+          $ref: "#/%24defs/identifier"
         }
       }
     }
     sourceDetails: {
       properties: {
         sourceID: {
-          $ref: "#/$defs/identifier"
+          $ref: "#/%24defs/identifier"
         }
       }
     }
     detectorDetails: {
       properties: {
         detectorID: {
-          $ref: "#/$defs/identifier"
+          $ref: "#/%24defs/identifier"
         }
       }
     }
     spectrometerDetails: {
       properties: {
         spectrometerID: {
-          $ref: "#/$defs/identifier"
+          $ref: "#/%24defs/identifier"
         }
       }
     }
     EDXSDetails: {
       properties: {
         detectorID: {
-          $ref: "#/$defs/identifier"
+          $ref: "#/%24defs/identifier"
         }
       }
     }
   }
 }

Tip

To check schema backwards compatibility, you may use any AI chatbot with a prompt like:

Assuming I have two JSON schemas, both are different according to the following diff, are both schemas compatible?
<PASTE_DIFF_HERE>

If you like, you may add additional rendering instructions, e.g.:

Render the result as table showing the changed attributes, a columns to check backward compatibility, > and a column to provide comments on why a certain property is not backwards compatible.

Furthermore, you can also use the diff to get a hint on which schema version to use next:
Assuming I have a JSON schema in version 1.0.0 and the next version has the following changes in diff format. Which would be the next version number following semantic versioning principles?
<PASTE_DIFF_HERE>

Next Steps

  • Fix validation errors
  • Check backwards compatibility based on diff
  • React with 👍 to mark the PR as ready

@github-actions
Copy link
Copy Markdown

📋 Schema Check Report

Schema Path: SEM-FIB_Tomography/SEM_FIB_Tomography_Acquisition_Main.json
Tag Prefix: SEM-FIB_
Latest Tag for Comparison: SEM-FIB_v0.1.0

JSON Schema Check Results

Validate JSON Schema

✅ The schema is valid JSON.

Diff to Latest Release

 {
   $defs: {
     acquisition: {
       properties: {
         genericMetadata: {
           properties: {
             applicationID: {
-              $ref: "#/$defs/identifier"
+              $ref: "#/%24defs/identifier"
             }
             projectID: {
-              $ref: "#/$defs/identifier"
+              $ref: "#/%24defs/identifier"
             }
           }
         }
         dataset: {
           items: {
             properties: {
               entryID: {
-                $ref: "#/$defs/acquisition/properties/dataset/items/$defs/identifier"
+                $ref: "#/%24defs/identifier"
               }
               user: {
                 properties: {
                   affiliation: {
                     properties: {
                       institutionID: {
-                        type: "object"
-                        description: "(Optional) -Identifier of the institution to which the user is affiliated"
-                        properties: {
-                          identifierValue: {
-                            type: "string"
-                            description: "(Optional) - String containing the value of an identifier"
-                          }
-                          identifierType: {
-                            type: "string"
-                            description: "(Optional) - Type of the identifier to be chosen from a controlled list of values (*ROR *GRID *ISNI *URL *DOI *Handle)"
-                            enum: [
-                              "ROR"
-                              "GRID"
-                              "ISNI"
-                              "URL"
-                              "DOI"
-                              "Handle"
-                            ]
-                          }
-                        }
+                        $ref: "#/%24defs/identifier"
                       }
                     }
                   }
                 }
               }
               program: {
-                $ref: "#/$defs/acquisition/properties/dataset/items/$defs/program"
+                $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/program"
               }
               instrument: {
-                $ref: "#/$defs/acquisition/properties/dataset/items/$defs/instrumentDetails"
+                $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/instrumentDetails"
               }
               images: {
                 items: {
                   properties: {
                     entryID: {
-                      $ref: "#/$defs/acquisition/properties/dataset/items/properties/images/items/$defs/identifier"
+                      $ref: "#/%24defs/identifier"
                     }
                     fileLink: {
-                      $ref: "#/$defs/acquisition/properties/dataset/items/properties/images/items/$defs/identifier"
+                      $ref: "#/%24defs/identifier"
                     }
                     stage: {
-                      $ref: "#/$defs/acquisition/properties/dataset/items/properties/images/items/$defs/stage"
+                      $ref: "#/%24defs/acquisition/properties/dataset/items/properties/images/items/%24defs/stage"
                     }
                     vacuum: {
-                      $ref: "#/$defs/acquisition/properties/dataset/items/properties/images/items/$defs/vacuum"
+                      $ref: "#/%24defs/acquisition/properties/dataset/items/properties/images/items/%24defs/vacuum"
                     }
                     temperature: {
-                      $ref: "#/$defs/acquisition/properties/dataset/items/properties/images/items/$defs/temperatureDetails"
+                      $ref: "#/%24defs/acquisition/properties/dataset/items/properties/images/items/%24defs/temperatureDetails"
                     }
                     specimenCurrent: {
-                      $ref: "#/$defs/acquisition/properties/dataset/items/properties/images/items/$defs/currentDetails"
+                      $ref: "#/%24defs/acquisition/properties/dataset/items/properties/images/items/%24defs/currentDetails"
                     }
                   }
                   $defs: {
                     stage: {
                       properties: {
                         workingDistance: {
-                          $ref: "#/$defs/acquisition/properties/dataset/items/properties/images/items/$defs/distanceDetails"
+                          $ref: "#/%24defs/acquisition/properties/dataset/items/properties/images/items/%24defs/distanceDetails"
                         }
                         stageX: {
-                          $ref: "#/$defs/acquisition/properties/dataset/items/properties/images/items/$defs/distanceDetails"
+                          $ref: "#/%24defs/acquisition/properties/dataset/items/properties/images/items/%24defs/distanceDetails"
                         }
                         stageY: {
-                          $ref: "#/$defs/acquisition/properties/dataset/items/properties/images/items/$defs/distanceDetails"
+                          $ref: "#/%24defs/acquisition/properties/dataset/items/properties/images/items/%24defs/distanceDetails"
                         }
                         stageZ: {
-                          $ref: "#/$defs/acquisition/properties/dataset/items/properties/images/items/$defs/distanceDetails"
+                          $ref: "#/%24defs/acquisition/properties/dataset/items/properties/images/items/%24defs/distanceDetails"
                         }
                         stageM: {
-                          $ref: "#/$defs/acquisition/properties/dataset/items/properties/images/items/$defs/distanceDetails"
+                          $ref: "#/%24defs/acquisition/properties/dataset/items/properties/images/items/%24defs/distanceDetails"
                         }
                         stageR: {
-                          $ref: "#/$defs/acquisition/properties/dataset/items/properties/images/items/$defs/angleDetails"
+                          $ref: "#/%24defs/acquisition/properties/dataset/items/properties/images/items/%24defs/angleDetails"
                         }
                         stageTa: {
-                          $ref: "#/$defs/acquisition/properties/dataset/items/properties/images/items/$defs/angleDetails"
+                          $ref: "#/%24defs/acquisition/properties/dataset/items/properties/images/items/%24defs/angleDetails"
                         }
                         stageTb: {
-                          $ref: "#/$defs/acquisition/properties/dataset/items/properties/images/items/$defs/angleDetails"
+                          $ref: "#/%24defs/acquisition/properties/dataset/items/properties/images/items/%24defs/angleDetails"
                         }
                         specTilt: {
-                          $ref: "#/$defs/acquisition/properties/dataset/items/properties/images/items/$defs/angleDetails"
+                          $ref: "#/%24defs/acquisition/properties/dataset/items/properties/images/items/%24defs/angleDetails"
                         }
                       }
                     }
                     vacuum: {
                       properties: {
                         chamberPressure: {
-                          $ref: "#/$defs/acquisition/properties/dataset/items/properties/images/items/$defs/pressureDetails"
+                          $ref: "#/%24defs/acquisition/properties/dataset/items/properties/images/items/%24defs/pressureDetails"
                         }
                       }
                     }
                     identifier: {
-                      type: "object"
-                      description: "(Optional) - Details of an identifier element."
-                      additionalProperties: false
-                      properties: {
-                        identifierValue: {
-                          type: "string"
-                          description: "(Optional) - String containing the value of an identifier"
-                        }
-                        identifierType: {
-                          type: "string"
-                          description: "(Optional) - Type of the identifier to be selected from: *ROR *GRID *ISNI *URL *DOI *Handle *String"
-                          enum: [
-                            "ROR"
-                            "GRID"
-                            "ISNI"
-                            "URL"
-                            "DOI"
-                            "Handle"
-                            "String"
-                          ]
-                        }
-                      }
+                      $ref: "#/%24defs/identifier"
                     }
                   }
                 }
               }
             }
             $defs: {
               instrumentDetails: {
                 properties: {
                   eBeam: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/eBeamDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/eBeamDetails"
                   }
                   iBeam: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/iBeamDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/iBeamDetails"
                   }
                   scan: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/scanDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/scanDetails"
                   }
                   imaging: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/imageDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/imageDetails"
                   }
                   detector: {
                     oneOf: [
                       {
-                        $ref: "#/$defs/acquisition/properties/dataset/items/$defs/detectorDetails"
+                        $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/detectorDetails"
                       }
                       {
                         items: {
-                          $ref: "#/$defs/acquisition/properties/dataset/items/$defs/detectorDetails"
+                          $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/detectorDetails"
                         }
                       }
                     ]
                   }
                   hotStageMEMS: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/hotStageMEMSDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/hotStageMEMSDetails"
                   }
                 }
               }
               identifier: {
-                type: "object"
-                description: "(Optional) - Details of an identifier element."
-                additionalProperties: false
-                properties: {
-                  identifierValue: {
-                    type: "string"
-                    description: "(Optional) - String containing the value of an identifier"
-                  }
-                  identifierType: {
-                    type: "string"
-                    description: "(Optional) - Type of the identifier to be selected from: *ROR *GRID *ISNI *URL *DOI *Handle *String"
-                    enum: [
-                      "ROR"
-                      "GRID"
-                      "ISNI"
-                      "URL"
-                      "DOI"
-                      "Handle"
-                      "String"
-                    ]
-                  }
-                }
+                $ref: "#/%24defs/identifier"
               }
               eBeamDetails: {
                 properties: {
                   accelerationVoltage: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/voltageDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/voltageDetails"
                   }
                   beamCurrent: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/currentDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/currentDetails"
                   }
                   scanRotation: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/angleDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/angleDetails"
                   }
                   apertureSetting: {
                     properties: {
                       size: {
-                        $ref: "#/$defs/acquisition/properties/dataset/items/$defs/distanceDetails"
+                        $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/distanceDetails"
                       }
                       current: {
-                        $ref: "#/$defs/acquisition/properties/dataset/items/$defs/currentDetails"
+                        $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/currentDetails"
                       }
                     }
                   }
                   horizontalFieldWidth: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/distanceDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/distanceDetails"
                   }
                   verticalFieldWidth: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/distanceDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/distanceDetails"
                   }
                   tiltCorrectionAngle: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/angleDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/angleDetails"
                   }
                   preTilt: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/angleDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/angleDetails"
                   }
                 }
               }
               iBeamDetails: {
                 properties: {
                   accelerationVoltage: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/voltageDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/voltageDetails"
                   }
                   millingCurrent: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/currentDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/currentDetails"
                   }
                 }
               }
               scanDetails: {
                 properties: {
                   dwellTime: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/timeDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/timeDetails"
                   }
                   pixelWidth: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/distanceDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/distanceDetails"
                   }
                   pixelHeight: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/distanceDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/distanceDetails"
                   }
                   horizontalFieldSize: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/distanceDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/distanceDetails"
                   }
                   verticalFieldSize: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/distanceDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/distanceDetails"
                   }
                   frameTime: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/timeDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/timeDetails"
                   }
                   eScan: {
                     properties: {
                       lineTime: {
-                        $ref: "#/$defs/acquisition/properties/dataset/items/$defs/timeDetails"
+                        $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/timeDetails"
                       }
                     }
                   }
                 }
               }
               imageDetails: {
                 properties: {
                   numberOfPixels: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/pixelNumberType"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/pixelNumberType"
                   }
                 }
               }
               detectorDetails: {
                 properties: {
                   detectorSettings: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/detectorSettings"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/detectorSettings"
                   }
                 }
               }
               detectorSettings: {
                 properties: {
                   gridVoltage: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/voltageDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/voltageDetails"
                   }
                   frontEndVoltage: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/voltageDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/voltageDetails"
                   }
                   minimumDwellTime: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/timeDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/timeDetails"
                   }
                 }
               }
               hotStageMEMSDetails: {
                 properties: {
                   heatingCurrent: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/currentDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/currentDetails"
                   }
                   heatingVoltage: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/voltageDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/voltageDetails"
                   }
                   targetTemperature: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/temperatureDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/temperatureDetails"
                   }
                   actualTemperature: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/temperatureDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/temperatureDetails"
                   }
                   heatingPower: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/powerDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/powerDetails"
                   }
                   sampleBias: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/voltageDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/voltageDetails"
                   }
                   sampleResistance: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/resistanceDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/resistanceDetails"
                   }
                 }
               }
             }
           }
         }
       }
     }
     identifier: {
+      $schema: "https://json-schema.org/draft/2019-09/schema"
+      title: "identifier_description"
       properties: {
         identifierType: {
-          description: "(Optional) - Type of the identifier to be selected from: *ROR *GRID *ISNI *URL *DOI *Handle *String"
+          description: "(Optional) - Type of the identifier to be selected from: *ROR *GRID *ISNI *URL *DOI *Handle"
           enum: [
             ...
             ...
             ...
             ...
             ...
             ...
-            "String"
           ]
         }
       }
     }
   }
 }

Tip

To check schema backwards compatibility, you may use any AI chatbot with a prompt like:

Assuming I have two JSON schemas, both are different according to the following diff, are both schemas compatible?
<PASTE_DIFF_HERE>

If you like, you may add additional rendering instructions, e.g.:

Render the result as table showing the changed attributes, a columns to check backward compatibility, > and a column to provide comments on why a certain property is not backwards compatible.

Furthermore, you can also use the diff to get a hint on which schema version to use next:
Assuming I have a JSON schema in version 1.0.0 and the next version has the following changes in diff format. Which would be the next version number following semantic versioning principles?
<PASTE_DIFF_HERE>

Next Steps

  • Fix validation errors
  • Check backwards compatibility based on diff
  • React with 👍 to mark the PR as ready

@github-actions
Copy link
Copy Markdown

📋 Schema Check Report

Schema Path: CT/lab_CT.json
Tag Prefix: CT_
Latest Tag for Comparison: unavailable

JSON Schema Check Results

Validate JSON Schema

✅ The schema is valid JSON.

Diff to Latest Release

No previous schema version found.

Next Steps

  • Fix validation errors
  • Check backwards compatibility based on diff
  • React with 👍 to mark the PR as ready

@github-actions
Copy link
Copy Markdown

📋 Schema Check Report

Schema Path: APE-HE/APE_HE_Schema.json
Tag Prefix: APE-HE_
Latest Tag for Comparison: APE-HE_v0.1.0

JSON Schema Check Results

Validate JSON Schema

✅ The schema is valid JSON.

Diff to Latest Release

No difference found to previous version.

Next Steps

  • Fix validation errors
  • Check backwards compatibility based on diff
  • React with 👍 to mark the PR as ready

@gabinoumbe gabinoumbe changed the base branch from main to development November 13, 2025 12:38
@gabinoumbe gabinoumbe changed the base branch from development to main November 13, 2025 12:55
@github-actions
Copy link
Copy Markdown

📋 Schema Check Report

Schema Path: CT/lab_CT.json
Tag Prefix: CT_
Latest Tag for Comparison: unavailable

JSON Schema Check Results

Validate JSON Schema

✅ The schema is valid JSON.

Diff to Latest Release

No previous schema version found.

Next Steps

  • Fix validation errors
  • Check backwards compatibility based on diff
  • React with 👍 to mark the PR as ready

@github-actions
Copy link
Copy Markdown

📋 Schema Check Report

Schema Path: SEM/SEM_schema.json
Tag Prefix: SEM_
Latest Tag for Comparison: SEM_v0.1.0

JSON Schema Check Results

Validate JSON Schema

✅ The schema is valid JSON.

Diff to Latest Release

 {
   $defs: {
     entry: {
       properties: {
         entryID: {
-          $ref: "#/$defs/identifier"
+          $ref: "#/%24defs/identifier"
         }
       }
     }
     revision: {
       properties: {
         revisonID: {
-          $ref: "#/$defs/identifier"
+          $ref: "#/%24defs/identifier"
         }
       }
     }
     institutionDetails: {
       properties: {
         institutionID: {
-          $ref: "#/$defs/identifier"
+          $ref: "#/%24defs/identifier"
         }
       }
     }
     samplePrepType: {
       properties: {
         preparationID: {
-          $ref: "#/$defs/identifier"
+          $ref: "#/%24defs/identifier"
         }
       }
     }
     instrumentDetails: {
       properties: {
         instrumentID: {
-          $ref: "#/$defs/identifier"
+          $ref: "#/%24defs/identifier"
         }
       }
     }
     manufacturerDetails: {
       properties: {
         manufacturerID: {
-          $ref: "#/$defs/identifier"
+          $ref: "#/%24defs/identifier"
         }
       }
     }
     sourceDetails: {
       properties: {
         sourceID: {
-          $ref: "#/$defs/identifier"
+          $ref: "#/%24defs/identifier"
         }
       }
     }
     detectorDetails: {
       properties: {
         detectorID: {
-          $ref: "#/$defs/identifier"
+          $ref: "#/%24defs/identifier"
         }
       }
     }
   }
 }

Tip

To check schema backwards compatibility, you may use any AI chatbot with a prompt like:

Assuming I have two JSON schemas, both are different according to the following diff, are both schemas compatible?
<PASTE_DIFF_HERE>

If you like, you may add additional rendering instructions, e.g.:

Render the result as table showing the changed attributes, a columns to check backward compatibility, > and a column to provide comments on why a certain property is not backwards compatible.

Furthermore, you can also use the diff to get a hint on which schema version to use next:
Assuming I have a JSON schema in version 1.0.0 and the next version has the following changes in diff format. Which would be the next version number following semantic versioning principles?
<PASTE_DIFF_HERE>

Next Steps

  • Fix validation errors
  • Check backwards compatibility based on diff
  • React with 👍 to mark the PR as ready

@github-actions
Copy link
Copy Markdown

📋 Schema Check Report

Schema Path: APE-HE/APE_HE_Schema.json
Tag Prefix: APE-HE_
Latest Tag for Comparison: APE-HE_v0.1.0

JSON Schema Check Results

Validate JSON Schema

✅ The schema is valid JSON.

Diff to Latest Release

No difference found to previous version.

Next Steps

  • Fix validation errors
  • Check backwards compatibility based on diff
  • React with 👍 to mark the PR as ready

@github-actions
Copy link
Copy Markdown

📋 Schema Check Report

Schema Path: TEM/TEM_schema.json
Tag Prefix: TEM_
Latest Tag for Comparison: TEM_v0.1.0

JSON Schema Check Results

Validate JSON Schema

✅ The schema is valid JSON.

Diff to Latest Release

 {
   properties: {
     entryID: {
-      $ref: "#/$defs/identifier"
+      $ref: "#/%24defs/identifier"
     }
   }
   $defs: {
     identifier: {
-      description: "(Optional, NAE) - Details of an identifier element"
+      description: "(Optional) - Details of an identifier element."
       properties: {
         identifierValue: {
-          description: "(Optional, NAE) - a string containing the value of an identifier."
+          description: "(Optional) - String containing the value of an identifier"
         }
         identifierType: {
-          description: "(Optional, NAE) - type of the identifier to be chosen from a controlled list of values -*ROR *GRID *ISNI *URL *DOI *Handle *Internal."
+          description: "(Optional) - Type of the identifier to be selected from: *ROR *GRID *ISNI *URL *DOI *Handle"
           enum: [
             ...
             ...
             ...
             ...
             ...
             ...
-            "Internal"
           ]
         }
       }
     }
     revision: {
       properties: {
         revisonID: {
-          $ref: "#/$defs/identifier"
+          $ref: "#/%24defs/identifier"
         }
       }
     }
     institutionDetails: {
       properties: {
         institutionID: {
-          $ref: "#/$defs/identifier"
+          $ref: "#/%24defs/identifier"
         }
       }
     }
     instrumentDetails: {
       properties: {
         instrumentID: {
-          $ref: "#/$defs/identifier"
+          $ref: "#/%24defs/identifier"
         }
       }
     }
     manufacturerDetails: {
       properties: {
         manufacturerID: {
-          $ref: "#/$defs/identifier"
+          $ref: "#/%24defs/identifier"
         }
       }
     }
     sourceDetails: {
       properties: {
         sourceID: {
-          $ref: "#/$defs/identifier"
+          $ref: "#/%24defs/identifier"
         }
       }
     }
     detectorDetails: {
       properties: {
         detectorID: {
-          $ref: "#/$defs/identifier"
+          $ref: "#/%24defs/identifier"
         }
       }
     }
     spectrometerDetails: {
       properties: {
         spectrometerID: {
-          $ref: "#/$defs/identifier"
+          $ref: "#/%24defs/identifier"
         }
       }
     }
     EDXSDetails: {
       properties: {
         detectorID: {
-          $ref: "#/$defs/identifier"
+          $ref: "#/%24defs/identifier"
         }
       }
     }
   }
 }

Tip

To check schema backwards compatibility, you may use any AI chatbot with a prompt like:

Assuming I have two JSON schemas, both are different according to the following diff, are both schemas compatible?
<PASTE_DIFF_HERE>

If you like, you may add additional rendering instructions, e.g.:

Render the result as table showing the changed attributes, a columns to check backward compatibility, > and a column to provide comments on why a certain property is not backwards compatible.

Furthermore, you can also use the diff to get a hint on which schema version to use next:
Assuming I have a JSON schema in version 1.0.0 and the next version has the following changes in diff format. Which would be the next version number following semantic versioning principles?
<PASTE_DIFF_HERE>

Next Steps

  • Fix validation errors
  • Check backwards compatibility based on diff
  • React with 👍 to mark the PR as ready

@github-actions
Copy link
Copy Markdown

📋 Schema Check Report

Schema Path: SEM-FIB_Tomography/SEM_FIB_Tomography_Acquisition_Main.json
Tag Prefix: SEM-FIB_
Latest Tag for Comparison: SEM-FIB_v0.1.0

JSON Schema Check Results

Validate JSON Schema

✅ The schema is valid JSON.

Diff to Latest Release

 {
   $defs: {
     acquisition: {
       properties: {
         genericMetadata: {
           properties: {
             applicationID: {
-              $ref: "#/$defs/identifier"
+              $ref: "#/%24defs/identifier"
             }
             projectID: {
-              $ref: "#/$defs/identifier"
+              $ref: "#/%24defs/identifier"
             }
           }
         }
         dataset: {
           items: {
             properties: {
               entryID: {
-                $ref: "#/$defs/acquisition/properties/dataset/items/$defs/identifier"
+                $ref: "#/%24defs/identifier"
               }
               user: {
-                $schema: "https://json-schema.org/draft/2019-09/schema"
-                title: "user_description"
                 properties: {
                   affiliation: {
                     properties: {
                       institutionID: {
-                        type: "object"
-                        description: "(Optional) -Identifier of the institution to which the user is affiliated"
-                        properties: {
-                          identifierValue: {
-                            type: "string"
-                            description: "(Optional) - String containing the value of an identifier"
-                          }
-                          identifierType: {
-                            type: "string"
-                            description: "(Optional) - Type of the identifier to be chosen from a controlled list of values (*ROR *GRID *ISNI *URL *DOI *Handle)"
-                            enum: [
-                              "ROR"
-                              "GRID"
-                              "ISNI"
-                              "URL"
-                              "DOI"
-                              "Handle"
-                            ]
-                          }
-                        }
+                        $ref: "#/%24defs/identifier"
                       }
                     }
                   }
                 }
               }
               program: {
-                $ref: "#/$defs/acquisition/properties/dataset/items/$defs/program"
+                $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/program"
               }
               instrument: {
-                $ref: "#/$defs/acquisition/properties/dataset/items/$defs/instrumentDetails"
+                $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/instrumentDetails"
               }
               images: {
                 items: {
                   properties: {
                     entryID: {
-                      $ref: "#/$defs/acquisition/properties/dataset/items/properties/images/items/$defs/identifier"
+                      $ref: "#/%24defs/identifier"
                     }
                     fileLink: {
-                      $ref: "#/$defs/acquisition/properties/dataset/items/properties/images/items/$defs/identifier"
+                      $ref: "#/%24defs/identifier"
                     }
                     stage: {
-                      $ref: "#/$defs/acquisition/properties/dataset/items/properties/images/items/$defs/stage"
+                      $ref: "#/%24defs/acquisition/properties/dataset/items/properties/images/items/%24defs/stage"
                     }
                     vacuum: {
-                      $ref: "#/$defs/acquisition/properties/dataset/items/properties/images/items/$defs/vacuum"
+                      $ref: "#/%24defs/acquisition/properties/dataset/items/properties/images/items/%24defs/vacuum"
                     }
                     temperature: {
-                      $ref: "#/$defs/acquisition/properties/dataset/items/properties/images/items/$defs/temperatureDetails"
+                      $ref: "#/%24defs/acquisition/properties/dataset/items/properties/images/items/%24defs/temperatureDetails"
                     }
                     specimenCurrent: {
-                      $ref: "#/$defs/acquisition/properties/dataset/items/properties/images/items/$defs/currentDetails"
+                      $ref: "#/%24defs/acquisition/properties/dataset/items/properties/images/items/%24defs/currentDetails"
                     }
                   }
                   $defs: {
                     stage: {
                       properties: {
                         workingDistance: {
-                          $ref: "#/$defs/acquisition/properties/dataset/items/properties/images/items/$defs/distanceDetails"
+                          $ref: "#/%24defs/acquisition/properties/dataset/items/properties/images/items/%24defs/distanceDetails"
                         }
                         stageX: {
-                          $ref: "#/$defs/acquisition/properties/dataset/items/properties/images/items/$defs/distanceDetails"
+                          $ref: "#/%24defs/acquisition/properties/dataset/items/properties/images/items/%24defs/distanceDetails"
                         }
                         stageY: {
-                          $ref: "#/$defs/acquisition/properties/dataset/items/properties/images/items/$defs/distanceDetails"
+                          $ref: "#/%24defs/acquisition/properties/dataset/items/properties/images/items/%24defs/distanceDetails"
                         }
                         stageZ: {
-                          $ref: "#/$defs/acquisition/properties/dataset/items/properties/images/items/$defs/distanceDetails"
+                          $ref: "#/%24defs/acquisition/properties/dataset/items/properties/images/items/%24defs/distanceDetails"
                         }
                         stageM: {
-                          $ref: "#/$defs/acquisition/properties/dataset/items/properties/images/items/$defs/distanceDetails"
+                          $ref: "#/%24defs/acquisition/properties/dataset/items/properties/images/items/%24defs/distanceDetails"
                         }
                         stageR: {
-                          $ref: "#/$defs/acquisition/properties/dataset/items/properties/images/items/$defs/angleDetails"
+                          $ref: "#/%24defs/acquisition/properties/dataset/items/properties/images/items/%24defs/angleDetails"
                         }
                         stageTa: {
-                          $ref: "#/$defs/acquisition/properties/dataset/items/properties/images/items/$defs/angleDetails"
+                          $ref: "#/%24defs/acquisition/properties/dataset/items/properties/images/items/%24defs/angleDetails"
                         }
                         stageTb: {
-                          $ref: "#/$defs/acquisition/properties/dataset/items/properties/images/items/$defs/angleDetails"
+                          $ref: "#/%24defs/acquisition/properties/dataset/items/properties/images/items/%24defs/angleDetails"
                         }
                         specTilt: {
-                          $ref: "#/$defs/acquisition/properties/dataset/items/properties/images/items/$defs/angleDetails"
+                          $ref: "#/%24defs/acquisition/properties/dataset/items/properties/images/items/%24defs/angleDetails"
                         }
                       }
                     }
                     vacuum: {
                       properties: {
                         chamberPressure: {
-                          $ref: "#/$defs/acquisition/properties/dataset/items/properties/images/items/$defs/pressureDetails"
+                          $ref: "#/%24defs/acquisition/properties/dataset/items/properties/images/items/%24defs/pressureDetails"
                         }
                       }
                     }
                     identifier: {
-                      type: "object"
-                      description: "(Optional) - Details of an identifier element."
-                      additionalProperties: false
-                      properties: {
-                        identifierValue: {
-                          type: "string"
-                          description: "(Optional) - String containing the value of an identifier"
-                        }
-                        identifierType: {
-                          type: "string"
-                          description: "(Optional) - Type of the identifier to be selected from: *ROR *GRID *ISNI *URL *DOI *Handle *String"
-                          enum: [
-                            "ROR"
-                            "GRID"
-                            "ISNI"
-                            "URL"
-                            "DOI"
-                            "Handle"
-                            "String"
-                          ]
-                        }
-                      }
+                      $ref: "#/%24defs/identifier"
                     }
                   }
                 }
               }
             }
             $defs: {
               instrumentDetails: {
                 properties: {
                   eBeam: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/eBeamDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/eBeamDetails"
                   }
                   iBeam: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/iBeamDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/iBeamDetails"
                   }
                   scan: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/scanDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/scanDetails"
                   }
                   imaging: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/imageDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/imageDetails"
                   }
                   detector: {
                     oneOf: [
                       {
-                        $ref: "#/$defs/acquisition/properties/dataset/items/$defs/detectorDetails"
+                        $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/detectorDetails"
                       }
                       {
                         items: {
-                          $ref: "#/$defs/acquisition/properties/dataset/items/$defs/detectorDetails"
+                          $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/detectorDetails"
                         }
                       }
                     ]
                   }
                   hotStageMEMS: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/hotStageMEMSDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/hotStageMEMSDetails"
                   }
                 }
               }
               identifier: {
-                type: "object"
-                description: "(Optional) - Details of an identifier element."
-                additionalProperties: false
-                properties: {
-                  identifierValue: {
-                    type: "string"
-                    description: "(Optional) - String containing the value of an identifier"
-                  }
-                  identifierType: {
-                    type: "string"
-                    description: "(Optional) - Type of the identifier to be selected from: *ROR *GRID *ISNI *URL *DOI *Handle *String"
-                    enum: [
-                      "ROR"
-                      "GRID"
-                      "ISNI"
-                      "URL"
-                      "DOI"
-                      "Handle"
-                      "String"
-                    ]
-                  }
-                }
+                $ref: "#/%24defs/identifier"
               }
               eBeamDetails: {
                 properties: {
                   accelerationVoltage: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/voltageDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/voltageDetails"
                   }
                   beamCurrent: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/currentDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/currentDetails"
                   }
                   scanRotation: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/angleDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/angleDetails"
                   }
                   apertureSetting: {
                     properties: {
                       size: {
-                        $ref: "#/$defs/acquisition/properties/dataset/items/$defs/distanceDetails"
+                        $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/distanceDetails"
                       }
                       current: {
-                        $ref: "#/$defs/acquisition/properties/dataset/items/$defs/currentDetails"
+                        $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/currentDetails"
                       }
                     }
                   }
                   horizontalFieldWidth: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/distanceDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/distanceDetails"
                   }
                   verticalFieldWidth: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/distanceDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/distanceDetails"
                   }
                   tiltCorrectionAngle: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/angleDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/angleDetails"
                   }
                   preTilt: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/angleDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/angleDetails"
                   }
                 }
               }
               iBeamDetails: {
                 properties: {
                   accelerationVoltage: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/voltageDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/voltageDetails"
                   }
                   millingCurrent: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/currentDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/currentDetails"
                   }
                 }
               }
               scanDetails: {
                 properties: {
                   dwellTime: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/timeDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/timeDetails"
                   }
                   pixelWidth: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/distanceDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/distanceDetails"
                   }
                   pixelHeight: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/distanceDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/distanceDetails"
                   }
                   horizontalFieldSize: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/distanceDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/distanceDetails"
                   }
                   verticalFieldSize: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/distanceDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/distanceDetails"
                   }
                   frameTime: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/timeDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/timeDetails"
                   }
                   eScan: {
                     properties: {
                       lineTime: {
-                        $ref: "#/$defs/acquisition/properties/dataset/items/$defs/timeDetails"
+                        $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/timeDetails"
                       }
                     }
                   }
                 }
               }
               imageDetails: {
                 properties: {
                   numberOfPixels: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/pixelNumberType"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/pixelNumberType"
                   }
                 }
               }
               detectorDetails: {
                 properties: {
                   detectorSettings: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/detectorSettings"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/detectorSettings"
                   }
                 }
               }
               detectorSettings: {
                 properties: {
                   gridVoltage: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/voltageDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/voltageDetails"
                   }
                   frontEndVoltage: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/voltageDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/voltageDetails"
                   }
                   minimumDwellTime: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/timeDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/timeDetails"
                   }
                 }
               }
               hotStageMEMSDetails: {
                 properties: {
                   heatingCurrent: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/currentDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/currentDetails"
                   }
                   heatingVoltage: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/voltageDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/voltageDetails"
                   }
                   targetTemperature: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/temperatureDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/temperatureDetails"
                   }
                   actualTemperature: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/temperatureDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/temperatureDetails"
                   }
                   heatingPower: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/powerDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/powerDetails"
                   }
                   sampleBias: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/voltageDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/voltageDetails"
                   }
                   sampleResistance: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/resistanceDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/resistanceDetails"
                   }
                 }
               }
             }
           }
         }
       }
     }
     identifier: {
       properties: {
         identifierType: {
-          description: "(Optional) - Type of the identifier to be selected from: *ROR *GRID *ISNI *URL *DOI *Handle *String"
+          description: "(Optional) - Type of the identifier to be selected from: *ROR *GRID *ISNI *URL *DOI *Handle"
           enum: [
             ...
             ...
             ...
             ...
             ...
             ...
-            "String"
           ]
         }
       }
     }
   }
 }

Tip

To check schema backwards compatibility, you may use any AI chatbot with a prompt like:

Assuming I have two JSON schemas, both are different according to the following diff, are both schemas compatible?
<PASTE_DIFF_HERE>

If you like, you may add additional rendering instructions, e.g.:

Render the result as table showing the changed attributes, a columns to check backward compatibility, > and a column to provide comments on why a certain property is not backwards compatible.

Furthermore, you can also use the diff to get a hint on which schema version to use next:
Assuming I have a JSON schema in version 1.0.0 and the next version has the following changes in diff format. Which would be the next version number following semantic versioning principles?
<PASTE_DIFF_HERE>

Next Steps

  • Fix validation errors
  • Check backwards compatibility based on diff
  • React with 👍 to mark the PR as ready

@github-actions
Copy link
Copy Markdown

📋 Schema Check Report

Schema Path: MRI/MRI_schema.json
Tag Prefix: MRI_
Latest Tag for Comparison: MRI_v0.1.0

JSON Schema Check Results

Validate JSON Schema

✅ The schema is valid JSON.

Diff to Latest Release

No difference found to previous version.

Next Steps

  • Fix validation errors
  • Check backwards compatibility based on diff
  • React with 👍 to mark the PR as ready

@github-actions
Copy link
Copy Markdown

📋 Schema Check Report

Schema Path: TEM/TEM_schema.json
Tag Prefix: TEM_
Latest Tag for Comparison: TEM_v0.1.0

JSON Schema Check Results

Validate JSON Schema

✅ The schema is valid JSON.

Diff to Latest Release

 {
   properties: {
     entryID: {
-      $ref: "#/$defs/identifier"
+      $ref: "#/%24defs/identifier"
     }
   }
   $defs: {
     identifier: {
-      description: "(Optional, NAE) - Details of an identifier element"
+      description: "(Optional) - Details of an identifier element."
       properties: {
         identifierValue: {
-          description: "(Optional, NAE) - a string containing the value of an identifier."
+          description: "(Optional) - String containing the value of an identifier"
         }
         identifierType: {
-          description: "(Optional, NAE) - type of the identifier to be chosen from a controlled list of values -*ROR *GRID *ISNI *URL *DOI *Handle *Internal."
+          description: "(Optional) - Type of the identifier to be selected from a control list of values."
           enum: [
             ...
             ...
             ...
             ...
             ...
             ...
             ...
+            "String"
           ]
         }
       }
     }
     revision: {
       properties: {
         revisonID: {
-          $ref: "#/$defs/identifier"
+          $ref: "#/%24defs/identifier"
         }
       }
     }
     institutionDetails: {
       properties: {
         institutionID: {
-          $ref: "#/$defs/identifier"
+          $ref: "#/%24defs/identifier"
         }
       }
     }
     instrumentDetails: {
       properties: {
         instrumentID: {
-          $ref: "#/$defs/identifier"
+          $ref: "#/%24defs/identifier"
         }
       }
     }
     manufacturerDetails: {
       properties: {
         manufacturerID: {
-          $ref: "#/$defs/identifier"
+          $ref: "#/%24defs/identifier"
         }
       }
     }
     sourceDetails: {
       properties: {
         sourceID: {
-          $ref: "#/$defs/identifier"
+          $ref: "#/%24defs/identifier"
         }
       }
     }
     detectorDetails: {
       properties: {
         detectorID: {
-          $ref: "#/$defs/identifier"
+          $ref: "#/%24defs/identifier"
         }
       }
     }
     spectrometerDetails: {
       properties: {
         spectrometerID: {
-          $ref: "#/$defs/identifier"
+          $ref: "#/%24defs/identifier"
         }
       }
     }
     EDXSDetails: {
       properties: {
         detectorID: {
-          $ref: "#/$defs/identifier"
+          $ref: "#/%24defs/identifier"
         }
       }
     }
   }
 }

Tip

To check schema backwards compatibility, you may use any AI chatbot with a prompt like:

Assuming I have two JSON schemas, both are different according to the following diff, are both schemas compatible?
<PASTE_DIFF_HERE>

If you like, you may add additional rendering instructions, e.g.:

Render the result as table showing the changed attributes, a columns to check backward compatibility, > and a column to provide comments on why a certain property is not backwards compatible.

Furthermore, you can also use the diff to get a hint on which schema version to use next:
Assuming I have a JSON schema in version 1.0.0 and the next version has the following changes in diff format. Which would be the next version number following semantic versioning principles?
<PASTE_DIFF_HERE>

Next Steps

  • Fix validation errors
  • Check backwards compatibility based on diff
  • React with 👍 to mark the PR as ready

@github-actions
Copy link
Copy Markdown

📋 Schema Check Report

Schema Path: MRI/MRI_schema.json
Tag Prefix: MRI_
Latest Tag for Comparison: MRI_v0.1.0

JSON Schema Check Results

Validate JSON Schema

✅ The schema is valid JSON.

Diff to Latest Release

No difference found to previous version.

Next Steps

  • Fix validation errors
  • Check backwards compatibility based on diff
  • React with 👍 to mark the PR as ready

@github-actions
Copy link
Copy Markdown

📋 Schema Check Report

Schema Path: APE-HE/APE_HE_Schema.json
Tag Prefix: APE-HE_
Latest Tag for Comparison: APE-HE_v0.1.0

JSON Schema Check Results

Validate JSON Schema

✅ The schema is valid JSON.

Diff to Latest Release

No difference found to previous version.

Next Steps

  • Fix validation errors
  • Check backwards compatibility based on diff
  • React with 👍 to mark the PR as ready

@github-actions
Copy link
Copy Markdown

📋 Schema Check Report

Schema Path: SEM/SEM_schema.json
Tag Prefix: SEM_
Latest Tag for Comparison: SEM_v0.1.0

JSON Schema Check Results

Validate JSON Schema

✅ The schema is valid JSON.

Diff to Latest Release

 {
   $defs: {
     entry: {
       properties: {
         entryID: {
-          $ref: "#/$defs/identifier"
+          $ref: "#/%24defs/identifier"
         }
       }
     }
     identifier: {
       properties: {
         identifierType: {
-          description: "(Optional) - Type of the identifier to be selected from: *ROR *GRID *ISNI *URL *DOI *Handle"
+          description: "(Optional) - Type of the identifier to be selected from a control list of values."
           enum: [
             ...
             ...
             ...
             ...
             ...
             ...
+            "Internal"
+            "String"
           ]
         }
       }
     }
     revision: {
       properties: {
         revisonID: {
-          $ref: "#/$defs/identifier"
+          $ref: "#/%24defs/identifier"
         }
       }
     }
     institutionDetails: {
       properties: {
         institutionID: {
-          $ref: "#/$defs/identifier"
+          $ref: "#/%24defs/identifier"
         }
       }
     }
     samplePrepType: {
       properties: {
         preparationID: {
-          $ref: "#/$defs/identifier"
+          $ref: "#/%24defs/identifier"
         }
       }
     }
     instrumentDetails: {
       properties: {
         instrumentID: {
-          $ref: "#/$defs/identifier"
+          $ref: "#/%24defs/identifier"
         }
       }
     }
     manufacturerDetails: {
       properties: {
         manufacturerID: {
-          $ref: "#/$defs/identifier"
+          $ref: "#/%24defs/identifier"
         }
       }
     }
     sourceDetails: {
       properties: {
         sourceID: {
-          $ref: "#/$defs/identifier"
+          $ref: "#/%24defs/identifier"
         }
       }
     }
     detectorDetails: {
       properties: {
         detectorID: {
-          $ref: "#/$defs/identifier"
+          $ref: "#/%24defs/identifier"
         }
       }
     }
   }
 }

Tip

To check schema backwards compatibility, you may use any AI chatbot with a prompt like:

Assuming I have two JSON schemas, both are different according to the following diff, are both schemas compatible?
<PASTE_DIFF_HERE>

If you like, you may add additional rendering instructions, e.g.:

Render the result as table showing the changed attributes, a columns to check backward compatibility, > and a column to provide comments on why a certain property is not backwards compatible.

Furthermore, you can also use the diff to get a hint on which schema version to use next:
Assuming I have a JSON schema in version 1.0.0 and the next version has the following changes in diff format. Which would be the next version number following semantic versioning principles?
<PASTE_DIFF_HERE>

Next Steps

  • Fix validation errors
  • Check backwards compatibility based on diff
  • React with 👍 to mark the PR as ready

@github-actions
Copy link
Copy Markdown

📋 Schema Check Report

Schema Path: CT/lab_CT.json
Tag Prefix: CT_
Latest Tag for Comparison: unavailable

JSON Schema Check Results

Validate JSON Schema

✅ The schema is valid JSON.

Diff to Latest Release

No previous schema version found.

Next Steps

  • Fix validation errors
  • Check backwards compatibility based on diff
  • React with 👍 to mark the PR as ready

@github-actions
Copy link
Copy Markdown

📋 Schema Check Report

Schema Path: SEM-FIB_Tomography/SEM_FIB_Tomography_Acquisition_Main.json
Tag Prefix: SEM-FIB_
Latest Tag for Comparison: SEM-FIB_v0.1.0

JSON Schema Check Results

Validate JSON Schema

✅ The schema is valid JSON.

Diff to Latest Release

 {
   $defs: {
     acquisition: {
       properties: {
         genericMetadata: {
           properties: {
             applicationID: {
-              $ref: "#/$defs/identifier"
+              $ref: "#/%24defs/identifier"
             }
             projectID: {
-              $ref: "#/$defs/identifier"
+              $ref: "#/%24defs/identifier"
             }
           }
         }
         dataset: {
           items: {
             properties: {
               entryID: {
-                $ref: "#/$defs/acquisition/properties/dataset/items/$defs/identifier"
+                $ref: "#/%24defs/identifier"
               }
               user: {
-                $schema: "https://json-schema.org/draft/2019-09/schema"
-                title: "user_description"
                 properties: {
                   affiliation: {
                     properties: {
                       institutionID: {
-                        type: "object"
-                        description: "(Optional) -Identifier of the institution to which the user is affiliated"
-                        properties: {
-                          identifierValue: {
-                            type: "string"
-                            description: "(Optional) - String containing the value of an identifier"
-                          }
-                          identifierType: {
-                            type: "string"
-                            description: "(Optional) - Type of the identifier to be chosen from a controlled list of values (*ROR *GRID *ISNI *URL *DOI *Handle)"
-                            enum: [
-                              "ROR"
-                              "GRID"
-                              "ISNI"
-                              "URL"
-                              "DOI"
-                              "Handle"
-                            ]
-                          }
-                        }
+                        $ref: "#/%24defs/identifier"
                       }
                     }
                   }
                 }
               }
               program: {
-                $ref: "#/$defs/acquisition/properties/dataset/items/$defs/program"
+                $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/program"
               }
               instrument: {
-                $ref: "#/$defs/acquisition/properties/dataset/items/$defs/instrumentDetails"
+                $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/instrumentDetails"
               }
               images: {
                 items: {
                   properties: {
                     entryID: {
-                      $ref: "#/$defs/acquisition/properties/dataset/items/properties/images/items/$defs/identifier"
+                      $ref: "#/%24defs/identifier"
                     }
                     fileLink: {
-                      $ref: "#/$defs/acquisition/properties/dataset/items/properties/images/items/$defs/identifier"
+                      $ref: "#/%24defs/identifier"
                     }
                     stage: {
-                      $ref: "#/$defs/acquisition/properties/dataset/items/properties/images/items/$defs/stage"
+                      $ref: "#/%24defs/acquisition/properties/dataset/items/properties/images/items/%24defs/stage"
                     }
                     vacuum: {
-                      $ref: "#/$defs/acquisition/properties/dataset/items/properties/images/items/$defs/vacuum"
+                      $ref: "#/%24defs/acquisition/properties/dataset/items/properties/images/items/%24defs/vacuum"
                     }
                     temperature: {
-                      $ref: "#/$defs/acquisition/properties/dataset/items/properties/images/items/$defs/temperatureDetails"
+                      $ref: "#/%24defs/acquisition/properties/dataset/items/properties/images/items/%24defs/temperatureDetails"
                     }
                     specimenCurrent: {
-                      $ref: "#/$defs/acquisition/properties/dataset/items/properties/images/items/$defs/currentDetails"
+                      $ref: "#/%24defs/acquisition/properties/dataset/items/properties/images/items/%24defs/currentDetails"
                     }
                   }
                   $defs: {
                     stage: {
                       properties: {
                         workingDistance: {
-                          $ref: "#/$defs/acquisition/properties/dataset/items/properties/images/items/$defs/distanceDetails"
+                          $ref: "#/%24defs/acquisition/properties/dataset/items/properties/images/items/%24defs/distanceDetails"
                         }
                         stageX: {
-                          $ref: "#/$defs/acquisition/properties/dataset/items/properties/images/items/$defs/distanceDetails"
+                          $ref: "#/%24defs/acquisition/properties/dataset/items/properties/images/items/%24defs/distanceDetails"
                         }
                         stageY: {
-                          $ref: "#/$defs/acquisition/properties/dataset/items/properties/images/items/$defs/distanceDetails"
+                          $ref: "#/%24defs/acquisition/properties/dataset/items/properties/images/items/%24defs/distanceDetails"
                         }
                         stageZ: {
-                          $ref: "#/$defs/acquisition/properties/dataset/items/properties/images/items/$defs/distanceDetails"
+                          $ref: "#/%24defs/acquisition/properties/dataset/items/properties/images/items/%24defs/distanceDetails"
                         }
                         stageM: {
-                          $ref: "#/$defs/acquisition/properties/dataset/items/properties/images/items/$defs/distanceDetails"
+                          $ref: "#/%24defs/acquisition/properties/dataset/items/properties/images/items/%24defs/distanceDetails"
                         }
                         stageR: {
-                          $ref: "#/$defs/acquisition/properties/dataset/items/properties/images/items/$defs/angleDetails"
+                          $ref: "#/%24defs/acquisition/properties/dataset/items/properties/images/items/%24defs/angleDetails"
                         }
                         stageTa: {
-                          $ref: "#/$defs/acquisition/properties/dataset/items/properties/images/items/$defs/angleDetails"
+                          $ref: "#/%24defs/acquisition/properties/dataset/items/properties/images/items/%24defs/angleDetails"
                         }
                         stageTb: {
-                          $ref: "#/$defs/acquisition/properties/dataset/items/properties/images/items/$defs/angleDetails"
+                          $ref: "#/%24defs/acquisition/properties/dataset/items/properties/images/items/%24defs/angleDetails"
                         }
                         specTilt: {
-                          $ref: "#/$defs/acquisition/properties/dataset/items/properties/images/items/$defs/angleDetails"
+                          $ref: "#/%24defs/acquisition/properties/dataset/items/properties/images/items/%24defs/angleDetails"
                         }
                       }
                     }
                     vacuum: {
                       properties: {
                         chamberPressure: {
-                          $ref: "#/$defs/acquisition/properties/dataset/items/properties/images/items/$defs/pressureDetails"
+                          $ref: "#/%24defs/acquisition/properties/dataset/items/properties/images/items/%24defs/pressureDetails"
                         }
                       }
                     }
                     identifier: {
-                      type: "object"
-                      description: "(Optional) - Details of an identifier element."
-                      additionalProperties: false
-                      properties: {
-                        identifierValue: {
-                          type: "string"
-                          description: "(Optional) - String containing the value of an identifier"
-                        }
-                        identifierType: {
-                          type: "string"
-                          description: "(Optional) - Type of the identifier to be selected from: *ROR *GRID *ISNI *URL *DOI *Handle *String"
-                          enum: [
-                            "ROR"
-                            "GRID"
-                            "ISNI"
-                            "URL"
-                            "DOI"
-                            "Handle"
-                            "String"
-                          ]
-                        }
-                      }
+                      $ref: "#/%24defs/identifier"
                     }
                   }
                 }
               }
             }
             $defs: {
               instrumentDetails: {
                 properties: {
                   eBeam: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/eBeamDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/eBeamDetails"
                   }
                   iBeam: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/iBeamDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/iBeamDetails"
                   }
                   scan: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/scanDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/scanDetails"
                   }
                   imaging: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/imageDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/imageDetails"
                   }
                   detector: {
                     oneOf: [
                       {
-                        $ref: "#/$defs/acquisition/properties/dataset/items/$defs/detectorDetails"
+                        $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/detectorDetails"
                       }
                       {
                         items: {
-                          $ref: "#/$defs/acquisition/properties/dataset/items/$defs/detectorDetails"
+                          $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/detectorDetails"
                         }
                       }
                     ]
                   }
                   hotStageMEMS: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/hotStageMEMSDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/hotStageMEMSDetails"
                   }
                 }
               }
               identifier: {
-                type: "object"
-                description: "(Optional) - Details of an identifier element."
-                additionalProperties: false
-                properties: {
-                  identifierValue: {
-                    type: "string"
-                    description: "(Optional) - String containing the value of an identifier"
-                  }
-                  identifierType: {
-                    type: "string"
-                    description: "(Optional) - Type of the identifier to be selected from: *ROR *GRID *ISNI *URL *DOI *Handle *String"
-                    enum: [
-                      "ROR"
-                      "GRID"
-                      "ISNI"
-                      "URL"
-                      "DOI"
-                      "Handle"
-                      "String"
-                    ]
-                  }
-                }
+                $ref: "#/%24defs/identifier"
               }
               eBeamDetails: {
                 properties: {
                   accelerationVoltage: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/voltageDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/voltageDetails"
                   }
                   beamCurrent: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/currentDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/currentDetails"
                   }
                   scanRotation: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/angleDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/angleDetails"
                   }
                   apertureSetting: {
                     properties: {
                       size: {
-                        $ref: "#/$defs/acquisition/properties/dataset/items/$defs/distanceDetails"
+                        $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/distanceDetails"
                       }
                       current: {
-                        $ref: "#/$defs/acquisition/properties/dataset/items/$defs/currentDetails"
+                        $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/currentDetails"
                       }
                     }
                   }
                   horizontalFieldWidth: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/distanceDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/distanceDetails"
                   }
                   verticalFieldWidth: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/distanceDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/distanceDetails"
                   }
                   tiltCorrectionAngle: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/angleDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/angleDetails"
                   }
                   preTilt: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/angleDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/angleDetails"
                   }
                 }
               }
               iBeamDetails: {
                 properties: {
                   accelerationVoltage: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/voltageDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/voltageDetails"
                   }
                   millingCurrent: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/currentDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/currentDetails"
                   }
                 }
               }
               scanDetails: {
                 properties: {
                   dwellTime: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/timeDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/timeDetails"
                   }
                   pixelWidth: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/distanceDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/distanceDetails"
                   }
                   pixelHeight: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/distanceDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/distanceDetails"
                   }
                   horizontalFieldSize: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/distanceDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/distanceDetails"
                   }
                   verticalFieldSize: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/distanceDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/distanceDetails"
                   }
                   frameTime: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/timeDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/timeDetails"
                   }
                   eScan: {
                     properties: {
                       lineTime: {
-                        $ref: "#/$defs/acquisition/properties/dataset/items/$defs/timeDetails"
+                        $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/timeDetails"
                       }
                     }
                   }
                 }
               }
               imageDetails: {
                 properties: {
                   numberOfPixels: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/pixelNumberType"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/pixelNumberType"
                   }
                 }
               }
               detectorDetails: {
                 properties: {
                   detectorSettings: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/detectorSettings"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/detectorSettings"
                   }
                 }
               }
               detectorSettings: {
                 properties: {
                   gridVoltage: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/voltageDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/voltageDetails"
                   }
                   frontEndVoltage: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/voltageDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/voltageDetails"
                   }
                   minimumDwellTime: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/timeDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/timeDetails"
                   }
                 }
               }
               hotStageMEMSDetails: {
                 properties: {
                   heatingCurrent: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/currentDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/currentDetails"
                   }
                   heatingVoltage: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/voltageDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/voltageDetails"
                   }
                   targetTemperature: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/temperatureDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/temperatureDetails"
                   }
                   actualTemperature: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/temperatureDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/temperatureDetails"
                   }
                   heatingPower: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/powerDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/powerDetails"
                   }
                   sampleBias: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/voltageDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/voltageDetails"
                   }
                   sampleResistance: {
-                    $ref: "#/$defs/acquisition/properties/dataset/items/$defs/resistanceDetails"
+                    $ref: "#/%24defs/acquisition/properties/dataset/items/%24defs/resistanceDetails"
                   }
                 }
               }
             }
           }
         }
       }
     }
     identifier: {
       properties: {
         identifierType: {
-          description: "(Optional) - Type of the identifier to be selected from: *ROR *GRID *ISNI *URL *DOI *Handle *String"
+          description: "(Optional) - Type of the identifier to be selected from a control list of values."
           enum: [
             ...
             ...
             ...
             ...
             ...
             ...
+            "Internal"
             ...
           ]
         }
       }
     }
   }
 }

Tip

To check schema backwards compatibility, you may use any AI chatbot with a prompt like:

Assuming I have two JSON schemas, both are different according to the following diff, are both schemas compatible?
<PASTE_DIFF_HERE>

If you like, you may add additional rendering instructions, e.g.:

Render the result as table showing the changed attributes, a columns to check backward compatibility, > and a column to provide comments on why a certain property is not backwards compatible.

Furthermore, you can also use the diff to get a hint on which schema version to use next:
Assuming I have a JSON schema in version 1.0.0 and the next version has the following changes in diff format. Which would be the next version number following semantic versioning principles?
<PASTE_DIFF_HERE>

Next Steps

  • Fix validation errors
  • Check backwards compatibility based on diff
  • React with 👍 to mark the PR as ready

@GGoetzelmann GGoetzelmann changed the title Merge dev_ext_id_description into development Use pointers to external schema definitions for user and identifier descriptions Nov 13, 2025
# Conflicts:
#	.github/workflows/schema-check.yml
@github-actions
Copy link
Copy Markdown

📋 Schema Check Report

Schema Path: CT/lab_CT.json
Tag Prefix: CT_
Latest Tag for Comparison: unavailable

JSON Schema Check Results

Validate JSON Schema

✅ The schema is valid JSON.

Diff to Latest Release

No previous schema version found.

Next Steps

  • Fix validation errors
  • Check backwards compatibility based on diff
  • React with 👍 to mark the PR as ready

@github-actions
Copy link
Copy Markdown

📋 Schema Check Report

Schema Path: MRI/MRI_schema.json
Tag Prefix: MRI_
Latest Tag for Comparison: MRI_v0.1.0

JSON Schema Check Results

Validate JSON Schema

✅ The schema is valid JSON.

Diff to Latest Release

No difference found to previous version.

Next Steps

  • Fix validation errors
  • Check backwards compatibility based on diff
  • React with 👍 to mark the PR as ready

@github-actions
Copy link
Copy Markdown

📋 Schema Check Report

Schema Path: TEM/TEM_schema.json
Tag Prefix: TEM_
Latest Tag for Comparison: TEM_v0.1.0

JSON Schema Check Results

Validate JSON Schema

✅ The schema is valid JSON.

Diff to Latest Release

 {
   $defs: {
     identifier: {
-      description: "(Optional, NAE) - Details of an identifier element"
+      description: "(Optional) - Details of an identifier element."
       properties: {
         identifierValue: {
-          description: "(Optional, NAE) - a string containing the value of an identifier."
+          description: "(Optional) - String containing the value of an identifier"
         }
         identifierType: {
-          description: "(Optional, NAE) - type of the identifier to be chosen from a controlled list of values -*ROR *GRID *ISNI *URL *DOI *Handle *Internal."
+          description: "(Optional) - Type of the identifier to be selected from a control list of values."
           enum: [
             ...
             ...
             ...
             ...
             ...
             ...
             ...
+            "String"
           ]
         }
       }
     }
   }
 }

Tip

To check schema backwards compatibility, you may use any AI chatbot with a prompt like:

Assuming I have two JSON schemas, both are different according to the following diff, are both schemas compatible?
<PASTE_DIFF_HERE>

If you like, you may add additional rendering instructions, e.g.:

Render the result as table showing the changed attributes, a columns to check backward compatibility, > and a column to provide comments on why a certain property is not backwards compatible.

Furthermore, you can also use the diff to get a hint on which schema version to use next:
Assuming I have a JSON schema in version 1.0.0 and the next version has the following changes in diff format. Which would be the next version number following semantic versioning principles?
<PASTE_DIFF_HERE>

Next Steps

  • Fix validation errors
  • Check backwards compatibility based on diff
  • React with 👍 to mark the PR as ready

@github-actions
Copy link
Copy Markdown

📋 Schema Check Report

Schema Path: APE-HE/APE_HE_Schema.json
Tag Prefix: APE-HE_
Latest Tag for Comparison: APE-HE_v0.1.0

JSON Schema Check Results

Validate JSON Schema

✅ The schema is valid JSON.

Diff to Latest Release

No difference found to previous version.

Next Steps

  • Fix validation errors
  • Check backwards compatibility based on diff
  • React with 👍 to mark the PR as ready

@github-actions
Copy link
Copy Markdown

📋 Schema Check Report

Schema Path: SEM-FIB_Tomography/SEM_FIB_Tomography_Acquisition_Main.json
Tag Prefix: SEM-FIB_
Latest Tag for Comparison: SEM-FIB_v0.1.0

JSON Schema Check Results

Validate JSON Schema

✅ The schema is valid JSON.

Diff to Latest Release

 {
   $defs: {
     acquisition: {
       properties: {
         dataset: {
           items: {
             properties: {
               entryID: {
-                $ref: "#/$defs/acquisition/properties/dataset/items/$defs/identifier"
+                $ref: "#/$defs/identifier"
               }
               user: {
-                $schema: "https://json-schema.org/draft/2019-09/schema"
-                title: "user_description"
                 properties: {
                   affiliation: {
                     properties: {
                       institutionID: {
-                        type: "object"
-                        description: "(Optional) -Identifier of the institution to which the user is affiliated"
-                        properties: {
-                          identifierValue: {
-                            type: "string"
-                            description: "(Optional) - String containing the value of an identifier"
-                          }
-                          identifierType: {
-                            type: "string"
-                            description: "(Optional) - Type of the identifier to be chosen from a controlled list of values (*ROR *GRID *ISNI *URL *DOI *Handle)"
-                            enum: [
-                              "ROR"
-                              "GRID"
-                              "ISNI"
-                              "URL"
-                              "DOI"
-                              "Handle"
-                            ]
-                          }
-                        }
+                        $ref: "#/$defs/identifier"
                       }
                     }
                   }
                 }
               }
               images: {
                 items: {
                   properties: {
                     entryID: {
-                      $ref: "#/$defs/acquisition/properties/dataset/items/properties/images/items/$defs/identifier"
+                      $ref: "#/$defs/identifier"
                     }
                     fileLink: {
-                      $ref: "#/$defs/acquisition/properties/dataset/items/properties/images/items/$defs/identifier"
+                      $ref: "#/$defs/identifier"
                     }
                   }
                   $defs: {
                     identifier: {
-                      type: "object"
-                      description: "(Optional) - Details of an identifier element."
-                      additionalProperties: false
-                      properties: {
-                        identifierValue: {
-                          type: "string"
-                          description: "(Optional) - String containing the value of an identifier"
-                        }
-                        identifierType: {
-                          type: "string"
-                          description: "(Optional) - Type of the identifier to be selected from: *ROR *GRID *ISNI *URL *DOI *Handle *String"
-                          enum: [
-                            "ROR"
-                            "GRID"
-                            "ISNI"
-                            "URL"
-                            "DOI"
-                            "Handle"
-                            "String"
-                          ]
-                        }
-                      }
+                      $ref: "#/$defs/identifier"
                     }
                   }
                 }
               }
             }
             $defs: {
               identifier: {
-                type: "object"
-                description: "(Optional) - Details of an identifier element."
-                additionalProperties: false
-                properties: {
-                  identifierValue: {
-                    type: "string"
-                    description: "(Optional) - String containing the value of an identifier"
-                  }
-                  identifierType: {
-                    type: "string"
-                    description: "(Optional) - Type of the identifier to be selected from: *ROR *GRID *ISNI *URL *DOI *Handle *String"
-                    enum: [
-                      "ROR"
-                      "GRID"
-                      "ISNI"
-                      "URL"
-                      "DOI"
-                      "Handle"
-                      "String"
-                    ]
-                  }
-                }
+                $ref: "#/$defs/identifier"
               }
             }
           }
         }
       }
     }
     identifier: {
       properties: {
         identifierType: {
-          description: "(Optional) - Type of the identifier to be selected from: *ROR *GRID *ISNI *URL *DOI *Handle *String"
+          description: "(Optional) - Type of the identifier to be selected from a control list of values."
           enum: [
             ...
             ...
             ...
             ...
             ...
             ...
+            "Internal"
             ...
           ]
         }
       }
     }
   }
 }

Tip

To check schema backwards compatibility, you may use any AI chatbot with a prompt like:

Assuming I have two JSON schemas, both are different according to the following diff, are both schemas compatible?
<PASTE_DIFF_HERE>

If you like, you may add additional rendering instructions, e.g.:

Render the result as table showing the changed attributes, a columns to check backward compatibility, > and a column to provide comments on why a certain property is not backwards compatible.

Furthermore, you can also use the diff to get a hint on which schema version to use next:
Assuming I have a JSON schema in version 1.0.0 and the next version has the following changes in diff format. Which would be the next version number following semantic versioning principles?
<PASTE_DIFF_HERE>

Next Steps

  • Fix validation errors
  • Check backwards compatibility based on diff
  • React with 👍 to mark the PR as ready

@github-actions
Copy link
Copy Markdown

📋 Schema Check Report

Schema Path: SEM/SEM_schema.json
Tag Prefix: SEM_
Latest Tag for Comparison: SEM_v0.1.0

JSON Schema Check Results

Validate JSON Schema

✅ The schema is valid JSON.

Diff to Latest Release

 {
   $defs: {
     identifier: {
       properties: {
         identifierType: {
-          description: "(Optional) - Type of the identifier to be selected from: *ROR *GRID *ISNI *URL *DOI *Handle"
+          description: "(Optional) - Type of the identifier to be selected from a control list of values."
           enum: [
             ...
             ...
             ...
             ...
             ...
             ...
+            "Internal"
+            "String"
           ]
         }
       }
     }
   }
 }

Tip

To check schema backwards compatibility, you may use any AI chatbot with a prompt like:

Assuming I have two JSON schemas, both are different according to the following diff, are both schemas compatible?
<PASTE_DIFF_HERE>

If you like, you may add additional rendering instructions, e.g.:

Render the result as table showing the changed attributes, a columns to check backward compatibility, > and a column to provide comments on why a certain property is not backwards compatible.

Furthermore, you can also use the diff to get a hint on which schema version to use next:
Assuming I have a JSON schema in version 1.0.0 and the next version has the following changes in diff format. Which would be the next version number following semantic versioning principles?
<PASTE_DIFF_HERE>

Next Steps

  • Fix validation errors
  • Check backwards compatibility based on diff
  • React with 👍 to mark the PR as ready

@GGoetzelmann
Copy link
Copy Markdown
Contributor

we wanted to externalize reused parts without major side effects in the schemas - some reordering would have been fine.
But now we see that we have minor divergence between the identifier enum and the identifier description (TEM schema).

Additionally, some schemas currently have a more homebrew version for user.

We need to discuss on how to proceed, since this change will either extend the identifier enum for multiple schemas with a new value String (that I really dislike personally) or we will introduce a breaking change for SEM-FIB-Tomo schema.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants