@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-task-concurrency/#article>
    schema:about <https://comcomponent.com/knowledge/ada-task/>, <https://comcomponent.com/knowledge/protected-object/> ;
    schema:mentions <https://comcomponent.com/knowledge/ada/>, <https://comcomponent.com/knowledge/rendezvous/>, <https://comcomponent.com/knowledge/selective-accept/>, <https://comcomponent.com/knowledge/barrier/>, <https://comcomponent.com/knowledge/priority-ceiling-protocol/>, <https://comcomponent.com/knowledge/ravenscar-profile/>, <https://comcomponent.com/knowledge/rate-monotonic-scheduling/>, <https://comcomponent.com/knowledge/data-race/>, <https://comcomponent.com/knowledge/deadlock/>, <https://comcomponent.com/knowledge/priority-inversion/>, <https://comcomponent.com/knowledge/bounded-error/>, <https://comcomponent.com/knowledge/erroneous-execution/>, <https://comcomponent.com/knowledge/task-priority/> .

<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" ;
    ks:requires <https://comcomponent.com/knowledge/ada/> ;
    ks:uses <https://comcomponent.com/knowledge/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" ;
    ks:requires <https://comcomponent.com/knowledge/ada/> ;
    ks:prevents <https://comcomponent.com/knowledge/data-race/> .

<https://comcomponent.com/knowledge/ada/> a skos:Concept ;
    skos:prefLabel "Ada(プログラミング言語)"@ja ;
    skos:definition "1970年代後半にアメリカ国防総省の主導で標準化された、強い型付けと高信頼性を重視する汎用プログラミング言語。最新標準はAda 2022。"@ja ;
    skos:altLabel "Ada言語"@ja ;
    skos:altLabel "Ada 2022" .

<https://comcomponent.com/knowledge/rendezvous/> a skos:Concept ;
    skos:prefLabel "ランデブー(rendezvous)"@ja ;
    skos:definition "呼び出し側のエントリ呼び出しとタスク側のaccept文が同時にランデブーポイントに達するまで互いに待ち合わせる、Adaのタスク間同期通信の仕組みである。"@ja ;
    skos:altLabel "Rendezvous" ;
    skos:altLabel "entry/accept" ;
    skos:broader <https://comcomponent.com/knowledge/ada-task/> .

<https://comcomponent.com/knowledge/selective-accept/> a skos:Concept ;
    skos:prefLabel "選択的アクセプト(select文)"@ja ;
    skos:definition "複数のエントリへの呼び出しをselect文の複数のor分岐で待ち受け、ガード条件やterminateも組み合わせられるAdaの構文である。"@ja ;
    skos:altLabel "Selective Accept" ;
    skos:altLabel "select ... or" ;
    skos:broader <https://comcomponent.com/knowledge/rendezvous/> ;
    ks:uses <https://comcomponent.com/knowledge/rendezvous/> .

<https://comcomponent.com/knowledge/deadlock/> a skos:Concept ;
    skos:prefLabel "デッドロック(deadlock)"@ja ;
    skos:definition "複数のタスクが互いの完了やリソース解放を待ち続け、永遠に進行しなくなる状態である。"@ja ;
    skos:altLabel "Deadlock" .

<https://comcomponent.com/knowledge/barrier/> a skos:Concept ;
    skos:prefLabel "バリア(保護エントリのwhen条件)"@ja ;
    skos:definition "保護オブジェクトのエントリ呼び出しのたびに評価され、真になるまで呼び出し側をキューで待たせる条件式である。"@ja ;
    skos:altLabel "Barrier" ;
    skos:altLabel "entry ... when" ;
    skos:broader <https://comcomponent.com/knowledge/protected-object/> .

<https://comcomponent.com/knowledge/data-race/> a skos:Concept ;
    skos:prefLabel "データ競合(data race)"@ja ;
    skos:definition "複数のタスクが同じメモリ位置に同時アクセスし、少なくとも一方が書き込みであるために結果が未定義になる状態である。"@ja ;
    skos:altLabel "Data Race" ;
    ks:mayCause <https://comcomponent.com/knowledge/erroneous-execution/> .

<https://comcomponent.com/knowledge/erroneous-execution/> a skos:Concept ;
    skos:prefLabel "誤った実行(erroneous execution)"@ja ;
    skos:definition "そのプログラムの動作について規格が何も保証しなくなる、Ada言語規格が定める最も無制限なエラー区分である。"@ja ;
    skos:altLabel "Erroneous Execution" .

<https://comcomponent.com/knowledge/bounded-error/> a skos:Concept ;
    skos:prefLabel "限定エラー(bounded error)"@ja ;
    skos:definition "起こりうる結果の範囲は規格が定めるが、そのどれになるかは規格が保証しない種類のAdaのエラーで、誤った実行より制限された概念である。"@ja ;
    skos:altLabel "Bounded Error" .

<https://comcomponent.com/knowledge/priority-ceiling-protocol/> a skos:Concept ;
    skos:prefLabel "優先度上限プロトコル(Priority Ceiling Protocol)"@ja ;
    skos:definition "各保護オブジェクトにシーリング優先度を設定し、オブジェクトのロック中はその優先度で実行させることで優先度逆転を防ぐプロトコルである。"@ja ;
    skos:altLabel "Priority Ceiling Protocol" ;
    skos:altLabel "Ceiling Locking" ;
    ks:prevents <https://comcomponent.com/knowledge/priority-inversion/> ;
    ks:requires <https://comcomponent.com/knowledge/protected-object/> ;
    ks:uses <https://comcomponent.com/knowledge/task-priority/> .

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

<https://comcomponent.com/knowledge/task-priority/> a skos:Concept ;
    skos:prefLabel "タスク優先度(pragma Priority)"@ja ;
    skos:definition "pragma PriorityまたはPriority aspectでタスクや保護オブジェクトに設定する、Annex Dのリアルタイムスケジューリングに使う優先度である。"@ja ;
    skos:altLabel "pragma Priority" ;
    skos:altLabel "Priority aspect" .

<https://comcomponent.com/knowledge/rate-monotonic-scheduling/> a skos:Concept ;
    skos:prefLabel "Rate Monotonic Scheduling(RMS)"@ja ;
    skos:definition "周期の短いタスクほど高い優先度を割り当てる固定優先度スケジューリング方式で、周期タスクの集合が締切を守れるかを実行前に解析できる。"@ja ;
    skos:altLabel "レートモノトニックスケジューリング"@ja ;
    ks:uses <https://comcomponent.com/knowledge/task-priority/> .

<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/> .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/ada-task/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/ada/> ;
    schema:description "タスクは1983年のAda 83以来、Adaの言語仕様に組み込まれた並行処理の機能である"@ja ;
    ks:evidence <https://www.adaic.org/ada-resources/standards/ada22/> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/protected-object/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/ada/> ;
    schema:description "保護オブジェクトはAda 95で追加された、言語管理の排他制御を提供するAdaの機能である"@ja ;
    ks:evidence <https://www.adaic.org/ada-resources/standards/ada22/> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/ada-task/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/rendezvous/> ;
    schema:description "タスクはentryとacceptによるランデブーで外部タスクと同期通信を行う"@ja ;
    ks:evidence <https://www.adaic.org/ada-resources/standards/ada22/> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/selective-accept/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/rendezvous/> ;
    schema:description "選択的アクセプト(select文)は複数のエントリに対するランデブーの待ち受けを1つの構文にまとめる"@ja ;
    ks:evidence <https://www.adaic.org/ada-resources/standards/ada22/> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/selective-accept/> ;
    rdf:predicate ks:prevents ;
    rdf:object <https://comcomponent.com/knowledge/deadlock/> ;
    schema:description "or terminateにより、誰からも呼ばれなくなったサーバータスクを安全に終了させ、待ち続けるタスクによるデッドロックを避けられる。これは「待ち続けるサーバータスク」という特定のパターンへの対策であり、複数タスク間の循環待ちなど他の形のデッドロックまで防ぐものではない"@ja ;
    ks:evidence <https://www.adaic.org/ada-resources/standards/ada22/> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/protected-object/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/barrier/> ;
    schema:description "保護オブジェクトのエントリは、バリア条件が真になるまで呼び出し側をキューで待たせる(関数・プロシージャにはバリアはない)"@ja ;
    ks:evidence <https://www.adaic.org/ada-resources/standards/ada22/> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/protected-object/> ;
    rdf:predicate ks:prevents ;
    rdf:object <https://comcomponent.com/knowledge/data-race/> ;
    schema:description "保護オブジェクトは共有データへの排他アクセスを保証し、データ競合を防ぐ"@ja ;
    ks:evidence <https://www.adaic.org/ada-resources/standards/ada22/> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/data-race/> ;
    rdf:predicate ks:mayCause ;
    rdf:object <https://comcomponent.com/knowledge/erroneous-execution/> ;
    schema:description "保護されない共有変数への同時読み書きは、Ada規格上の誤った実行(erroneous execution)に該当し、規格は動作について何も保証しなくなる"@ja ;
    ks:evidence <https://www.adaic.org/ada-resources/standards/ada22/> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/bounded-error/> ;
    rdf:predicate ks:mayCause ;
    rdf:object <https://comcomponent.com/knowledge/deadlock/> ;
    schema:description "保護操作内でのdelayや特定のI/Oは限定エラーに該当し、処理系によってはデッドロックにつながり得る"@ja ;
    ks:evidence <https://www.adaic.org/ada-resources/standards/ada22/> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/protected-object/> ;
    rdf:predicate ks:mayCause ;
    rdf:object <https://comcomponent.com/knowledge/bounded-error/> ;
    schema:description "保護操作内でdelayや時間のかかるI/Oを行うと、Ada規格上の限定エラー(bounded error)に該当する"@ja ;
    ks:evidence <https://www.adaic.org/ada-resources/standards/ada22/> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/priority-ceiling-protocol/> ;
    rdf:predicate ks:prevents ;
    rdf:object <https://comcomponent.com/knowledge/priority-inversion/> ;
    schema:description "優先度上限プロトコルは、保護オブジェクトのロック中にシーリング優先度で実行させることで優先度逆転を防ぐ"@ja ;
    ks:evidence <https://www.adaic.org/ada-resources/standards/ada22/> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/priority-ceiling-protocol/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/protected-object/> ;
    schema:description "優先度上限プロトコルは、各保護オブジェクトにpragma Priorityでシーリング優先度を設定することを前提とする"@ja ;
    ks:evidence <https://www.adaic.org/ada-resources/standards/ada22/> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/priority-ceiling-protocol/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/task-priority/> ;
    schema:description "優先度上限プロトコルは保護オブジェクトに設定するシーリング優先度という、タスク優先度と同じ仕組みの値を使う"@ja ;
    ks:evidence <https://www.adaic.org/ada-resources/standards/ada22/> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/rate-monotonic-scheduling/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/task-priority/> ;
    schema:description "Rate Monotonic Schedulingは、周期の短いタスクほど高いタスク優先度を割り当てる固定優先度方式である"@ja ;
    ks:evidence <https://www.adaic.org/ada-resources/standards/ada22/> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/rate-monotonic-scheduling/> ;
    rdf:predicate ks:recommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/ada-task/> ;
    schema:description "締切を守れるかを実行前に解析できるRate Monotonic Schedulingは、ハードリアルタイム用途のタスク設計に推奨される"@ja ;
    ks:evidence <https://www.adaic.org/ada-resources/standards/ada22/> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/ravenscar-profile/> ;
    rdf:predicate ks:mitigates ;
    rdf:object <https://comcomponent.com/knowledge/deadlock/> ;
    schema:description "Ravenscarプロファイルはタスクモデルを制限し、静的なデッドロック解析を可能にすることでデッドロックのリスクを下げる"@ja ;
    ks:evidence <https://www.adaic.org/ada-resources/standards/ada22/> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] 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://www.adaic.org/ada-resources/standards/ada22/> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/ada-task/> ;
    rdf:predicate ks:mayCause ;
    rdf:object <https://comcomponent.com/knowledge/priority-inversion/> ;
    schema:description "優先度の異なるタスクが保護されていないリソースを待つと、優先度逆転が起こり得る"@ja ;
    ks:evidence <https://www.adaic.org/ada-resources/standards/ada22/> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/ada-task/> ;
    rdf:predicate ks:configuredBy ;
    rdf:object <https://comcomponent.com/knowledge/task-priority/> ;
    schema:description "タスクはpragma Priorityで優先度を設定でき、対応する処理系・実行環境ではリアルタイムスケジューリングに使われる"@ja ;
    ks:evidence <https://www.adaic.org/ada-resources/standards/ada22/> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/rendezvous/> ;
    rdf:predicate ks:mitigates ;
    rdf:object <https://comcomponent.com/knowledge/deadlock/> ;
    schema:description "ランデブーモデルは構造的な同期を提供し、明示的な終了待ちの呼び忘れのような一部のデッドロック要因を減らす"@ja ;
    ks:evidence <https://www.adaic.org/ada-resources/standards/ada22/> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .
