@prefix schema: <https://schema.org/> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix ks: <https://comcomponent.com/vocab/> .

<https://comcomponent.com/blog/ada-real-time-systems/#article>
    schema:about <https://comcomponent.com/knowledge/ada-annex-d/>, <https://comcomponent.com/knowledge/ceiling-locking/> ;
    schema:mentions <https://comcomponent.com/knowledge/ravenscar-profile/>, <https://comcomponent.com/knowledge/priority-inversion/>, <https://comcomponent.com/knowledge/ada-task/>, <https://comcomponent.com/knowledge/protected-object/>, <https://comcomponent.com/knowledge/fifo-within-priorities/>, <https://comcomponent.com/knowledge/ada-delay-until/>, <https://comcomponent.com/knowledge/ada-relative-delay/>, <https://comcomponent.com/knowledge/cumulative-drift/>, <https://comcomponent.com/knowledge/ada-timing-events/>, <https://comcomponent.com/knowledge/ada-execution-time/>, <https://comcomponent.com/knowledge/mars-pathfinder-priority-inversion/>, <https://comcomponent.com/knowledge/gnat/>, <https://comcomponent.com/knowledge/ada/> .

<https://comcomponent.com/knowledge/ada-annex-d/> a skos:Concept ;
    skos:prefLabel "Annex D(Adaのリアルタイムシステム標準)"@ja ;
    skos:definition "タスク優先度、Ceiling_Locking、delay until、Ravenscarプロファイル、タイミングイベント、実行時間モニタリングなど、リアルタイムシステム向け機能群を定めるAda言語仕様の附属書。"@ja ;
    skos:altLabel "Annex D" ;
    skos:altLabel "Real-Time Systems Annex" ;
    ks:uses <https://comcomponent.com/knowledge/fifo-within-priorities/> ;
    ks:uses <https://comcomponent.com/knowledge/ceiling-locking/> ;
    ks:uses <https://comcomponent.com/knowledge/ada-delay-until/> ;
    ks:uses <https://comcomponent.com/knowledge/ravenscar-profile/> ;
    ks:uses <https://comcomponent.com/knowledge/ada-timing-events/> ;
    ks:uses <https://comcomponent.com/knowledge/ada-execution-time/> ;
    ks:requires <https://comcomponent.com/knowledge/ada-task/> .

<https://comcomponent.com/knowledge/ceiling-locking/> a skos:Concept ;
    skos:prefLabel "Ceiling_Lockingプロトコル"@ja ;
    skos:definition "保護オブジェクトにシーリング優先度を設定し、進入したタスクを自動的にその優先度へ昇格させることで優先度逆転を防ぐ、Annex Dが定めるロッキング方針。"@ja ;
    skos:altLabel "Ceiling Locking" ;
    skos:altLabel "天井優先度プロトコル"@ja ;
    ks:prevents <https://comcomponent.com/knowledge/priority-inversion/> .

<https://comcomponent.com/knowledge/fifo-within-priorities/> a skos:Concept ;
    skos:prefLabel "FIFO_Within_Priorities"@ja ;
    skos:definition "同一優先度内はFIFOで実行し、より高い優先度のタスクが低い優先度のタスクをプリエンプトする、Annex Dが定める標準的なタスクディスパッチポリシー。"@ja ;
    skos:altLabel "優先度ベースディスパッチ"@ja .

<https://comcomponent.com/knowledge/ada-delay-until/> a skos:Concept ;
    skos:prefLabel "delay until(絶対時刻の遅延)"@ja ;
    skos:definition "絶対時刻を基準に次の起動時刻を指定するAdaの遅延文。1回の処理が遅れても次回以降の起動時刻を正しく保ち、累積ドリフトを防ぐ。"@ja ;
    skos:altLabel "delay until" ;
    ks:prevents <https://comcomponent.com/knowledge/cumulative-drift/> .

<https://comcomponent.com/knowledge/ravenscar-profile/> a skos:Concept ;
    skos:prefLabel "Ravenscarプロファイル"@ja ;
    skos:definition "動的タスク生成やselect文などを禁止し、Adaのタスク機能を静的解析可能で決定論的なサブセットに制限するプロファイル。"@ja ;
    skos:altLabel "Ravenscar" ;
    ks:requires <https://comcomponent.com/knowledge/ada-task/> ;
    ks:requires <https://comcomponent.com/knowledge/fifo-within-priorities/> ;
    ks:requires <https://comcomponent.com/knowledge/ceiling-locking/> .

<https://comcomponent.com/knowledge/ada-timing-events/> a skos:Concept ;
    skos:prefLabel "タイミングイベント(Ada.Real_Time.Timing_Events)"@ja ;
    skos:definition "指定した絶対時刻にハンドラをシーリング優先度で呼び出す、ポーリング不要の時刻駆動起床の仕組み。"@ja ;
    skos:altLabel "Timing_Events" ;
    ks:uses <https://comcomponent.com/knowledge/ceiling-locking/> ;
    ks:uses <https://comcomponent.com/knowledge/protected-object/> .

<https://comcomponent.com/knowledge/ada-execution-time/> a skos:Concept ;
    skos:prefLabel "Ada.Execution_Time(実行時間計測)"@ja ;
    skos:definition "タスクごとのCPU消費時間を計測できるAdaの標準ライブラリパッケージ。壁時計時間とは異なり、ブロック中・プリエンプト中はカウントされない。"@ja ;
    skos:altLabel "Execution_Time" ;
    ks:requires <https://comcomponent.com/knowledge/ada-task/> .

<https://comcomponent.com/knowledge/ada-task/> a skos:Concept ;
    skos:prefLabel "Adaのタスク(並行処理)"@ja ;
    skos:definition "スレッドをOSのAPIやライブラリに頼らず、言語仕様に組み込む形で提供するAdaの並行実行単位。"@ja ;
    skos:altLabel "task" ;
    skos:altLabel "rendezvous" .

<https://comcomponent.com/knowledge/protected-object/> a skos:Concept ;
    skos:prefLabel "保護オブジェクト(protected object)"@ja ;
    skos:definition "procedure・function・entryの3種の操作を通じてのみ内部データへアクセスさせ、排他制御を言語が保証するAda 95で導入された機構。"@ja ;
    skos:altLabel "protected type" ;
    skos:altLabel "Protected Object" .

<https://comcomponent.com/knowledge/gnat/> a skos:Concept ;
    skos:prefLabel "GNAT"@ja ;
    skos:definition "GCCに含まれる無償のAdaコンパイラで、Adaの代表的な処理系。"@ja ;
    skos:altLabel "GNATコンパイラ"@ja .

<https://comcomponent.com/knowledge/priority-inversion/> a skos:Concept ;
    skos:prefLabel "優先度逆転(priority inversion)"@ja ;
    skos:definition "低優先度タスクが保持するロックを高優先度タスクが待つ間に、その低優先度タスクが中優先度タスクにプリエンプトされ、高優先度タスクが無期限にブロックされる現象。"@ja ;
    skos:altLabel "priority inversion" ;
    ks:mayCause <https://comcomponent.com/knowledge/mars-pathfinder-priority-inversion/> .

<https://comcomponent.com/knowledge/mars-pathfinder-priority-inversion/> a skos:Concept ;
    skos:prefLabel "Mars Pathfinderの優先度逆転事故"@ja ;
    skos:definition "1997年、優先度逆転により探査機がリセットを繰り返した事故。VxWorksのpriority inheritanceを有効化することで解決された。"@ja ;
    skos:altLabel "Mars Pathfinder" .

<https://comcomponent.com/knowledge/ada-relative-delay/> a skos:Concept ;
    skos:prefLabel "相対delay(delay文)"@ja ;
    skos:definition "処理からの相対時間で待機するAdaのdelay文。各反復の処理時間が加算されて周期がずれる累積ドリフトを生みやすく、Ravenscarプロファイルでは禁止される。"@ja ;
    skos:altLabel "delay Period" ;
    ks:mayCause <https://comcomponent.com/knowledge/cumulative-drift/> ;
    ks:notRecommendedFor <https://comcomponent.com/knowledge/ravenscar-profile/> .

<https://comcomponent.com/knowledge/cumulative-drift/> a skos:Concept ;
    skos:prefLabel "周期実行の累積ドリフト"@ja ;
    skos:definition "相対時間指定のdelayを繰り返すと各反復の処理時間が加算され、周期実行の起動時刻が徐々にずれていく現象。"@ja ;
    skos:altLabel "累積ドリフト"@ja .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/ada-annex-d/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/fifo-within-priorities/> ;
    schema:description "Annex DはFIFO_Within_Prioritiesを、同一優先度内はFIFOで実行し高優先度タスクが低優先度タスクをプリエンプトする標準的なディスパッチポリシーとして規定する。"@ja ;
    ks:evidence <https://ada-lang.io/docs/arm/AA-D/> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/ada-annex-d/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/ceiling-locking/> ;
    schema:description "Annex Dは優先度逆転を防ぐロッキング方針として、Ceiling_Lockingプロトコルを保護オブジェクトに組み込む。"@ja ;
    ks:evidence <https://ada-lang.io/docs/arm/AA-D/> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/ada-annex-d/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/ada-delay-until/> ;
    schema:description "Annex Dは絶対時刻を基準にした遅延であるdelay untilを、累積ドリフトを防ぐ周期実行の基本手段として提供する。"@ja ;
    ks:evidence <https://ada-lang.io/docs/arm/AA-D/> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/ada-annex-d/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/ravenscar-profile/> ;
    schema:description "Annex Dの枠組みのもとで、安全性が極めて重要なシステム向けにタスク機能を制限するRavenscarプロファイルが定義される。"@ja ;
    ks:evidence <https://ada-lang.io/docs/arm/AA-D/> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/ada-annex-d/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/ada-timing-events/> ;
    schema:description "Annex Dは、指定時刻にハンドラをシーリング優先度で呼び出すタイミングイベントの仕組みを提供する。"@ja ;
    ks:evidence <https://ada-lang.io/docs/arm/AA-D/> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/ada-annex-d/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/ada-execution-time/> ;
    schema:description "Annex Dは、タスク単位のCPU消費時間を計測するAda.Execution_Timeパッケージを提供する。"@ja ;
    ks:evidence <https://ada-lang.io/docs/arm/AA-D/> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/ada-annex-d/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/ada-task/> ;
    schema:description "Annex Dのリアルタイム機能は、Adaのタスクを土台として優先度やディスパッチポリシーを拡張する。"@ja ;
    ks:evidence <https://ada-lang.io/docs/arm/AA-9/> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/ada-annex-d/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/protected-object/> ;
    schema:description "Annex Dの機能のうちCeiling_Lockingやタイミングイベントは、保護オブジェクトを土台として実装される。ただしFIFO_Within_Prioritiesやdelay until、Ada.Execution_TimeなどAnnex Dの他の機能は保護オブジェクトを前提としない。"@ja ;
    ks:evidence <https://ada-lang.io/docs/arm/AA-9/AA-9.4/> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/ada-annex-d/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/gnat/> ;
    schema:description "pragma Priorityが実際にどうスケジューリングへ反映されるかはOSとGNATランタイムに依存し、Linux上ではSCHED_FIFOにマップされる一方、Windows上では完全なプリエンプションが保証されない場合がある。"@ja ;
    ks:evidence <https://ada-lang.io/docs/arm/AA-D/> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/ceiling-locking/> ;
    rdf:predicate ks:prevents ;
    rdf:object <https://comcomponent.com/knowledge/priority-inversion/> ;
    schema:description "保護オブジェクトに入ったタスクを自動的にシーリング優先度へ昇格させることで、中優先度タスクによるプリエンプションを防ぎ、優先度逆転を防止する。"@ja ;
    ks:evidence <https://ada-lang.io/docs/arm/AA-D/> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/priority-inversion/> ;
    rdf:predicate ks:mayCause ;
    rdf:object <https://comcomponent.com/knowledge/mars-pathfinder-priority-inversion/> ;
    schema:description "1997年のMars Pathfinderでは、優先度逆転が実際に発生し、探査機がリセットを繰り返す原因になった。"@ja ;
    ks:evidence <https://research.microsoft.com/en-us/um/people/mbj/mars_pathfinder/mars_pathfinder.html> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/ravenscar-profile/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/ada-task/> ;
    schema:description "Ravenscarプロファイルは、Adaのタスク機能を静的に解析可能で決定論的なサブセットへ制限する規約である。"@ja ;
    ks:evidence <https://ada-lang.io/docs/arm/AA-D/> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/ravenscar-profile/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/fifo-within-priorities/> ;
    schema:description "Ravenscarプロファイルは、FIFO_Within_Prioritiesを必須のディスパッチポリシーとして要求する。"@ja ;
    ks:evidence <https://ada-lang.io/docs/arm/AA-D/> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/ravenscar-profile/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/ceiling-locking/> ;
    schema:description "Ravenscarプロファイルは、Ceiling_Lockingを必須のロッキングポリシーとして要求する。"@ja ;
    ks:evidence <https://ada-lang.io/docs/arm/AA-D/> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/ravenscar-profile/> ;
    rdf:predicate ks:configuredBy ;
    rdf:object <https://comcomponent.com/knowledge/gnat/> ;
    schema:description "GNATを使う場合、Ravenscarプロファイルはgnat.adcファイルにpragma Profile (Ravenscar);を記述することで有効化できる(他のAda処理系では有効化の記述方法が異なる)。"@ja ;
    ks:evidence <https://ada-lang.io/docs/arm/AA-D/> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/ada-relative-delay/> ;
    rdf:predicate ks:mayCause ;
    rdf:object <https://comcomponent.com/knowledge/cumulative-drift/> ;
    schema:description "相対時間指定のdelayを繰り返すと各反復の処理時間が加算され、周期が徐々にずれる累積ドリフトが発生する。"@ja ;
    ks:evidence <https://ada-lang.io/docs/arm/AA-D/> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/ada-delay-until/> ;
    rdf:predicate ks:prevents ;
    rdf:object <https://comcomponent.com/knowledge/cumulative-drift/> ;
    schema:description "delay untilは絶対時刻を基準に次の起動時刻を決めるため、1回の処理が遅れても次回以降の起動時刻は正しく保たれ、累積ドリフトを防ぐ。"@ja ;
    ks:evidence <https://ada-lang.io/docs/arm/AA-D/> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/ada-relative-delay/> ;
    rdf:predicate ks:notRecommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/ravenscar-profile/> ;
    schema:description "相対delayは累積ドリフトを生みやすいため、Ravenscarプロファイルに準拠したコードで用いることは推奨されず、禁止される。"@ja ;
    ks:evidence <https://ada-lang.io/docs/arm/AA-D/> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/ada-timing-events/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/ceiling-locking/> ;
    schema:description "タイミングイベントのハンドラは保護オブジェクトのプロシージャとして実装され、シーリング優先度で実行されるためCeiling_Lockingと組み合わせて使われる。"@ja ;
    ks:evidence <https://ada-lang.io/docs/arm/AA-D/> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/ada-timing-events/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/protected-object/> ;
    schema:description "タイミングイベントのハンドラは、割り込みレベルの天井優先度を持つ保護オブジェクトの手続きとして実装する。"@ja ;
    ks:evidence <https://ada-lang.io/docs/arm/AA-9/AA-9.4/> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/ada-execution-time/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/ada-task/> ;
    schema:description "Ada.Execution_Timeは、計測対象であるタスクごとのCPU消費時間を提供する。"@ja ;
    ks:evidence <https://ada-lang.io/docs/arm/AA-D/> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .
