@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/2026/06/01/003-windows-love-technical-essay/#article>
    schema:about <https://comcomponent.com/knowledge/windows-backward-compatibility/>, <https://comcomponent.com/knowledge/com/> ;
    schema:mentions <https://comcomponent.com/knowledge/wow64/>, <https://comcomponent.com/knowledge/dotnet-framework/>, <https://comcomponent.com/knowledge/dotnet/>, <https://comcomponent.com/knowledge/regsvr32/>, <https://comcomponent.com/knowledge/bitness-match-requirement/>, <https://comcomponent.com/knowledge/high-dpi-support/>, <https://comcomponent.com/knowledge/long-path-support/>, <https://comcomponent.com/knowledge/app-distribution-method/>, <https://comcomponent.com/knowledge/application-verifier/>, <https://comcomponent.com/knowledge/windbg/>, <https://comcomponent.com/knowledge/get-winevent/>, <https://comcomponent.com/knowledge/windows-forms/> .

<https://comcomponent.com/knowledge/windows-backward-compatibility/> a skos:Concept ;
    skos:prefLabel "Windowsの後方互換性"@ja ;
    skos:definition "古いAPI・ランタイム・アプリを切り捨てず、世代を超えて動かし続けられるようにするWindowsの性質。"@ja ;
    skos:altLabel "後方互換性"@ja ;
    skos:altLabel "レガシー資産の互換性維持"@ja ;
    ks:requires <https://comcomponent.com/knowledge/wow64/> ;
    ks:requires <https://comcomponent.com/knowledge/dotnet-framework/> ;
    ks:requires <https://comcomponent.com/knowledge/high-dpi-support/> ;
    ks:requires <https://comcomponent.com/knowledge/long-path-support/> ;
    ks:requires <https://comcomponent.com/knowledge/app-distribution-method/> .

<https://comcomponent.com/knowledge/com/> a skos:Concept ;
    skos:prefLabel "COM(コンポーネントオブジェクトモデル)"@ja ;
    skos:definition "公開インターフェース、レジストリ登録、Apartment Modelなどを土台にした、Windowsのバイナリ互換コンポーネントモデル。"@ja ;
    skos:altLabel "Component Object Model" ;
    ks:requires <https://comcomponent.com/knowledge/windows-backward-compatibility/> .

<https://comcomponent.com/knowledge/bitness-match-requirement/> a skos:Concept ;
    skos:prefLabel "bitness一致要件"@ja ;
    skos:definition "ネイティブモジュール(in-procのCOMコンポーネント、P/Invokeで呼ぶDLL、ベンダー提供SDKのDLLなど)を読み込むホストプロセスと、そのモジュールのビット構成(32bit/64bit)が一致していなければならないという制約。"@ja ;
    skos:altLabel "32bit/64bitの一致"@ja ;
    skos:altLabel "bitness match" .

<https://comcomponent.com/knowledge/regsvr32/> a skos:Concept ;
    skos:prefLabel "regsvr32"@ja ;
    skos:definition "DLLやOCXなどのCOMコンポーネントをレジストリへ登録・登録解除するコマンドラインツール。"@ja ;
    skos:altLabel "regsvr32.exe" .

<https://comcomponent.com/knowledge/wow64/> a skos:Concept ;
    skos:prefLabel "WOW64"@ja ;
    skos:definition "64bit Windows上で32bitアプリケーションを動作させる互換環境のこと。"@ja ;
    skos:altLabel "32bit互換環境"@ja .

<https://comcomponent.com/knowledge/dotnet-framework/> a skos:Concept ;
    skos:prefLabel ".NET Framework"@ja ;
    skos:definition "Windowsのコンポーネントとして扱われ、インストールされているOSのライフサイクルに沿ってサポートされるランタイム。System.Messagingの対象範囲。"@ja .

<https://comcomponent.com/knowledge/dotnet/> a skos:Concept ;
    skos:prefLabel ".NET(Core以降)"@ja ;
    skos:definition ".NET Frameworkの後継となる、クロスプラットフォーム対応の.NETランタイム(.NET 5以降)。"@ja ;
    skos:altLabel ".NET Core" ;
    skos:altLabel "モダンな.NET"@ja ;
    ks:succeeds <https://comcomponent.com/knowledge/dotnet-framework/> .

<https://comcomponent.com/knowledge/high-dpi-support/> a skos:Concept ;
    skos:prefLabel "高DPI対応"@ja ;
    skos:definition "アプリケーションがディスプレイの拡大率に応じて正しくレイアウト・描画されるようにする、DPI対応モードの明示を含む設計・実装。"@ja ;
    skos:altLabel "DPI Awareness" ;
    skos:altLabel "高DPI"@ja ;
    skos:altLabel "DPI対応"@ja ;
    skos:altLabel "高解像度ディスプレイ対応"@ja .

<https://comcomponent.com/knowledge/windows-forms/> a skos:Concept ;
    skos:prefLabel "Windows Forms"@ja ;
    skos:definition "デスクトップGUIアプリケーションを構築するための.NET/.NET FrameworkのUIフレームワーク。"@ja ;
    skos:altLabel "WinForms" .

<https://comcomponent.com/knowledge/long-path-support/> a skos:Concept ;
    skos:prefLabel "長いパス・UNCパス・日本語パスへの対応"@ja ;
    skos:definition "長いフォルダー名、UNCパス、日本語を含むパスでもファイル操作が失敗しないようにする対応。"@ja ;
    skos:altLabel "長いパス対応"@ja ;
    skos:altLabel "日本語パス対応"@ja .

<https://comcomponent.com/knowledge/app-distribution-method/> a skos:Concept ;
    skos:prefLabel "アプリの配布方法"@ja ;
    skos:definition "exeの直渡し、MSI、ClickOnce、MSIX、wingetなど、アプリをインストール・更新・アンインストールさせる方法の選択。"@ja ;
    skos:altLabel "配布方法"@ja ;
    skos:altLabel "MSI / ClickOnce / MSIX / winget" .

<https://comcomponent.com/knowledge/application-verifier/> a skos:Concept ;
    skos:prefLabel "Application Verifier"@ja ;
    skos:definition "Windowsのuser-modeアプリに対するランタイム検証ツールで、OS API利用や資源の扱い方を監視し誤用の検出や意図的な失敗の注入を行う。"@ja ;
    skos:altLabel "AppVerifier" ;
    skos:altLabel "appverif.exe" ;
    ks:recommendedFor <https://comcomponent.com/knowledge/windows-backward-compatibility/> .

<https://comcomponent.com/knowledge/windbg/> a skos:Concept ;
    skos:prefLabel "WinDbg"@ja ;
    skos:definition "クラッシュダンプやハングしたプロセスの状態をカーネル/ユーザーモードで解析するためのMicrosoft製デバッガー。SOS拡張によるマネージドヒープ解析や、Application Verifierの検出結果の解析にも使われる。"@ja ;
    skos:altLabel "Debugging Tools for Windows" ;
    ks:recommendedFor <https://comcomponent.com/knowledge/windows-backward-compatibility/> .

<https://comcomponent.com/knowledge/get-winevent/> a skos:Concept ;
    skos:prefLabel "Get-WinEvent"@ja ;
    skos:definition "イベントログをフィルターして取得するPowerShellコマンドレット。FilterHashtableでの絞り込みに対応し、NTLM監査ログなど大量のイベントの集計に使う。"@ja ;
    ks:recommendedFor <https://comcomponent.com/knowledge/windows-backward-compatibility/> .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/com/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/windows-backward-compatibility/> ;
    schema:description "現場で長く使われてきたCOMコンポーネントやExcel連携が今も動くのは、Windowsがそれらを動かし続けられるようにしているからである"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/win32/com/component-object-model--com--portal> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/com/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/bitness-match-requirement/> ;
    schema:description "in-procのCOMコンポーネントは、ホストプロセスと32bit/64bitのビット構成が一致していないと読み込めない。"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/win32/winprog64/running-32-bit-applications> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/com/> ;
    rdf:predicate ks:configuredBy ;
    rdf:object <https://comcomponent.com/knowledge/regsvr32/> ;
    schema:description "COMコンポーネントは配置しただけでは動かず、regsvr32でレジストリに登録する必要がある。32bit版と64bit版のregsvr32を取り違えると登録に失敗する。"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/troubleshoot/windows-server/win32/regsvr32-command-line-options> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/windows-backward-compatibility/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/wow64/> ;
    schema:description "32bitアプリを64bit Windows上でも動かし続けるために、WOW64という互換レイヤーが用意されている。"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/win32/winprog64/running-32-bit-applications> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/windows-backward-compatibility/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/bitness-match-requirement/> ;
    schema:description "32bitと64bit双方のアプリ資産を動かし続けようとする場合に限り、32bit DLLを64bitプロセスから読み込もうとして失敗するといった問題が、ビット構成の一致という前提から生じる。"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/win32/winprog64/running-32-bit-applications> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/windows-backward-compatibility/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/dotnet-framework/> ;
    schema:description "現場には.NET Framework 4.xで書かれた業務アプリが今も残っており、長年業務を支えてきたそれらを動かし続ける必要がある。"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/dotnet/framework/migration-guide/version-compatibility> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/dotnet/> ;
    rdf:predicate ks:succeeds ;
    rdf:object <https://comcomponent.com/knowledge/dotnet-framework/> ;
    schema:description ".NET(Core以降、.NET 8/9など)は.NET Frameworkの後継となる新しいランタイムである。"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/dotnet/framework/migration-guide/version-compatibility> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/windows-backward-compatibility/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/high-dpi-support/> ;
    schema:description "高DPI環境やマルチモニターで画面が崩れないよう、時代の異なるUI技術にもDPI対応をさせる必要がある。"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/win32/hidpi/high-dpi-desktop-application-development-on-windows> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/windows-forms/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/high-dpi-support/> ;
    schema:description "高DPI環境やマルチモニターで画面が崩れないようにしたい場合、WinForms、WPF、WinUIはそれぞれDPI対応の考え方が違うため、画面技術ごとにDPI awarenessの設定を確認する必要がある。DPI awarenessを設定しなくてもアプリ自体は起動するが、拡大縮小やぼやけといった表示崩れが生じる。"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/win32/hidpi/setting-the-default-dpi-awareness-for-a-process> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/windows-backward-compatibility/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/long-path-support/> ;
    schema:description "日本語パス、長いフォルダー名、UNCパスといった現場特有の環境でもファイル操作が壊れないようにする必要がある。"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/win32/fileio/maximum-file-path-limitation> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/windows-backward-compatibility/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/app-distribution-method/> ;
    schema:description "お客様の環境に応じて、exe直渡し・MSI・ClickOnce・MSIX・wingetなど適切な配布方法を選ぶ必要がある。"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/msix/> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/application-verifier/> ;
    rdf:predicate ks:recommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/windows-backward-compatibility/> ;
    schema:description "メモリやハンドルの扱いに不安があるとき、Application Verifierでランタイムの誤用を検出する方法が、古い資産を動かし続ける作業では有効である"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows-hardware/drivers/devtest/application-verifier> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/windbg/> ;
    rdf:predicate ks:recommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/windows-backward-compatibility/> ;
    schema:description "クラッシュの原因を調べる際、WinDbgでダンプやイベントを解析する方法が、古い資産を動かし続ける作業では有効である"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows-hardware/drivers/debugger/> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/get-winevent/> ;
    rdf:predicate ks:recommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/windows-backward-compatibility/> ;
    schema:description "アプリが異常終了した原因をGet-WinEventでイベントログから追跡する方法が、古い資産を動かし続ける作業では有効である"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.diagnostics/get-winevent> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .
