@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-gige-vision-packet-parsing/#article>
    schema:about <https://comcomponent.com/knowledge/gvsp/>, <https://comcomponent.com/knowledge/ada-record-representation-clause/>, <https://comcomponent.com/knowledge/spark-silver-level/> ;
    schema:mentions <https://comcomponent.com/knowledge/gige-vision/>, <https://comcomponent.com/knowledge/wireshark/>, <https://comcomponent.com/knowledge/ada-bit-order/>, <https://comcomponent.com/knowledge/gnat-scalar-storage-order/>, <https://comcomponent.com/knowledge/ada-unchecked-conversion/>, <https://comcomponent.com/knowledge/ada-valid-attribute/>, <https://comcomponent.com/knowledge/gnatprove/>, <https://comcomponent.com/knowledge/design-by-contract/> .

<https://comcomponent.com/knowledge/gvsp/> a skos:Concept ;
    skos:prefLabel "GVSP"@ja ;
    skos:definition "GigE Visionでカメラが画像を送るのに使うUDP上のプロトコル。1枚の画像をleader・payload・trailerのパケットに分けて送り、各パケットは状態コードとブロックID・パケットIDを持つヘッダーで始まる。"@ja ;
    skos:altLabel "GigE Vision Streaming Protocol" ;
    skos:broader <https://comcomponent.com/knowledge/gige-vision/> ;
    ks:verifiedBy <https://comcomponent.com/knowledge/wireshark/> .

<https://comcomponent.com/knowledge/ada-record-representation-clause/> a skos:Concept ;
    skos:prefLabel "レコードの表現句(record representation clause)"@ja ;
    skos:definition "Adaで、レコードの各成分をレコードの先頭から何バイト目の何ビット目に置くかを指定する表現項目。"@ja ;
    skos:altLabel "record representation clause" ;
    skos:altLabel "レコード表現句"@ja ;
    ks:configuredBy <https://comcomponent.com/knowledge/ada-bit-order/> .

<https://comcomponent.com/knowledge/spark-silver-level/> a skos:Concept ;
    skos:prefLabel "Silverレベル(AoRTE)"@ja ;
    skos:definition "範囲外アクセス・オーバーフロー・ゼロ除算などの実行時エラーが起きないことを証明する、証明レベルのうち実務上の既定目標とされる段階である。"@ja ;
    skos:altLabel "Absence of Run-time Errors" ;
    skos:altLabel "AoRTE" ;
    skos:broader <https://comcomponent.com/knowledge/spark-proof-level/> ;
    ks:verifiedBy <https://comcomponent.com/knowledge/gnatprove/> .

<https://comcomponent.com/knowledge/gige-vision/> a skos:Concept ;
    skos:prefLabel "GigE Vision"@ja ;
    skos:definition "Ethernetでカメラの制御と画像の送信を行うマシンビジョン向けのインターフェース規格。制御にGVCP、画像の送信にGVSPというUDP上のプロトコルを使う。"@ja ;
    skos:altLabel "GigE Vision規格"@ja ;
    ks:uses <https://comcomponent.com/knowledge/gvsp/> .

<https://comcomponent.com/knowledge/wireshark/> a skos:Concept ;
    skos:prefLabel "Wireshark"@ja ;
    skos:definition "キャプチャしたパケットをパケット詳細ペインとバイト列ペインで対応づけて表示できる、パケット解析ツール。"@ja .

<https://comcomponent.com/knowledge/ada-bit-order/> a skos:Concept ;
    skos:prefLabel "Bit_Order"@ja ;
    skos:definition "Adaのレコード型に指定する表現属性で、表現句のビットの位置をどちらの端から数えるかを決める。High_Order_Firstでは最初のビットが最上位になる。複数バイトの整数のバイト順は変えない。"@ja ;
    skos:altLabel "Bit_Order属性"@ja ;
    skos:altLabel "High_Order_First" .

<https://comcomponent.com/knowledge/gnat-scalar-storage-order/> a skos:Concept ;
    skos:prefLabel "Scalar_Storage_Order"@ja ;
    skos:definition "GNAT独自の属性で、配列型・レコード型の中のスカラーの成分を、メモリにどのバイト順で置くかを指定する。標準のAdaにはない。レコード型ではBit_Orderと同じ値にする必要があり、番地による重ね合わせには対応しない。"@ja ;
    skos:altLabel "Scalar_Storage_Order属性"@ja .

<https://comcomponent.com/knowledge/ada-unchecked-conversion/> a skos:Concept ;
    skos:prefLabel "Ada.Unchecked_Conversion"@ja ;
    skos:definition "ある型のビット列を、検査せずに別の型の値として解釈し直すAdaの総称関数。結果が変換先の型の値を表すとは限らない。"@ja ;
    skos:altLabel "Unchecked_Conversion" ;
    ks:verifiedBy <https://comcomponent.com/knowledge/ada-valid-attribute/> .

<https://comcomponent.com/knowledge/ada-valid-attribute/> a skos:Concept ;
    skos:prefLabel "'Valid属性"@ja ;
    skos:definition "スカラーのオブジェクトが、その部分型の値を表す正しい表現を持っているかを返すAdaの属性。変換や入力、他言語とのやり取りで作ったデータを確かめるのに使う。"@ja ;
    skos:altLabel "Valid attribute" ;
    skos:altLabel "X'Valid" .

<https://comcomponent.com/knowledge/gnatprove/> a skos:Concept ;
    skos:prefLabel "GNATprove"@ja ;
    skos:definition "AdaCoreが提供する、SPARKコードの契約や表明を自動証明器で検証するコマンドラインツールである。"@ja ;
    skos:altLabel "gnatprove コマンド"@ja ;
    skos:broader <https://comcomponent.com/knowledge/spark/> .

<https://comcomponent.com/knowledge/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 "事前条件・事後条件"@ja ;
    skos:broader <https://comcomponent.com/knowledge/ada/> ;
    ks:verifiedBy <https://comcomponent.com/knowledge/gnatprove/> .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/gige-vision/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/gvsp/> ;
    schema:description "GigE Visionのカメラは、撮った画像をGVSPでUDPのパケットに分けて送る。1枚の画像はleader、payload、trailerのパケットになる"@ja ;
    ks:evidence <https://www.wireshark.org/docs/dfref/g/gvsp.html>, <https://gitlab.com/wireshark/wireshark/-/blob/master/epan/dissectors/packet-gvsp.c> ;
    ks:verifiedAt "2026-11-10" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/gvsp/> ;
    rdf:predicate ks:verifiedBy ;
    rdf:object <https://comcomponent.com/knowledge/wireshark/> ;
    schema:description "WiresharkにはGVSPの解析部があり、標準IDと拡張IDのヘッダー、画像のleaderとtrailerのフィールドを読める。記事はフィールドの配置をこの解析部のソースとAravisの定義で確かめた"@ja ;
    ks:evidence <https://gitlab.com/wireshark/wireshark/-/blob/master/epan/dissectors/packet-gvsp.c>, <https://github.com/AravisProject/aravis/blob/main/src/arvgvspprivate.h> ;
    ks:verifiedAt "2026-11-10" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/ada-record-representation-clause/> ;
    rdf:predicate ks:configuredBy ;
    rdf:object <https://comcomponent.com/knowledge/ada-bit-order/> ;
    schema:description "表現句のビットの位置をどちらの端から数えるかはBit_Orderで決まる。High_Order_Firstにすると0番が最上位のビットになり、ネットワークのヘッダーの図と同じ数え方で書ける"@ja ;
    ks:evidence <https://www.adaic.org/resources/add_content/standards/22rm/html/RM-13-5-3.html> ;
    ks:verifiedAt "2026-11-10" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/ada-record-representation-clause/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/gnat-scalar-storage-order/> ;
    schema:description "Bit_Orderは複数バイトの整数のバイト順を変えないので、リトルエンディアンのCPUでビッグエンディアンのヘッダーを表現句の型で読むには、GNAT独自のScalar_Storage_Orderも指定する。記事の例ではx86-64でBit_Orderだけの型が42を10752と読んだ"@ja ;
    ks:evidence <https://docs.adacore.com/live/wave/gnat_rm/html/gnat_rm/gnat_rm/implementation_defined_attributes.html#attribute-scalar-storage-order>, <https://www.adaic.org/resources/add_content/standards/22rm/html/RM-13-5-3.html> ;
    ks:verifiedAt "2026-11-10" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/ada-unchecked-conversion/> ;
    rdf:predicate ks:verifiedBy ;
    rdf:object <https://comcomponent.com/knowledge/ada-valid-attribute/> ;
    schema:description "Unchecked_Conversionの結果は型の値を表すとは限らず、使い方によっては実行がerroneousになる。列挙型などの成分は使う前にValid属性で確かめる。記事の例では形式のバイトが0x09のヘッダーでFormat'Validが偽になった"@ja ;
    ks:evidence <https://www.adaic.org/resources/add_content/standards/22rm/html/RM-13-9-1.html>, <https://www.adaic.org/resources/add_content/standards/22rm/html/RM-13-9-2.html> ;
    ks:verifiedAt "2026-11-10" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/spark-silver-level/> ;
    rdf:predicate ks:verifiedBy ;
    rdf:object <https://comcomponent.com/knowledge/gnatprove/> ;
    schema:description "SPARK_Modeのパーサーについて、配列の範囲外を読まないこと、整数があふれないこと、列挙型への変換が範囲を外れないことを、すべての入力についてGNATproveで証明する。フィールドの位置が仕様どおりかは証明の対象ではない"@ja ;
    ks:evidence <https://docs.adacore.com/spark2014-docs/html/ug/en/usage_scenarios.html>, <https://docs.adacore.com/spark2014-docs/html/ug/en/source/how_to_view_gnatprove_output.html> ;
    ks:verifiedAt "2026-11-10" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/design-by-contract/> ;
    rdf:predicate ks:verifiedBy ;
    rdf:object <https://comcomponent.com/knowledge/gnatprove/> ;
    schema:description "バイト列から読み出す関数の事前条件が呼び出しのたびに成り立つかを、GNATproveが手前の長さの確認から確かめる。長さの確認が漏れた呼び出しは、事前条件が成り立たない可能性として報告される"@ja ;
    ks:evidence <https://docs.adacore.com/spark2014-docs/html/ug/en/source/how_to_view_gnatprove_output.html> ;
    ks:verifiedAt "2026-11-10" ;
    ks:certainty "established" .
