A JSD document has the following properties:
$schema
The “$schema” property is of type “string” and formally identifies the schema of the JSD document and takes the form of a URI. The URI of the current version of JSD is “https://whitecottage.org.uk/JSD/2025-06/”.
The “$schema” property is mandatory.
target-schema
The “target-schema” property is of type “string” and formally identifies the schema that is being defined by the JSD document and, therefore, also takes the form of a URI.
The “target-schema” property is mandatory.
schema-location
The “schema-location” property is of type “string” and identifies the location of the JSD document of the target schema as a URL.
The “schema-location” property is optional.
import
The “import” property is of type “string” that identifies an external JSD document whose classes are to be imported into the target schema as a URL relative to the importing JSD document.
The “import” property is optional.
imports
The “imports” property is an array of strings that identify external JSD documents whose classes are to be imported into the target schema. Each entry in the array is a URL relative to the importing JSD document.
The “imports” property is optional.
classes
The “classes” property is an array of named class definitions, as defined by the JSD class “class”.
The “classes” property is optional.
root
The “root” property is an object of class “type-specifier” that defines the type of the root of the target schema.
The “root” property is optional. If it is not present, the JSD document can only be used for defining reusable class definitions to be imported, but cannot, itself, represent a complete schema.