###########################################################################
#
#  SSTIM Common Extension Module
#
#  Version:    0.20.0
#  Date:       2026-10-19
#  Author:     Renato Fabbri <renato@junto.space>
#  License:    CC BY 4.0 <https://creativecommons.org/licenses/by/4.0/>
#
#  Protected ontology source. Public term IRIs remain stable across the
#  0.13 modular redistribution (ADR 0043).
#
###########################################################################

@prefix sstim:     <https://w3id.org/sstim#> .
@prefix sstim-v:   <https://w3id.org/sstim/vocab#> .
@prefix sstim-sh:  <https://w3id.org/sstim/shapes#> .
@prefix sstim-ex:  <https://w3id.org/sstim/exposure#> .
@prefix sstim-eco: <https://w3id.org/sstim/ecosystem#> .

@prefix owl:   <http://www.w3.org/2002/07/owl#> .
@prefix rdf:   <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs:  <http://www.w3.org/2000/01/rdf-schema#> .
@prefix xsd:   <http://www.w3.org/2001/XMLSchema#> .
@prefix skos:  <http://www.w3.org/2004/02/skos/core#> .
@prefix dct:   <http://purl.org/dc/terms/> .
@prefix prov:  <http://www.w3.org/ns/prov#> .
@prefix mod:   <https://w3id.org/mod#> .

@prefix bfo:   <http://purl.obolibrary.org/obo/BFO_> .
@prefix obi:   <http://purl.obolibrary.org/obo/OBI_> .
@prefix iao:   <http://purl.obolibrary.org/obo/IAO_> .
@prefix cob:   <http://purl.obolibrary.org/obo/COB_> .
@prefix ro:    <http://purl.obolibrary.org/obo/RO_> .


###########################################################################
# Module metadata
###########################################################################

<https://w3id.org/sstim/common> a owl:Ontology ;
    owl:versionInfo "0.20.0" ;
    dct:title "SSTIM Common Extension Module"@en ;
    dct:description "Optional shared descriptors used across SSTIM concerns: bands, modalities, mechanisms, temporal structure, delivery approach, cautions, calibrated channel quantities, and stimulus magnitudes stated at a stage of delivery."@en ;
    dct:isPartOf <https://w3id.org/sstim> ;
    dct:requires <https://w3id.org/sstim/stimulus> ;
    dct:creator <https://orcid.org/0000-0002-9699-629X> ;
    dct:publisher <https://www.w3.org/community/sstim/> ;
    dct:created "2026-08-01"^^xsd:date ;
    dct:issued "2026-10-19"^^xsd:date ;
    dct:modified "2026-10-19"^^xsd:date ;
    dct:license <https://creativecommons.org/licenses/by/4.0/> .


###########################################################################
# Shared optional descriptors
###########################################################################

sstim:FrequencyBand a owl:Class ;
    rdfs:subClassOf iao:0000030 ;
    rdfs:label "Frequency Band"@en,
               "Banda di Frequenza"@it,
               "Banda de Frequência"@pt,
               "Banda de Frecuencia"@es ;
    skos:definition "An information entity describing a named Hz range used in protocol design for targeting and evidence classification. An operational design category, not a medical diagnostic taxonomy or a universal EEG ontology."@en ;
    skos:historyNote "The band set originates in the BSC framework's protocol design; ADR 0061 removed the framework from the definition in 0.19.0."@en ;
    rdfs:isDefinedBy <https://w3id.org/sstim/common> .

sstim:NeuralOscillationType a owl:Class ;
    rdfs:subClassOf iao:0000030 ;
    rdfs:label "Neural Oscillation Type"@en,
               "Tipo di Oscillazione Neurale"@it,
               "Tipo de Oscilação Neural"@pt,
               "Tipo de Oscilación Neural"@es ;
    skos:definition "A controlled information category for a named rhythmic fluctuation of neural activity, such as the alpha or theta rhythm. Members are identified by a conventional frequency ambit together with characteristic recording topography and observation state; the ambit alone does not identify one."@en ;
    skos:scopeNote "A category, not the rhythm. Following ADR 0021, this classifies a real neurophysiological phenomenon without being that phenomenon: SSTIM records no measured neural activity, so there is no class of measured oscillation events and no instance of one. Distinct from sstim:FrequencyBand, which is a Hz interval and nothing more, and from sstim:NeuralPhenomenon, which categorises kinds of phenomena such as oscillatory dynamics rather than the named rhythms themselves."@en ;
    rdfs:seeAlso <https://github.com/w3c-cg/sstim/blob/v0.20.0/docs/decisions/0049-neural-oscillations-and-frequency-ambits.md> ;
    rdfs:isDefinedBy <https://w3id.org/sstim/common> .

sstim:hasTypicalFrequencyBand a owl:ObjectProperty ;
    rdfs:domain sstim:NeuralOscillationType ;
    rdfs:range  sstim:FrequencyBand ;
    rdfs:label  "has typical frequency band"@en ;
    skos:definition "Links a named neural oscillation to the conventional Hz ambit by which it is usually delimited. The ambit is a measurement convention rather than a boundary of the phenomenon: see sstim:extendedHzMin and sstim:extendedHzMax for the wider range the rhythm is reported to occupy."@en ;
    rdfs:isDefinedBy <https://w3id.org/sstim/common> .

sstim:extendedHzMin a owl:DatatypeProperty, owl:FunctionalProperty ;
    rdfs:domain sstim:NeuralOscillationType ;
    rdfs:range  xsd:decimal ;
    rdfs:label  "extended minimum frequency (Hz)"@en ;
    skos:definition "Lowest frequency at which this rhythm is reported to occur, which may fall below its conventional ambit. A rhythm modulates and its edges are conventional rather than sharp; recording only the typical ambit would assert a precision the phenomenon does not have."@en ;
    rdfs:isDefinedBy <https://w3id.org/sstim/common> .

sstim:extendedHzMax a owl:DatatypeProperty, owl:FunctionalProperty ;
    rdfs:domain sstim:NeuralOscillationType ;
    rdfs:range  xsd:decimal ;
    rdfs:label  "extended maximum frequency (Hz)"@en ;
    skos:definition "Highest frequency at which this rhythm is reported to occur, which may exceed its conventional ambit."@en ;
    rdfs:isDefinedBy <https://w3id.org/sstim/common> .

sstim:hasCorticalTopography a owl:DatatypeProperty ;
    rdfs:domain sstim:NeuralOscillationType ;
    rdfs:range  xsd:string ;
    rdfs:label  "has cortical topography"@en ;
    skos:definition "Scalp or cortical region over which this rhythm is characteristically recorded. Topography is part of how a rhythm is identified alongside frequency: occipital alpha and central mu occupy overlapping ambits and are told apart by where they appear."@en ;
    rdfs:isDefinedBy <https://w3id.org/sstim/common> .

sstim:hasOscillationStateContext a owl:DatatypeProperty ;
    rdfs:domain sstim:NeuralOscillationType ;
    rdfs:range  xsd:string ;
    rdfs:label  "has oscillation state context"@en ;
    skos:definition "Behavioural or physiological state in which this rhythm is characteristically observed, such as eyes closed or slow-wave sleep."@en ;
    skos:editorialNote "An observation condition, not an outcome. It records when the rhythm is seen, never what stimulating at that frequency does for anyone: effect and function statements are evidence claims with a tier, a source and a population, and never appear here."@en ;
    rdfs:isDefinedBy <https://w3id.org/sstim/common> .

sstim:FrequencyBandGroup a owl:Class ;
    rdfs:subClassOf iao:0000030 ;
    rdfs:label "Frequency Band Group"@en,
               "Gruppo di Bande di Frequenza"@it,
               "Grupo de Bandas de Frequência"@pt,
               "Grupo de Bandas de Frecuencia"@es ;
    skos:definition "A named collection of frequency bands used as a SKOS scheme root or aggregate grouping concept. Not a band with a specific Hz range; used for SKOS hierarchy navigation (skos:narrower* traversal) rather than for range arithmetic."@en ;
    rdfs:isDefinedBy <https://w3id.org/sstim/common> .

sstim:SensoryModality a owl:Class ;
    rdfs:subClassOf iao:0000030 ;
    rdfs:label "Sensory Modality"@en,
               "Modalità Sensoriale"@it,
               "Modalidade Sensorial"@pt,
               "Modalidad Sensorial"@es ;
    skos:definition "A controlled information category identifying a channel of sensory perception through which stimulation is delivered or perceived. Values include auditory, visual, somatosensory, interoceptive, vestibular, and olfactory."@en ;
    rdfs:seeAlso <https://github.com/w3c-cg/sstim/blob/v0.20.0/docs/decisions/0021-controlled-value-semantics.md> ;
    rdfs:isDefinedBy <https://w3id.org/sstim/common> .

sstim:StimulationMechanism a owl:Class ;
    rdfs:subClassOf iao:0000030 ;
    rdfs:label "Stimulation Mechanism"@en,
               "Meccanismo di Stimolazione"@it,
               "Mecanismo de Estimulação"@pt,
               "Mecanismo de Estimulación"@es ;
    skos:definition "A controlled information category identifying a proposed neurobiological or psychophysiological pathway through which a stimulus may produce a measured response or intended effect. Mechanism assignments require separate evidence assessment."@en ;
    rdfs:seeAlso <https://github.com/w3c-cg/sstim/blob/v0.20.0/docs/decisions/0021-controlled-value-semantics.md> ;
    rdfs:isDefinedBy <https://w3id.org/sstim/common> .

sstim:IntendedEffect a owl:Class ;
    rdfs:subClassOf iao:0000030 ;
    rdfs:label "Intended Effect"@en ;
    skos:definition "A controlled information category identifying a target change in physiological, psychological, or cognitive state that a sensory stimulation intervention is designed to facilitate. It records design intent, not a guaranteed outcome."@en ;
    rdfs:seeAlso <https://github.com/w3c-cg/sstim/blob/v0.20.0/docs/decisions/0021-controlled-value-semantics.md> ;
    rdfs:isDefinedBy <https://w3id.org/sstim/common> .

sstim:StimulusTemporalStructure a owl:Class ;
    rdfs:subClassOf iao:0000030 ;
    rdfs:label "Stimulus Temporal Structure"@en ;
    skos:definition "The temporal organization of an applied stimulus or agent. Values cover carrier periodicity (periodic, quasi-periodic, aperiodic), closed-loop adaptation, discrete event and pulse-train patterns, and administration schedules. Values are non-disjoint and may be combined, because carrier periodicity, pulse pattern, and administration schedule are different temporal features. Detailed executed timing remains in the exposure profile."@en ;
    rdfs:seeAlso <https://github.com/w3c-cg/sstim/blob/v0.20.0/docs/decisions/0034-neuromodulation-relation-and-neural-target-axis.md> ;
    rdfs:isDefinedBy <https://w3id.org/sstim/common> .

sstim:StimulationDeliveryApproach a owl:Class ;
    rdfs:subClassOf iao:0000030 ;
    rdfs:label "Stimulation Delivery Approach"@en ;
    skos:definition "A coarse, non-exclusive operational category summarizing how an input is introduced or an interface is positioned — for example external, transcutaneous, transcranial, implanted, or systemic. Detailed device, body placement, administration, and dose remain in the exposure profile."@en ;
    skos:scopeNote "Values are deliberately non-exclusive: a method may be external, transcutaneous, and transcranial at once. No approach tag is inferred from any other facet."@en ;
    rdfs:seeAlso <https://github.com/w3c-cg/sstim/blob/v0.20.0/docs/decisions/0034-neuromodulation-relation-and-neural-target-axis.md> ;
    rdfs:isDefinedBy <https://w3id.org/sstim/common> .

sstim:stimulationDeliveryApproach a owl:ObjectProperty ;
    rdfs:range sstim:StimulationDeliveryApproach ;
    rdfs:label "stimulation delivery approach"@en ;
    skos:definition "Links a stimulation process, technique, protocol, or intervention to a coarse operational description of how the input is introduced or the interface positioned. Values are non-exclusive and may be combined."@en ;
    rdfs:seeAlso <https://github.com/w3c-cg/sstim/blob/v0.20.0/docs/decisions/0034-neuromodulation-relation-and-neural-target-axis.md> ;
    rdfs:isDefinedBy <https://w3id.org/sstim/common> .

sstim:CautionTag a owl:Class ;
    rdfs:subClassOf iao:0000030 ;
    rdfs:label "Caution Tag"@en,
               "Etichetta di Cautela"@it,
               "Etiqueta de Cautela"@pt,
               "Etiqueta de Precaución"@es ;
    skos:definition "A safety or usage advisory flag attached to a preset, signalling conditions under which the preset may be unsuitable (e.g. photosensitivity risk, drowsiness, high sensory intensity). Advisory wellness metadata, not a medical contraindication."@en ;
    rdfs:isDefinedBy <https://w3id.org/sstim/common> .

sstim:CautionSeverity a owl:Class ;
    rdfs:subClassOf iao:0000030 ;
    rdfs:label "Caution Severity"@en ;
    skos:definition "A controlled ordinal category for prioritizing a caution tag in user interfaces and validation. Severity describes the response required by the application; it is not a clinical diagnosis or risk probability."@en ;
    rdfs:isDefinedBy <https://w3id.org/sstim/common> .

sstim:hasCautionSeverity a owl:ObjectProperty, owl:FunctionalProperty ;
    rdfs:domain sstim:CautionTag ;
    rdfs:range  sstim:CautionSeverity ;
    rdfs:label "has caution severity"@en ;
    skos:definition "Assigns exactly one interface-priority severity category to a caution tag."@en ;
    rdfs:isDefinedBy <https://w3id.org/sstim/common> .

sstim:signalWithinBand a owl:ObjectProperty ;
    rdfs:domain sstim:StimulationSignal ;
    rdfs:range  sstim:FrequencyBand ;
    rdfs:label  "signal within band"@en ;
    skos:definition "The signal's whole frequency extent lies inside this named band. A point signal such as 10 Hz within alpha is the ordinary case."@en ;
    rdfs:isDefinedBy <https://w3id.org/sstim/common> .

sstim:signalCoversBand a owl:ObjectProperty ;
    rdfs:domain sstim:StimulationSignal ;
    rdfs:range  sstim:FrequencyBand ;
    rdfs:label  "signal covers band"@en ;
    skos:definition "The signal's frequency extent contains the whole of this named band — broadband noise covering theta, for instance. The converse of signalWithinBand, and the reason the signal/band relation is an interval relation rather than membership."@en ;
    rdfs:isDefinedBy <https://w3id.org/sstim/common> .

sstim:signalOverlapsBand a owl:ObjectProperty ;
    rdfs:domain sstim:StimulationSignal ;
    rdfs:range  sstim:FrequencyBand ;
    rdfs:label  "signal overlaps band"@en ;
    skos:definition "The signal's frequency extent and the band intersect, with neither containing the other. Recorded rather than inferred, because a partial overlap is a design decision worth stating."@en ;
    rdfs:isDefinedBy <https://w3id.org/sstim/common> .

sstim:hzMin a owl:DatatypeProperty, owl:FunctionalProperty ;
    rdfs:domain [ a owl:Class ; owl:unionOf ( sstim:FrequencyBand sstim:StimulationSignal ) ] ;
    rdfs:range  xsd:decimal ;
    rdfs:label  "Hz minimum"@en ;
    skos:definition "Lower bound (inclusive) of a frequency extent in Hz, whether that extent is a named band or the extent a signal occupies."@en ;
    skos:historyNote "Domain widened 2026-08-16 (ADR 0052) from sstim:FrequencyBand to a union with sstim:StimulationSignal. The bound means the same thing in both — the lower edge of a frequency extent — and a signal needs one because noise spans a range rather than sitting at a point. Existing band assertions are unaffected."@en ;
    rdfs:isDefinedBy <https://w3id.org/sstim/common> .

sstim:hzMax a owl:DatatypeProperty, owl:FunctionalProperty ;
    rdfs:domain [ a owl:Class ; owl:unionOf ( sstim:FrequencyBand sstim:StimulationSignal ) ] ;
    rdfs:range  xsd:decimal ;
    rdfs:label  "Hz maximum"@en ;
    skos:definition "Upper bound (inclusive) of a frequency extent in Hz, whether that extent is a named band or the extent a signal occupies."@en ;
    skos:historyNote "Domain widened 2026-08-16 (ADR 0052) from sstim:FrequencyBand to a union with sstim:StimulationSignal. The bound means the same thing in both — the upper edge of a frequency extent — and a signal needs one because noise spans a range rather than sitting at a point. Existing band assertions are unaffected."@en ;
    rdfs:isDefinedBy <https://w3id.org/sstim/common> .

sstim:cautionSeverityRank a owl:DatatypeProperty, owl:FunctionalProperty ;
    rdfs:domain sstim:CautionSeverity ;
    rdfs:range xsd:integer ;
    rdfs:label "caution severity rank"@en ;
    skos:definition "Ordinal rank used to sort caution severities from informational (1) through high-priority stop or avoid guidance (4)."@en ;
    rdfs:isDefinedBy <https://w3id.org/sstim/common> .

sstim:triggerCondition a owl:DatatypeProperty ;
    rdfs:domain sstim:CautionTag ;
    rdfs:range xsd:string ;
    rdfs:label "trigger condition"@en ;
    skos:definition "Machine-readable-content companion text describing the stimulus feature, context, or user state that activates a caution."@en ;
    rdfs:isDefinedBy <https://w3id.org/sstim/common> .

sstim:affectedPopulation a owl:DatatypeProperty ;
    rdfs:domain sstim:CautionTag ;
    rdfs:range xsd:string ;
    rdfs:label "affected population"@en ;
    skos:definition "Conservative plain-language description of the users or contexts to which a caution is especially relevant; not a diagnostic classification."@en ;
    rdfs:isDefinedBy <https://w3id.org/sstim/common> .

sstim:recommendedAction a owl:DatatypeProperty ;
    rdfs:domain sstim:CautionTag ;
    rdfs:range xsd:string ;
    rdfs:label "recommended action"@en ;
    skos:definition "Plain-language action an interface should present when a caution applies, such as reduce intensity, disable a channel, stop, or avoid the context."@en ;
    rdfs:isDefinedBy <https://w3id.org/sstim/common> .

sstim:displayPriority a owl:DatatypeProperty, owl:FunctionalProperty ;
    rdfs:domain sstim:CautionTag ;
    rdfs:range xsd:integer ;
    rdfs:label "display priority"@en ;
    skos:definition "Positive integer used to order caution messages within the same severity; lower numbers display first."@en ;
    rdfs:isDefinedBy <https://w3id.org/sstim/common> .

sstim:platformDeliverable a owl:DatatypeProperty, owl:FunctionalProperty ;
    rdfs:domain sstim:SensoryModality ;
    rdfs:range  xsd:boolean ;
    rdfs:label  "platform deliverable"@en ;
    skos:definition "Whether this modality is deliverable via standard consumer digital platforms without dedicated hardware."@en ;
    rdfs:isDefinedBy <https://w3id.org/sstim/common> .

sstim:modifiedAt a owl:AnnotationProperty ;
    rdfs:label "modified at"@en ;
    rdfs:range xsd:dateTime ;
    skos:definition "Timestamp attached to a mutable annotation record when it was last edited. Ontology and evidence resources should use dct:modified and PROV-O for publication provenance."@en ;
    rdfs:isDefinedBy <https://w3id.org/sstim/common> .

sstim:modifiedBy a owl:AnnotationProperty ;
    rdfs:label "modified by"@en ;
    skos:definition "Identifier attached to a mutable annotation record for the actor that last edited it. Published RDF should use prov:wasAttributedTo for agent provenance."@en ;
    rdfs:isDefinedBy <https://w3id.org/sstim/common> .

sstim:channelFrequencyHz a owl:DatatypeProperty, owl:FunctionalProperty ;
    rdfs:domain sstim-ex:StimulusChannel ;
    rdfs:range  xsd:decimal ;
    rdfs:label  "channel frequency (Hz)"@en ;
    skos:definition "Rate at which a channel presents its stimulus, in hertz, as delivered rather than as configured."@en ;
    rdfs:isDefinedBy <https://w3id.org/sstim/common> .

sstim:soundPressureLevelDb a owl:DatatypeProperty, owl:FunctionalProperty ;
    rdfs:domain sstim-ex:StimulusChannel ;
    rdfs:range  xsd:decimal ;
    rdfs:label  "sound pressure level (dB SPL)"@en ;
    skos:definition "Sound pressure level at the subject's ear, in decibels SPL. This is the quantity sstim:masterVolume is not: a normalized engine gain is not a level, because the same gain produces different levels on different hardware."@en ;
    rdfs:isDefinedBy <https://w3id.org/sstim/common> .

sstim:luminanceCdM2 a owl:DatatypeProperty, owl:FunctionalProperty ;
    rdfs:domain sstim-ex:StimulusChannel ;
    rdfs:range  xsd:decimal ;
    rdfs:label  "luminance (cd/m²)"@en ;
    skos:definition "Luminance presented to the subject, in candelas per square metre."@en ;
    rdfs:isDefinedBy <https://w3id.org/sstim/common> .

sstim:flashRateHz a owl:DatatypeProperty, owl:FunctionalProperty ;
    rdfs:domain sstim-ex:StimulusChannel ;
    rdfs:range  xsd:decimal ;
    rdfs:label  "flash rate (Hz)"@en ;
    skos:definition "Rate of luminance alternation presented to the subject, in hertz. Safety-bearing: rates in the photosensitive range are constrained at runtime rather than merely recorded."@en ;
    rdfs:seeAlso <https://github.com/w3c-cg/sstim/blob/v0.20.0/docs/decisions/0011-sensory-field-and-flash-safety.md> ;
    rdfs:isDefinedBy <https://w3id.org/sstim/common> .


###########################################################################
# Stimulus magnitudes at stages of delivery (ADR 0063)
#
# A level means nothing until it says where in the delivery chain it holds:
# a gain inside the system, the output of the transducer, what arrives at the
# ear or eye or skin, what reaches a target inside the body, a value set
# relative to the subject's own threshold, or what the subject perceives. One
# qualified node per stated value carries the quantity, the unit, the stage and
# how the value is known, for any modality. The older single-purpose
# properties keep their fixed meanings: sstim:soundPressureLevelDb is a sound
# pressure level at the subject, and sstim:masterVolume, sstim:masterBrightness
# and sstim-ex:hasGainLevel are configured values.
###########################################################################

sstim:StimulusMagnitude a owl:Class ;
    rdfs:subClassOf iao:0000030 ;
    rdfs:label "Stimulus Magnitude"@en ;
    skos:definition "One stated magnitude of what a stimulus channel delivers: a quantity with its unit, a value or a range, the stage of the delivery chain at which it holds, and how it is known. A channel carries one per stated value, so the same stimulus can state its configured gain, its emitted output and the level arriving at the subject side by side."@en ;
    skos:scopeNote "Modality-free. The same node states a sound pressure level at the ear, an illuminance at the eye, a vibration displacement at the skin, a current at the electrodes or a percentage of a motor threshold. A value a source reports without saying where it holds is recorded at the unstated stage with the source's own words, rather than given a stage it did not have."@en ;
    skos:historyNote "Added in 0.20.0 by ADR 0063, after published protocols reported levels whose measurement point SSTIM could neither state nor leave honestly unstated, and reported light levels in lux, which no SSTIM property expressed."@en ;
    rdfs:isDefinedBy <https://w3id.org/sstim/common> .

sstim:QuantityKind a owl:Class ;
    rdfs:subClassOf iao:0000030 ;
    rdfs:label "Quantity Kind"@en ;
    skos:definition "A controlled information category naming what a stated magnitude measures, such as sound pressure level, illuminance, electric current or a ratio to the subject's own threshold. Each kind lists the units it may be stated in."@en ;
    rdfs:isDefinedBy <https://w3id.org/sstim/common> .

sstim:DeliveryStage a owl:Class ;
    rdfs:subClassOf iao:0000030 ;
    rdfs:label "Delivery Stage"@en ;
    skos:definition "A controlled information category naming where in the chain from a system's settings to the subject's perception a stated magnitude holds: configured, emitted at the source, at the subject, at a target inside the body, relative to the subject's own measure, as perceived, or not stated."@en ;
    rdfs:isDefinedBy <https://w3id.org/sstim/common> .

sstim:ValueBasis a owl:Class ;
    rdfs:subClassOf iao:0000030 ;
    rdfs:label "Value Basis"@en ;
    skos:definition "A controlled information category for how a stated value is known: specified as a design value, measured, reported by a source, or modelled."@en ;
    rdfs:isDefinedBy <https://w3id.org/sstim/common> .

sstim:ParticipantReference a owl:Class ;
    rdfs:subClassOf iao:0000030 ;
    rdfs:label "Participant Reference"@en ;
    skos:definition "A controlled information category for a measure of the subject's own that a value is set relative to, such as their hearing threshold, their resting motor threshold or their baseline walking cadence. A value set this way differs between subjects by design."@en ;
    rdfs:isDefinedBy <https://w3id.org/sstim/common> .

sstim:hasMagnitude a owl:ObjectProperty ;
    rdfs:domain sstim-ex:StimulusChannel ;
    rdfs:range  sstim:StimulusMagnitude ;
    rdfs:label  "has magnitude"@en ;
    skos:definition "Links a stimulus channel to a stated magnitude of what it delivers. A channel may have several, one per quantity and stage."@en ;
    rdfs:isDefinedBy <https://w3id.org/sstim/common> .

sstim:magnitudeQuantity a owl:ObjectProperty, owl:FunctionalProperty ;
    rdfs:domain sstim:StimulusMagnitude ;
    rdfs:range  sstim:QuantityKind ;
    rdfs:label  "magnitude quantity"@en ;
    skos:definition "What the stated magnitude measures."@en ;
    rdfs:isDefinedBy <https://w3id.org/sstim/common> .

sstim:magnitudeUnit a owl:ObjectProperty, owl:FunctionalProperty ;
    rdfs:domain sstim:StimulusMagnitude ;
    rdfs:range  sstim:MeasurementUnit ;
    rdfs:label  "magnitude unit"@en ;
    skos:definition "The unit the stated magnitude is expressed in. It must be one of the units its quantity lists, which a SHACL constraint checks."@en ;
    rdfs:isDefinedBy <https://w3id.org/sstim/common> .

sstim:magnitudeValue a owl:DatatypeProperty, owl:FunctionalProperty ;
    rdfs:domain sstim:StimulusMagnitude ;
    rdfs:range  xsd:decimal ;
    rdfs:label  "magnitude value"@en ;
    skos:definition "The stated value, in the magnitude's unit, when a single value is given."@en ;
    rdfs:isDefinedBy <https://w3id.org/sstim/common> .

sstim:magnitudeMinimum a owl:DatatypeProperty, owl:FunctionalProperty ;
    rdfs:domain sstim:StimulusMagnitude ;
    rdfs:range  xsd:decimal ;
    rdfs:label  "magnitude minimum"@en ;
    skos:definition "The lower bound of a stated range, in the magnitude's unit, when a source gives a range such as 390 to 400 lux."@en ;
    rdfs:isDefinedBy <https://w3id.org/sstim/common> .

sstim:magnitudeMaximum a owl:DatatypeProperty, owl:FunctionalProperty ;
    rdfs:domain sstim:StimulusMagnitude ;
    rdfs:range  xsd:decimal ;
    rdfs:label  "magnitude maximum"@en ;
    skos:definition "The upper bound of a stated range, in the magnitude's unit."@en ;
    rdfs:isDefinedBy <https://w3id.org/sstim/common> .

sstim:deliveryStage a owl:ObjectProperty, owl:FunctionalProperty ;
    rdfs:domain sstim:StimulusMagnitude ;
    rdfs:range  sstim:DeliveryStage ;
    rdfs:label  "delivery stage"@en ;
    skos:definition "Where in the delivery chain the stated magnitude holds. Required, and the unstated stage is a value of it, so a record says either where a value holds or that its source did not say."@en ;
    rdfs:isDefinedBy <https://w3id.org/sstim/common> .

sstim:valueBasis a owl:ObjectProperty, owl:FunctionalProperty ;
    rdfs:domain sstim:StimulusMagnitude ;
    rdfs:range  sstim:ValueBasis ;
    rdfs:label  "value basis"@en ;
    skos:definition "How the stated value is known: specified, measured, reported by a source, or modelled."@en ;
    rdfs:isDefinedBy <https://w3id.org/sstim/common> .

sstim:relativeToParticipantMeasure a owl:ObjectProperty, owl:FunctionalProperty ;
    rdfs:domain sstim:StimulusMagnitude ;
    rdfs:range  sstim:ParticipantReference ;
    rdfs:label  "relative to participant measure"@en ;
    skos:definition "The measure of the subject's own that a subject-relative magnitude is stated against. Present exactly when the stage is subject-relative, which a SHACL constraint checks in both directions."@en ;
    rdfs:isDefinedBy <https://w3id.org/sstim/common> .

sstim:measurementDistanceMetres a owl:DatatypeProperty, owl:FunctionalProperty ;
    rdfs:domain sstim:StimulusMagnitude ;
    rdfs:range  xsd:decimal ;
    rdfs:label  "measurement distance (m)"@en ;
    skos:definition "Distance from the source at which the magnitude is stated, in metres, as a loudspeaker's output is stated at 1 m."@en ;
    rdfs:isDefinedBy <https://w3id.org/sstim/common> .

sstim:reportedAs a owl:DatatypeProperty, owl:FunctionalProperty ;
    rdfs:domain sstim:StimulusMagnitude ;
    rdfs:range  xsd:string ;
    rdfs:label  "reported as"@en ;
    skos:definition "The source's own words for a reported value, kept verbatim, such as \"60 dB\" or \"390-400 lux at the participant's eyes\". Required for a reported value, so the structured reading can always be checked against what the source actually said."@en ;
    rdfs:isDefinedBy <https://w3id.org/sstim/common> .

sstim:quantityUnit a owl:ObjectProperty ;
    rdfs:domain sstim:QuantityKind ;
    rdfs:range  sstim:MeasurementUnit ;
    rdfs:label  "quantity unit"@en ;
    skos:definition "A unit in which this kind of quantity may be stated. A magnitude stating its quantity in any other unit is rejected, so sound pressure cannot be given in lux."@en ;
    rdfs:isDefinedBy <https://w3id.org/sstim/common> .

sstim:trackedOscillation a owl:ObjectProperty, owl:FunctionalProperty ;
    rdfs:domain sstim:ControlLaw ;
    rdfs:range  sstim:NeuralOscillationType ;
    rdfs:label  "tracked oscillation"@en ;
    skos:definition "The named rhythm whose phase a control law follows, such as the sleep slow oscillation. Declared here rather than beside the control law because named rhythms are a Common concern."@en ;
    skos:historyNote "Added in 0.20.0 by ADR 0064."@en ;
    rdfs:isDefinedBy <https://w3id.org/sstim/common> .

###########################################################################
# What the full texts asked for (ADR 0066)
#
# Completing four published protocols from their papers named things SSTIM
# could not state: a closed-loop delay calibrated for each subject, delivery
# restricted to stages of sleep, and a level that changes over a course up to
# a limit. Each links a stimulus term to the subject's own measure, state or
# course, which is what this module holds, so each is declared here.
###########################################################################

sstim:triggerDelayReference a owl:ObjectProperty, owl:FunctionalProperty ;
    rdfs:domain sstim:ControlLaw ;
    rdfs:range  sstim:ParticipantReference ;
    rdfs:label  "trigger delay reference"@en ;
    skos:definition "The subject's own measure the trigger delay is set to when it is calibrated for each subject rather than fixed: the delay equals that measure, such as the interval from a detected trough to the following peak in the subject's calibration recording. A law naming it states no sstim:triggerDelaySeconds."@en ;
    skos:historyNote "Added in 0.20.0 by ADR 0066."@en ;
    rdfs:isDefinedBy <https://w3id.org/sstim/common> .

sstim:SleepStage a owl:Class ;
    rdfs:subClassOf iao:0000030 ;
    rdfs:label "Sleep Stage"@en ;
    skos:definition "A controlled information category for the stage of sleep, or wakefulness, a subject is in, as scored from the EEG and the other polysomnographic signals: wake, N1, N2, N3 or REM."@en ;
    skos:historyNote "Added in 0.20.0 by ADR 0066."@en ;
    rdfs:isDefinedBy <https://w3id.org/sstim/common> .

sstim:deliveryRestrictedToSleepStage a owl:ObjectProperty ;
    rdfs:domain sstim:ControlLaw ;
    rdfs:range  sstim:SleepStage ;
    rdfs:label  "delivery restricted to sleep stage"@en ;
    skos:definition "A sleep stage the subject must be in for the control law to deliver; it halts outside the stages it names, as stimulation timed to slow oscillations runs only in N2 and N3. A law that names none is not restricted by sleep stage."@en ;
    skos:historyNote "Added in 0.20.0 by ADR 0066."@en ;
    rdfs:isDefinedBy <https://w3id.org/sstim/common> .

sstim:MagnitudeProgression a owl:Class ;
    rdfs:subClassOf iao:0000030 ;
    rdfs:label "Magnitude Progression"@en ;
    skos:definition "How a stated magnitude changes over a course of sessions: by how much at each step, how often, and up to what limit, as a cue tempo rises 5 to 10% every week up to 130 beats per minute. The magnitude it qualifies states the value at the start."@en ;
    skos:historyNote "Added in 0.20.0 by ADR 0066."@en ;
    rdfs:isDefinedBy <https://w3id.org/sstim/common> .

sstim:hasProgression a owl:ObjectProperty, owl:FunctionalProperty ;
    rdfs:domain sstim:StimulusMagnitude ;
    rdfs:range  sstim:MagnitudeProgression ;
    rdfs:label  "has progression"@en ;
    skos:definition "How this magnitude changes over the course; the magnitude itself states its value at the start."@en ;
    skos:historyNote "Added in 0.20.0 by ADR 0066."@en ;
    rdfs:isDefinedBy <https://w3id.org/sstim/common> .

sstim:progressionStepValue a owl:DatatypeProperty, owl:FunctionalProperty ;
    rdfs:domain sstim:MagnitudeProgression ;
    rdfs:range  xsd:decimal ;
    rdfs:label  "progression step"@en ;
    skos:definition "The change applied at each step, in sstim:progressionStepUnit. A progression states either one step or both bounds of a range of steps."@en ;
    skos:historyNote "Added in 0.20.0 by ADR 0066."@en ;
    rdfs:isDefinedBy <https://w3id.org/sstim/common> .

sstim:progressionStepMinimum a owl:DatatypeProperty, owl:FunctionalProperty ;
    rdfs:domain sstim:MagnitudeProgression ;
    rdfs:range  xsd:decimal ;
    rdfs:label  "progression step minimum"@en ;
    skos:definition "The smallest change applied at a step, when the source gives a range of steps."@en ;
    skos:historyNote "Added in 0.20.0 by ADR 0066."@en ;
    rdfs:isDefinedBy <https://w3id.org/sstim/common> .

sstim:progressionStepMaximum a owl:DatatypeProperty, owl:FunctionalProperty ;
    rdfs:domain sstim:MagnitudeProgression ;
    rdfs:range  xsd:decimal ;
    rdfs:label  "progression step maximum"@en ;
    skos:definition "The largest change applied at a step, when the source gives a range of steps."@en ;
    skos:historyNote "Added in 0.20.0 by ADR 0066."@en ;
    rdfs:isDefinedBy <https://w3id.org/sstim/common> .

sstim:progressionStepUnit a owl:ObjectProperty, owl:FunctionalProperty ;
    rdfs:domain sstim:MagnitudeProgression ;
    rdfs:range  sstim:MeasurementUnit ;
    rdfs:label  "progression step unit"@en ;
    skos:definition "The unit of each step. A step in percent is a percentage of the magnitude's value at that point; a step in any other unit is an amount added in that unit, which must be one the magnitude's quantity is stated in."@en ;
    skos:historyNote "Added in 0.20.0 by ADR 0066."@en ;
    rdfs:isDefinedBy <https://w3id.org/sstim/common> .

sstim:progressionIntervalValue a owl:DatatypeProperty, owl:FunctionalProperty ;
    rdfs:domain sstim:MagnitudeProgression ;
    rdfs:range  xsd:decimal ;
    rdfs:label  "progression interval"@en ;
    skos:definition "How often a step is applied: every this many of sstim:progressionIntervalUnit."@en ;
    skos:historyNote "Added in 0.20.0 by ADR 0066."@en ;
    rdfs:isDefinedBy <https://w3id.org/sstim/common> .

sstim:progressionIntervalUnit a owl:ObjectProperty, owl:FunctionalProperty ;
    rdfs:domain sstim:MagnitudeProgression ;
    rdfs:range  sstim:MeasurementUnit ;
    rdfs:label  "progression interval unit"@en ;
    skos:definition "The calendar unit of the progression interval: day, week or month."@en ;
    skos:historyNote "Added in 0.20.0 by ADR 0066."@en ;
    rdfs:isDefinedBy <https://w3id.org/sstim/common> .

sstim:progressionLimit a owl:ObjectProperty, owl:FunctionalProperty ;
    rdfs:domain sstim:MagnitudeProgression ;
    rdfs:range  sstim:StimulusMagnitude ;
    rdfs:label  "progression limit"@en ;
    skos:definition "The value the progression may not pass, stated as a magnitude of its own because it may be in another quantity: a tempo set relative to each patient's cadence can be capped in beats per minute."@en ;
    skos:historyNote "Added in 0.20.0 by ADR 0066."@en ;
    rdfs:isDefinedBy <https://w3id.org/sstim/common> .

###########################################################################
# End of common
###########################################################################
