Any
type: NodeShape
comment: A scalar value: float, integer, string, or boolean. Used for slots that accept literals of any primitive type, such as argument values which may be numbers, strings, references, or booleans.
closed: true
ignored properties: type

LossFunction
type: NodeShape
comment: A loss function for optimization with optional aggregation. Extends Function with aggregation specification for per-element losses.
closed: true
ignored properties: type
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 6
  path: definition
property:
  class: Function
  description: Simple input reference: name of previous function's output in pipeline. For multi-argument functions, use arguments with value references instead.
  max count: 1
  node kind: IRI
  order: 9
  path: input
property:
  class: SoftwareRequirement
  node kind: IRI
  order: 8
  path: requirements
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 13
  path: source code
property:
  class: Callable
  description: Software implementation reference (if software-based)
  max count: 1
  node kind: IRI
  order: 14
  path: callable
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 3
  path: label
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 7
  path: description
property:
  class: Aggregation
  description: How to aggregate the loss across dimensions. Example: aggregate.over=node, aggregate.type=mean computes loss per node, then averages.
  max count: 1
  node kind: BlankNodeOrIRI
  order: 0
  path: aggregate
property:
  description: Optional stable IRI (or compact URI) for this entity in an external ontology or knowledge base. Used to load metadata from an external source; not required when the entity is fully self-contained (equations, parameters, etc. defined in the file itself).
  max count: 1
  node kind: IRI
  order: 4
  path: identifier
property:
  class: Range
  description: Time range for generated TimeSeries (for kernel generators). Equation is evaluated at each time point.
  max count: 1
  node kind: BlankNodeOrIRI
  order: 16
  path: time range
property:
  datatype: string
  description: Globally unique identifier for the entity.
  max count: 1
  min count: 1
  node kind: Literal
  order: 1
  path: name
property:
  description: Which dimension to apply the transformation on
  in: time
  in: state
  in: node
  in: region
  in: mode
  in: sample
  in: batch
  in: frequency
  max count: 1
  order: 15
  path: apply on dimension
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 2
  path: notation
property:
  class: Argument
  description: Variables consumed by the function (referenced in the equation). Each argument has a name and optional metadata (description, default value, unit).
  node kind: IRI
  order: 11
  path: arguments
property:
  datatype: string
  description: Name for this function's output (referenced by subsequent functions)
  max count: 1
  node kind: Literal
  order: 10
  path: output
property:
  class: Equation
  max count: 1
  node kind: BlankNodeOrIRI
  order: 5
  path: Equation
property:
  class: Equation
  description: Output transformation equation (if equation-based)
  max count: 1
  node kind: BlankNodeOrIRI
  order: 12
  path: output equation

SimulationStudy
type: NodeShape
closed: true
ignored properties: type
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 1
  path: wasDerivedFrom
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 5
  path: title
property:
  class: Dynamics
  max count: 1
  node kind: IRI
  order: 2
  path: model
property:
  class: Simulation
  node kind: IRI
  order: 9
  path: simulation experiments
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 7
  path: doi
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 4
  path: key
property:
  class: Sample
  max count: 1
  node kind: BlankNodeOrIRI
  order: 8
  path: sample
property:
  datatype: integer
  max count: 1
  node kind: Literal
  order: 6
  path: issued
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 0
  path: label
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 3
  path: description

TemporalApplicableEquation
type: NodeShape
closed: true
ignored properties: type
property:
  datatype: boolean
  max count: 1
  node kind: Literal
  order: 1
  path: time dependent
property:
  class: SoftwareRequirement
  description: Primary engine (must appear in environment.requirements; migration target replacing deprecated 'software').
  max count: 1
  node kind: IRI
  order: 8
  path: engine
property:
  datatype: string
  description: Python code for the equation.
  max count: 1
  node kind: Literal
  order: 9
  path: pycode
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 2
  path: label
property:
  class: Parameter
  node kind: IRI
  order: 0
  path: parameters
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 3
  path: definition
property:
  class: ConditionalBlock
  description: Conditional logic for piecewise equations.
  node kind: BlankNodeOrIRI
  order: 7
  path: conditionals
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 6
  path: righthandside
property:
  datatype: boolean
  max count: 1
  node kind: Literal
  order: 10
  path: latex
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 5
  path: lefthandside
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 4
  path: description

DBSDataset
type: NodeShape
comment: Collection of data related to a specific DBS study.
closed: true
ignored properties: type
property:
  datatype: string
  description: DOI or citation for this dataset.
  max count: 1
  node kind: Literal
  order: 8
  path: references
property:
  datatype: string
  description: Path to BIDS dataset root directory. When set, subject networks and empirical data paths are resolved relative to this root.
  max count: 1
  node kind: Literal
  order: 6
  path: bids root
property:
  datatype: string
  description: Human-readable dataset name.
  max count: 1
  node kind: Literal
  order: 4
  path: label
property:
  class: Transformation
  max count: 1
  node kind: IRI
  order: 1
  path: coordinate space
property:
  class: DBSSubject
  description: Subjects in a dataset.
  node kind: IRI
  order: 3
  path: subjects
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 5
  path: description
property:
  class: ClinicalScore
  node kind: BlankNodeOrIRI
  order: 0
  path: clinical scores
property:
  datatype: string
  description: Unique identifier for the dataset.
  max count: 1
  min count: 1
  node kind: Literal
  order: 2
  path: identifier
property:
  datatype: string
  description: Global condition labels applied across all subjects (e.g., ['rest', 'task-nback', 'task-motor']).
  node kind: Literal
  order: 7
  path: conditions

Atlas
type: NodeShape
comment: A schema for representing a version of a brain atlas.
closed: true
ignored properties: type
property:
  datatype: string
  node kind: Literal
  order: 3
  path: creator
property:
  datatype: string
  description: Enter the version identifier of this brain atlas or coordinate space version.
  max count: 1
  node kind: Literal
  order: 5
  path: hasVersion
property:
  class: parcellationTerminology
  description: Add the parcellation terminology version used for this brain atlas version.
  max count: 1
  node kind: BlankNodeOrIRI
  order: 6
  path: terminology
property:
  datatype: string
  description: Globally unique identifier for the entity.
  max count: 1
  min count: 1
  node kind: Literal
  order: 1
  path: name
property:
  datatype: string
  description: Linked type for the version of a brain atlas or coordinate space.
  max count: 1
  node kind: Literal
  order: 4
  path: isVersionOf
property:
  class: Transformation
  description: Common coordinate space (e.g. FSLMNI152, MNI152NLin2009cAsym). Reference by name; the CommonCoordinateSpace must be defined in tvbo/database/coordinate_spaces/ (or future equivalent location).
  max count: 1
  node kind: IRI
  order: 0
  path: coordinateSpace
property:
  datatype: string
  description: Slot for the abbreviation of a resource.
  max count: 1
  node kind: Literal
  order: 2
  path: notation

parcellationTerminology
type: NodeShape
comment: A schema for representing a parcellation terminology, which consists of parcellation entities.
closed: true
ignored properties: type
property:
  datatype: string
  description: Enter the version identifier of this brain atlas or coordinate space version.
  max count: 1
  node kind: Literal
  order: 3
  path: hasVersion
property:
  class: Region
  node kind: IRI
  order: 4
  path: entities
property:
  datatype: string
  description: Enter the internationalized resource identifier (IRI) to the related ontological terms.
  node kind: Literal
  order: 2
  path: hasIlxId
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 0
  path: label
property:
  datatype: string
  description: Add the location of the data file containing the parcellation terminology.
  max count: 1
  node kind: Literal
  order: 1
  path: dataLocation

Entity
type: NodeShape
comment: W3C PROV-O aligned provenance. Reusable on any entity (Network, TimeSeries, Dynamics, etc.).
closed: true
ignored properties: type
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 3
  path: license
property:
  datatype: string
  node kind: Literal
  order: 1
  path: references
property:
  datatype: string
  description: Software/agent identifier (prov:wasGeneratedBy)
  max count: 1
  node kind: Literal
  order: 4
  path: generated by
property:
  datatype: string
  description: ISO 8601 (prov:generatedAtTime)
  max count: 1
  node kind: Literal
  order: 2
  path: date created
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 0
  path: wasDerivedFrom

AlgorithmInclude
type: NodeShape
comment: Reference to an included algorithm with optional argument overrides. Allows combining algorithms with different hyperparameter values.
closed: true
ignored properties: type
property:
  class: Algorithm
  description: Reference to the algorithm to include
  max count: 1
  min count: 1
  node kind: IRI
  order: 0
  path: algorithm
property:
  class: Parameter
  description: Override hyperparameter values for the included algorithm. Maps parameter names to new values.
  node kind: IRI
  order: 1
  path: arguments

BidsEntities
type: NodeShape
comment: BIDS filename entities (BEP017-aligned) for provenance and data discovery. Reusable on Network, BrainAtlas, Tractogram, or any dataset with BIDS-conformant naming.
closed: true
ignored properties: type
property:
  datatype: string
  description: BIDS scale- entity (BEP017, e.g., 1000)
  max count: 1
  node kind: Literal
  order: 4
  path: scale
property:
  datatype: string
  description: BIDS tpl- entity (e.g., FSLMNI152, MNI152NLin2009cAsym)
  max count: 1
  node kind: Literal
  order: 0
  path: template
property:
  datatype: string
  description: BIDS acq- entity (e.g., EEGstandard1005, MEGBrainstorm)
  max count: 1
  node kind: Literal
  order: 6
  path: acquisition
property:
  datatype: string
  description: BIDS seg- entity (e.g., ordered, ranked, 17Networks)
  max count: 1
  node kind: Literal
  order: 3
  path: segmentation
property:
  datatype: string
  description: BIDS atlas- entity (e.g., Schaefer2018, HCPMMP1)
  max count: 1
  node kind: Literal
  order: 5
  path: atlas
property:
  datatype: string
  description: BIDS rec- entity (e.g., dTOR)
  max count: 1
  node kind: Literal
  order: 2
  path: reconstruction
property:
  datatype: string
  description: BIDS hemi- entity (L or R) for hemisphere-specific surface/volume data
  max count: 1
  node kind: Literal
  order: 7
  path: hemi
property:
  datatype: string
  description: BIDS cohort- entity (e.g., HCPYA, PPMI85)
  max count: 1
  node kind: Literal
  order: 1
  path: cohort

BranchSwitch
type: NodeShape
comment: Specification for switching from a detected bifurcation point to a new branch (periodic orbits from Hopf, fold continuation, etc.). Each BranchSwitch says: "from which special point on the parent branch, continue what kind of object, with what settings." Override parent solver settings via the inline continuation field — only explicitly set attributes take effect; everything else is inherited from the parent Continuation.
closed: true
ignored properties: type
property:
  class: Continuation
  description: Override solver settings for this branch. Uses the same Continuation type — only explicitly set attributes override the parent's values.
  max count: 1
  node kind: IRI
  order: 5
  path: continuation
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 1
  path: description
property:
  datatype: string
  description: Which bifurcation point to start from. Syntax: - 'hopf:-1' = last Hopf (default) - 'hopf:all' = all Hopf points - 'hopf:1' = first Hopf - 'fold:2' = second fold - integer = specific special point index
  max count: 1
  node kind: Literal
  order: 3
  path: source point
property:
  class: Option
  description: Toolkit-specific string options for this branch (linear solver, etc.).
  node kind: IRI
  order: 8
  path: options
property:
  datatype: float
  description: Initial parameter offset from the bifurcation point.
  max count: 1
  node kind: Literal
  order: 4
  path: delta p
property:
  datatype: string
  description: Globally unique identifier for the entity.
  max count: 1
  min count: 1
  node kind: Literal
  order: 0
  path: name
property:
  class: Discretization
  description: Discretization method for the branch solution. Required for periodic orbit branches (Hopf → PO). Not needed for codim-2 branches (fold/Hopf continuation).
  max count: 1
  node kind: BlankNodeOrIRI
  order: 6
  path: discretization
property:
  datatype: boolean
  description: Continue branch in both directions.
  max count: 1
  node kind: Literal
  order: 7
  path: bothside
property:
  class: Parameter
  node kind: IRI
  order: 2
  path: parameters

Case
type: NodeShape
closed: true
ignored properties: type
property:
  class: Equation
  max count: 1
  node kind: BlankNodeOrIRI
  order: 1
  path: equation
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 0
  path: condition

CouplingInput
type: NodeShape
comment: Specification of a coupling input channel for multi-coupling dynamics
closed: true
ignored properties: type
property:
  datatype: integer
  default value: 1
  description: Dimensionality of the coupling input (number of coupled values)
  max count: 1
  node kind: Literal
  order: 3
  path: dimension
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 1
  path: description
property:
  datatype: string
  description: Named keys for multi-dimensional coupling. When dimension > 1, provides symbolic names for each index (e.g., keys: [lre, ffi] for dimension: 2). Used in equations as variable names.
  node kind: Literal
  order: 4
  path: keys
property:
  datatype: string
  description: Name of the coupling function that feeds this input. When omitted, resolved automatically: (1) same name as a coupling function → direct match, (2) single coupling input and single coupling function → auto-mapped, (3) multiple of each → positional order.
  max count: 1
  node kind: Literal
  order: 2
  path: source
property:
  datatype: string
  description: Globally unique identifier for the entity.
  max count: 1
  min count: 1
  node kind: Literal
  order: 0
  path: name

DerivedObservation
type: NodeShape
comment: Observation derived from one or more other observations. Examples: - fc (from bold) - single source transformation - fc_corr (from fc and fc_target) - multi-source comparison Unlike regular Observations, these don't generate monitor classes but are computed from existing observation values.
closed: true
ignored properties: type
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 3
  path: label
property:
  class: FunctionCall
  description: Ordered sequence of Functions. Each step has a unique `name` (used to key step outputs) and transforms input -> output. List form preserves execution order.
  node kind: BlankNodeOrIRI
  order: 20
  path: pipeline
property:
  description: Type of imaging modality (BOLD, EEG, MEG, etc.)
  in: BOLD
  in: EEG
  in: MEG
  in: SEEG
  in: IEEG
  max count: 1
  order: 13
  path: imaging modality
property:
  default value: ms
  description: Time unit for the integration / simulation. Determines the physical time meaning of one model time-step.
  in: SEC
  in: MilliSEC
  in: MicroSEC
  in: PER-SEC
  in: PER-MilliSEC
  in: HZ
  in: KiloHZ
  in: http://qudt.org/vocab/unit/V
  in: MilliV
  in: PER-MilliV
  in: MilliV-PER-MilliSEC
  in: MilliV-PER-SEC
  in: http://qudt.org/vocab/unit/A
  in: NanoA
  in: PicoA
  in: uA_per_cm2
  in: PicoFARAD
  in: NanoFARAD
  in: uF_per_cm2
  in: NanoS
  in: MicroS
  in: PicoS
  in: S_per_cm2
  in: mS_per_cm2
  in: S_per_m2
  in: nS_per_mV
  in: PER-NanoC
  in: PER-PicoC
  in: MOL-PER-M3
  in: mol_per_cm3
  in: MilliMOL-PER-M3
  in: mol_per_m_per_A_per_s
  in: MicroM3
  in: http://qudt.org/vocab/unit/M
  in: MilliM
  in: CentiM
  in: M-PER-SEC
  in: MilliM-PER-MilliSEC
  in: Hz_per_nA
  in: S-PER-M
  in: H-PER-M
  in: OHM
  in: Mohm
  in: kohm_cm
  in: DEG C
  in: rad_per_ms
  in: UNITLESS
  in: PERCENT
  in: arbitrary_unit
  in: KiloGM
  in: kg_per_s
  in: M-PER-SEC2
  in: N-PER-M
  in: RAD
  in: RAD-PER-SEC
  in: SEC2
  in: per_unit
  max count: 1
  order: 8
  path: time scale
property:
  class: Parameter
  node kind: IRI
  order: 6
  path: parameters
property:
  datatype: float
  description: Sampling period for monitors (ms). For BOLD: TR in ms.
  max count: 1
  node kind: Literal
  order: 10
  path: period
property:
  datatype: integer
  description: Number of samples to skip at the start (transient removal). For FC: typically 10-20 TRs.
  max count: 1
  node kind: Literal
  order: 16
  path: skip t
property:
  class: StateVariable
  description: State variable to observe (e.g., S_e for excitatory activity). For observations derived from other observations, use DerivedObservation.
  max count: 1
  node kind: IRI
  order: 9
  path: source
property:
  class: DataSource
  description: Load data from external source (file, database, API). When specified, this observation represents empirical/external data rather than simulated data. Enables unified treatment of all data.
  max count: 1
  node kind: IRI
  order: 15
  path: data source
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 2
  path: notation
property:
  class: Equation
  max count: 1
  node kind: BlankNodeOrIRI
  order: 5
  path: Equation
property:
  datatype: float
  description: Intermediate downsampling period (ms). For BOLD: typically matches dt.
  max count: 1
  node kind: Literal
  order: 11
  path: downsample period
property:
  class: Observation
  description: One or more observations to derive from. For transformations (e.g., fc from bold), use single source. For comparisons (e.g., fc_corr from fc and fc_target), use multiple sources. Order may matter for asymmetric operations.
  min count: 1
  node kind: IRI
  order: 0
  path: source observations
property:
  description: How to aggregate over time
  in: mean
  in: last
  in: first
  in: window
  in: none
  max count: 1
  order: 18
  path: aggregation
property:
  datatype: integer
  description: Number of samples from the end to use. Takes the last N samples before aggregation. E.g., tail_samples: 500 means use data[-500:].
  max count: 1
  node kind: Literal
  order: 17
  path: tail samples
property:
  datatype: string
  description: Globally unique identifier for the entity.
  max count: 1
  min count: 1
  node kind: Literal
  order: 1
  path: name
property:
  class: ClassReference
  description: Direct class reference (alternative to pipeline). Use for external library classes like tvboptim.Bold, custom monitors, or any callable class. The class is instantiated with constructor_args and called with call_args. Example: {name: Bold, module: tvboptim.observations.tvb_monitors.bold, constructor_args: [{name: period, value: 1000.0}]}
  max count: 1
  node kind: IRI
  order: 21
  path: class reference
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 4
  path: description
property:
  datatype: integer
  description: Variable of interest index (which state variable to monitor). Default: 0.
  max count: 1
  node kind: Literal
  order: 12
  path: voi
property:
  datatype: integer
  description: Number of samples for windowed aggregation
  max count: 1
  node kind: Literal
  order: 19
  path: window size

DifferentialOperator
type: NodeShape
closed: true
ignored properties: type
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 0
  path: label
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 1
  path: definition
property:
  class: Equation
  max count: 1
  node kind: BlankNodeOrIRI
  order: 2
  path: Equation
property:
  in: gradient
  in: divergence
  in: laplacian
  in: curl
  max count: 1
  order: 3
  path: operator type
property:
  class: Equation
  description: Symbolic form (e.g., '-div(D * grad(u))').
  max count: 1
  node kind: BlankNodeOrIRI
  order: 6
  path: expression
property:
  class: Parameter
  description: Optional anisotropic tensor (e.g., diffusion).
  max count: 1
  node kind: IRI
  order: 5
  path: tensor coefficient
property:
  class: Parameter
  max count: 1
  node kind: IRI
  order: 4
  path: coefficient

Discretization
type: NodeShape
comment: Discretization method for boundary value problems in continuation (periodic orbits, connecting orbits, quasi-periodic tori). Specifies the method; method-specific numerics go in parameters.
closed: true
ignored properties: type
property:
  default value: collocation
  description: Discretization method.
  in: collocation
  in: trapezoid
  in: shooting
  in: poincare
  max count: 1
  order: 1
  path: method
property:
  datatype: integer
  default value: 4
  description: Polynomial degree per mesh interval for collocation. The m in PeriodicOrbitOCollProblem(N, m).
  max count: 1
  node kind: Literal
  order: 5
  path: degree
property:
  class: Solver
  description: Linear solver for the Newton bordered system. E.g. COPBLS (collocation), MatrixBLS (shooting/poincaré).
  max count: 1
  node kind: BlankNodeOrIRI
  order: 3
  path: linear solver
property:
  class: Solver
  description: ODE solver for flow-based methods (shooting, poincaré). Specifies algorithm (e.g. Vern9, Rodas5) and tolerances. Not needed for collocation or trapezoid.
  max count: 1
  node kind: BlankNodeOrIRI
  order: 2
  path: ode solver
property:
  datatype: integer
  default value: 50
  description: Number of mesh intervals (time slices) for collocation or trapezoid methods. Collocation: N in PeriodicOrbitOCollProblem(N, m). Trapezoid: M in PeriodicOrbitTrapProblem(M=...).
  max count: 1
  node kind: Literal
  order: 4
  path: mesh intervals
property:
  class: Option
  description: Toolkit-specific string options (jacobian type, etc.).
  node kind: IRI
  order: 7
  path: options
property:
  datatype: integer
  default value: 3
  description: Number of shooting sections for shooting or Poincaré methods.
  max count: 1
  node kind: Literal
  order: 6
  path: n sections
property:
  class: Parameter
  node kind: IRI
  order: 0
  path: parameters

Edge
type: NodeShape
comment: An edge in a network. Two modes: explicit (source+target set, scalar parameters in YAML) or template (no source/target, N×N matrix measure in HDF5). Both coexist in the same edges list.
closed: true
ignored properties: type
property:
  class: Event
  description: Events attached to this edge (e.g., threshold-based line tripping).
  node kind: IRI
  order: 20
  path: events
property:
  datatype: string
  description: Input variable on target node to connect to (e.g., 'c_in'). If not specified, uses first coupling input from target dynamics.
  max count: 1
  node kind: Literal
  order: 14
  path: target var
property:
  class: Coupling
  description: Coupling function for this edge. Can be a reference (by name) to coupling or inline definition. If not provided, uses experiment's default coupling.
  max count: 1
  node kind: IRI
  order: 15
  path: coupling
property:
  datatype: boolean
  description: Self-connections are meaningful
  max count: 1
  node kind: Literal
  order: 11
  path: valid diagonal
property:
  datatype: boolean
  default value: true
  description: Matrix entries carry weights (not just 0/1)
  max count: 1
  node kind: Literal
  order: 10
  path: weighted
property:
  datatype: string
  description: Unit for matrix values (template edges only)
  max count: 1
  node kind: Literal
  order: 8
  path: unit
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 0
  path: label
property:
  datatype: string
  description: Path or name of the Network whose nodes define the columns of a non-square (projection) matrix. For example, a gain matrix with shape (n_sensors, n_regions) references the brain parcellation network here. Row labels come from the parent Network's own nodes.
  max count: 1
  node kind: Literal
  order: 17
  path: target network
property:
  datatype: float
  description: Connection weight (explicit edges)
  max count: 1
  node kind: Literal
  order: 5
  path: weight
property:
  description: Storage format in HDF5 (template edges only)
  in: dense
  in: csr
  in: coo
  max count: 1
  order: 9
  path: format
property:
  datatype: float
  description: Edge length / tract distance (explicit edges, mm)
  max count: 1
  node kind: Literal
  order: 7
  path: distance
property:
  datatype: string
  description: Ordered labels for the matrix columns (dim-1) when the matrix is non-square. Row labels (dim-0) are the parent Network's node labels. Stored as HDF5 dimension scales in the companion file.
  node kind: Literal
  order: 18
  path: dimension labels
property:
  datatype: boolean
  default value: true
  description: All values >= 0
  max count: 1
  node kind: Literal
  order: 12
  path: non negative
property:
  class: Dynamics
  description: Dynamics model for this edge. When specified, the edge has its own state variables and ODE (EdgeModel with f in ND.jl). Uses the same Dynamics class as nodes — state_variables define edge states, derived_variables define observables, output defines what is visible for plotting/analysis. The coupling_function on Coupling still defines how vertex outputs map to edge outputs for aggregation at vertices.
  max count: 1
  node kind: IRI
  order: 19
  path: dynamics
property:
  datatype: integer
  description: Source node ID (set for explicit edges, absent for template edges)
  max count: 1
  node kind: Literal
  order: 3
  path: source
property:
  class: Parameter
  node kind: IRI
  order: 2
  path: parameters
property:
  datatype: string
  description: Output variable from source node to use (e.g., 'x_out'). If not specified, uses first output variable from source dynamics.
  max count: 1
  node kind: Literal
  order: 13
  path: source var
property:
  datatype: integer
  description: Target node ID (set for explicit edges, absent for template edges)
  max count: 1
  node kind: Literal
  order: 4
  path: target
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 1
  path: description
property:
  datatype: boolean
  description: Whether the edge is directed. If false, represents a symmetric/bidirectional connection.
  max count: 1
  node kind: Literal
  order: 16
  path: directed
property:
  datatype: float
  description: Conduction delay (explicit edges, ms)
  max count: 1
  node kind: Literal
  order: 6
  path: delay

Exploration
type: NodeShape
comment: Parameter space exploration (grid search, sweep).
closed: true
ignored properties: type
property:
  class: FunctionCall
  description: Observable to compute at each point. Use function: obs_name for simple observation, or function: func_name + arguments for FunctionCall.
  max count: 1
  node kind: BlankNodeOrIRI
  order: 7
  path: observable
property:
  datatype: string
  description: Globally unique identifier for the entity.
  max count: 1
  min count: 1
  node kind: Literal
  order: 0
  path: name
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 1
  path: label
property:
  datatype: string
  default value: product
  description: Combination mode: 'product' (full grid), 'zip' (paired)
  max count: 1
  node kind: Literal
  order: 6
  path: mode
property:
  datatype: integer
  default value: 1
  description: Parallel evaluations
  max count: 1
  node kind: Literal
  order: 8
  path: n parallel
property:
  class: ExecutionConfig
  description: Per-exploration execution configuration (overrides experiment-level defaults). Useful for setting random_seed, n_workers for parallel grid search.
  max count: 1
  node kind: BlankNodeOrIRI
  order: 3
  path: execution
property:
  class: ExplorationAxis
  description: Ordered list of exploration axes spanning the search space. Each axis references an existing Parameter (by dotted name, e.g. "ReducedWongWang.w" or "FastLinearCoupling.G") and supplies the Range to sweep. No new Parameter is created here.
  node kind: BlankNodeOrIRI
  order: 4
  path: space
property:
  datatype: integer
  default value: 1
  description: Number of independent trials per grid point. Each trial uses a different noise seed. Used for averaging stochastic simulations (e.g., VEP = average of 20 trials).
  max count: 1
  node kind: Literal
  order: 9
  path: n trials
property:
  class: Parameter
  description: Hyper-parameters of the exploration itself (e.g. tolerances, sampler settings, grid-refinement controls). Distinct from `space`, which defines what is being swept.
  node kind: IRI
  order: 5
  path: parameters
property:
  datatype: string
  description: Averaging mode across trials. 'trials' = average over n_trials independent runs (evoked potential paradigm). None = return all trials.
  max count: 1
  node kind: Literal
  order: 10
  path: average
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 2
  path: description

ExplorationAxis
type: NodeShape
comment: One axis of a parameter exploration grid. Points to an existing Parameter (by dotted reference, e.g. "ReducedWongWang.w" or "FastLinearCoupling.G") and supplies the sweep specification (domain, explored_values, or per-element overrides). No new Parameter is created.
closed: true
ignored properties: type
property:
  datatype: float
  description: Explicit list of values to sweep (overrides domain).
  node kind: Literal
  order: 4
  path: explored values
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 1
  path: description
property:
  class: Parameter
  description: Dotted reference to the Parameter being swept. Format: "<scope>.<param_name>" where <scope> is either a Dynamics class name (e.g. "ReducedWongWang") or a coupling key (e.g. "FastLinearCoupling"). Resolved against the enclosing experiment at runtime.
  max count: 1
  min count: 1
  node kind: IRI
  order: 2
  path: parameter
property:
  datatype: string
  description: Optional axis unit (defaults to the referenced Parameter's unit).
  max count: 1
  node kind: Literal
  order: 6
  path: unit
property:
  class: Range
  description: Per-element sweep overrides for heterogeneous parameters (e.g. shape "(n_nodes,)"). When set, element_domains[i] replaces the shared domain for element i.
  node kind: BlankNodeOrIRI
  order: 5
  path: element domains
property:
  class: Range
  description: Sweep range for this axis (lo, hi, n, step, log_scale).
  max count: 1
  node kind: BlankNodeOrIRI
  order: 3
  path: domain
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 0
  path: label

FieldStateVariable
type: NodeShape
closed: true
ignored properties: type
property:
  class: Distribution
  description: Distribution for sampling initial conditions per node. If present, initial_value is used as fallback/mean.
  max count: 1
  node kind: IRI
  order: 21
  path: distribution
property:
  datatype: boolean
  default value: true
  description: Whether to include this element in simulation output files. Applicable to state variables (default true), derived variables (default false), and network nodes (default true). Set false to suppress recording.
  max count: 1
  node kind: Literal
  order: 10
  path: record
property:
  class: Equation
  max count: 1
  node kind: BlankNodeOrIRI
  order: 8
  path: Equation
property:
  class: Noise
  max count: 1
  node kind: BlankNodeOrIRI
  order: 16
  path: noise
property:
  class: Range
  max count: 1
  node kind: BlankNodeOrIRI
  order: 18
  path: boundaries
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 6
  path: definition
property:
  description: External ontology IRIs (typically GO, ChEBI, UBERON, CL, MeSH) that this entity is a surrogate / abstraction / model of. Replaces the legacy OWL pattern `tvbo:surrogate_of` by carrying the link inline with the YAML data instance. Multiple IRIs allowed: a single parameter may abstract several biological processes (e.g. a synaptic conductance grounding both GO:0060079 (excitatory PSP) and GO:0007268 (chemical synaptic transmission)).
  node kind: IRI
  order: 11
  path: hasDbXref
property:
  class: TimeSeries
  max count: 1
  node kind: BlankNodeOrIRI
  order: 22
  path: history
property:
  datatype: float
  description: Initial value for the first time derivative, used when equation_order > 1. For a second-order ODE d²x/dt² = f, this sets dx/dt(0). Required by ModelingToolkit.jl to fully specify higher-order initial value problems.
  max count: 1
  node kind: Literal
  order: 20
  path: derivative initial value
property:
  class: Mesh
  max count: 1
  node kind: BlankNodeOrIRI
  order: 2
  path: mesh
property:
  datatype: float
  default value: 0.1
  max count: 1
  node kind: Literal
  order: 19
  path: initial value
property:
  datatype: boolean
  description: Whether this state variable is transmitted to connected nodes through the coupling function. In TVB terms, this determines the cvar indices (state variables extracted from history and fed into the coupling function). The coupling function may override this via its incoming_states attribute.
  max count: 1
  node kind: Literal
  order: 13
  path: coupling variable
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 0
  path: label
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 1
  path: description
property:
  class: BoundaryCondition
  node kind: BlankNodeOrIRI
  order: 3
  path: boundary conditions
property:
  class: Range
  max count: 1
  node kind: BlankNodeOrIRI
  order: 7
  path: domain
property:
  datatype: boolean
  default value: true
  max count: 1
  node kind: Literal
  order: 12
  path: variable of interest
property:
  datatype: string
  default value: differential
  description: Type of equation: 'differential' (default) means dx/dt = rhs, 'algebraic' means 0 = rhs or x ~ rhs (DAE constraint). Algebraic equations are used by ModelingToolkit.jl backend.
  max count: 1
  node kind: Literal
  order: 14
  path: equation type
property:
  description: Physical unit of measurement. Values are drawn from the QUDT ontology (http://qudt.org/vocab/unit/) with UO cross-references where available.
  in: SEC
  in: MilliSEC
  in: MicroSEC
  in: PER-SEC
  in: PER-MilliSEC
  in: HZ
  in: KiloHZ
  in: http://qudt.org/vocab/unit/V
  in: MilliV
  in: PER-MilliV
  in: MilliV-PER-MilliSEC
  in: MilliV-PER-SEC
  in: http://qudt.org/vocab/unit/A
  in: NanoA
  in: PicoA
  in: uA_per_cm2
  in: PicoFARAD
  in: NanoFARAD
  in: uF_per_cm2
  in: NanoS
  in: MicroS
  in: PicoS
  in: S_per_cm2
  in: mS_per_cm2
  in: S_per_m2
  in: nS_per_mV
  in: PER-NanoC
  in: PER-PicoC
  in: MOL-PER-M3
  in: mol_per_cm3
  in: MilliMOL-PER-M3
  in: mol_per_m_per_A_per_s
  in: MicroM3
  in: http://qudt.org/vocab/unit/M
  in: MilliM
  in: CentiM
  in: M-PER-SEC
  in: MilliM-PER-MilliSEC
  in: Hz_per_nA
  in: S-PER-M
  in: H-PER-M
  in: OHM
  in: Mohm
  in: kohm_cm
  in: DEG C
  in: rad_per_ms
  in: UNITLESS
  in: PERCENT
  in: arbitrary_unit
  in: KiloGM
  in: kg_per_s
  in: M-PER-SEC2
  in: N-PER-M
  in: RAD
  in: RAD-PER-SEC
  in: SEC2
  in: per_unit
  max count: 1
  order: 9
  path: unit
property:
  datatype: string
  description: Globally unique identifier for the entity.
  max count: 1
  min count: 1
  node kind: Literal
  order: 4
  path: name
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 5
  path: symbol
property:
  datatype: boolean
  max count: 1
  node kind: Literal
  order: 17
  path: stimulation variable

File
type: NodeShape
closed: true
ignored properties: type
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 2
  path: type
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 1
  path: description
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 4
  path: extension
property:
  datatype: string
  description: Globally unique identifier for the entity.
  max count: 1
  min count: 1
  node kind: Literal
  order: 0
  path: name
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 3
  path: path

GraphGenerator
type: NodeShape
comment: Backend-agnostic graph generator specification. Captures the mathematical family (type) and its parameters so that each backend can emit the correct constructor call (Graphs.jl, NetworkX, etc.). The number of nodes is always taken from Network.number_of_nodes.
closed: true
ignored properties: type
property:
  datatype: string
  description: Globally unique identifier for the entity.
  max count: 1
  min count: 1
  node kind: Literal
  order: 0
  path: name
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 1
  path: description
property:
  class: Parameter
  description: Generator parameters (e.g. k, p, dims). Names are matched by the backend mapping to construct the call.
  node kind: IRI
  order: 5
  path: parameters
property:
  datatype: boolean
  description: Whether to generate a directed graph.
  max count: 1
  node kind: Literal
  order: 4
  path: directed
property:
  datatype: integer
  description: Random seed for reproducible graph generation.
  max count: 1
  node kind: Literal
  order: 3
  path: seed
property:
  datatype: string
  description: Graph family name. Use a StandardGraphType value for automatic backend mapping, or any custom string for documentation purposes.
  max count: 1
  min count: 1
  node kind: Literal
  order: 2
  path: type

InitialState
type: NodeShape
comment: How to obtain the starting equilibrium or periodic orbit for continuation. Most robust: time-integrate to steady state.
closed: true
ignored properties: type
property:
  datatype: string
  description: Name of a previously computed branch (for from_branch method).
  max count: 1
  node kind: Literal
  order: 5
  path: source branch
property:
  datatype: float
  default value: 2000.0
  description: Integration duration for time_integration method.
  max count: 1
  node kind: Literal
  order: 1
  path: duration
property:
  default value: time_integration
  description: Strategy for finding the initial state.
  in: time_integration
  in: newton
  in: given
  in: from_branch
  max count: 1
  order: 0
  path: method
property:
  datatype: float
  default value: 1e-10
  description: Absolute tolerance for ODE integration.
  max count: 1
  node kind: Literal
  order: 2
  path: abs tol
property:
  datatype: float
  default value: 1e-10
  description: Relative tolerance for ODE integration.
  max count: 1
  node kind: Literal
  order: 3
  path: rel tol
property:
  class: Solver
  description: ODE solver for time_integration method. Specify method (e.g., Tsit5, Heun, RK4) and tolerances.
  max count: 1
  node kind: BlankNodeOrIRI
  order: 4
  path: solver
property:
  datatype: string
  description: Which point on the source branch: 'endpoint', 'hopf:1', 'fold:2', a step number, etc.
  max count: 1
  node kind: Literal
  order: 6
  path: source point

NDArray
type: NodeShape
closed: true
ignored properties: type
property:
  datatype: integer
  node kind: Literal
  order: 2
  path: shape
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 0
  path: label
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 5
  path: unit
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 3
  path: dtype
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 1
  path: description
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 4
  path: dataLocation

Node
type: NodeShape
comment: A node in a network with its own dynamics and properties
closed: true
ignored properties: type
property:
  class: StateValue
  description: Per-node initial state variable values, keyed by state variable name.
  node kind: IRI
  order: 8
  path: state
property:
  datatype: boolean
  default value: true
  description: Whether to include this element in simulation output files. Applicable to state variables (default true), derived variables (default false), and network nodes (default true). Set false to suppress recording.
  max count: 1
  node kind: Literal
  order: 3
  path: record
property:
  datatype: string
  description: Brain region or anatomical label
  max count: 1
  node kind: Literal
  order: 7
  path: region
property:
  datatype: integer
  description: Unique node identifier
  max count: 1
  min count: 1
  node kind: Literal
  order: 4
  path: identifier
property:
  class: Dynamics
  description: Dynamics model governing this node's behavior. Can be a reference (by name) or inline definition. If not provided, uses experiment's dynamics.
  max count: 1
  node kind: IRI
  order: 5
  path: dynamics
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 1
  path: description
property:
  class: Event
  description: Events attached to this node (e.g., threshold-based state changes).
  node kind: IRI
  order: 9
  path: events
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 0
  path: label
property:
  class: Parameter
  node kind: IRI
  order: 2
  path: parameters
property:
  class: Coordinate
  description: Spatial coordinates (x, y, z) of the node
  max count: 1
  node kind: BlankNodeOrIRI
  order: 6
  path: position

Optimization
type: NodeShape
comment: Configuration for parameter optimization. Inherits single-stage fields from OptimizationStage. For multi-stage workflows, use 'stages' (ignores inherited single-stage fields). Loss equation references observations directly by name.
closed: true
ignored properties: type
property:
  class: FreeParameter
  description: Parameters to optimize in this stage. Each entry is a FreeParameter that references an existing Parameter by dotted scope (e.g. "ReducedWongWang.w" or "FastLinearCoupling.G") and supplies optimization-specific metadata (heterogeneous, shape, bounds). No new Parameter is created here.
  node kind: BlankNodeOrIRI
  order: 8
  path: free parameters
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 6
  path: label
property:
  class: Parameter
  description: Stage-specific hyperparameters (e.g., b2=0.9999 for adam)
  node kind: IRI
  order: 12
  path: hyperparameters
property:
  class: ExecutionConfig
  description: Per-optimization execution configuration (overrides experiment-level defaults). Useful for setting random_seed, precision, or hardware for optimization phase.
  max count: 1
  node kind: BlankNodeOrIRI
  order: 0
  path: execution
property:
  class: FunctionCall
  description: Loss function call. Uses FunctionCall to either: 1. Reference existing function: function: rmse 2. Inline callable: callable: {module: ..., name: ...} Arguments specify inputs (simulated_fc, empirical_fc, etc.)
  max count: 1
  node kind: BlankNodeOrIRI
  order: 2
  path: loss
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 7
  path: description
property:
  class: OptimizationStage
  description: Previous stage to initialize from. Final values from that stage become initial values for this stage.
  max count: 1
  node kind: IRI
  order: 14
  path: warmup from
property:
  class: OptimizationStage
  description: Ordered list of optimization stages. Stages run sequentially. Stage n+1 starts from optimized values of stage n. When defined, inherited single-stage fields are ignored.
  node kind: IRI
  order: 3
  path: stages
property:
  class: Algorithm
  description: Algorithm to use as starting point for optimization. If specified, optimization starts from algorithm's result state. If not specified, optimization starts from initial simulation state.
  max count: 1
  node kind: IRI
  order: 4
  path: depends on
property:
  class: Parameter
  description: Parameters from previous stages to freeze (keep at optimized value but not update)
  node kind: IRI
  order: 13
  path: freeze parameters
property:
  datatype: string
  description: Globally unique identifier for the entity.
  max count: 1
  min count: 1
  node kind: Literal
  order: 5
  path: name
property:
  datatype: integer
  default value: 100
  max count: 1
  node kind: Literal
  order: 11
  path: max iterations
property:
  class: Integrator
  description: Integration settings for optimization simulations (overrides experiment defaults). If specified, creates a fresh model_fn and state with prepare() before optimization. Can specify different duration, step_size, method than the experiment. If not specified, uses experiment-level integration settings.
  max count: 1
  node kind: BlankNodeOrIRI
  order: 1
  path: integration
property:
  datatype: float
  default value: 0.001
  max count: 1
  node kind: Literal
  order: 10
  path: learning rate
property:
  datatype: string
  default value: adam
  description: Optimizer for this stage: 'adam', 'adamw', 'sgd', etc.
  max count: 1
  node kind: Literal
  order: 9
  path: algorithm

PDE
type: NodeShape
comment: Partial differential equation problem definition.
closed: true
ignored properties: type
property:
  class: Equation
  node kind: BlankNodeOrIRI
  order: 8
  path: sources
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 1
  path: description
property:
  class: PDESolver
  max count: 1
  node kind: BlankNodeOrIRI
  order: 10
  path: solver
property:
  class: BoundaryCondition
  node kind: BlankNodeOrIRI
  order: 9
  path: boundary conditions
property:
  class: FieldStateVariable
  node kind: IRI
  order: 5
  path: state variables
property:
  class: Mesh
  description: Shared mesh for all field state variables in this PDE.
  max count: 1
  node kind: BlankNodeOrIRI
  order: 4
  path: mesh
property:
  class: Function
  node kind: IRI
  order: 13
  path: functions
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 0
  path: label
property:
  class: DifferentialOperator
  node kind: BlankNodeOrIRI
  order: 7
  path: operators
property:
  class: SpatialDomain
  max count: 1
  node kind: BlankNodeOrIRI
  order: 3
  path: domain
property:
  class: Parameter
  node kind: IRI
  order: 2
  path: parameters
property:
  class: DerivedVariable
  node kind: IRI
  order: 12
  path: derived variables
property:
  class: DerivedParameter
  node kind: IRI
  order: 11
  path: derived parameters
property:
  class: SpatialField
  description: Primary field being solved for (deprecated; use state_variables).
  max count: 1
  node kind: BlankNodeOrIRI
  order: 6
  path: field

PDESolver
type: NodeShape
closed: true
ignored properties: type
property:
  datatype: string
  description: Abs/rel tolerances.
  max count: 1
  node kind: Literal
  order: 7
  path: tolerances
property:
  datatype: string
  description: e.g., implicit Euler, Crank-Nicolson.
  max count: 1
  node kind: Literal
  order: 5
  path: time integrator
property:
  datatype: float
  description: Time step (s).
  max count: 1
  node kind: Literal
  order: 6
  path: dt
property:
  in: FDM
  in: FEM
  in: FVM
  in: Spectral
  max count: 1
  order: 4
  path: discretization
property:
  class: SoftwareRequirement
  node kind: IRI
  order: 2
  path: requirements
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 8
  path: preconditioner
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 1
  path: description
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 0
  path: label
property:
  class: SoftwareEnvironment
  max count: 1
  node kind: IRI
  order: 3
  path: environment

Parcellation
type: NodeShape
closed: true
ignored properties: type
property:
  class: Atlas
  max count: 1
  min count: 1
  node kind: IRI
  order: 2
  path: atlas
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 0
  path: label
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 1
  path: data source

RandomStream
type: NodeShape
closed: true
ignored properties: type
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 0
  path: label
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 1
  path: description
property:
  datatype: string
  description: Add the location of the data file containing the parcellation terminology.
  max count: 1
  node kind: Literal
  order: 2
  path: dataLocation

RegionMapping
type: NodeShape
comment: Maps vertices to parent regions for hierarchical/aggregated coupling
closed: true
ignored properties: type
property:
  datatype: integer
  description: Total number of vertices
  max count: 1
  node kind: Literal
  order: 4
  path: n vertices
property:
  datatype: integer
  description: Total number of regions
  max count: 1
  node kind: Literal
  order: 5
  path: n regions
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 1
  path: description
property:
  datatype: string
  description: Add the location of the data file containing the parcellation terminology.
  max count: 1
  node kind: Literal
  order: 2
  path: dataLocation
property:
  datatype: integer
  description: Array mapping each vertex index to its parent region index. Can use dataLocation instead for large arrays.
  node kind: Literal
  order: 3
  path: vertex to region
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 0
  path: label

Sample
type: NodeShape
closed: true
ignored properties: type
property:
  datatype: string
  node kind: Literal
  order: 0
  path: groups
property:
  datatype: integer
  max count: 1
  node kind: Literal
  order: 1
  path: size

SpatialDomain
type: NodeShape
closed: true
ignored properties: type
property:
  datatype: string
  description: Optional named region/ROI in the atlas/parcellation.
  max count: 1
  node kind: Literal
  order: 3
  path: region
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 0
  path: label
property:
  datatype: string
  description: Optional file for geometry/ROI mask (e.g., NIfTI, GIfTI).
  max count: 1
  node kind: Literal
  order: 4
  path: geometry
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 1
  path: description
property:
  class: Transformation
  max count: 1
  node kind: IRI
  order: 2
  path: coordinate space

SpatialField
type: NodeShape
closed: true
ignored properties: type
property:
  class: Mesh
  max count: 1
  node kind: BlankNodeOrIRI
  order: 4
  path: mesh
property:
  datatype: string
  description: Scalar, vector, or tensor.
  max count: 1
  node kind: Literal
  order: 2
  path: quantity kind
property:
  datatype: float
  default value: 0.1
  description: Constant initial value for the field.
  max count: 1
  node kind: Literal
  order: 7
  path: initial value
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 3
  path: unit
property:
  datatype: boolean
  max count: 1
  node kind: Literal
  order: 6
  path: time dependent
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 1
  path: description
property:
  class: NDArray
  max count: 1
  node kind: BlankNodeOrIRI
  order: 5
  path: values
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 0
  path: label
property:
  class: Equation
  description: Analytic initial condition for the field.
  max count: 1
  node kind: BlankNodeOrIRI
  order: 8
  path: initial expression

StateValue
type: NodeShape
comment: A named state variable value for per-node initialization.
closed: true
ignored properties: type
property:
  description: Numeric, string, or boolean value. ScalarValue accepts any literal primitive type, allowing parameters to carry control flags (e.g., booleans) or symbolic placeholders alongside numeric defaults.
  max count: 1
  order: 1
  path: value
property:
  datatype: string
  description: Globally unique identifier for the entity.
  max count: 1
  min count: 1
  node kind: Literal
  order: 0
  path: name

Tractogram
type: NodeShape
comment: Reference to tractography/diffusion MRI data used to derive structural connectivity
closed: true
ignored properties: type
property:
  datatype: string
  description: Processing pipeline used to generate the tractography
  max count: 1
  node kind: Literal
  order: 6
  path: processing pipeline
property:
  datatype: string
  description: Publication or DOI reference for this tractography dataset
  max count: 1
  node kind: Literal
  order: 7
  path: references
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 1
  path: label
property:
  datatype: integer
  description: Number of subjects in the tractography dataset
  max count: 1
  node kind: Literal
  order: 4
  path: number of subjects
property:
  datatype: string
  description: Acquisition protocol or scanner information
  max count: 1
  node kind: Literal
  order: 5
  path: acquisition
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 2
  path: description
property:
  datatype: string
  description: Path or URI to the tractography data file
  max count: 1
  node kind: Literal
  order: 3
  path: data source
property:
  datatype: string
  description: Globally unique identifier for the entity.
  max count: 1
  min count: 1
  node kind: Literal
  order: 0
  path: name

TuningObjective
type: NodeShape
comment: Defines what the tuning algorithm optimizes for. Can be an activity target (FIC) or a connectivity target (EIB).
closed: true
ignored properties: type
property:
  class: StateVariable
  description: State variable for activity targets (e.g., S_e)
  max count: 1
  node kind: IRI
  order: 3
  path: target variable
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 0
  path: label
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 1
  path: description
property:
  datatype: string
  description: Type of objective: 'activity_target', 'fc_matching', 'custom'
  max count: 1
  node kind: Literal
  order: 2
  path: type
property:
  class: Observation
  description: Reference to empirical data observation for matching objectives
  max count: 1
  node kind: IRI
  order: 5
  path: target data
property:
  datatype: float
  description: Target value for activity objectives
  max count: 1
  node kind: Literal
  order: 4
  path: target value
property:
  class: Equation
  description: Metric equation for matching (e.g., correlation, rmse)
  max count: 1
  node kind: BlankNodeOrIRI
  order: 6
  path: metric

UpdateRule
type: NodeShape
comment: Defines how a parameter is updated based on observables. Represents iterative learning rules like FIC or EIB updates. Functions from experiment.functions are available in the equation.
closed: true
ignored properties: type
property:
  datatype: string
  description: Globally unique identifier for the entity.
  max count: 1
  min count: 1
  node kind: Literal
  order: 0
  path: name
property:
  datatype: boolean
  description: Whether to apply learning rate warmup to this update rule. When true, the learning rate (eta) is scaled by (i+1)/n_iterations.
  max count: 1
  node kind: Literal
  order: 5
  path: warmup
property:
  class: Parameter
  description: The parameter to update (e.g., J_i, wLRE)
  max count: 1
  min count: 1
  node kind: IRI
  order: 2
  path: target parameter
property:
  class: Equation
  description: Update equation (e.g., 'J_i + eta * delta'). Can use functions defined in experiment.functions section.
  max count: 1
  min count: 1
  node kind: BlankNodeOrIRI
  order: 3
  path: equation
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 1
  path: description
property:
  class: Observation
  description: Observables required by this update rule
  node kind: IRI
  order: 6
  path: requires
property:
  class: Range
  description: Constraints on parameter values after update
  max count: 1
  node kind: BlankNodeOrIRI
  order: 4
  path: bounds

ClinicalImprovement
type: NodeShape
comment: Relative improvement on a defined clinical score.
closed: true
ignored properties: type
property:
  datatype: string
  description: Who performed the rating (e.g., rater initials, clinician ID, or system)
  max count: 1
  node kind: Literal
  order: 5
  path: evaluator
property:
  class: ClinicalScore
  max count: 1
  node kind: BlankNodeOrIRI
  order: 0
  path: score
property:
  datatype: float
  description: Preoperative baseline value of the score
  max count: 1
  node kind: Literal
  order: 1
  path: baseline value
property:
  datatype: string
  description: Timepoint of assessment (e.g., "1 month post-op", "6 months post-op")
  max count: 1
  node kind: Literal
  order: 6
  path: timepoint
property:
  datatype: float
  description: Timepoint of assessment in days or months after implantation
  max count: 1
  node kind: Literal
  order: 4
  path: time post surgery
property:
  datatype: float
  description: Percent change compared to preoperative baseline (positive = improvement)
  max count: 1
  node kind: Literal
  order: 3
  path: percent change
property:
  datatype: float
  description: Absolute value of the score at the time of assessment
  max count: 1
  node kind: Literal
  order: 2
  path: absolute value

ClinicalScale
type: NodeShape
comment: A clinical assessment inventory or structured scale composed of multiple scores or items.
closed: true
ignored properties: type
property:
  datatype: string
  description: Short abbreviation (e.g., UPDRS)
  max count: 1
  node kind: Literal
  order: 0
  path: notation
property:
  datatype: string
  description: Full name of the scale (e.g., Unified Parkinson’s Disease Rating Scale)
  max count: 1
  node kind: Literal
  order: 1
  path: name
property:
  datatype: string
  description: DOI, PMID or persistent identifier
  max count: 1
  node kind: Literal
  order: 4
  path: references
property:
  datatype: string
  description: Overall clinical domain (e.g., motor, cognition)
  max count: 1
  node kind: Literal
  order: 3
  path: domain
property:
  datatype: string
  description: Version of the instrument (e.g., 3.0)
  max count: 1
  node kind: Literal
  order: 2
  path: softwareVersion

Contact
type: NodeShape
comment: Individual contact on a DBS electrode.
closed: true
ignored properties: type
property:
  datatype: string
  description: Optional human-readable label (e.g., "1a")
  max count: 1
  node kind: Literal
  order: 2
  path: label
property:
  datatype: integer
  description: Identifier (e.g., 0, 1, 2)
  max count: 1
  node kind: Literal
  order: 0
  path: identifier
property:
  class: Coordinate
  description: 3D coordinate of the contact center in the defined coordinate space
  max count: 1
  node kind: BlankNodeOrIRI
  order: 1
  path: coordinate

DBSProtocol
type: NodeShape
comment: A protocol describing DBS therapy, potentially bilateral or multi-lead.
closed: true
ignored properties: type
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 4
  path: notes
property:
  class: Electrode
  node kind: BlankNodeOrIRI
  order: 1
  path: electrodes
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 3
  path: timing info
property:
  datatype: string
  description: Globally unique identifier for the entity.
  max count: 1
  min count: 1
  node kind: Literal
  order: 0
  path: name
property:
  class: ClinicalImprovement
  description: Observed improvement relative to baseline based on a defined score.
  node kind: BlankNodeOrIRI
  order: 5
  path: clinical improvement
property:
  class: StimulationSetting
  node kind: BlankNodeOrIRI
  order: 2
  path: settings

DBSSubject
type: NodeShape
comment: Human or animal subject receiving DBS.
closed: true
ignored properties: type
property:
  datatype: string
  description: Human-readable label for the subject.
  max count: 1
  node kind: Literal
  order: 5
  path: label
property:
  datatype: string
  description: Group assignment (e.g., 'control', 'patient', 'healthy'). Maps to participants.tsv 'group' column in BIDS.
  max count: 1
  node kind: Literal
  order: 6
  path: group
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 1
  path: handedness
property:
  datatype: float
  description: Age at time of study (years).
  max count: 1
  node kind: Literal
  order: 7
  path: age
property:
  class: Transformation
  description: Coordinate space used for this subject's data
  max count: 1
  node kind: IRI
  order: 3
  path: coordinate space
property:
  description: Biological sex.
  in: male
  in: female
  in: other
  max count: 1
  order: 8
  path: sex
property:
  datatype: string
  description: BIDS-compatible subject identifier (without 'sub-' prefix). Examples: '01', 'ctrl03', 'patient17'.
  max count: 1
  min count: 1
  node kind: Literal
  order: 4
  path: identifier
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 0
  path: diagnosis
property:
  datatype: string
  description: Path to subject-specific connectome (when not session-dependent). Relative to dataset root or BIDS derivatives. For session-specific networks, use Session.network instead.
  max count: 1
  node kind: Literal
  order: 10
  path: network
property:
  class: DBSProtocol
  description: All DBS protocols assigned to this subject.
  node kind: IRI
  order: 2
  path: protocols
property:
  datatype: string
  description: Additional subject metadata as key-value pairs or path to a sidecar JSON file.
  max count: 1
  node kind: Literal
  order: 11
  path: metadata
property:
  class: Session
  description: Data collection sessions for this subject. Each session can have its own network, empirical data, and conditions.
  node kind: IRI
  order: 9
  path: sessions

EField
type: NodeShape
comment: Simulated electric field from DBS modeling.
closed: true
ignored properties: type
property:
  datatype: float
  description: Threshold value applied to the E-field simulation
  max count: 1
  node kind: Literal
  order: 2
  path: threshold applied
property:
  datatype: string
  description: Reference to raw or thresholded volume
  max count: 1
  node kind: Literal
  order: 0
  path: volume data
property:
  class: Transformation
  description: Reference to a common coordinate space (e.g. MNI152)
  max count: 1
  node kind: IRI
  order: 1
  path: coordinate space

StimulationSetting
type: NodeShape
comment: DBS parameters for a specific session.
closed: true
ignored properties: type
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 4
  path: mode
property:
  class: Parameter
  max count: 1
  node kind: IRI
  order: 3
  path: pulse width
property:
  datatype: integer
  node kind: Literal
  order: 5
  path: active contacts
property:
  class: Parameter
  max count: 1
  node kind: IRI
  order: 1
  path: amplitude
property:
  class: EField
  description: Metadata about the E-field result for this setting
  max count: 1
  node kind: BlankNodeOrIRI
  order: 6
  path: efield
property:
  class: Electrode
  max count: 1
  node kind: BlankNodeOrIRI
  order: 0
  path: electrode reference
property:
  class: Parameter
  max count: 1
  node kind: IRI
  order: 2
  path: frequency

Dataset
type: NodeShape
comment: A collection of subjects for a multi-subject study. Provides the subject/session structure needed for workflow rendering. Optionally backed by a BIDS directory layout.
closed: true
ignored properties: type
ignored properties: coordinate space
ignored properties: clinical scores
property:
  datatype: string
  description: DOI or citation for this dataset.
  max count: 1
  node kind: Literal
  order: 6
  path: references
property:
  datatype: string
  description: Path to BIDS dataset root directory. When set, subject networks and empirical data paths are resolved relative to this root.
  max count: 1
  node kind: Literal
  order: 4
  path: bids root
property:
  datatype: string
  description: Unique identifier for the dataset.
  max count: 1
  min count: 1
  node kind: Literal
  order: 0
  path: identifier
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 3
  path: description
property:
  datatype: string
  description: Global condition labels applied across all subjects (e.g., ['rest', 'task-nback', 'task-motor']).
  node kind: Literal
  order: 5
  path: conditions
property:
  datatype: string
  description: Human-readable dataset name.
  max count: 1
  node kind: Literal
  order: 2
  path: label
property:
  class: Subject
  description: Subjects in a dataset.
  node kind: IRI
  order: 1
  path: subjects

Subject
type: NodeShape
comment: A participant in a study. Each subject typically has their own brain network (connectome) and empirical recordings. Corresponds to a BIDS 'sub-' entity.
closed: true
ignored properties: handedness
ignored properties: type
ignored properties: diagnosis
ignored properties: coordinate space
ignored properties: protocols
property:
  datatype: string
  description: Path to subject-specific connectome (when not session-dependent). Relative to dataset root or BIDS derivatives. For session-specific networks, use Session.network instead.
  max count: 1
  node kind: Literal
  order: 6
  path: network
property:
  datatype: string
  description: Group assignment (e.g., 'control', 'patient', 'healthy'). Maps to participants.tsv 'group' column in BIDS.
  max count: 1
  node kind: Literal
  order: 2
  path: group
property:
  datatype: string
  description: Human-readable label for the subject.
  max count: 1
  node kind: Literal
  order: 1
  path: label
property:
  description: Biological sex.
  in: male
  in: female
  in: other
  max count: 1
  order: 4
  path: sex
property:
  datatype: float
  description: Age at time of study (years).
  max count: 1
  node kind: Literal
  order: 3
  path: age
property:
  datatype: string
  description: Additional subject metadata as key-value pairs or path to a sidecar JSON file.
  max count: 1
  node kind: Literal
  order: 7
  path: metadata
property:
  datatype: string
  description: BIDS-compatible subject identifier (without 'sub-' prefix). Examples: '01', 'ctrl03', 'patient17'.
  max count: 1
  min count: 1
  node kind: Literal
  order: 0
  path: identifier
property:
  class: Session
  description: Data collection sessions for this subject. Each session can have its own network, empirical data, and conditions.
  node kind: IRI
  order: 5
  path: sessions

SoftwareApplication
type: NodeShape
comment: A software tool for computational neuroscience simulation, analysis, or model specification. Extends SoftwarePackage with neuroscience-specific controlled vocabularies for scale, paradigm, role, and interoperability. Aligned with CodeMeta v3 and DOAP.
comment: Identity and metadata for a software package, aligned with schema.org/SoftwareApplication and CodeMeta v3.
closed: true
ignored properties: isAccessibleForFree
ignored properties: dateModified
ignored properties: citation
ignored properties: tool role
ignored properties: date created
ignored properties: issue tracker
ignored properties: keywords
ignored properties: development status
ignored properties: model paradigm
ignored properties: type
ignored properties: scale
ignored properties: runtimePlatform
ignored properties: operatingSystem
ignored properties: creator
ignored properties: references
ignored properties: version
ignored properties: interoperates with
ignored properties: maintainer
ignored properties: programmingLanguage
ignored properties: funder
ignored properties: applicationCategory
ignored properties: sameAs
property:
  class: SoftwareApplication
  description: Tools this tool can exchange data with or delegate to.
  node kind: IRI
  order: 7
  path: interoperates with
property:
  datatype: string
  description: Supported operating systems (e.g., Linux, macOS, Windows).
  node kind: Literal
  order: 6
  path: operatingSystem
property:
  description: Primary function(s) in a simulation workflow.
  in: Q1569346
  in: Q271680
  in: backend_runtime
  in: Q816286
  in: Q2661442
  in: workflow_framework
  in: operation 2945
  in: operation_0337
  in: Q7397
  in: Q858926
  order: 3
  path: tool role
property:
  datatype: string
  description: SPDX license identifier (e.g., MIT, GPL-3.0-only).
  max count: 1
  node kind: Literal
  order: 3
  path: license
property:
  datatype: string
  description: High-level category (e.g., simulation, analysis, specification).
  max count: 1
  node kind: Literal
  order: 0
  path: applicationCategory
property:
  datatype: string
  description: SPDX license identifier (e.g., MIT, GPL-3.0-only).
  max count: 1
  node kind: Literal
  order: 24
  path: license
property:
  datatype: string
  description: Current maintainer(s) or responsible organization(s).
  node kind: Literal
  order: 13
  path: maintainer
property:
  datatype: string
  description: Additional citation strings or DOIs.
  node kind: Literal
  order: 16
  path: citation
property:
  datatype: string
  description: Tags for topic-based discovery and clustering.
  node kind: Literal
  order: 17
  path: keywords
property:
  description: Package ecosystem(s) through which the software is distributed.
  in: Q2984888
  in: Q105593788
  in: Q901584
  in: julia_registry
  in: Q7067518
  in: bioconda
  in: github
  in: Q6795527
  order: 6
  path: ecosystem
property:
  description: URIs that unambiguously identify this tool (Wikidata, bio.tools, RRID, SciCrunch).
  node kind: IRI
  order: 18
  path: sameAs
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 22
  path: description
property:
  datatype: string
  description: Original author(s) or creating organization(s).
  node kind: Literal
  order: 12
  path: creator
property:
  datatype: date
  description: Date of the most recent release or significant update.
  max count: 1
  node kind: Literal
  order: 10
  path: dateModified
property:
  datatype: string
  description: Globally unique identifier for the entity.
  max count: 1
  min count: 1
  node kind: Literal
  order: 0
  path: name
property:
  datatype: boolean
  default value: true
  description: Whether the tool is free/open-source.
  max count: 1
  node kind: Literal
  order: 20
  path: isAccessibleForFree
property:
  datatype: string
  description: Digital Object Identifier for the software or its reference publication.
  max count: 1
  node kind: Literal
  order: 26
  path: doi
property:
  datatype: string
  description: Globally unique identifier for the entity.
  max count: 1
  min count: 1
  node kind: Literal
  order: 21
  path: name
property:
  datatype: string
  description: Current or latest stable version string.
  max count: 1
  node kind: Literal
  order: 8
  path: softwareVersion
property:
  description: Implementation languages.
  in: Q28865
  in: Q15777
  in: Q2407
  in: Q251
  in: Q4010477
  in: Q182017
  in: Q206904
  in: Q83303
  in: Q34010
  in: Q575650
  in: Q2005
  in: Q2115
  in: Q5765633
  in: Q2370
  order: 4
  path: programmingLanguage
property:
  description: Computational paradigms supported.
  in: Q7003015
  in: Q1368960
  in: Q7579783
  in: Q72484
  in: Q5155691
  in: Q3685405
  in: Q634884
  in: Q851270
  in: Q747830
  in: generic
  in: Q1948412
  in: dynamic_mean_field
  in: Q317623
  in: model_description
  in: Q858926
  order: 2
  path: model paradigm

BoundaryCondition
type: NodeShape
closed: true
ignored properties: type
property:
  in: Dirichlet
  in: Neumann
  in: Robin
  in: Periodic
  max count: 1
  order: 2
  path: bc type
property:
  datatype: string
  description: Mesh/atlas subset where BC applies.
  max count: 1
  node kind: Literal
  order: 3
  path: on region
property:
  datatype: boolean
  max count: 1
  node kind: Literal
  order: 5
  path: time dependent
property:
  class: Equation
  description: Constant, parameter, or equation.
  max count: 1
  node kind: BlankNodeOrIRI
  order: 4
  path: value
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 1
  path: description
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 0
  path: label

BrainRegionSeries
type: NodeShape
comment: A series whose values represent latitude
closed: true
ignored properties: type
property:
  datatype: string
  node kind: Literal
  order: 0
  path: values

ConditionalBlock
type: NodeShape
comment: A single condition and its corresponding equation segment.
closed: true
ignored properties: type
property:
  datatype: string
  description: The condition for this block (e.g., t > onset).
  max count: 1
  node kind: Literal
  order: 0
  path: condition
property:
  datatype: string
  description: The equation to apply when the condition is met.
  max count: 1
  node kind: Literal
  order: 1
  path: expression

Continuation
type: NodeShape
comment: Complete specification of a numerical continuation / bifurcation analysis. All universal solver settings live directly here. Toolkit-specific string options go in the options slot. When used inside a BranchSwitch, only explicitly set attributes override the parent's values.
closed: true
ignored properties: type
property:
  class: InitialState
  description: How to obtain the initial equilibrium. Default: time integration to steady state.
  max count: 1
  node kind: BlankNodeOrIRI
  order: 18
  path: initial state
property:
  datatype: integer
  description: Number of eigenvalues to compute. Must be >= number of state variables for reliable Hopf detection.
  max count: 1
  node kind: Literal
  order: 11
  path: nev
property:
  datatype: float
  description: Absolute tolerance for Newton corrector convergence.
  max count: 1
  node kind: Literal
  order: 9
  path: newton tol
property:
  datatype: float
  description: Maximum adaptive step size.
  max count: 1
  node kind: Literal
  order: 7
  path: ds max
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 2
  path: description
property:
  datatype: integer
  description: Bifurcation detection level. 0 = off, 1 = eigenvalues only, 2 = detect, 3 = locate precisely.
  max count: 1
  node kind: Literal
  order: 13
  path: detect bifurcation
property:
  class: Option
  description: Toolkit-specific string options (tangent method, solver name, etc.).
  node kind: IRI
  order: 23
  path: options
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 1
  path: label
property:
  class: Parameter
  description: Parameters to vary. First parameter is primary (codim-1); second enables codim-2 continuation. Each Parameter has name + domain (Range with lo/hi bounds).
  node kind: IRI
  order: 4
  path: free parameters
property:
  datatype: integer
  description: Maximum Newton corrector iterations per step.
  max count: 1
  node kind: Literal
  order: 10
  path: newton max iterations
property:
  datatype: float
  description: Minimum adaptive step size.
  max count: 1
  node kind: Literal
  order: 6
  path: ds min
property:
  datatype: integer
  description: Maximum continuation steps.
  max count: 1
  node kind: Literal
  order: 8
  path: max steps
property:
  class: Dynamics
  description: Reference to the dynamical system model (by name). Resolved from the experiment's dynamics dict at runtime.
  max count: 1
  node kind: IRI
  order: 3
  path: dynamics
property:
  datatype: string
  description: Globally unique identifier for the entity.
  max count: 1
  min count: 1
  node kind: Literal
  order: 0
  path: name
property:
  default value: PALC
  description: Predictor-corrector algorithm.
  in: PALC
  in: MoorePenrose
  in: Natural
  max count: 1
  order: 17
  path: algorithm
property:
  datatype: integer
  description: Maximum bisection steps for bifurcation point localization.
  max count: 1
  node kind: Literal
  order: 16
  path: max bisection steps
property:
  class: BranchSwitch
  description: Child branches to continue from detected bifurcation points (PO from Hopf, fold continuation, etc.).
  node kind: IRI
  order: 19
  path: branches
property:
  datatype: boolean
  description: Enable fold (limit point) detection.
  max count: 1
  node kind: Literal
  order: 14
  path: detect fold
property:
  datatype: boolean
  description: Continue in both directions from the starting point.
  max count: 1
  node kind: Literal
  order: 20
  path: bothside
property:
  datatype: float
  description: Tolerance on real part of eigenvalue for stability boundary.
  max count: 1
  node kind: Literal
  order: 12
  path: tol stability
property:
  datatype: integer
  description: Number of eigenvalue sign inversions to flag a bifurcation. Must be even. Higher = fewer false positives.
  max count: 1
  node kind: Literal
  order: 15
  path: n inversion
property:
  class: ExecutionConfig
  description: Per-analysis execution configuration.
  max count: 1
  node kind: BlankNodeOrIRI
  order: 21
  path: execution
property:
  datatype: float
  description: Initial arc-length step size.
  max count: 1
  node kind: Literal
  order: 5
  path: ds
property:
  class: SoftwareRequirement
  description: Backend engine (BifurcationKit, AUTO-07p, MatCont, etc.).
  max count: 1
  node kind: IRI
  order: 22
  path: software

DataSource
type: NodeShape
comment: Specification for loading external/empirical data.
closed: true
ignored properties: type
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 1
  path: label
property:
  datatype: string
  description: File path or URI to the data
  max count: 1
  node kind: Literal
  order: 3
  path: path
property:
  class: Callable
  description: Callable that loads the data (e.g., load_functional_connectivity)
  max count: 1
  node kind: IRI
  order: 4
  path: loader
property:
  datatype: string
  description: Globally unique identifier for the entity.
  max count: 1
  min count: 1
  node kind: Literal
  order: 0
  path: name
property:
  datatype: string
  description: Data format: 'npy', 'mat', 'csv', 'nifti', etc.
  max count: 1
  node kind: Literal
  order: 5
  path: format
property:
  class: Function
  description: Optional preprocessing to apply after loading
  max count: 1
  node kind: IRI
  order: 7
  path: preprocessing
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 2
  path: description
property:
  datatype: string
  description: Key/variable name within the file (for .mat, .npz, etc.)
  max count: 1
  node kind: Literal
  order: 6
  path: key

DerivedParameter
type: NodeShape
closed: true
ignored properties: type
property:
  datatype: float
  node kind: Literal
  order: 18
  path: explored values
property:
  description: External ontology IRIs (typically GO, ChEBI, UBERON, CL, MeSH) that this entity is a surrogate / abstraction / model of. Replaces the legacy OWL pattern `tvbo:surrogate_of` by carrying the link inline with the YAML data instance. Multiple IRIs allowed: a single parameter may abstract several biological processes (e.g. a synaptic conductance grounding both GO:0060079 (excitatory PSP) and GO:0007268 (chemical synaptic transmission)).
  node kind: IRI
  order: 12
  path: hasDbXref
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 13
  path: comment
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 5
  path: label
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 8
  path: defaultValue
property:
  class: Range
  max count: 1
  node kind: BlankNodeOrIRI
  order: 9
  path: domain
property:
  datatype: boolean
  max count: 1
  node kind: Literal
  order: 14
  path: heterogeneous
property:
  description: Physical unit of measurement. Values are drawn from the QUDT ontology (http://qudt.org/vocab/unit/) with UO cross-references where available.
  in: SEC
  in: MilliSEC
  in: MicroSEC
  in: PER-SEC
  in: PER-MilliSEC
  in: HZ
  in: KiloHZ
  in: http://qudt.org/vocab/unit/V
  in: MilliV
  in: PER-MilliV
  in: MilliV-PER-MilliSEC
  in: MilliV-PER-SEC
  in: http://qudt.org/vocab/unit/A
  in: NanoA
  in: PicoA
  in: uA_per_cm2
  in: PicoFARAD
  in: NanoFARAD
  in: uF_per_cm2
  in: NanoS
  in: MicroS
  in: PicoS
  in: S_per_cm2
  in: mS_per_cm2
  in: S_per_m2
  in: nS_per_mV
  in: PER-NanoC
  in: PER-PicoC
  in: MOL-PER-M3
  in: mol_per_cm3
  in: MilliMOL-PER-M3
  in: mol_per_m_per_A_per_s
  in: MicroM3
  in: http://qudt.org/vocab/unit/M
  in: MilliM
  in: CentiM
  in: M-PER-SEC
  in: MilliM-PER-MilliSEC
  in: Hz_per_nA
  in: S-PER-M
  in: H-PER-M
  in: OHM
  in: Mohm
  in: kohm_cm
  in: DEG C
  in: rad_per_ms
  in: UNITLESS
  in: PERCENT
  in: arbitrary_unit
  in: KiloGM
  in: kg_per_s
  in: M-PER-SEC2
  in: N-PER-M
  in: RAD
  in: RAD-PER-SEC
  in: SEC2
  in: per_unit
  max count: 1
  order: 4
  path: unit
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 1
  path: symbol
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 6
  path: definition
property:
  datatype: float
  max count: 1
  node kind: Literal
  order: 10
  path: reported optimum
property:
  class: Equation
  max count: 1
  node kind: BlankNodeOrIRI
  order: 3
  path: Equation
property:
  datatype: string
  description: Globally unique identifier for the entity.
  max count: 1
  min count: 1
  node kind: Literal
  order: 0
  path: name
property:
  description: Numeric, string, or boolean value. ScalarValue accepts any literal primitive type, allowing parameters to carry control flags (e.g., booleans) or symbolic placeholders alongside numeric defaults.
  max count: 1
  order: 7
  path: value
property:
  class: Range
  description: Per-element domain overrides for heterogeneous parameters. When specified, element_domains[i] overrides domain for element i during exploration auto-expansion. Length must match parameter shape (e.g., n_nodes for shape "(n_nodes,)"). If not set, all elements share the same domain.
  node kind: BlankNodeOrIRI
  order: 19
  path: element domains
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 2
  path: description
property:
  datatype: string
  description: Dataset path for array-valued parameters. When set, the parameter value is stored in the binary companion file (HDF5 or Zarr) at this path. The value slot is omitted.
  max count: 1
  node kind: Literal
  order: 11
  path: dataset path
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 17
  path: shape
property:
  datatype: boolean
  max count: 1
  node kind: Literal
  order: 16
  path: free
property:
  class: Distribution
  description: Distribution for heterogeneous per-node parameter sampling. Implies heterogeneous=true.
  max count: 1
  node kind: IRI
  order: 15
  path: distribution

FreeParameter
type: NodeShape
comment: One degree of freedom in an OptimizationStage. References an existing Parameter by dotted scope (e.g. "ReducedWongWang.w" or "FastLinearCoupling.G") and supplies optimization-specific metadata (heterogeneous, shape, bounds, initial value). No new Parameter is created here.
closed: true
ignored properties: type
property:
  datatype: string
  description: Optimization shape as a Python-tuple-style string (e.g. "(n_nodes,)" or "(n_nodes, n_nodes)"). Required when heterogeneous is true.
  max count: 1
  node kind: Literal
  order: 4
  path: shape
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 0
  path: label
property:
  datatype: boolean
  description: If true, the parameter is optimized per-element (broadcast to `shape`). If false, a single scalar is optimized and broadcast at runtime.
  max count: 1
  node kind: Literal
  order: 3
  path: heterogeneous
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 1
  path: description
property:
  class: Range
  description: Optional bounds (lo, hi) for constrained optimization.
  max count: 1
  node kind: BlankNodeOrIRI
  order: 6
  path: domain
property:
  class: Parameter
  description: Dotted reference to the Parameter to optimize. Format: "<scope>.<param_name>" where <scope> is either a Dynamics class name or a coupling key.
  max count: 1
  min count: 1
  node kind: IRI
  order: 2
  path: parameter
property:
  description: Optional initial value for the optimizer (overrides the referenced Parameter's value).
  max count: 1
  order: 5
  path: initial value

Integrator
type: NodeShape
comment: Fixed-step or adaptive ODE integrator with TVB-specific extensions (noise, transient time, etc.). Inherits abs_tol, rel_tol from Solver. Overrides method default to 'euler'.
closed: true
ignored properties: type
property:
  datatype: float
  default value: 1e-10
  description: Relative tolerance for adaptive solvers.
  max count: 1
  node kind: Literal
  order: 17
  path: rel tol
property:
  class: Noise
  max count: 1
  node kind: BlankNodeOrIRI
  order: 8
  path: noise
property:
  class: Parameter
  node kind: IRI
  order: 2
  path: parameters
property:
  datatype: string
  default value: euler
  description: Integration method (euler, heun, rk4, etc.)
  max count: 1
  node kind: Literal
  order: 5
  path: method
property:
  datatype: float
  default value: 1000.0
  max count: 1
  node kind: Literal
  order: 3
  path: duration
property:
  datatype: float
  default value: 1e-10
  description: Absolute tolerance for adaptive solvers.
  max count: 1
  node kind: Literal
  order: 16
  path: abs tol
property:
  datatype: integer
  default value: 1
  max count: 1
  node kind: Literal
  order: 12
  path: number of stages
property:
  class: DerivedVariable
  node kind: IRI
  order: 13
  path: intermediate expressions
property:
  datatype: float
  max count: 1
  node kind: Literal
  order: 10
  path: transient time
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 4
  path: description
property:
  datatype: float
  node kind: Literal
  order: 9
  path: state wise sigma
property:
  datatype: boolean
  default value: true
  max count: 1
  node kind: Literal
  order: 15
  path: delayed
property:
  class: DerivedVariable
  max count: 1
  node kind: IRI
  order: 14
  path: update expression
property:
  datatype: float
  default value: 0.01220703125
  max count: 1
  node kind: Literal
  order: 6
  path: step size
property:
  datatype: integer
  max count: 1
  node kind: Literal
  order: 7
  path: steps
property:
  description: Physical unit of measurement. Values are drawn from the QUDT ontology (http://qudt.org/vocab/unit/) with UO cross-references where available.
  in: SEC
  in: MilliSEC
  in: MicroSEC
  in: PER-SEC
  in: PER-MilliSEC
  in: HZ
  in: KiloHZ
  in: http://qudt.org/vocab/unit/V
  in: MilliV
  in: PER-MilliV
  in: MilliV-PER-MilliSEC
  in: MilliV-PER-SEC
  in: http://qudt.org/vocab/unit/A
  in: NanoA
  in: PicoA
  in: uA_per_cm2
  in: PicoFARAD
  in: NanoFARAD
  in: uF_per_cm2
  in: NanoS
  in: MicroS
  in: PicoS
  in: S_per_cm2
  in: mS_per_cm2
  in: S_per_m2
  in: nS_per_mV
  in: PER-NanoC
  in: PER-PicoC
  in: MOL-PER-M3
  in: mol_per_cm3
  in: MilliMOL-PER-M3
  in: mol_per_m_per_A_per_s
  in: MicroM3
  in: http://qudt.org/vocab/unit/M
  in: MilliM
  in: CentiM
  in: M-PER-SEC
  in: MilliM-PER-MilliSEC
  in: Hz_per_nA
  in: S-PER-M
  in: H-PER-M
  in: OHM
  in: Mohm
  in: kohm_cm
  in: DEG C
  in: rad_per_ms
  in: UNITLESS
  in: PERCENT
  in: arbitrary_unit
  in: KiloGM
  in: kg_per_s
  in: M-PER-SEC2
  in: N-PER-M
  in: RAD
  in: RAD-PER-SEC
  in: SEC2
  in: per_unit
  max count: 1
  order: 1
  path: unit
property:
  default value: ms
  description: Time unit for the integration / simulation. Determines the physical time meaning of one model time-step.
  in: SEC
  in: MilliSEC
  in: MicroSEC
  in: PER-SEC
  in: PER-MilliSEC
  in: HZ
  in: KiloHZ
  in: http://qudt.org/vocab/unit/V
  in: MilliV
  in: PER-MilliV
  in: MilliV-PER-MilliSEC
  in: MilliV-PER-SEC
  in: http://qudt.org/vocab/unit/A
  in: NanoA
  in: PicoA
  in: uA_per_cm2
  in: PicoFARAD
  in: NanoFARAD
  in: uF_per_cm2
  in: NanoS
  in: MicroS
  in: PicoS
  in: S_per_cm2
  in: mS_per_cm2
  in: S_per_m2
  in: nS_per_mV
  in: PER-NanoC
  in: PER-PicoC
  in: MOL-PER-M3
  in: mol_per_cm3
  in: MilliMOL-PER-M3
  in: mol_per_m_per_A_per_s
  in: MicroM3
  in: http://qudt.org/vocab/unit/M
  in: MilliM
  in: CentiM
  in: M-PER-SEC
  in: MilliM-PER-MilliSEC
  in: Hz_per_nA
  in: S-PER-M
  in: H-PER-M
  in: OHM
  in: Mohm
  in: kohm_cm
  in: DEG C
  in: rad_per_ms
  in: UNITLESS
  in: PERCENT
  in: arbitrary_unit
  in: KiloGM
  in: kg_per_s
  in: M-PER-SEC2
  in: N-PER-M
  in: RAD
  in: RAD-PER-SEC
  in: SEC2
  in: per_unit
  max count: 1
  order: 0
  path: time scale

Simulation
type: NodeShape
closed: true
ignored properties: type
property:
  datatype: integer
  max count: 1
  node kind: Literal
  order: 1
  path: identifier
property:
  class: Dynamics
  max count: 1
  node kind: IRI
  order: 0
  path: model
property:
  class: ExecutionConfig
  description: Computational execution configuration (parallelization, devices).
  max count: 1
  node kind: BlankNodeOrIRI
  order: 21
  path: execution
property:
  datatype: string
  node kind: Literal
  order: 23
  path: references
property:
  class: Equation
  node kind: BlankNodeOrIRI
  order: 3
  path: additional equations
property:
  class: Exploration
  description: Parameter exploration/grid search specifications
  node kind: IRI
  order: 17
  path: explorations
property:
  class: Dynamics
  description: Default dynamics model for all nodes. For heterogeneous networks with multiple dynamics, use network.dynamics instead.
  max count: 1
  node kind: IRI
  order: 5
  path: dynamics
property:
  class: SoftwareRequirement
  description: (Deprecated) Single software requirement; prefer 'environment' with aggregated requirements.
  max count: 1
  node kind: IRI
  order: 22
  path: software
property:
  class: Stimulus
  max count: 1
  node kind: BlankNodeOrIRI
  order: 13
  path: stimulation
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 4
  path: label
property:
  class: Coupling
  max count: 1
  node kind: IRI
  order: 9
  path: coupling
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 2
  path: description
property:
  class: Optimization
  description: Parameter optimization configurations
  node kind: IRI
  order: 16
  path: optimizations
property:
  class: Network
  max count: 1
  node kind: BlankNodeOrIRI
  order: 7
  path: connectivity
property:
  class: DerivedObservation
  description: Observations derived from combining other observations. Computed after all regular observations are available. Examples: fc_corr (from fc, fc_target), rmse, etc.
  node kind: IRI
  order: 11
  path: derived observations
property:
  class: Observation
  node kind: IRI
  order: 10
  path: observations
property:
  class: Function
  description: Reusable function definitions. Referenced by name in observation pipelines. Enables DRY: define compute_fc once, use in both simulated and empirical paths.
  node kind: IRI
  order: 12
  path: functions
property:
  class: SoftwareEnvironment
  description: Execution environment (collection of requirements).
  max count: 1
  node kind: IRI
  order: 20
  path: environment
property:
  class: Continuation
  description: Numerical continuation and bifurcation analysis specifications. Each entry defines a continuation experiment (equilibrium branch, codim-2 curve, periodic orbit family, etc.). # Either reference a full reusable environment (preferred) or, for
  node kind: IRI
  order: 19
  path: continuations
property:
  class: Network
  max count: 1
  node kind: BlankNodeOrIRI
  order: 8
  path: network
property:
  class: Dataset
  description: Multi-subject dataset for workflow rendering. When set, render_workflow() uses dataset.subjects/sessions to generate per-subject parallel jobs.
  max count: 1
  node kind: IRI
  order: 24
  path: dataset
property:
  class: Integrator
  max count: 1
  node kind: BlankNodeOrIRI
  order: 6
  path: integration
property:
  class: Event
  description: Events that apply at the experiment level. For component-level events, attach them to individual nodes or edges instead.
  node kind: IRI
  order: 14
  path: events
property:
  class: Algorithm
  description: Iterative parameter tuning algorithms (FIC, EIB, etc.)
  node kind: IRI
  order: 18
  path: algorithms
property:
  class: PDE
  max count: 1
  node kind: BlankNodeOrIRI
  order: 15
  path: field dynamics

Stimulus
type: NodeShape
closed: true
ignored properties: type
property:
  datatype: float
  node kind: Literal
  order: 7
  path: weighting
property:
  datatype: float
  default value: 1000.0
  max count: 1
  node kind: Literal
  order: 4
  path: duration
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 2
  path: description
property:
  datatype: integer
  node kind: Literal
  order: 6
  path: regions
property:
  datatype: string
  description: Add the location of the data file containing the parcellation terminology.
  max count: 1
  node kind: Literal
  order: 3
  path: dataLocation
property:
  class: Parameter
  node kind: IRI
  order: 1
  path: parameters
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 5
  path: label
property:
  class: Equation
  max count: 1
  node kind: BlankNodeOrIRI
  order: 0
  path: Equation

TimeSeries
type: NodeShape
comment: Time series data from simulations or measurements. Supports BIDS-compatible export for computational modeling (BEP034).
closed: true
ignored properties: type
property:
  class: SoftwareEnvironment
  description: Software environment used to generate this data.
  max count: 1
  node kind: IRI
  order: 13
  path: software environment
property:
  datatype: string
  description: BIDS session identifier.
  max count: 1
  node kind: Literal
  order: 16
  path: identifier
property:
  datatype: dateTime
  description: Timestamp when this TimeSeries was generated.
  max count: 1
  node kind: Literal
  order: 12
  path: generated at
property:
  datatype: string
  description: Ordering of dimensions: Time, State Variable, Space, Mode.
  node kind: Literal
  order: 9
  path: labels ordering
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 0
  path: label
property:
  datatype: string
  description: BIDS subject identifier.
  max count: 1
  node kind: Literal
  order: 15
  path: identifier
property:
  datatype: string
  description: BIDS ModelEq reference: path to _eq.xml LEMS file.
  max count: 1
  node kind: Literal
  order: 19
  path: model equation ref
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 1
  path: description
property:
  datatype: string
  description: Physical unit of the time series values.
  max count: 1
  node kind: Literal
  order: 8
  path: unit
property:
  datatype: string
  description: Mapping of dimension names to their labels (JSON-encoded dict).
  max count: 1
  node kind: Literal
  order: 10
  path: labels dimensions
property:
  class: Matrix
  max count: 1
  node kind: BlankNodeOrIRI
  order: 3
  path: data
property:
  datatype: float
  description: Time between samples (inverse of sampling_rate).
  max count: 1
  node kind: Literal
  order: 6
  path: sampling period
property:
  datatype: float
  description: Sampling rate in Hz.
  max count: 1
  node kind: Literal
  order: 5
  path: sampling rate
property:
  description: Imaging modality or simulation output type.
  in: BOLD
  in: EEG
  in: MEG
  in: SEEG
  in: IEEG
  max count: 1
  order: 18
  path: modality
property:
  datatype: integer
  description: BIDS run number.
  max count: 1
  node kind: Literal
  order: 17
  path: identifier
property:
  datatype: string
  description: Add the location of the data file containing the parcellation terminology.
  max count: 1
  node kind: Literal
  order: 2
  path: dataLocation
property:
  datatype: string
  description: BIDS task name for the simulation (e.g., 'rest', 'simulation').
  max count: 1
  node kind: Literal
  order: 14
  path: task name
property:
  class: Simulation
  description: Reference to the SimulationExperiment that generated this TimeSeries.
  max count: 1
  node kind: IRI
  order: 11
  path: source experiment
property:
  datatype: string
  description: BIDS ModelParam reference: path to _param.xml LEMS file.
  max count: 1
  node kind: Literal
  order: 20
  path: model param ref
property:
  class: Matrix
  max count: 1
  node kind: BlankNodeOrIRI
  order: 4
  path: time
property:
  datatype: string
  default value: ms
  description: Unit of the sampling period (e.g., 'ms', 's').
  max count: 1
  node kind: Literal
  order: 7
  path: sampling period unit
property:
  datatype: string
  description: Reference to connectivity data (_conndata-network_connectivity.tsv).
  max count: 1
  node kind: Literal
  order: 21
  path: connectivity ref

Electrode
type: NodeShape
comment: Implanted DBS electrode and contact geometry.
closed: true
ignored properties: type
property:
  datatype: string
  description: Unique identifier for this electrode
  max count: 1
  node kind: Literal
  order: 0
  path: identifier
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 2
  path: model
property:
  class: Coordinate
  max count: 1
  node kind: BlankNodeOrIRI
  order: 6
  path: tail
property:
  class: Coordinate
  max count: 1
  node kind: BlankNodeOrIRI
  order: 5
  path: head
property:
  class: Transformation
  description: Coordinate space used for implantation planning
  max count: 1
  node kind: IRI
  order: 9
  path: coordinate space
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 10
  path: recon path
property:
  class: Contact
  description: List of physical contacts along the electrode
  node kind: BlankNodeOrIRI
  order: 4
  path: contacts
property:
  class: Region
  description: Anatomical target structure from a brain atlas
  max count: 1
  node kind: IRI
  order: 8
  path: target structure
property:
  datatype: string
  default value: left
  description: Hemisphere of electrode (left/right)
  max count: 1
  node kind: Literal
  order: 3
  path: hemisphere
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 1
  path: manufacturer
property:
  class: Coordinate
  description: The planned trajectory for electrode implantation
  node kind: BlankNodeOrIRI
  order: 7
  path: trajectory

Session
type: NodeShape
comment: A data collection session for a subject. Corresponds to a BIDS 'ses-' entity. Sessions capture longitudinal timepoints (baseline, follow-up), different experimental conditions, or repeated measures.
closed: true
ignored properties: type
property:
  datatype: string
  description: Experimental condition label (e.g., 'rest', 'task-nback'). Maps to BIDS 'task-' entity.
  max count: 1
  node kind: Literal
  order: 4
  path: condition
property:
  datatype: string
  description: BIDS session identifier (without 'ses-' prefix). Examples: 'baseline', '6month', 'pre', 'post'.
  max count: 1
  min count: 1
  node kind: Literal
  order: 0
  path: identifier
property:
  datatype: string
  description: Human-readable session label.
  max count: 1
  node kind: Literal
  order: 1
  path: label
property:
  datatype: string
  description: Path to session-specific connectome. Overrides Subject.network when set. Relative to dataset root or BIDS derivatives.
  max count: 1
  node kind: Literal
  order: 2
  path: network
property:
  datatype: string
  description: Paths to empirical recordings for this session (e.g., BOLD time series, MEG/EEG). Relative to dataset root.
  node kind: Literal
  order: 3
  path: empirical data

Region
type: NodeShape
comment: A schema for representing a parcellation entity, which is an anatomical location or study target.
closed: true
ignored properties: type
property:
  datatype: integer
  description: Add the original label of this entity as defined in the parcellation terminology.
  max count: 1
  node kind: Literal
  order: 8
  path: originalLookupLabel
property:
  datatype: string
  description: Add the related anatomical entity as defined by the UBERON ontology.
  max count: 1
  node kind: Literal
  order: 7
  path: relatedUBERONTerm
property:
  class: Region
  description: Add all anatomical parent structures for this entity as defined within the corresponding brain atlas.
  node kind: IRI
  order: 3
  path: hasParent
property:
  datatype: string
  description: Add the color code used for visual representation of this entity.
  max count: 1
  node kind: Literal
  order: 11
  path: color
property:
  datatype: string
  description: Enter any alternate names, including abbreviations, for this entity.
  node kind: Literal
  order: 1
  path: hasName
property:
  description: Add the hemisphere of this entity.
  in: left
  in: right
  in: both
  max count: 1
  order: 9
  path: hemisphere
property:
  datatype: string
  description: Enter the internationalized resource identifier (IRI) to the related ontological terms.
  node kind: Literal
  order: 5
  path: hasIlxId
property:
  datatype: integer
  description: Enter the label used for looking up this entity in the parcellation terminology.
  max count: 1
  node kind: Literal
  order: 2
  path: lookupLabel
property:
  datatype: string
  description: Enter the version identifier of this brain atlas or coordinate space version.
  max count: 1
  node kind: Literal
  order: 6
  path: hasVersion
property:
  class: Coordinate
  description: Add the center coordinate of this entity.
  max count: 1
  node kind: BlankNodeOrIRI
  order: 10
  path: center
property:
  datatype: string
  description: Slot for the abbreviation of a resource.
  max count: 1
  node kind: Literal
  order: 0
  path: notation
property:
  datatype: string
  description: Globally unique identifier for the entity.
  max count: 1
  min count: 1
  node kind: Literal
  order: 4
  path: name

Aggregation
type: NodeShape
comment: Specifies how to aggregate values across a dimension. Used for loss functions to define per-element loss with reduction.
closed: true
ignored properties: type
property:
  default value: mean
  description: Aggregation operation (mean, sum, max, min, none)
  in: mean
  in: sum
  in: max
  in: min
  in: none
  max count: 1
  order: 1
  path: type
property:
  description: Dimension to aggregate over (e.g., node, time, state)
  in: time
  in: state
  in: node
  in: region
  in: mode
  in: sample
  in: batch
  in: frequency
  max count: 1
  order: 0
  path: over

ClassReference
type: NodeShape
comment: Reference to a class that can be instantiated and called. Used for external library classes (e.g., tvboptim.Bold, custom monitors). The class is instantiated with constructor_args, then called with call_args. Generalizable pattern: works for tvboptim, TVB, or any Python class.
closed: true
ignored properties: type
property:
  class: Argument
  description: Arguments passed to __init__ when instantiating the class. Example: period=1000.0, downsample_period=4.0 for Bold monitor.
  node kind: IRI
  order: 0
  path: constructor args
property:
  datatype: string
  description: Globally unique identifier for the entity.
  max count: 1
  min count: 1
  node kind: Literal
  order: 3
  path: name
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 4
  path: description
property:
  class: Argument
  description: Arguments passed when calling the instance (__call__). Usually the input data from simulation result. Example: result (simulation output array).
  node kind: IRI
  order: 1
  path: call args
property:
  datatype: string
  description: Reference to transient simulation result for history initialization. Some monitors (e.g., Bold) require history from warmup simulation. Value should reference a simulation result name (e.g., 'result_init').
  max count: 1
  node kind: Literal
  order: 2
  path: warmup source
property:
  class: SoftwareRequirement
  max count: 1
  node kind: IRI
  order: 6
  path: software
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 5
  path: module

Matrix
type: NodeShape
comment: Adjacency matrix of a network.
closed: true
ignored properties: type
property:
  class: BrainRegionSeries
  max count: 1
  node kind: BlankNodeOrIRI
  order: 4
  path: https://w3id.org/tvbo/y
property:
  datatype: integer
  description: Matrix dimensions [N, M]
  node kind: Literal
  order: 7
  path: shape
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 1
  path: description
property:
  class: BrainRegionSeries
  max count: 1
  node kind: BlankNodeOrIRI
  order: 3
  path: https://w3id.org/tvbo/x
property:
  datatype: string
  default value: float32
  description: Data type for matrix values
  max count: 1
  node kind: Literal
  order: 8
  path: dtype
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 0
  path: label
property:
  description: Storage format in binary companion (dense, csr, coo)
  in: dense
  in: csr
  in: coo
  max count: 1
  order: 6
  path: format
property:
  datatype: string
  description: Add the location of the data file containing the parcellation terminology.
  max count: 1
  node kind: Literal
  order: 2
  path: dataLocation
property:
  datatype: float
  node kind: Literal
  order: 5
  path: values

Mesh
type: NodeShape
closed: true
ignored properties: type
property:
  datatype: string
  description: Add the location of the data file containing the parcellation terminology.
  max count: 1
  node kind: Literal
  order: 2
  path: dataLocation
property:
  in: triangle
  in: quad
  in: tetrahedron
  in: hexahedron
  max count: 1
  order: 3
  path: element type
property:
  datatype: string
  description: Path to external mesh file (GIFTI, VTK, MSH, FreeSurfer, etc.).
  max count: 1
  node kind: Literal
  order: 7
  path: mesh file
property:
  datatype: string
  description: Explicit format override (gifti, freesurfer, meshio, vtk, gmsh). Auto-detected from extension if null.
  max count: 1
  node kind: Literal
  order: 8
  path: mesh format
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 1
  path: description
property:
  class: Coordinate
  description: Node coordinates (x,y,z) in the given coordinate space.
  node kind: BlankNodeOrIRI
  order: 4
  path: coordinates
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 0
  path: label
property:
  datatype: integer
  description: Number of vertices in the mesh.
  max count: 1
  node kind: Literal
  order: 9
  path: number of vertices
property:
  datatype: integer
  description: Number of elements (triangles, quads, tetrahedra, etc.).
  max count: 1
  node kind: Literal
  order: 10
  path: number of elements
property:
  class: Transformation
  max count: 1
  node kind: IRI
  order: 6
  path: coordinate space
property:
  datatype: string
  description: Connectivity (indices) or file reference to topology.
  max count: 1
  node kind: Literal
  order: 5
  path: elements

Network
type: NodeShape
comment: Network specification with nodes, edges, and reusable coupling configurations. Supports both explicit node/edge representation and matrix-based connectivity (Connectome compatibility).
closed: true
ignored properties: type
property:
  datatype: string
  description: Path to BEP017-compliant BIDS directory for loading connectivity matrices
  max count: 1
  node kind: Literal
  order: 14
  path: bids dir
property:
  class: File
  node kind: IRI
  order: 23
  path: edge matrix files
property:
  datatype: string
  description: BEP017 measure names for observational targets (e.g., BoldCorrelation)
  node kind: Literal
  order: 17
  path: observational measures
property:
  class: Transformation
  description: Coordinate space for node positions (e.g., MNI152NLin2009c). Mirrors BrainAtlas.coordinateSpace so network node positions are unambiguous.
  max count: 1
  node kind: IRI
  order: 8
  path: coordinate space
property:
  class: Function
  description: Ordered list of transforms applied to edge property matrices. Each Function's name identifies the target edge property (e.g. 'weight', 'length'). Supports equation-based (symbolic) or callable-based (software) transforms. Multiple transforms on the same target are applied sequentially.
  node kind: IRI
  order: 11
  path: transforms
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 1
  path: description
property:
  class: Parcellation
  description: Brain parcellation/atlas reference
  max count: 1
  node kind: BlankNodeOrIRI
  order: 9
  path: parcellation
property:
  datatype: string
  description: Short alphanumeric identifier for the BIDS desc- filename entity (e.g., SC, FC, EC, SCFC). Classifies the connectivity modality of the network's edge measures.
  max count: 1
  node kind: Literal
  order: 13
  path: descriptor
property:
  default value: mm
  description: Unit for distances/lengths in the network
  in: SEC
  in: MilliSEC
  in: MicroSEC
  in: PER-SEC
  in: PER-MilliSEC
  in: HZ
  in: KiloHZ
  in: http://qudt.org/vocab/unit/V
  in: MilliV
  in: PER-MilliV
  in: MilliV-PER-MilliSEC
  in: MilliV-PER-SEC
  in: http://qudt.org/vocab/unit/A
  in: NanoA
  in: PicoA
  in: uA_per_cm2
  in: PicoFARAD
  in: NanoFARAD
  in: uF_per_cm2
  in: NanoS
  in: MicroS
  in: PicoS
  in: S_per_cm2
  in: mS_per_cm2
  in: S_per_m2
  in: nS_per_mV
  in: PER-NanoC
  in: PER-PicoC
  in: MOL-PER-M3
  in: mol_per_cm3
  in: MilliMOL-PER-M3
  in: mol_per_m_per_A_per_s
  in: MicroM3
  in: http://qudt.org/vocab/unit/M
  in: MilliM
  in: CentiM
  in: M-PER-SEC
  in: MilliM-PER-MilliSEC
  in: Hz_per_nA
  in: S-PER-M
  in: H-PER-M
  in: OHM
  in: Mohm
  in: kohm_cm
  in: DEG C
  in: rad_per_ms
  in: UNITLESS
  in: PERCENT
  in: arbitrary_unit
  in: KiloGM
  in: kg_per_s
  in: M-PER-SEC2
  in: N-PER-M
  in: RAD
  in: RAD-PER-SEC
  in: SEC2
  in: per_unit
  max count: 1
  order: 21
  path: distance unit
property:
  datatype: string
  description: Path/URI to parent (coarser) Network. When set, this network is a refinement where each node maps to exactly one parent node via node_mapping.
  max count: 1
  node kind: Literal
  order: 19
  path: parent network
property:
  datatype: string
  description: BEP017 measure names for structural connectivity (e.g., streamlineCount, tractLength)
  node kind: Literal
  order: 16
  path: structural measures
property:
  class: Edge
  description: List of directed edges with coupling references (optional, for explicit edge definition)
  node kind: BlankNodeOrIRI
  order: 4
  path: edges
property:
  class: Entity
  description: W3C PROV-O aligned provenance
  max count: 1
  node kind: BlankNodeOrIRI
  order: 18
  path: provenance
property:
  default value: ms
  description: Default time unit for the network
  in: SEC
  in: MilliSEC
  in: MicroSEC
  in: PER-SEC
  in: PER-MilliSEC
  in: HZ
  in: KiloHZ
  in: http://qudt.org/vocab/unit/V
  in: MilliV
  in: PER-MilliV
  in: MilliV-PER-MilliSEC
  in: MilliV-PER-SEC
  in: http://qudt.org/vocab/unit/A
  in: NanoA
  in: PicoA
  in: uA_per_cm2
  in: PicoFARAD
  in: NanoFARAD
  in: uF_per_cm2
  in: NanoS
  in: MicroS
  in: PicoS
  in: S_per_cm2
  in: mS_per_cm2
  in: S_per_m2
  in: nS_per_mV
  in: PER-NanoC
  in: PER-PicoC
  in: MOL-PER-M3
  in: mol_per_cm3
  in: MilliMOL-PER-M3
  in: mol_per_m_per_A_per_s
  in: MicroM3
  in: http://qudt.org/vocab/unit/M
  in: MilliM
  in: CentiM
  in: M-PER-SEC
  in: MilliM-PER-MilliSEC
  in: Hz_per_nA
  in: S-PER-M
  in: H-PER-M
  in: OHM
  in: Mohm
  in: kohm_cm
  in: DEG C
  in: rad_per_ms
  in: UNITLESS
  in: PERCENT
  in: arbitrary_unit
  in: KiloGM
  in: kg_per_s
  in: M-PER-SEC2
  in: N-PER-M
  in: RAD
  in: RAD-PER-SEC
  in: SEC2
  in: per_unit
  max count: 1
  order: 22
  path: time unit

Noise
type: NodeShape
closed: true
ignored properties: type
property:
  class: Equation
  max count: 1
  node kind: BlankNodeOrIRI
  order: 1
  path: Equation
property:
  class: Parameter
  description: Optional scalar or vector intensity parameter for noise.
  max count: 1
  node kind: IRI
  order: 8
  path: intensity
property:
  datatype: boolean
  description: Indicates whether the noise is Gaussian
  max count: 1
  node kind: Literal
  order: 4
  path: gaussian
property:
  class: StateVariable
  description: State variables this noise applies to; if omitted, applies globally.
  node kind: IRI
  order: 11
  path: targets
property:
  datatype: boolean
  default value: true
  description: Indicates whether the noise is additive
  max count: 1
  node kind: Literal
  order: 5
  path: additive
property:
  datatype: string
  default value: gaussian
  max count: 1
  node kind: Literal
  order: 2
  path: noise type
property:
  class: RandomStream
  max count: 1
  node kind: BlankNodeOrIRI
  order: 7
  path: random state
property:
  datatype: integer
  default value: 42
  max count: 1
  node kind: Literal
  order: 6
  path: seed
property:
  class: Parameter
  node kind: IRI
  order: 0
  path: parameters
property:
  class: Function
  description: Optional functional form of the noise (callable specification).
  max count: 1
  node kind: IRI
  order: 9
  path: function
property:
  datatype: boolean
  max count: 1
  node kind: Literal
  order: 3
  path: correlated
property:
  datatype: string
  description: Inline Python code representation of the noise process.
  max count: 1
  node kind: Literal
  order: 10
  path: pycode

OptimizationStage
type: NodeShape
comment: A single stage in a multi-stage optimization workflow. Stages run sequentially, with each stage potentially using different parameters, shapes, learning rates, and algorithms.
closed: true
ignored properties: type
ignored properties: integration
ignored properties: execution
ignored properties: stages
ignored properties: loss
ignored properties: depends on
property:
  datatype: string
  default value: adam
  description: Optimizer for this stage: 'adam', 'adamw', 'sgd', etc.
  max count: 1
  node kind: Literal
  order: 4
  path: algorithm
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 2
  path: description
property:
  datatype: float
  default value: 0.001
  max count: 1
  node kind: Literal
  order: 5
  path: learning rate
property:
  class: OptimizationStage
  description: Previous stage to initialize from. Final values from that stage become initial values for this stage.
  max count: 1
  node kind: IRI
  order: 9
  path: warmup from
property:
  datatype: string
  description: Globally unique identifier for the entity.
  max count: 1
  min count: 1
  node kind: Literal
  order: 0
  path: name
property:
  class: Parameter
  description: Stage-specific hyperparameters (e.g., b2=0.9999 for adam)
  node kind: IRI
  order: 7
  path: hyperparameters
property:
  class: FreeParameter
  description: Parameters to optimize in this stage. Each entry is a FreeParameter that references an existing Parameter by dotted scope (e.g. "ReducedWongWang.w" or "FastLinearCoupling.G") and supplies optimization-specific metadata (heterogeneous, shape, bounds). No new Parameter is created here.
  node kind: BlankNodeOrIRI
  order: 3
  path: free parameters
property:
  datatype: integer
  default value: 100
  max count: 1
  node kind: Literal
  order: 6
  path: max iterations
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 1
  path: label
property:
  class: Parameter
  description: Parameters from previous stages to freeze (keep at optimized value but not update)
  node kind: IRI
  order: 8
  path: freeze parameters

Option
type: NodeShape
comment: A toolkit-specific key-value option (string name + string value). Used for backend settings that are not universal numeric parameters (e.g., solver name, tangent method, jacobian type).
closed: true
ignored properties: type
property:
  datatype: string
  description: Option name (key).
  max count: 1
  min count: 1
  node kind: Literal
  order: 0
  path: name
property:
  datatype: string
  description: Option value.
  max count: 1
  min count: 1
  node kind: Literal
  order: 1
  path: value

Solver
type: NodeShape
comment: Lightweight specification of a numerical ODE solver / integrator. Covers adaptive solvers (Vern9, Rodas5, Tsit5, etc.) used in shooting methods, initial-state integration, and other contexts where only the algorithm and tolerances matter.
closed: true
ignored properties: type
ignored properties: transient time
ignored properties: state wise sigma
ignored properties: parameters
ignored properties: description
ignored properties: delayed
ignored properties: noise
ignored properties: time scale
ignored properties: steps
ignored properties: step size
ignored properties: scipy ode base
ignored properties: number of stages
ignored properties: intermediate expressions
ignored properties: unit
ignored properties: duration
ignored properties: update expression
property:
  datatype: float
  default value: 1e-10
  description: Absolute tolerance for adaptive solvers.
  max count: 1
  node kind: Literal
  order: 1
  path: abs tol
property:
  datatype: float
  default value: 1e-10
  description: Relative tolerance for adaptive solvers.
  max count: 1
  node kind: Literal
  order: 2
  path: rel tol
property:
  datatype: string
  default value: Tsit5
  description: Solver algorithm name (e.g., Vern9, Rodas5, Tsit5, euler, heun, rk4).
  max count: 1
  node kind: Literal
  order: 0
  path: method

ClinicalScore
type: NodeShape
comment: Metadata about a clinical score or scale.
closed: true
ignored properties: type
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 0
  path: notation
property:
  class: ClinicalScore
  description: If this score is a subscore of a broader composite
  max count: 1
  node kind: BlankNodeOrIRI
  order: 6
  path: parent score
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 2
  path: description
property:
  datatype: string
  description: Domain assessed (e.g. motor, mood, pain)
  max count: 1
  node kind: Literal
  order: 3
  path: domain
property:
  class: ClinicalScale
  description: The scale this score belongs to, if applicable
  max count: 1
  node kind: BlankNodeOrIRI
  order: 5
  path: scale
property:
  datatype: string
  description: PubMed ID, DOI, or other reference to the score definition
  max count: 1
  node kind: Literal
  order: 4
  path: references
property:
  datatype: string
  description: Full name of the score (e.g., Unified Parkinson's Disease Rating Scale - Part III)
  max count: 1
  node kind: Literal
  order: 1
  path: name

Algorithm
type: NodeShape
comment: A complete specification of an iterative parameter tuning algorithm. Combines update rules, objectives, observations, and hyperparameters.
closed: true
ignored properties: type
property:
  class: TuningObjective
  description: What the algorithm optimizes for
  max count: 1
  node kind: BlankNodeOrIRI
  order: 5
  path: objective
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 1
  path: description
property:
  datatype: string
  description: Algorithm type: 'fic', 'eib', 'homeostatic', 'custom'
  max count: 1
  node kind: Literal
  order: 3
  path: type
property:
  datatype: string
  description: Learning rate schedule: 'constant', 'linear', 'exponential'
  max count: 1
  node kind: Literal
  order: 12
  path: learning rate schedule
property:
  datatype: float
  description: Learning rate (eta) for the tuning algorithm
  max count: 1
  node kind: Literal
  order: 9
  path: learning rate
property:
  datatype: integer
  description: Number of iterations to run
  max count: 1
  node kind: Literal
  order: 11
  path: n iterations
property:
  datatype: float
  description: Duration of each simulation step (e.g., one BOLD TR)
  max count: 1
  node kind: Literal
  order: 13
  path: simulation period
property:
  class: ExecutionConfig
  description: Per-algorithm execution configuration (overrides experiment-level defaults). Useful for setting random_seed per algorithm to ensure reproducibility.
  max count: 1
  node kind: BlankNodeOrIRI
  order: 2
  path: execution
property:
  datatype: integer
  default value: 1
  description: Apply update every N iterations
  max count: 1
  node kind: Literal
  order: 14
  path: apply every
property:
  class: FunctionCall
  description: Function calls for tracking progress, computing metrics, etc. Each FunctionCall references a function from the experiment's functions section and specifies arguments for that specific algorithm context.
  node kind: BlankNodeOrIRI
  order: 15
  path: functions
property:
  datatype: string
  description: Globally unique identifier for the entity.
  max count: 1
  min count: 1
  node kind: Literal
  order: 0
  path: name
property:
  class: Parameter
  description: Additional algorithm-specific parameters
  node kind: IRI
  order: 8
  path: hyperparameters
property:
  class: AlgorithmInclude
  description: Include update rules from other algorithms with optional argument overrides. Unlike depends_on (sequential), includes means combined execution. Example: includes: [{algorithm: fic, arguments: [{name: eta, value: 0.1}]}]
  node kind: BlankNodeOrIRI
  order: 4
  path: includes
property:
  datatype: boolean
  description: Linear warmup of learning rate from 0 to learning_rate over n_iterations. eta_effective = eta * (i+1) / n_iterations
  max count: 1
  node kind: Literal
  order: 10
  path: learning rate warmup
property:
  class: Algorithm
  description: Other algorithms that must run first (e.g., EIB depends on FIC)
  node kind: IRI
  order: 16
  path: depends on
property:
  class: Observation
  description: References to observations defined in the observations section. Includes both simulated observations and external data (via data_source).
  node kind: IRI
  order: 6
  path: observations
property:
  class: UpdateRule
  description: How parameters are updated each iteration. When using 'includes', update_rules are inherited from included algorithms.
  node kind: IRI
  order: 7
  path: update rules

Callable
type: NodeShape
closed: true
ignored properties: type
ignored properties: call args
ignored properties: constructor args
ignored properties: warmup source
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 2
  path: module
property:
  datatype: string
  description: Globally unique identifier for the entity.
  max count: 1
  min count: 1
  node kind: Literal
  order: 0
  path: name
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 1
  path: description
property:
  class: SoftwareRequirement
  max count: 1
  node kind: IRI
  order: 3
  path: software

Coupling
type: NodeShape
closed: true
ignored properties: type
property:
  class: Network
  description: For hierarchical coupling: region-to-region connectivity with weights and delays
  max count: 1
  node kind: BlankNodeOrIRI
  order: 17
  path: regional connectivity
property:
  class: DerivedVariable
  description: Observable functions computed from edge inputs and parameters after simulation. Maps to obsf/obssym in ND.jl EdgeModel. Example: absolute force magnitude computed from force components.
  node kind: IRI
  order: 14
  path: observed
property:
  datatype: boolean
  default value: true
  description: Whether coupling includes transmission delays
  max count: 1
  node kind: Literal
  order: 11
  path: delayed
property:
  datatype: string
  description: Output symbol names for the edge model. E.g. ['P'] for a scalar power flow, ['Fx', 'Fy'] for 2D forces. Maps directly to outsym in ND.jl EdgeModel. If not specified, derived from coupling variables of the connected vertex dynamics.
  node kind: Literal
  order: 13
  path: outsym
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 1
  path: label
property:
  datatype: boolean
  description: Whether the coupling uses sparse representations
  max count: 1
  node kind: Literal
  order: 6
  path: sparse
property:
  class: Equation
  description: Pre-processing expression applied before coupling
  max count: 1
  node kind: BlankNodeOrIRI
  order: 7
  path: pre expression
property:
  class: Parameter
  node kind: IRI
  order: 3
  path: parameters
property:
  description: Optional stable IRI (or compact URI) for this entity in an external ontology or knowledge base. Used to load metadata from an external source; not required when the entity is fully self-contained (equations, parameters, etc. defined in the file itself).
  max count: 1
  node kind: IRI
  order: 2
  path: identifier
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 4
  path: description
property:
  datatype: string
  default value: directed
  description: Edge symmetry type for NetworkDynamics.jl EdgeModel: 'directed' (default), 'antisymmetric', or 'symmetric'. AntiSymmetric edges flip sign for the reverse direction.
  max count: 1
  node kind: Literal
  order: 12
  path: symmetry
property:
  class: Equation
  description: Mathematical function defining the coupling
  max count: 1
  node kind: BlankNodeOrIRI
  order: 5
  path: coupling function
property:
  datatype: string
  default value: Linear
  description: Globally unique identifier for the entity.
  max count: 1
  min count: 1
  node kind: Literal
  order: 0
  path: name
property:
  description: For hierarchical coupling: aggregation method ('sum', 'mean', 'max') or custom Function
  max count: 1
  or:
    datatype: string
    node kind: Literal
  or:
    class: Function
  order: 18
  path: aggregation
property:
  class: RegionMapping
  description: For hierarchical coupling: vertex-to-region mapping for aggregation
  max count: 1
  node kind: BlankNodeOrIRI
  order: 16
  path: region mapping
property:
  class: Coupling
  description: For hierarchical coupling: inner coupling applied at regional level
  max count: 1
  node kind: IRI
  order: 15
  path: inner coupling
property:
  class: Equation
  description: Post-processing expression applied after coupling
  max count: 1
  node kind: BlankNodeOrIRI
  order: 8
  path: post expression
property:
  class: StateVariable
  description: References to state variables from connected (source) nodes. Auto-populated from state_variables with coupling_variable=true when omitted. Used by name in pre_expression.
  node kind: IRI
  order: 9
  path: incoming states
property:
  class: StateVariable
  description: References to state variables from the local (target) node. Used by name in pre_expression.
  node kind: IRI
  order: 10
  path: local states
property:
  description: For hierarchical coupling: distribution method ('broadcast', 'weighted') or custom Function
  max count: 1
  or:
    datatype: string
    node kind: Literal
  or:
    class: Function
  order: 19
  path: distribution

Distribution
type: NodeShape
comment: A probability distribution for sampling parameters or initial conditions. Standard distributions (Uniform, Gaussian) are specified by name and domain/parameters. Custom distributions use a Function for the PDF/sampling rule. Default name is Uniform when only domain is given.
closed: true
ignored properties: type
property:
  class: Parameter
  node kind: IRI
  order: 1
  path: parameters
property:
  class: Function
  description: Custom distribution function (PDF or sampling callable). Only needed for non-standard distributions.
  max count: 1
  node kind: IRI
  order: 3
  path: function
property:
  default value: space
  description: Dimension along which the distribution is sampled. 'space' = per-node (default), 'time' = per-timestep (stochastic input).
  in: space
  in: time
  max count: 1
  order: 5
  path: axis
property:
  class: Matrix
  max count: 1
  node kind: BlankNodeOrIRI
  order: 6
  path: correlation
property:
  datatype: integer
  description: Random seed for reproducible sampling.
  max count: 1
  node kind: Literal
  order: 4
  path: seed
property:
  class: Range
  description: Support of the distribution (sampling bounds). For Uniform this fully defines the distribution.
  max count: 1
  node kind: BlankNodeOrIRI
  order: 2
  path: domain
property:
  datatype: string
  default value: Uniform
  description: Globally unique identifier for the entity.
  max count: 1
  min count: 1
  node kind: Literal
  order: 0
  path: name

Event
type: NodeShape
comment: A discrete or continuous event that modifies the system during simulation. Generalizes Stimulus: can represent external inputs (stimulus type), threshold-triggered state changes (continuous/discrete type), or time-scheduled interventions (preset_time type). Attaches to components (nodes/edges) or to the experiment level.
closed: true
ignored properties: type
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 1
  path: label
property:
  datatype: string
  description: Component to attach this event to. Can be a node label, edge label, or 'all_edges'/'all_vertices' for broadcast. If not specified, event is experiment-level.
  max count: 1
  node kind: Literal
  order: 13
  path: target component
property:
  datatype: string
  description: State variable symbols modifiable in the affect function.
  node kind: Literal
  order: 9
  path: affect states
property:
  class: Equation
  description: Stimulus equation for stimulus-type events. Legacy compatibility with Stimulus class.
  max count: 1
  node kind: BlankNodeOrIRI
  order: 14
  path: equation
property:
  class: Equation
  description: Condition function. For continuous events: triggers when expression crosses zero. For discrete events: triggers when expression evaluates to true. Not used for preset_time or stimulus types.
  max count: 1
  node kind: BlankNodeOrIRI
  order: 5
  path: condition
property:
  datatype: float
  description: Duration of stimulus-type events.
  max count: 1
  node kind: Literal
  order: 17
  path: duration
property:
  datatype: string
  description: Parameter symbols accessible in the condition function.
  node kind: Literal
  order: 7
  path: condition parameters
property:
  class: Parameter
  node kind: IRI
  order: 3
  path: parameters
property:
  datatype: integer
  description: Target regions for stimulus-type events.
  node kind: Literal
  order: 15
  path: regions
property:
  default value: stimulus
  description: Type of event trigger mechanism.
  in: continuous
  in: discrete
  in: preset_time
  in: stimulus
  max count: 1
  order: 4
  path: event type
property:
  class: Equation
  description: Affect function: what happens when the event triggers. Can modify state variables and/or parameters. For stimulus type, this is the stimulus equation.
  max count: 1
  node kind: BlankNodeOrIRI
  order: 8
  path: affect
property:
  datatype: string
  description: Parameter symbols modifiable in the affect function.
  node kind: Literal
  order: 10
  path: affect parameters
property:
  datatype: string
  description: Globally unique identifier for the entity.
  max count: 1
  min count: 1
  node kind: Literal
  order: 0
  path: name
property:
  datatype: string
  description: State variable symbols accessible in the condition function. For edges, can include source/destination vertex outputs.
  node kind: Literal
  order: 6
  path: condition states
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 2
  path: description
property:
  class: Equation
  description: Affect on downcrossing (continuous events only). If not specified, uses the same affect for both crossings.
  max count: 1
  node kind: BlankNodeOrIRI
  order: 11
  path: affect negative
property:
  datatype: float
  description: Predetermined trigger times for preset_time events. The solver will step exactly to these times.
  node kind: Literal
  order: 12
  path: trigger times
property:
  datatype: float
  description: Per-region weighting for stimulus-type events.
  node kind: Literal
  order: 16
  path: weighting

Argument
type: NodeShape
comment: A function argument with explicit value specification. Value can be: literal (number/string), reference to input (input.key), or cross-observation reference (observation_name.output_key).
closed: true
ignored properties: type
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 3
  path: unit
property:
  datatype: string
  description: Globally unique identifier for the entity.
  max count: 1
  min count: 1
  node kind: Literal
  order: 0
  path: name
property:
  description: Argument value. Can be: - Literal: 1.0, "string", boolean, etc. - Input reference: "input.frequencies" (from source_observation outputs) - Cross-observation: "target_frequencies.peak_freqs" (from another observation)
  max count: 1
  order: 2
  path: value
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 1
  path: description

ExecutionConfig
type: NodeShape
comment: Configuration for computational execution (parallelization, precision, hardware).
closed: true
ignored properties: type
property:
  datatype: integer
  default value: 42
  description: Base random seed for reproducibility
  max count: 1
  node kind: Literal
  order: 5
  path: random seed
property:
  datatype: integer
  default value: 1
  description: Number of parallel workers (maps to pmap devices in JAX, processes in multiprocessing)
  max count: 1
  node kind: Literal
  order: 0
  path: n workers
property:
  datatype: boolean
  description: Whether to find a fixed point (steady state) before time integration. Used as initial condition for ODEProblem. Maps to NLsolve.fixpoint! in ND.jl or similar in other backends.
  max count: 1
  node kind: Literal
  order: 6
  path: find fixpoint
property:
  datatype: string
  default value: float64
  description: Floating point precision: 'float32' or 'float64'
  max count: 1
  node kind: Literal
  order: 2
  path: precision
property:
  datatype: string
  default value: cpu
  description: Hardware accelerator: 'cpu', 'gpu', 'tpu'
  max count: 1
  node kind: Literal
  order: 3
  path: accelerator
property:
  datatype: integer
  description: Batch size for vectorized operations (None = auto)
  max count: 1
  node kind: Literal
  order: 4
  path: batch size
property:
  datatype: integer
  default value: -1
  description: Number of CPU threads per worker (-1 = auto-detect)
  max count: 1
  node kind: Literal
  order: 1
  path: n threads

FunctionCall
type: NodeShape
comment: Invocation of a function in a pipeline. Can reference a defined Function by name, OR inline a callable directly for external library functions, OR inline an equation, OR use class_call for class instantiation. Mirrors Function attributes so pipeline steps can be self-contained. The `name` is an optional step label (used in pipelines for keyed access to step outputs); it is NOT a global identifier (singleton uses like `loss`, `observable` may omit it).
closed: true
ignored properties: type
property:
  class: ClassReference
  description: Class instantiation and call (alternative to callable/function). Use for external library classes that need __init__ then __call__. Example: Bold monitor from tvboptim.
  max count: 1
  node kind: IRI
  order: 7
  path: class call
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 1
  path: label
property:
  class: Range
  description: Time range for generated TimeSeries (for kernel generators)
  max count: 1
  node kind: BlankNodeOrIRI
  order: 13
  path: time range
property:
  datatype: string
  description: Reference to previous function's output in pipeline (by name)
  max count: 1
  node kind: Literal
  order: 8
  path: input
property:
  datatype: string
  description: Name for this step's output (referenced by subsequent functions)
  max count: 1
  node kind: Literal
  order: 9
  path: output
property:
  description: Dimension to apply function over (generates vmap in code). E.g., 'node' applies per-node.
  in: time
  in: state
  in: node
  in: region
  in: mode
  in: sample
  in: batch
  in: frequency
  max count: 1
  order: 10
  path: apply on dimension
property:
  class: Function
  description: Reference to a defined Function (by name)
  max count: 1
  node kind: IRI
  order: 5
  path: function
property:
  class: Callable
  description: Direct callable specification (alternative to function reference)
  max count: 1
  node kind: IRI
  order: 6
  path: callable
property:
  class: Aggregation
  description: How to aggregate the result across dimensions. Example: aggregate.over=node, aggregate.type=mean applies function per node, then averages. Used in loss functions.
  max count: 1
  node kind: BlankNodeOrIRI
  order: 11
  path: aggregate
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 14
  path: source code
property:
  datatype: string
  description: Optional step label; used in pipelines to key step outputs.
  max count: 1
  node kind: Literal
  order: 4
  path: name
property:
  class: Argument
  node kind: IRI
  order: 12
  path: arguments
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 0
  path: notation
property:
  class: Equation
  max count: 1
  node kind: BlankNodeOrIRI
  order: 2
  path: Equation
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 3
  path: description

Observation
type: NodeShape
comment: Unified class for all observation/measurement specifications. Covers monitors (BOLD, EEG), tuning observables, and derived quantities. Pipeline is a sequence of Functions with input -> output flow.
closed: true
ignored properties: type
ignored properties: source observations
property:
  default value: ms
  description: Time unit for the integration / simulation. Determines the physical time meaning of one model time-step.
  in: SEC
  in: MilliSEC
  in: MicroSEC
  in: PER-SEC
  in: PER-MilliSEC
  in: HZ
  in: KiloHZ
  in: http://qudt.org/vocab/unit/V
  in: MilliV
  in: PER-MilliV
  in: MilliV-PER-MilliSEC
  in: MilliV-PER-SEC
  in: http://qudt.org/vocab/unit/A
  in: NanoA
  in: PicoA
  in: uA_per_cm2
  in: PicoFARAD
  in: NanoFARAD
  in: uF_per_cm2
  in: NanoS
  in: MicroS
  in: PicoS
  in: S_per_cm2
  in: mS_per_cm2
  in: S_per_m2
  in: nS_per_mV
  in: PER-NanoC
  in: PER-PicoC
  in: MOL-PER-M3
  in: mol_per_cm3
  in: MilliMOL-PER-M3
  in: mol_per_m_per_A_per_s
  in: MicroM3
  in: http://qudt.org/vocab/unit/M
  in: MilliM
  in: CentiM
  in: M-PER-SEC
  in: MilliM-PER-MilliSEC
  in: Hz_per_nA
  in: S-PER-M
  in: H-PER-M
  in: OHM
  in: Mohm
  in: kohm_cm
  in: DEG C
  in: rad_per_ms
  in: UNITLESS
  in: PERCENT
  in: arbitrary_unit
  in: KiloGM
  in: kg_per_s
  in: M-PER-SEC2
  in: N-PER-M
  in: RAD
  in: RAD-PER-SEC
  in: SEC2
  in: per_unit
  max count: 1
  order: 7
  path: time scale
property:
  class: Equation
  max count: 1
  node kind: BlankNodeOrIRI
  order: 4
  path: Equation
property:
  datatype: string
  description: Reference to transient simulation result for history initialization (e.g., 'result_init').
  max count: 1
  node kind: Literal
  order: 13
  path: warmup source
property:
  description: How to aggregate over time
  in: mean
  in: last
  in: first
  in: window
  in: none
  max count: 1
  order: 17
  path: aggregation
property:
  class: ClassReference
  description: Direct class reference (alternative to pipeline). Use for external library classes like tvboptim.Bold, custom monitors, or any callable class. The class is instantiated with constructor_args and called with call_args. Example: {name: Bold, module: tvboptim.observations.tvb_monitors.bold, constructor_args: [{name: period, value: 1000.0}]}
  max count: 1
  node kind: IRI
  order: 20
  path: class reference
property:
  description: Type of imaging modality (BOLD, EEG, MEG, etc.)
  in: BOLD
  in: EEG
  in: MEG
  in: SEEG
  in: IEEG
  max count: 1
  order: 12
  path: imaging modality
property:
  datatype: float
  description: Intermediate downsampling period (ms). For BOLD: typically matches dt.
  max count: 1
  node kind: Literal
  order: 10
  path: downsample period
property:
  datatype: float
  description: Sampling period for monitors (ms). For BOLD: TR in ms.
  max count: 1
  node kind: Literal
  order: 9
  path: period
property:
  datatype: integer
  description: Number of samples to skip at the start (transient removal). For FC: typically 10-20 TRs.
  max count: 1
  node kind: Literal
  order: 15
  path: skip t
property:
  datatype: string
  description: Globally unique identifier for the entity.
  max count: 1
  min count: 1
  node kind: Literal
  order: 0
  path: name
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 1
  path: notation
property:
  datatype: integer
  description: Variable of interest index (which state variable to monitor). Default: 0.
  max count: 1
  node kind: Literal
  order: 11
  path: voi
property:
  class: StateVariable
  description: State variable to observe (e.g., S_e for excitatory activity). For observations derived from other observations, use DerivedObservation.
  max count: 1
  node kind: IRI
  order: 8
  path: source
property:
  datatype: integer
  description: Number of samples for windowed aggregation
  max count: 1
  node kind: Literal
  order: 18
  path: window size
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 2
  path: label
property:
  class: FunctionCall
  description: Ordered sequence of Functions. Each step has a unique `name` (used to key step outputs) and transforms input -> output. List form preserves execution order.
  node kind: BlankNodeOrIRI
  order: 19
  path: pipeline
property:
  class: Parameter
  node kind: IRI
  order: 5
  path: parameters
property:
  class: SoftwareEnvironment
  max count: 1
  node kind: IRI
  order: 6
  path: environment
property:
  class: DataSource
  description: Load data from external source (file, database, API). When specified, this observation represents empirical/external data rather than simulated data. Enables unified treatment of all data.
  max count: 1
  node kind: IRI
  order: 14
  path: data source
property:
  datatype: integer
  description: Number of samples from the end to use. Takes the last N samples before aggregation. E.g., tail_samples: 500 means use data[-500:].
  max count: 1
  node kind: Literal
  order: 16
  path: tail samples

SoftwareEnvironment
type: NodeShape
comment: A reproducible software environment aggregating one or more SoftwareRequirement entries. Used by SimulationExperiment to specify the execution context.
closed: true
ignored properties: type
property:
  datatype: string
  description: Container image reference (e.g., ghcr.io/org/img:tag@sha256:...).
  max count: 1
  node kind: Literal
  order: 7
  path: container image
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 1
  path: label
property:
  datatype: string
  description: OS / architecture (e.g., linux-64, macos-arm64).
  max count: 1
  node kind: Literal
  order: 5
  path: platform
property:
  datatype: string
  description: Environment definition version (not a package version).
  max count: 1
  node kind: Literal
  order: 4
  path: version
property:
  description: Category: conda, venv, docker, etc.
  in: conda
  in: venv
  in: docker
  in: singularity
  max count: 1
  order: 6
  path: environment type
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 3
  path: dataLocation
property:
  class: SoftwareRequirement
  description: Constituent software requirements.
  node kind: IRI
  order: 9
  path: requirements
property:
  datatype: string
  description: Deterministic hash of the resolved dependency set.
  max count: 1
  node kind: Literal
  order: 8
  path: build hash
property:
  datatype: string
  description: Globally unique identifier for the entity.
  max count: 1
  min count: 1
  node kind: Literal
  order: 0
  path: name
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 2
  path: description

DerivedVariable
type: NodeShape
closed: true
ignored properties: type
property:
  description: Physical unit of measurement. Values are drawn from the QUDT ontology (http://qudt.org/vocab/unit/) with UO cross-references where available.
  in: SEC
  in: MilliSEC
  in: MicroSEC
  in: PER-SEC
  in: PER-MilliSEC
  in: HZ
  in: KiloHZ
  in: http://qudt.org/vocab/unit/V
  in: MilliV
  in: PER-MilliV
  in: MilliV-PER-MilliSEC
  in: MilliV-PER-SEC
  in: http://qudt.org/vocab/unit/A
  in: NanoA
  in: PicoA
  in: uA_per_cm2
  in: PicoFARAD
  in: NanoFARAD
  in: uF_per_cm2
  in: NanoS
  in: MicroS
  in: PicoS
  in: S_per_cm2
  in: mS_per_cm2
  in: S_per_m2
  in: nS_per_mV
  in: PER-NanoC
  in: PER-PicoC
  in: MOL-PER-M3
  in: mol_per_cm3
  in: MilliMOL-PER-M3
  in: mol_per_m_per_A_per_s
  in: MicroM3
  in: http://qudt.org/vocab/unit/M
  in: MilliM
  in: CentiM
  in: M-PER-SEC
  in: MilliM-PER-MilliSEC
  in: Hz_per_nA
  in: S-PER-M
  in: H-PER-M
  in: OHM
  in: Mohm
  in: kohm_cm
  in: DEG C
  in: rad_per_ms
  in: UNITLESS
  in: PERCENT
  in: arbitrary_unit
  in: KiloGM
  in: kg_per_s
  in: M-PER-SEC2
  in: N-PER-M
  in: RAD
  in: RAD-PER-SEC
  in: SEC2
  in: per_unit
  max count: 1
  order: 5
  path: unit
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 1
  path: label
property:
  datatype: boolean
  description: Whether to include this element in simulation output files. Applicable to state variables (default true), derived variables (default false), and network nodes (default true). Set false to suppress recording.
  max count: 1
  node kind: Literal
  order: 6
  path: record
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 2
  path: symbol
property:
  class: Case
  node kind: BlankNodeOrIRI
  order: 9
  path: cases
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 3
  path: description
property:
  datatype: string
  description: Globally unique identifier for the entity.
  max count: 1
  min count: 1
  node kind: Literal
  order: 0
  path: name
property:
  datatype: boolean
  max count: 1
  node kind: Literal
  order: 8
  path: conditional
property:
  class: Equation
  max count: 1
  node kind: BlankNodeOrIRI
  order: 4
  path: Equation
property:
  description: External ontology IRIs (typically GO, ChEBI, UBERON, CL, MeSH) that this entity is a surrogate / abstraction / model of. Replaces the legacy OWL pattern `tvbo:surrogate_of` by carrying the link inline with the YAML data instance. Multiple IRIs allowed: a single parameter may abstract several biological processes (e.g. a synaptic conductance grounding both GO:0060079 (excitatory PSP) and GO:0007268 (chemical synaptic transmission)).
  node kind: IRI
  order: 7
  path: hasDbXref

Coordinate
type: NodeShape
comment: A 3D coordinate with X, Y, Z values.
closed: true
ignored properties: type
property:
  class: Transformation
  description: Common coordinate space (e.g. FSLMNI152, MNI152NLin2009cAsym). Reference by name; the CommonCoordinateSpace must be defined in tvbo/database/coordinate_spaces/ (or future equivalent location).
  max count: 1
  node kind: IRI
  order: 0
  path: coordinateSpace
property:
  datatype: float
  description: X coordinate
  max count: 1
  node kind: Literal
  order: 1
  path: http://uri.interlex.org/tgbugs/uris/readable/x
property:
  datatype: float
  description: Z coordinate
  max count: 1
  node kind: Literal
  order: 3
  path: http://uri.interlex.org/tgbugs/uris/readable/z
property:
  datatype: float
  description: Y coordinate
  max count: 1
  node kind: Literal
  order: 2
  path: http://uri.interlex.org/tgbugs/uris/readable/y

StateVariable
type: NodeShape
closed: true
ignored properties: type
ignored properties: boundary conditions
ignored properties: mesh
property:
  class: Distribution
  description: Distribution for sampling initial conditions per node. If present, initial_value is used as fallback/mean.
  max count: 1
  node kind: IRI
  order: 19
  path: distribution
property:
  datatype: boolean
  default value: true
  max count: 1
  node kind: Literal
  order: 10
  path: variable of interest
property:
  datatype: float
  default value: 0.1
  max count: 1
  node kind: Literal
  order: 17
  path: initial value
property:
  datatype: string
  description: Globally unique identifier for the entity.
  max count: 1
  min count: 1
  node kind: Literal
  order: 0
  path: name
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 3
  path: definition
property:
  datatype: boolean
  default value: true
  description: Whether to include this element in simulation output files. Applicable to state variables (default true), derived variables (default false), and network nodes (default true). Set false to suppress recording.
  max count: 1
  node kind: Literal
  order: 8
  path: record
property:
  datatype: float
  description: Initial value for the first time derivative, used when equation_order > 1. For a second-order ODE d²x/dt² = f, this sets dx/dt(0). Required by ModelingToolkit.jl to fully specify higher-order initial value problems.
  max count: 1
  node kind: Literal
  order: 18
  path: derivative initial value
property:
  datatype: boolean
  max count: 1
  node kind: Literal
  order: 15
  path: stimulation variable
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 2
  path: label
property:
  class: Noise
  max count: 1
  node kind: BlankNodeOrIRI
  order: 14
  path: noise
property:
  class: Range
  max count: 1
  node kind: BlankNodeOrIRI
  order: 4
  path: domain
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 1
  path: symbol
property:
  datatype: integer
  default value: 1
  description: Order of the time derivative on the LHS. Default 1 means dx/dt = rhs (first-order ODE). Order 2 means d²x/dt² = rhs (second-order ODE), etc. Higher-order ODEs are automatically lowered to coupled first-order systems by backends like ModelingToolkit.jl via mtkcompile.
  max count: 1
  node kind: Literal
  order: 13
  path: equation order
property:
  class: Equation
  max count: 1
  node kind: BlankNodeOrIRI
  order: 6
  path: Equation
property:
  description: External ontology IRIs (typically GO, ChEBI, UBERON, CL, MeSH) that this entity is a surrogate / abstraction / model of. Replaces the legacy OWL pattern `tvbo:surrogate_of` by carrying the link inline with the YAML data instance. Multiple IRIs allowed: a single parameter may abstract several biological processes (e.g. a synaptic conductance grounding both GO:0060079 (excitatory PSP) and GO:0007268 (chemical synaptic transmission)).
  node kind: IRI
  order: 9
  path: hasDbXref
property:
  datatype: boolean
  description: Whether this state variable is transmitted to connected nodes through the coupling function. In TVB terms, this determines the cvar indices (state variables extracted from history and fed into the coupling function). The coupling function may override this via its incoming_states attribute.
  max count: 1
  node kind: Literal
  order: 11
  path: coupling variable
property:
  class: TimeSeries
  max count: 1
  node kind: BlankNodeOrIRI
  order: 20
  path: history
property:
  datatype: string
  default value: differential
  description: Type of equation: 'differential' (default) means dx/dt = rhs, 'algebraic' means 0 = rhs or x ~ rhs (DAE constraint). Algebraic equations are used by ModelingToolkit.jl backend.
  max count: 1
  node kind: Literal
  order: 12
  path: equation type
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 5
  path: description
property:
  description: Physical unit of measurement. Values are drawn from the QUDT ontology (http://qudt.org/vocab/unit/) with UO cross-references where available.
  in: SEC
  in: MilliSEC
  in: MicroSEC
  in: PER-SEC
  in: PER-MilliSEC
  in: HZ
  in: KiloHZ
  in: http://qudt.org/vocab/unit/V
  in: MilliV
  in: PER-MilliV
  in: MilliV-PER-MilliSEC
  in: MilliV-PER-SEC
  in: http://qudt.org/vocab/unit/A
  in: NanoA
  in: PicoA
  in: uA_per_cm2
  in: PicoFARAD
  in: NanoFARAD
  in: uF_per_cm2
  in: NanoS
  in: MicroS
  in: PicoS
  in: S_per_cm2
  in: mS_per_cm2
  in: S_per_m2
  in: nS_per_mV
  in: PER-NanoC
  in: PER-PicoC
  in: MOL-PER-M3
  in: mol_per_cm3
  in: MilliMOL-PER-M3
  in: mol_per_m_per_A_per_s
  in: MicroM3
  in: http://qudt.org/vocab/unit/M
  in: MilliM
  in: CentiM
  in: M-PER-SEC
  in: MilliM-PER-MilliSEC
  in: Hz_per_nA
  in: S-PER-M
  in: H-PER-M
  in: OHM
  in: Mohm
  in: kohm_cm
  in: DEG C
  in: rad_per_ms
  in: UNITLESS
  in: PERCENT
  in: arbitrary_unit
  in: KiloGM
  in: kg_per_s
  in: M-PER-SEC2
  in: N-PER-M
  in: RAD
  in: RAD-PER-SEC
  in: SEC2
  in: per_unit
  max count: 1
  order: 7
  path: unit
property:
  class: Range
  max count: 1
  node kind: BlankNodeOrIRI
  order: 16
  path: boundaries

Transformation
type: NodeShape
comment: A schema for representing a version of a common coordinate space.
closed: true
ignored properties: type
property:
  datatype: string
  description: Add the axes orientation in standard anatomical terms (XYZ).
  max count: 1
  node kind: Literal
  order: 5
  path: anatomicalAxesOrientation
property:
  datatype: string
  description: Enter any alternate names, including abbreviations, for this entity.
  node kind: Literal
  order: 2
  path: hasName
property:
  datatype: string
  description: Slot for the abbreviation of a resource.
  max count: 1
  node kind: Literal
  order: 1
  path: notation
property:
  description: Physical unit of measurement. Values are drawn from the QUDT ontology (http://qudt.org/vocab/unit/) with UO cross-references where available.
  in: SEC
  in: MilliSEC
  in: MicroSEC
  in: PER-SEC
  in: PER-MilliSEC
  in: HZ
  in: KiloHZ
  in: http://qudt.org/vocab/unit/V
  in: MilliV
  in: PER-MilliV
  in: MilliV-PER-MilliSEC
  in: MilliV-PER-SEC
  in: http://qudt.org/vocab/unit/A
  in: NanoA
  in: PicoA
  in: uA_per_cm2
  in: PicoFARAD
  in: NanoFARAD
  in: uF_per_cm2
  in: NanoS
  in: MicroS
  in: PicoS
  in: S_per_cm2
  in: mS_per_cm2
  in: S_per_m2
  in: nS_per_mV
  in: PER-NanoC
  in: PER-PicoC
  in: MOL-PER-M3
  in: mol_per_cm3
  in: MilliMOL-PER-M3
  in: mol_per_m_per_A_per_s
  in: MicroM3
  in: http://qudt.org/vocab/unit/M
  in: MilliM
  in: CentiM
  in: M-PER-SEC
  in: MilliM-PER-MilliSEC
  in: Hz_per_nA
  in: S-PER-M
  in: H-PER-M
  in: OHM
  in: Mohm
  in: kohm_cm
  in: DEG C
  in: rad_per_ms
  in: UNITLESS
  in: PERCENT
  in: arbitrary_unit
  in: KiloGM
  in: kg_per_s
  in: M-PER-SEC2
  in: N-PER-M
  in: RAD
  in: RAD-PER-SEC
  in: SEC2
  in: per_unit
  max count: 1
  order: 3
  path: unit
property:
  datatype: string
  description: Add the native unit that is used for this common coordinate space version.
  max count: 1
  node kind: Literal
  order: 7
  path: nativeUnit
property:
  datatype: string
  description: Globally unique identifier for the entity.
  max count: 1
  node kind: Literal
  order: 0
  path: name
property:
  datatype: string
  description: Add all image files used as visual representation of this common coordinate space version.
  node kind: Literal
  order: 8
  path: defaultImage
property:
  datatype: string
  description: Enter the origin (central point where all axes intersect).
  max count: 1
  node kind: Literal
  order: 6
  path: axesOrigin
property:
  datatype: string
  description: Linked type for the license of the brain atlas or coordinate space version.
  max count: 1
  node kind: Literal
  order: 4
  path: license

Dynamics
type: NodeShape
closed: true
ignored properties: type
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 2
  path: label
property:
  class: DerivedVariable
  node kind: IRI
  order: 10
  path: derived variables
property:
  class: DerivedVariable
  description: Observable functions computed from states, inputs, and parameters after simulation. Unlike derived_variables (which are intermediate algebraic expressions used within the ODE), observed variables are post-hoc quantities recoverable from the solution. Maps to obsf/obssym in ND.jl EdgeModel/VertexModel. Example: absolute force magnitude computed from force components.
  node kind: IRI
  order: 25
  path: observed
property:
  datatype: string
  default value: Generic2dOscillator
  description: Globally unique identifier for the entity.
  max count: 1
  min count: 1
  node kind: Literal
  order: 1
  path: name
property:
  class: Parameter
  node kind: IRI
  order: 11
  path: coupling terms
property:
  class: Dynamics
  node kind: IRI
  order: 21
  path: modes
property:
  class: Event
  description: Discrete state transitions intrinsic to the dynamical system, such as threshold-triggered resets in spiking neuron models. Unlike experiment-level events (stimulation, perturbation), these define the model's own discontinuous behavior.
  node kind: IRI
  order: 26
  path: events
property:
  datatype: boolean
  default value: true
  description: Whether the system is autonomous (equations do not depend explicitly on time t). Non-autonomous systems have explicit time dependence, e.g. f*cos(omega*t).
  max count: 1
  node kind: Literal
  order: 24
  path: autonomous
property:
  class: CouplingInput
  node kind: IRI
  order: 12
  path: coupling inputs
property:
  class: Parameter
  max count: 1
  node kind: IRI
  order: 18
  path: local coupling term
property:
  description: Coarse classification of this model (mean_field, neural_mass, phase_oscillator, phenomenological, spiking, generic, field). Used for filtering in Dynamics.list_db(model_type=...).
  in: mean_field
  in: neural_mass
  in: phase_oscillator
  in: phenomenological
  in: spiking
  in: generic
  in: field
  max count: 1
  order: 22
  path: model type
property:
  description: Optional stable IRI (or compact URI) for this entity in an external ontology or knowledge base. Used to load metadata from an external source; not required when the entity is fully self-contained (equations, parameters, etc. defined in the file itself).
  max count: 1
  node kind: IRI
  order: 3
  path: identifier
property:
  class: Parameter
  node kind: IRI
  order: 4
  path: parameters
property:
  class: DerivedParameter
  node kind: IRI
  order: 9
  path: derived parameters
property:
  datatype: string
  description: Output variable names to include in simulation results. References to state_variables or derived_variables by name.
  node kind: Literal
  order: 15
  path: output
property:
  datatype: integer
  default value: 1
  max count: 1
  node kind: Literal
  order: 17
  path: number of modes
property:
  datatype: string
  description: Add the location of the data file containing the parcellation terminology.
  max count: 1
  node kind: Literal
  order: 8
  path: dataLocation
property:
  class: Function
  node kind: IRI
  order: 19
  path: functions
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 5
  path: description
property:
  class: Stimulus
  max count: 1
  node kind: BlankNodeOrIRI
  order: 20
  path: stimulus
property:
  datatype: boolean
  max count: 1
  node kind: Literal
  order: 14
  path: modified
property:
  class: StateVariable
  node kind: IRI
  order: 13
  path: state variables
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 0
  path: references
property:
  default value: continuous
  in: continuous
  in: discrete
  max count: 1
  order: 23
  path: system type
property:
  class: Dynamics
  max count: 1
  node kind: IRI
  order: 16
  path: derived from model
property:
  datatype: string
  node kind: Literal
  order: 7
  path: references
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 6
  path: source

SoftwareRequirement
type: NodeShape
comment: An individual software requirement binding a package to a version constraint and a role within an environment.
closed: true
ignored properties: type
property:
  datatype: string
  description: Build or artifact hash for exact reproducibility.
  max count: 1
  node kind: Literal
  order: 7
  path: hash
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 2
  path: dataLocation
property:
  class: SoftwareApplication
  description: Reference to the software package identity.
  max count: 1
  node kind: IRI
  order: 3
  path: package
property:
  datatype: string
  description: Canonical source or repository URL.
  max count: 1
  node kind: Literal
  order: 8
  path: source url
property:
  datatype: string
  description: (Deprecated) Use source_url.
  max count: 1
  node kind: Literal
  order: 9
  path: url
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 1
  path: description
property:
  datatype: string
  description: (Deprecated) Use environment.requirements list instead.
  node kind: Literal
  order: 11
  path: modules
property:
  datatype: string
  description: (Deprecated) Use version_spec.
  max count: 1
  node kind: Literal
  order: 12
  path: version
property:
  datatype: string
  description: Globally unique identifier for the entity.
  max count: 1
  min count: 1
  node kind: Literal
  order: 0
  path: name
property:
  default value: runtime
  in: engine
  in: runtime
  in: analysis
  in: dev
  in: optional
  max count: 1
  order: 5
  path: role
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 10
  path: license
property:
  datatype: boolean
  max count: 1
  node kind: Literal
  order: 6
  path: optional
property:
  datatype: string
  description: Version or constraint specifier (e.g., '==2.7.3', '>=1.2,<2').
  max count: 1
  node kind: Literal
  order: 4
  path: version spec

Function
type: NodeShape
comment: A function with explicit input -> transformation -> output flow. Can be equation-based (symbolic) or software-based (callable). In a pipeline, functions are chained: output of one becomes input of next.
closed: true
ignored properties: type
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 12
  path: source code
property:
  datatype: string
  description: Globally unique identifier for the entity.
  max count: 1
  min count: 1
  node kind: Literal
  order: 0
  path: name
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 2
  path: label
property:
  class: Argument
  description: Variables consumed by the function (referenced in the equation). Each argument has a name and optional metadata (description, default value, unit).
  node kind: IRI
  order: 10
  path: arguments
property:
  class: Function
  description: Simple input reference: name of previous function's output in pipeline. For multi-argument functions, use arguments with value references instead.
  max count: 1
  node kind: IRI
  order: 8
  path: input
property:
  class: Equation
  max count: 1
  node kind: BlankNodeOrIRI
  order: 4
  path: Equation
property:
  description: Optional stable IRI (or compact URI) for this entity in an external ontology or knowledge base. Used to load metadata from an external source; not required when the entity is fully self-contained (equations, parameters, etc. defined in the file itself).
  max count: 1
  node kind: IRI
  order: 3
  path: identifier
property:
  class: Aggregation
  description: How to aggregate the result across dimensions. E.g., aggregate.over=node computes per-row (per-node) with keepdims. The type field controls whether to reduce (mean/sum) or keep dimensions (none).
  max count: 1
  node kind: BlankNodeOrIRI
  order: 15
  path: aggregate
property:
  class: Range
  description: Time range for generated TimeSeries (for kernel generators). Equation is evaluated at each time point.
  max count: 1
  node kind: BlankNodeOrIRI
  order: 16
  path: time range
property:
  class: Equation
  description: Output transformation equation (if equation-based)
  max count: 1
  node kind: BlankNodeOrIRI
  order: 11
  path: output equation
property:
  class: SoftwareRequirement
  node kind: IRI
  order: 7
  path: requirements
property:
  class: Callable
  description: Software implementation reference (if software-based)
  max count: 1
  node kind: IRI
  order: 13
  path: callable
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 6
  path: description
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 5
  path: definition
property:
  datatype: string
  description: Name for this function's output (referenced by subsequent functions)
  max count: 1
  node kind: Literal
  order: 9
  path: output
property:
  description: Which dimension to apply the transformation on
  in: time
  in: state
  in: node
  in: region
  in: mode
  in: sample
  in: batch
  in: frequency
  max count: 1
  order: 14
  path: apply on dimension
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 1
  path: notation

Range
type: NodeShape
comment: Specifies a range for array generation, parameter bounds, or grid exploration.
closed: true
ignored properties: type
property:
  datatype: boolean
  description: Whether to use logarithmic spacing.
  max count: 1
  node kind: Literal
  order: 4
  path: log scale
property:
  description: Lower bound or starting value. Can be a number or argument name.
  max count: 1
  order: 0
  path: lo
property:
  description: Upper bound or stopping value. Can be a number or argument name.
  max count: 1
  order: 1
  path: hi
property:
  description: Step size. Can be: number, argument name, or expression.
  max count: 1
  order: 2
  path: step
property:
  datatype: float
  description: Explicit explored values for this element. When set on an element_domain entry, overrides the parent parameter's explored_values for this specific element.
  node kind: Literal
  order: 5
  path: explored values
property:
  datatype: integer
  description: Number of points (alternative to step for grid exploration).
  max count: 1
  node kind: Literal
  order: 3
  path: https://w3id.org/tvbo/n
property:
  datatype: integer
  description: Element/node index this range applies to. Used in element_domains to explicitly link a domain to a specific element of a heterogeneous parameter (e.g., element: 0 for node 0). Required when used in element_domains to avoid ambiguous positional indexing.
  max count: 1
  node kind: Literal
  order: 6
  path: element

Parameter
type: NodeShape
closed: true
ignored properties: type
property:
  description: Physical unit of measurement. Values are drawn from the QUDT ontology (http://qudt.org/vocab/unit/) with UO cross-references where available.
  in: SEC
  in: MilliSEC
  in: MicroSEC
  in: PER-SEC
  in: PER-MilliSEC
  in: HZ
  in: KiloHZ
  in: http://qudt.org/vocab/unit/V
  in: MilliV
  in: PER-MilliV
  in: MilliV-PER-MilliSEC
  in: MilliV-PER-SEC
  in: http://qudt.org/vocab/unit/A
  in: NanoA
  in: PicoA
  in: uA_per_cm2
  in: PicoFARAD
  in: NanoFARAD
  in: uF_per_cm2
  in: NanoS
  in: MicroS
  in: PicoS
  in: S_per_cm2
  in: mS_per_cm2
  in: S_per_m2
  in: nS_per_mV
  in: PER-NanoC
  in: PER-PicoC
  in: MOL-PER-M3
  in: mol_per_cm3
  in: MilliMOL-PER-M3
  in: mol_per_m_per_A_per_s
  in: MicroM3
  in: http://qudt.org/vocab/unit/M
  in: MilliM
  in: CentiM
  in: M-PER-SEC
  in: MilliM-PER-MilliSEC
  in: Hz_per_nA
  in: S-PER-M
  in: H-PER-M
  in: OHM
  in: Mohm
  in: kohm_cm
  in: DEG C
  in: rad_per_ms
  in: UNITLESS
  in: PERCENT
  in: arbitrary_unit
  in: KiloGM
  in: kg_per_s
  in: M-PER-SEC2
  in: N-PER-M
  in: RAD
  in: RAD-PER-SEC
  in: SEC2
  in: per_unit
  max count: 1
  order: 10
  path: unit
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 2
  path: symbol
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 8
  path: description
property:
  datatype: boolean
  max count: 1
  node kind: Literal
  order: 16
  path: free
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 5
  path: defaultValue
property:
  class: Range
  max count: 1
  node kind: BlankNodeOrIRI
  order: 6
  path: domain
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 1
  path: label
property:
  class: Equation
  max count: 1
  node kind: BlankNodeOrIRI
  order: 9
  path: Equation
property:
  class: Range
  description: Per-element domain overrides for heterogeneous parameters. When specified, element_domains[i] overrides domain for element i during exploration auto-expansion. Length must match parameter shape (e.g., n_nodes for shape "(n_nodes,)"). If not set, all elements share the same domain.
  node kind: BlankNodeOrIRI
  order: 19
  path: element domains
property:
  class: Distribution
  description: Distribution for heterogeneous per-node parameter sampling. Implies heterogeneous=true.
  max count: 1
  node kind: IRI
  order: 15
  path: distribution
property:
  description: External ontology IRIs (typically GO, ChEBI, UBERON, CL, MeSH) that this entity is a surrogate / abstraction / model of. Replaces the legacy OWL pattern `tvbo:surrogate_of` by carrying the link inline with the YAML data instance. Multiple IRIs allowed: a single parameter may abstract several biological processes (e.g. a synaptic conductance grounding both GO:0060079 (excitatory PSP) and GO:0007268 (chemical synaptic transmission)).
  node kind: IRI
  order: 12
  path: hasDbXref
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 3
  path: definition
property:
  datatype: float
  max count: 1
  node kind: Literal
  order: 7
  path: reported optimum
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 13
  path: comment
property:
  datatype: float
  node kind: Literal
  order: 18
  path: explored values
property:
  datatype: boolean
  max count: 1
  node kind: Literal
  order: 14
  path: heterogeneous
property:
  datatype: string
  description: Globally unique identifier for the entity.
  max count: 1
  min count: 1
  node kind: Literal
  order: 0
  path: name
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 17
  path: shape
property:
  datatype: string
  description: Dataset path for array-valued parameters. When set, the parameter value is stored in the binary companion file (HDF5 or Zarr) at this path. The value slot is omitted.
  max count: 1
  node kind: Literal
  order: 11
  path: dataset path
property:
  description: Numeric, string, or boolean value. ScalarValue accepts any literal primitive type, allowing parameters to carry control flags (e.g., booleans) or symbolic placeholders alongside numeric defaults.
  max count: 1
  order: 4
  path: value

Equation
type: NodeShape
closed: true
ignored properties: time dependent
ignored properties: type
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 0
  path: label
property:
  class: ConditionalBlock
  description: Conditional logic for piecewise equations.
  node kind: BlankNodeOrIRI
  order: 6
  path: conditionals
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 3
  path: description
property:
  datatype: boolean
  max count: 1
  node kind: Literal
  order: 9
  path: latex
property:
  class: Parameter
  node kind: IRI
  order: 2
  path: parameters
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 1
  path: definition
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 4
  path: lefthandside
property:
  datatype: string
  max count: 1
  node kind: Literal
  order: 5
  path: righthandside
property:
  class: SoftwareRequirement
  description: Primary engine (must appear in environment.requirements; migration target replacing deprecated 'software').
  max count: 1
  node kind: IRI
  order: 7
  path: engine
property:
  datatype: string
  description: Python code for the equation.
  max count: 1
  node kind: Literal
  order: 8
  path: pycode

datatype: string
description: Reference to transient simulation result for history initialization (e.g., 'result_init').
max count: 1
node kind: Literal
order: 14
path: warmup source

class: SoftwareEnvironment
max count: 1
node kind: IRI
order: 7
path: environment

datatype: integer
default value: 1
description: Order of the time derivative on the LHS. Default 1 means dx/dt = rhs (first-order ODE). Order 2 means d²x/dt² = rhs (second-order ODE), etc. Higher-order ODEs are automatically lowered to coupled first-order systems by backends like ModelingToolkit.jl via mtkcompile.
max count: 1
node kind: Literal
order: 15
path: equation order

datatype: string
max count: 1
node kind: Literal
order: 1
path: description

description: Source code repository URL.
max count: 1
node kind: IRI
order: 25
path: codeRepository

description: Spatial/organizational scales the tool operates at.
in: Q898786
in: Q43054
in: Q484761
in: Q7003015
in: Q1073340
order: 1
path: scale

datatype: string
description: DOI of the primary reference publication for this tool.
max count: 1
node kind: Literal
order: 15
path: references

description: Development status (repostatus.org aligned).
in: active
in: inactive
in: concept
in: wip
in: suspended
in: unsupported
in: moved
max count: 1
order: 11
path: development status

datatype: date
description: Date the software was first released (YYYY-MM-DD).
max count: 1
node kind: Literal
order: 9
path: dateCreated

description: Source code repository URL.
max count: 1
node kind: IRI
order: 4
path: codeRepository

description: Package ecosystem(s) through which the software is distributed.
in: Q2984888
in: Q105593788
in: Q901584
in: julia_registry
in: Q7067518
in: bioconda
in: github
in: Q6795527
order: 27
path: ecosystem

datatype: string
description: Funding bodies or grants (e.g., 'EU H2020 945539', 'NIH R01...').
node kind: Literal
order: 14
path: funder

datatype: string
description: Digital Object Identifier for the software or its reference publication.
max count: 1
node kind: Literal
order: 5
path: doi

description: URL of the bug tracker or issue board.
max count: 1
node kind: IRI
order: 19
path: issue tracker

description: Project homepage URL.
max count: 1
node kind: IRI
order: 2
path: url

description: Project homepage URL.
max count: 1
node kind: IRI
order: 23
path: url

datatype: string
description: Execution backends or platforms (e.g., MPI, OpenMP, CUDA, JAX).
node kind: Literal
order: 5
path: runtimePlatform

datatype: boolean
max count: 1
node kind: Literal
order: 11
path: scipy ode base

class: Parameter
node kind: IRI
order: 2
path: parameters

class: Dynamics
description: Dictionary of dynamics models keyed by name. Nodes reference these by name. For heterogeneous networks with per-node dynamics.
node kind: IRI
order: 6
path: dynamics

class: Node
description: List of nodes with individual dynamics (optional, for heterogeneous networks)
node kind: BlankNodeOrIRI
order: 3
path: nodes

class: Coupling
description: Reusable coupling configurations referenced by edges (e.g., 'instant', 'delayed', 'inhibitory')
node kind: IRI
order: 5
path: coupling

datatype: integer
default value: 1
description: Number of nodes in the network (derived from nodes if not set)
max count: 1
node kind: Literal
order: 7
path: number of nodes

datatype: string
description: Path to companion data file. Supported extensions: .h5 (HDF5), .zarr/ (Zarr), .csv (legacy single-matrix). Null if no companion data needed.
max count: 1
node kind: Literal
order: 12
path: data file

class: Tractogram
description: Reference to tractography data
max count: 1
node kind: IRI
order: 10
path: tractogram

datatype: string
max count: 1
node kind: Literal
order: 0
path: label

datatype: string
description: HDF5 dataset path for node-to-parent mapping. Int32 array of shape (N,) where entry i is the parent node ID. Required when parent_network is set.
max count: 1
node kind: Literal
order: 20
path: node mapping

class: BidsEntities
description: BIDS filename entities for this dataset
max count: 1
node kind: BlankNodeOrIRI
order: 15
path: bids

class: GraphGenerator
description: Graph generator specification. When set, overrides explicit edges/nodes for graph construction. The type field is a free string; StandardGraphType lists well-known types that get automatic code generation across backends.
max count: 1
node kind: IRI
order: 24
path: graph generator

datatype: string
max count: 1
node kind: Literal
order: 3
path: description