@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-language-appeal/#article>
    schema:about <https://comcomponent.com/knowledge/ada/> ;
    schema:mentions <https://comcomponent.com/knowledge/ada-strong-typing/>, <https://comcomponent.com/knowledge/ada-range-constraint/>, <https://comcomponent.com/knowledge/ada-package/>, <https://comcomponent.com/knowledge/ada-generics/>, <https://comcomponent.com/knowledge/ada-generic-contract-model/>, <https://comcomponent.com/knowledge/ada-design-by-contract/>, <https://comcomponent.com/knowledge/ada-task/>, <https://comcomponent.com/knowledge/protected-object/>, <https://comcomponent.com/knowledge/spark/>, <https://comcomponent.com/knowledge/gnat/>, <https://comcomponent.com/knowledge/alire/>, <https://comcomponent.com/knowledge/ada-c-interop/>, <https://comcomponent.com/knowledge/ariane-5-flight-501-failure/>, <https://comcomponent.com/knowledge/mars-climate-orbiter-loss/>, <https://comcomponent.com/knowledge/ravenscar-profile/>, <https://comcomponent.com/knowledge/buffer-overrun/>, <https://comcomponent.com/knowledge/late-instantiation-error/> .

<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" ;
    ks:implements <https://comcomponent.com/knowledge/ada-strong-typing/> ;
    ks:implements <https://comcomponent.com/knowledge/ada-range-constraint/> ;
    ks:implements <https://comcomponent.com/knowledge/ada-package/> ;
    ks:implements <https://comcomponent.com/knowledge/ada-generics/> ;
    ks:implements <https://comcomponent.com/knowledge/ada-design-by-contract/> ;
    ks:implements <https://comcomponent.com/knowledge/ada-task/> ;
    ks:implements <https://comcomponent.com/knowledge/ada-c-interop/> .

<https://comcomponent.com/knowledge/ada-strong-typing/> a skos:Concept ;
    skos:prefLabel "Adaの強い型付け"@ja ;
    skos:definition "構造が同じでも別名で宣言した型を別の型として扱い、暗黙の混用をコンパイルエラーにするAdaの型システムの性質。"@ja ;
    skos:altLabel "strong typing" .

<https://comcomponent.com/knowledge/ada-range-constraint/> a skos:Concept ;
    skos:prefLabel "範囲制約(range constraint)"@ja ;
    skos:definition "型に値の範囲を持たせ、違反を実行時にConstraint_Error例外として検出するAdaの仕組み。配列アクセスの境界チェックにも使われる。"@ja ;
    skos:altLabel "subtype" ;
    skos:altLabel "Constraint_Error" .

<https://comcomponent.com/knowledge/ada-package/> a skos:Concept ;
    skos:prefLabel "Adaのパッケージ(仕様部/本体分離)"@ja ;
    skos:definition "仕様部(.ads)と本体(.adb)を分離してモジュールを構成するAdaの機構。仕様部だけ読めば使い方が分かる。"@ja ;
    skos:altLabel ".ads/.adb" ;
    skos:altLabel "package spec / body" .

<https://comcomponent.com/knowledge/ada-generics/> a skos:Concept ;
    skos:prefLabel "Adaのジェネリック(総称単位)"@ja ;
    skos:definition "型・値・サブプログラム・パッケージを仮パラメータとして受け取り、newによるインスタンス化の時点で静的に型チェックされるAdaの再利用機構。"@ja ;
    skos:altLabel "generic unit" ;
    skos:altLabel "総称単位"@ja ;
    ks:implements <https://comcomponent.com/knowledge/ada-generic-contract-model/> .

<https://comcomponent.com/knowledge/ada-design-by-contract/> a skos:Concept ;
    skos:prefLabel "契約による設計(Pre/Post条件)"@ja ;
    skos:definition "サブプログラムに事前条件(Pre)・事後条件(Post)・型不変条件を言語機能として付与できる、Ada 2012で導入された仕組み。"@ja ;
    skos:altLabel "Design by Contract" ;
    skos:altLabel "Ada 2012契約"@ja .

<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:uses <https://comcomponent.com/knowledge/protected-object/> .

<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/ada-c-interop/> a skos:Concept ;
    skos:prefLabel "AdaとC/C++の相互運用(Annex B)"@ja ;
    skos:definition "Ada参照マニュアルの附属書Bで標準化された、C・Fortranなど他言語とのインターフェース機構。ImportやExportで双方向の呼び出しができる。"@ja ;
    skos:altLabel "Annex B" ;
    skos:altLabel "Interfaces.C" .

<https://comcomponent.com/knowledge/spark/> a skos:Concept ;
    skos:prefLabel "SPARK"@ja ;
    skos:definition "プログラムの性質を数学的に証明できるように設計された、Adaのサブセット(部分言語)とそのツール群。"@ja ;
    skos:altLabel "SPARK Ada" ;
    skos:altLabel "GNATprove" ;
    ks:requires <https://comcomponent.com/knowledge/ada/> .

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

<https://comcomponent.com/knowledge/alire/> a skos:Concept ;
    skos:prefLabel "Alire"@ja ;
    skos:definition "Ada/SPARKのパッケージマネージャー兼ビルドツールで、ツールチェーン(GNAT)の取得・管理も担う。"@ja ;
    skos:altLabel "alr" .

<https://comcomponent.com/knowledge/ada-generic-contract-model/> a skos:Concept ;
    skos:prefLabel "Adaジェネリックのcontract model"@ja ;
    skos:definition "ジェネリック本体を仮パラメータが約束した操作だけで書かせ、本体単独で型チェックするAdaジェネリックの設計方式。"@ja ;
    skos:altLabel "contract model" ;
    ks:prevents <https://comcomponent.com/knowledge/late-instantiation-error/> .

<https://comcomponent.com/knowledge/mars-climate-orbiter-loss/> a skos:Concept ;
    skos:prefLabel "Mars Climate Orbiterの喪失"@ja ;
    skos:definition "1999年、ヤード・ポンド法とメートル法の単位系混在が原因で、姿勢制御の計算が誤り探査機を失った事故。"@ja ;
    skos:altLabel "Mars Climate Orbiter事故"@ja .

<https://comcomponent.com/knowledge/ariane-5-flight-501-failure/> a skos:Concept ;
    skos:prefLabel "Ariane 5初号機(Flight 501)の打ち上げ失敗"@ja ;
    skos:definition "1996年、Ariane 4向けに書かれた慣性基準装置のコードを再利用した結果、水平速度に関する内部値の64ビット浮動小数点から16ビット整数への変換が範囲検査で失敗し、その例外が保護されずに打ち上げが失敗した事故。"@ja ;
    skos:altLabel "Ariane 501" ;
    skos:altLabel "Ariane 5事故"@ja .

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

<https://comcomponent.com/knowledge/buffer-overrun/> a skos:Concept ;
    skos:prefLabel "バッファオーバーラン"@ja ;
    skos:definition "配列やバッファの範囲外への書き込み・読み込みが起こる現象。C/C++で長年セキュリティ脆弱性の主要原因とされてきた。"@ja ;
    skos:altLabel "buffer overrun" ;
    skos:altLabel "buffer overflow" .

<https://comcomponent.com/knowledge/late-instantiation-error/> a skos:Concept ;
    skos:prefLabel "インスタンス化時にしか分からないテンプレートエラー"@ja ;
    skos:definition "ジェネリック/テンプレート本体の誤りが、具体的な型でインスタンス化するまでコンパイルエラーとして検出されない問題。C++テンプレートで歴史的に見られた。"@ja ;
    skos:altLabel "instantiation-time error" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/ada/> ;
    rdf:predicate ks:implements ;
    rdf:object <https://comcomponent.com/knowledge/ada-strong-typing/> ;
    schema:description "Adaは構造が同じでも別名で宣言した型を別の型として扱う強い型付けを実装しており、単位を表す型同士の混用をコンパイルエラーにする。"@ja ;
    ks:evidence <https://ada-lang.io/docs/arm/AA-3/AA-3.2/> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/ada/> ;
    rdf:predicate ks:implements ;
    rdf:object <https://comcomponent.com/knowledge/ada-range-constraint/> ;
    schema:description "Adaは型に値の範囲を持たせ、違反を実行時にConstraint_Error例外として検出する範囲制約を実装している。"@ja ;
    ks:evidence <https://ada-lang.io/docs/arm/AA-3/AA-3.5/> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/ada/> ;
    rdf:predicate ks:implements ;
    rdf:object <https://comcomponent.com/knowledge/ada-package/> ;
    schema:description "Adaは仕様部(.ads)と本体(.adb)を分離するパッケージを、モジュール機構として実装している。"@ja ;
    ks:evidence <https://ada-lang.io/docs/arm/AA-7/> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/ada/> ;
    rdf:predicate ks:implements ;
    rdf:object <https://comcomponent.com/knowledge/ada-generics/> ;
    schema:description "Adaは1983年の最初の標準からジェネリックを実装しており、C++のテンプレートやJavaのジェネリクスより早い時期から備えている。"@ja ;
    ks:evidence <https://ada-lang.io/docs/arm/AA-12/> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/ada/> ;
    rdf:predicate ks:implements ;
    rdf:object <https://comcomponent.com/knowledge/ada-design-by-contract/> ;
    schema:description "Ada 2012では、事前条件(Pre)・事後条件(Post)・型不変条件による契約による設計が言語仕様に組み込まれた。"@ja ;
    ks:evidence <https://ada-lang.io/docs/arm/AA-6/AA-6.1/> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/ada/> ;
    rdf:predicate ks:implements ;
    rdf:object <https://comcomponent.com/knowledge/ada-task/> ;
    schema:description "Adaは1983年の時点で、並行処理をOSのAPIに頼らず言語仕様の一部としてタスクを実装していた。"@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-task/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/protected-object/> ;
    schema:description "共有データの排他制御には、Ada 95で導入された保護オブジェクトを使い、procedure/function/entryの操作経由でしかデータにアクセスできないようにする。"@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/> ;
    rdf:predicate ks:implements ;
    rdf:object <https://comcomponent.com/knowledge/ada-c-interop/> ;
    schema:description "AdaはC・Fortranなど他言語とのインターフェースを、参照マニュアルの附属書Bとして標準化している。"@ja ;
    ks:evidence <https://ada-lang.io/docs/arm/AA-B/> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/spark/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/ada/> ;
    schema:description "SPARKはAdaのサブセット(部分言語)として定義され、プログラムの性質を実行せずに数学的に証明できるように設計されている。"@ja ;
    ks:evidence <https://www.adacore.com/sparkpro> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/spark/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/ada-design-by-contract/> ;
    schema:description "実行時チェックとして書いたPre/Postの契約は、SPARKではそのまま数学的証明の対象になる。ただしオーバーフロー・範囲外アクセス・ゼロ除算などの実行時エラー不在(AoRTE)の証明は、明示的なPre/Post契約を書かなくても型の範囲制約などから成立し得る。"@ja ;
    ks:evidence <https://www.adacore.com/sparkpro> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/gnat/> ;
    rdf:predicate ks:configuredBy ;
    rdf:object <https://comcomponent.com/knowledge/alire/> ;
    schema:description "Alireを使う場合、GNATツールチェーンはAlireが取得・管理でき、alr initやalr buildというcargoに近い体験でAdaを始められる。"@ja ;
    ks:evidence <https://alire.ada.dev/> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/ada-generics/> ;
    rdf:predicate ks:implements ;
    rdf:object <https://comcomponent.com/knowledge/ada-generic-contract-model/> ;
    schema:description "Adaのジェネリクスは要求する操作を仕様に書くcontract modelを採用しており、利用時のエラーが明確になる。"@ja ;
    ks:evidence <https://ada-lang.io/docs/arm/AA-12/> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/ada-strong-typing/> ;
    rdf:predicate ks:prevents ;
    rdf:object <https://comcomponent.com/knowledge/mars-climate-orbiter-loss/> ;
    schema:description "メートルとフィートのような単位の異なる型を別の型にして混ぜたらコンパイルエラーにするAdaの発想は、Mars Climate Orbiterのような単位取り違えによる喪失を防ぐという設計思想の動機になっている。"@ja ;
    ks:evidence <https://www.jpl.nasa.gov/news/mars-climate-orbiter-mishap-investigation-board-releases-report> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/ada-range-constraint/> ;
    rdf:predicate ks:mayCause ;
    rdf:object <https://comcomponent.com/knowledge/ariane-5-flight-501-failure/> ;
    schema:description "Ariane 4向けの慣性基準装置コードをAriane 5に再利用した際、水平速度に関する内部値の変換が範囲検査で失敗して例外になったが、保護されていなかったため打ち上げ失敗につながった。実行時チェック自体は問題を検出したが、前提の見直し不足と例外後のフェイルセーフ設計の不備が真因である。"@ja ;
    ks:evidence <https://esamultimedia.esa.int/docs/esa-x-1819eng.pdf> ;
    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://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-range-constraint/> ;
    rdf:predicate ks:prevents ;
    rdf:object <https://comcomponent.com/knowledge/buffer-overrun/> ;
    schema:description "検査を有効にしたままビルドした場合、Adaの配列アクセスは境界チェックされ、範囲外アクセスは未定義動作ではなく定義されたConstraint_Error例外になるため、C/C++で長年主要原因とされてきたバッファオーバーランを防ぐ。pragma Suppressや検査を外すコンパイラオプションで検査を抑止すれば、この保証は失われる。"@ja ;
    ks:evidence <https://cwe.mitre.org/data/definitions/120.html> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/ada-generic-contract-model/> ;
    rdf:predicate ks:prevents ;
    rdf:object <https://comcomponent.com/knowledge/late-instantiation-error/> ;
    schema:description "要求する操作を仕様に書くcontract modelにより、C++のテンプレートが長年苦しんだ「インスタンス化して初めてエラーが分かる」問題がAdaでは最初から起きない。"@ja ;
    ks:evidence <https://ada-lang.io/docs/arm/AA-12/> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/gnat/> ;
    rdf:predicate ks:implements ;
    rdf:object <https://comcomponent.com/knowledge/ada/> ;
    schema:description "GNATはGCCに含まれる無償のAdaコンパイラで、Ada言語の処理系としての実装を担う。"@ja ;
    ks:evidence <https://gcc.gnu.org/onlinedocs/gnat_ugn/> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .
