All checks were successful
no-vanity-metrics / Scan committed Markdown for vanity metrics (push) Successful in 4s
standards workspaces build + test / eoc-rs (push) Successful in 1m54s
standards workspaces build + test / jouleclaw-rs (push) Successful in 2m2s
standards workspaces build + test / aac-rs (push) Successful in 58s
standards workspaces build + test / jcp-rs (push) Successful in 1m20s
standards workspaces build + test / arl-rs (push) Successful in 3m21s
standards workspaces build + test / joule-code-rs (push) Successful in 42s
standards workspaces build + test / joulecontract-rs (push) Successful in 33s
standards workspaces build + test / proof-rs (push) Successful in 1m13s
standards workspaces build + test / map-rs (push) Successful in 29s
standards workspaces build + test / mesh-rs (push) Successful in 25s
standards workspaces build + test / joule-ui-rs (push) Successful in 2m28s
standards workspaces build + test / openpay (push) Successful in 1m13s
standards workspaces build + test / sandbox-rs (push) Successful in 2m8s
standards workspaces build + test / jouledesk-rs (push) Successful in 2m32s
standards workspaces build + test / smart-byte-rs (push) Successful in 2m27s
standards workspaces build + test / joulehook-rs (push) Successful in 2m15s
standards workspaces build + test / sense-rs (push) Successful in 2m36s
standards workspaces build + test / macOS energy backend (jcp-energy) (push) Successful in 2m21s
- §4.1 Language honesty: every language states how its core vocabulary was obtained (CoreStatus); an absent status reads as GlossOnly; glosses are never presented as a language's core. Withdraws the claim that one ~400-word core covers ~80% of every language. - §5.1 Timing belongs to the person: scan rate and dwell are theirs to set; automatic adaptation is off unless they opt in; changes are proposed, never silent. - §5.2 Scan-rate floor: max(⌊100·M/65⌋, P95), from at least 10 responses. The previous reference set 80% of the mean press, so the highlight had usually moved on when the person pressed. - §5.3 Dwell proposals go both ways, with floors, replacing "should adapt to fatigue" (the old reference only ever lengthened the dwell). - §10 adds C5–C7; §11 says access and vocabulary choices are never a prerequisite for starting. - spec/access_model.md, the lexicon and the ontology agree (new CoreStatus class and individuals; scanRateMs, dwellMs, adaptationOptIn; Turtle, SHACL and JSON-LD validated with rdflib). New aac-rs/README.md covers testing, the static build, and hosting Express under another site. Co-Authored-By: Claude Opus 5.5 <[email protected]>
115 lines
11 KiB
Turtle
115 lines
11 KiB
Turtle
@prefix aac: <https://aac.transaction.science/vocab/v1#> .
|
|
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
|
|
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
|
|
@prefix owl: <http://www.w3.org/2002/07/owl#> .
|
|
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
|
|
@prefix prov: <http://www.w3.org/ns/prov#> .
|
|
@prefix dc: <http://purl.org/dc/terms/> .
|
|
|
|
<https://aac.transaction.science/vocab/v1> a owl:Ontology ;
|
|
dc:title "AAC vocabulary (v1)" ;
|
|
dc:description "Stable IRIs for the AAC open standard — the communication cargo class of the Transaction Science substrate. Defines the portable communication board and its cells, the immutable position (motor stability), symbol references, the access-method model (touch, switch scanning, dwell/eye-gaze, head, joystick, BCI, partial voice), the L0-L9 communication cascade with its offline and free invariants, the interchange format, and the never-billed energy receipt (measured + estimated microjoules with honest provenance)." ;
|
|
dc:license <https://creativecommons.org/licenses/by/4.0/> ;
|
|
owl:versionInfo "1" .
|
|
|
|
# ─── Classes ────────────────────────────────────────────────────────
|
|
|
|
aac:Board a owl:Class ; rdfs:label "Board" ; rdfs:subClassOf prov:Entity ;
|
|
rdfs:comment "A communication surface holding cells; the portable unit a voice travels as." .
|
|
aac:Cell a owl:Class ; rdfs:label "Cell" ;
|
|
rdfs:comment "A single selectable target at a fixed grid position, with content and an action." .
|
|
aac:Symbol a owl:Class ; rdfs:label "Symbol" ;
|
|
rdfs:comment "A pictographic word referenced by source and id, not embedded pixels." .
|
|
aac:Utterance a owl:Class ; rdfs:label "Utterance" ; rdfs:subClassOf prov:Entity ;
|
|
rdfs:comment "What a non-speaking person means to say, composed by selecting cells." .
|
|
aac:MotorProfile a owl:Class ; rdfs:label "Motor profile" ;
|
|
rdfs:comment "The user's physical capabilities, used to adapt target size and timing." .
|
|
aac:Receipt a owl:Class ; rdfs:label "Receipt" ;
|
|
rdfs:comment "Per-operation energy record: measured + estimated microjoules with a provenance tag. Transparency only; never billed." .
|
|
aac:Cascade a owl:Class ; rdfs:label "Communication cascade" .
|
|
aac:Steward a owl:Class ; rdfs:label "Steward" ; rdfs:subClassOf prov:Agent .
|
|
|
|
# ─── Board types (SPEC §2) ──────────────────────────────────────────
|
|
|
|
aac:BoardType a owl:Class ; rdfs:label "Board type" .
|
|
aac:Grid a aac:BoardType ; rdfs:label "Grid" ; rdfs:comment "Traditional symbol grid." .
|
|
aac:VisualScene a aac:BoardType ; rdfs:label "VisualScene" ; rdfs:comment "Photo-based with hotspots, for emerging communicators." .
|
|
aac:Keyboard a aac:BoardType ; rdfs:label "Keyboard" ; rdfs:comment "Text input, for literate users." .
|
|
aac:Hybrid a aac:BoardType ; rdfs:label "Hybrid" ; rdfs:comment "Mixed symbol + text." .
|
|
aac:QuickAccess a aac:BoardType ; rdfs:label "QuickAccess" ; rdfs:comment "High-frequency phrases; the home board." .
|
|
|
|
# ─── Access methods (SPEC §5) ───────────────────────────────────────
|
|
|
|
aac:AccessMethod a owl:Class ; rdfs:label "Access method" .
|
|
aac:DirectTouch a aac:AccessMethod ; rdfs:label "DirectTouch" ; rdfs:comment "Finger or stylus on the screen. The default." .
|
|
aac:EyeGaze a aac:AccessMethod ; rdfs:label "EyeGaze" ; rdfs:comment "Eye-tracking; selection by dwell." .
|
|
aac:HeadTracking a aac:AccessMethod ; rdfs:label "HeadTracking" ; rdfs:comment "Head-movement pointer." .
|
|
aac:SwitchScan a aac:AccessMethod ; rdfs:label "SwitchScan" ; rdfs:comment "One or more physical switches with scanning." .
|
|
aac:Joystick a aac:AccessMethod ; rdfs:label "Joystick" .
|
|
aac:Bci a aac:AccessMethod ; rdfs:label "Bci" ; rdfs:comment "Brain-computer interface (emerging)." .
|
|
aac:PartialVoice a aac:AccessMethod ; rdfs:label "PartialVoice" ; rdfs:comment "Partial voice input, for users with some speech." .
|
|
aac:Pointer a aac:AccessMethod ; rdfs:label "Pointer" ; rdfs:comment "Mouse or trackpad." .
|
|
|
|
# ─── Language status (SPEC §4.1) ────────────────────────────────────
|
|
|
|
aac:CoreStatus a owl:Class ; rdfs:label "Core status" ;
|
|
rdfs:comment "How a language's core vocabulary was obtained. A record without one is GlossOnly." .
|
|
aac:ValidatedNativeCorpus a aac:CoreStatus ; rdfs:label "ValidatedNativeCorpus" ; rdfs:comment "A published core list derived from native speakers of the language." .
|
|
aac:StakeholderValidated a aac:CoreStatus ; rdfs:label "StakeholderValidated" ; rdfs:comment "Nominated and rated by the language's speakers and communication partners." .
|
|
aac:PrimesOnly a aac:CoreStatus ; rdfs:label "PrimesOnly" ; rdfs:comment "Provisional seed from semantic primes and frequency lists." .
|
|
aac:GlossOnly a aac:CoreStatus ; rdfs:label "GlossOnly" ; rdfs:comment "Glosses of another language's core list; not this language's core vocabulary." .
|
|
|
|
# ─── Cascade levels (SPEC §6) ───────────────────────────────────────
|
|
|
|
aac:CascadeLevel a owl:Class ; rdfs:label "Cascade level" .
|
|
aac:L0_CacheHit a aac:CascadeLevel ; rdfs:label "L0 CacheHit" ; aac:energyUj 1 ; aac:offline true .
|
|
aac:L1_SymbolLookup a aac:CascadeLevel ; rdfs:label "L1 SymbolLookup" ; aac:energyUj 10 ; aac:offline true .
|
|
aac:L2_LocalPredict a aac:CascadeLevel ; rdfs:label "L2 LocalPredict" ; aac:energyUj 100 ; aac:offline true .
|
|
aac:L3_ContextPredict a aac:CascadeLevel ; rdfs:label "L3 ContextPredict" ; aac:energyUj 1000 ; aac:offline false .
|
|
aac:L4_SemanticExpand a aac:CascadeLevel ; rdfs:label "L4 SemanticExpand" ; aac:energyUj 10000 ; aac:offline false .
|
|
aac:L5_ConversationAi a aac:CascadeLevel ; rdfs:label "L5 ConversationAi" ; aac:energyUj 100000 ; aac:offline false .
|
|
aac:L6_GenerativeComm a aac:CascadeLevel ; rdfs:label "L6 GenerativeComm" ; aac:energyUj 1000000 ; aac:offline false .
|
|
aac:L7_VoiceClone a aac:CascadeLevel ; rdfs:label "L7 VoiceClone" ; aac:energyUj 5000000 ; aac:offline false .
|
|
aac:L8_MultimodalGen a aac:CascadeLevel ; rdfs:label "L8 MultimodalGen" ; aac:energyUj 10000000 ; aac:offline false .
|
|
aac:L9_AdaptiveModel a aac:CascadeLevel ; rdfs:label "L9 AdaptiveModel" ; aac:energyUj 15000000 ; aac:offline false .
|
|
|
|
# ─── Vocabulary level (SPEC §6.2) ───────────────────────────────────
|
|
|
|
aac:VocabularyLevel a owl:Class ; rdfs:label "Vocabulary level" .
|
|
aac:Emergent a aac:VocabularyLevel ; rdfs:label "Emergent" ; rdfs:comment "<50 symbols; visual scenes, single words." .
|
|
aac:Transitional a aac:VocabularyLevel ; rdfs:label "Transitional" ; rdfs:comment "50-400 symbols; core word focus." .
|
|
aac:Conventional a aac:VocabularyLevel ; rdfs:label "Conventional" ; rdfs:comment "400-5000 symbols; full grammar." .
|
|
aac:Literate a aac:VocabularyLevel ; rdfs:label "Literate" ; rdfs:comment "Text-based; keyboard + prediction." .
|
|
|
|
# ─── Provenance (SPEC §9) ───────────────────────────────────────────
|
|
|
|
aac:Provenance a owl:Class ; rdfs:label "Energy provenance" .
|
|
aac:HwShunt a aac:Provenance ; rdfs:label "HwShunt" ; rdfs:comment "Read from a hardware energy interface; requires a measured figure." .
|
|
aac:ModelBased a aac:Provenance ; rdfs:label "ModelBased" ; rdfs:comment "Computed from a calibrated per-operation model." .
|
|
aac:Estimator a aac:Provenance ; rdfs:label "Estimator" ; rdfs:comment "Coarse constant estimator; must not carry a measured figure." .
|
|
|
|
# ─── Properties ─────────────────────────────────────────────────────
|
|
|
|
aac:boardType a owl:ObjectProperty ; rdfs:domain aac:Board ; rdfs:range aac:BoardType ; rdfs:label "board type" .
|
|
aac:rows a owl:DatatypeProperty ; rdfs:domain aac:Board ; rdfs:range xsd:unsignedShort ; rdfs:label "grid rows" .
|
|
aac:cols a owl:DatatypeProperty ; rdfs:domain aac:Board ; rdfs:range xsd:unsignedShort ; rdfs:label "grid columns" .
|
|
aac:hasCell a owl:ObjectProperty ; rdfs:domain aac:Board ; rdfs:range aac:Cell ; rdfs:label "has cell" .
|
|
aac:row a owl:DatatypeProperty ; rdfs:domain aac:Cell ; rdfs:range xsd:unsignedShort ; rdfs:label "cell row (0-indexed, immutable)" .
|
|
aac:col a owl:DatatypeProperty ; rdfs:domain aac:Cell ; rdfs:range xsd:unsignedShort ; rdfs:label "cell column (0-indexed, immutable)" .
|
|
aac:label a owl:DatatypeProperty ; rdfs:domain aac:Cell ; rdfs:range xsd:string ; rdfs:label "cell text label (survives round-trip)" .
|
|
aac:locked a owl:DatatypeProperty ; rdfs:domain aac:Cell ; rdfs:range xsd:boolean ; rdfs:label "cell locked against structural edits" .
|
|
aac:frequency a owl:DatatypeProperty ; rdfs:domain aac:Cell ; rdfs:range xsd:unsignedLong ; rdfs:label "usage frequency (weights ranking, never placement)" .
|
|
aac:navigatesTo a owl:ObjectProperty ; rdfs:domain aac:Cell ; rdfs:range aac:Board ; rdfs:label "navigation edge (board graph)" .
|
|
aac:symbolId a owl:DatatypeProperty ; rdfs:domain aac:Symbol ; rdfs:range xsd:string ; rdfs:label "symbol registry id" .
|
|
aac:accessMethod a owl:ObjectProperty ; rdfs:range aac:AccessMethod ; rdfs:label "user access method" .
|
|
aac:minTargetMm a owl:DatatypeProperty ; rdfs:domain aac:MotorProfile ; rdfs:range xsd:float ; rdfs:label "minimum comfortable target size (mm)" .
|
|
aac:energyUj a owl:DatatypeProperty ; rdfs:domain aac:CascadeLevel ; rdfs:range xsd:unsignedLong ; rdfs:label "estimated energy floor (microjoules)" .
|
|
aac:offline a owl:DatatypeProperty ; rdfs:domain aac:CascadeLevel ; rdfs:range xsd:boolean ; rdfs:label "offline-capable (true for exactly L0-L2)" .
|
|
aac:level a owl:ObjectProperty ; rdfs:range aac:CascadeLevel ; rdfs:label "resolved cascade level" .
|
|
aac:measuredUj a owl:DatatypeProperty ; rdfs:domain aac:Receipt ; rdfs:range xsd:unsignedLong ; rdfs:label "hardware-measured energy (microjoules)" .
|
|
aac:estimatedUj a owl:DatatypeProperty ; rdfs:domain aac:Receipt ; rdfs:range xsd:unsignedLong ; rdfs:label "estimated energy (microjoules)" .
|
|
aac:provenance a owl:ObjectProperty ; rdfs:domain aac:Receipt ; rdfs:range aac:Provenance ; rdfs:label "energy provenance tag" .
|
|
aac:coreStatus a owl:ObjectProperty ; rdfs:range aac:CoreStatus ; rdfs:label "how a language's core vocabulary was obtained" .
|
|
aac:scanRateMs a owl:DatatypeProperty ; rdfs:range xsd:unsignedInt ; rdfs:label "time between scan highlights (ms), set by the person" .
|
|
aac:dwellMs a owl:DatatypeProperty ; rdfs:range xsd:unsignedInt ; rdfs:label "dwell time to select (ms), set by the person" .
|
|
aac:adaptationOptIn a owl:DatatypeProperty ; rdfs:range xsd:boolean ; rdfs:label "whether timing may adapt automatically (false unless the person opts in)" .
|