@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/09/000-dotnet-gc-or-memory-leak/#article>
    schema:about <https://comcomponent.com/knowledge/dotnet-garbage-collection/>, <https://comcomponent.com/knowledge/dotnet-memory-leak/> ;
    schema:mentions <https://comcomponent.com/knowledge/gc-heap/>, <https://comcomponent.com/knowledge/working-set-rss/>, <https://comcomponent.com/knowledge/gen2-heap/>, <https://comcomponent.com/knowledge/large-object-heap/>, <https://comcomponent.com/knowledge/total-allocated-memory/>, <https://comcomponent.com/knowledge/induced-gc/>, <https://comcomponent.com/knowledge/dotnet-counters/>, <https://comcomponent.com/knowledge/dotnet-gcdump/>, <https://comcomponent.com/knowledge/dotnet-dump/>, <https://comcomponent.com/knowledge/dotnet-trace/>, <https://comcomponent.com/knowledge/gcroot-command/>, <https://comcomponent.com/knowledge/dumpheap-command/>, <https://comcomponent.com/knowledge/static-collection-leak/>, <https://comcomponent.com/knowledge/unbounded-cache/>, <https://comcomponent.com/knowledge/event-subscription-leak/>, <https://comcomponent.com/knowledge/timer-disposal-leak/>, <https://comcomponent.com/knowledge/idisposable-leak/>, <https://comcomponent.com/knowledge/di-lifetime-mismatch/>, <https://comcomponent.com/knowledge/dotnet/>, <https://comcomponent.com/knowledge/dotnet-framework/> .

<https://comcomponent.com/knowledge/dotnet-garbage-collection/> a skos:Concept ;
    skos:prefLabel ".NETのガベージコレクション(GC)"@ja ;
    skos:definition "オブジェクトへ到達できる参照が無くなったときに.NETランタイムがそのメモリを回収する仕組み。割り当て状況やヒープのしきい値、世代を見ながら動く。"@ja ;
    skos:altLabel "GC" ;
    skos:altLabel "Garbage Collection" ;
    ks:verifiedBy <https://comcomponent.com/knowledge/dotnet-counters/> ;
    ks:uses <https://comcomponent.com/knowledge/gc-heap/> ;
    ks:requires <https://comcomponent.com/knowledge/dotnet/> .

<https://comcomponent.com/knowledge/dotnet-memory-leak/> a skos:Concept ;
    skos:prefLabel ".NETのメモリリーク(意図しない保持)"@ja ;
    skos:definition "業務上は不要になったオブジェクトが、staticフィールド・キャッシュ・イベント・Timer・DIのライフタイムなどから参照され続け、GCが回収できずに増え続ける状態。"@ja ;
    skos:altLabel "意図しない保持"@ja ;
    skos:altLabel "Unintended Object Retention" ;
    ks:verifiedBy <https://comcomponent.com/knowledge/dotnet-gcdump/> ;
    ks:verifiedBy <https://comcomponent.com/knowledge/dotnet-dump/> ;
    ks:verifiedBy <https://comcomponent.com/knowledge/gcroot-command/> ;
    ks:verifiedBy <https://comcomponent.com/knowledge/gen2-heap/> .

<https://comcomponent.com/knowledge/dotnet-counters/> a skos:Concept ;
    skos:prefLabel "dotnet-counters"@ja ;
    skos:definition "実行中の.NETプロセスのGCやWorking Setなどの傾向をリアルタイムに監視する診断ツール。"@ja ;
    ks:shouldPrecede <https://comcomponent.com/knowledge/dotnet-gcdump/> ;
    ks:incompatibleWith <https://comcomponent.com/knowledge/dotnet-framework/> .

<https://comcomponent.com/knowledge/dotnet-gcdump/> a skos:Concept ;
    skos:prefLabel "dotnet-gcdump"@ja ;
    skos:definition "実行中の.NETプロセスからGC dumpを取得し、型ごとのCount/Sizeの統計を比較するための診断ツール。"@ja ;
    ks:shouldPrecede <https://comcomponent.com/knowledge/dotnet-dump/> .

<https://comcomponent.com/knowledge/dotnet-dump/> a skos:Concept ;
    skos:prefLabel "dotnet-dump"@ja ;
    skos:definition "プロセスのダンプ(ヒープダンプやクラッシュダンプ)を収集・解析する.NETの診断ツール。SOSコマンド(dumpheap・gcroot・clrstackなど)でヒープの参照元やスタックトレースを調べられるが、ネイティブのスタックフレームは扱えない。"@ja ;
    ks:incompatibleWith <https://comcomponent.com/knowledge/dotnet-framework/> .

<https://comcomponent.com/knowledge/gcroot-command/> a skos:Concept ;
    skos:prefLabel "gcrootコマンド"@ja ;
    skos:definition "指定したオブジェクトがどこから参照されているか、GCルートまでの参照経路を表示するSOSデバッガーコマンド。"@ja ;
    skos:altLabel "!gcroot" .

<https://comcomponent.com/knowledge/gc-heap/> a skos:Concept ;
    skos:prefLabel "GCヒープ(マネージドヒープ)"@ja ;
    skos:definition "GCの回収対象となるマネージドオブジェクトが置かれるヒープ領域。dumpheapで見えるのはこの範囲だけで、ネイティブ側のメモリは含まれない。"@ja ;
    skos:altLabel "マネージドヒープ"@ja ;
    skos:altLabel "GC Heap" ;
    ks:verifiedBy <https://comcomponent.com/knowledge/dumpheap-command/> .

<https://comcomponent.com/knowledge/dumpheap-command/> a skos:Concept ;
    skos:prefLabel "dumpheap -statコマンド"@ja ;
    skos:definition "ヒープ上の型ごとの件数(Count)とサイズ(Size)の統計を表示するSOSデバッガーコマンド。"@ja ;
    skos:altLabel "!dumpheap -stat" .

<https://comcomponent.com/knowledge/dotnet-trace/> a skos:Concept ;
    skos:prefLabel "dotnet-trace"@ja ;
    skos:definition "EventPipeを使い、CPUサンプリングやGC・メモリ割り当てなどのイベントを時系列で収集する.NETのトレース収集ツール。"@ja .

<https://comcomponent.com/knowledge/gen2-heap/> a skos:Concept ;
    skos:prefLabel "Gen 2(第2世代ヒープ)"@ja ;
    skos:definition "GCの世代別ヒープのうち、生き残った長命オブジェクトが入る世代。増え続ける場合はリークの兆候になる。"@ja ;
    skos:altLabel "Gen 2 heap" .

<https://comcomponent.com/knowledge/total-allocated-memory/> a skos:Concept ;
    skos:prefLabel "Total Allocated(累積割り当て量)"@ja ;
    skos:definition "起動後にアプリが割り当てたメモリの累積量を表す指標。GCで回収されても値は減らない。"@ja ;
    skos:altLabel "dotnet.gc.heap.total_allocated" ;
    ks:notRecommendedFor <https://comcomponent.com/knowledge/dotnet-memory-leak/> .

<https://comcomponent.com/knowledge/working-set-rss/> a skos:Concept ;
    skos:prefLabel "Working Set / RSS"@ja ;
    skos:definition "物理メモリ上に載っているプロセスのページ量を表すOS視点のメモリ指標。GCヒープの生存オブジェクト量とは一致しない。"@ja ;
    skos:altLabel "プロセス常駐メモリ"@ja ;
    ks:notRecommendedFor <https://comcomponent.com/knowledge/dotnet-memory-leak/> .

<https://comcomponent.com/knowledge/induced-gc/> a skos:Concept ;
    skos:prefLabel "強制GC(Induced Collection)"@ja ;
    skos:definition "アプリケーションコードが明示的に要求するガベージコレクション。未回収だったオブジェクトをその場で回収するだけで、根本原因を消すものではない。"@ja ;
    skos:altLabel "GC.Collect()" ;
    ks:notRecommendedFor <https://comcomponent.com/knowledge/dotnet-memory-leak/> .

<https://comcomponent.com/knowledge/static-collection-leak/> a skos:Concept ;
    skos:prefLabel "staticコレクションによる保持"@ja ;
    skos:definition "staticフィールドのコレクションへ追加し続け、プロセスが生きている限りオブジェクトを保持し続けてしまうリークパターン。"@ja .

<https://comcomponent.com/knowledge/unbounded-cache/> a skos:Concept ;
    skos:prefLabel "上限・期限のないキャッシュ"@ja ;
    skos:definition "最大件数や有効期限を設けていないキャッシュで、実質的にメモリリークとして働く状態。"@ja ;
    skos:altLabel "無制限キャッシュ"@ja .

<https://comcomponent.com/knowledge/event-subscription-leak/> a skos:Concept ;
    skos:prefLabel "イベント購読解除漏れ"@ja ;
    skos:definition "寿命の長いpublisherが寿命の短いsubscriberをイベントハンドラー経由で参照し続け、購読解除しない限りsubscriberが解放されないリークパターン。"@ja .

<https://comcomponent.com/knowledge/timer-disposal-leak/> a skos:Concept ;
    skos:prefLabel "Timerの破棄漏れ"@ja ;
    skos:definition "System.Threading.TimerなどのTimerを破棄しないまま残し、コールバックのdelegateを通じてオブジェクトを保持し続けるリークパターン。"@ja .

<https://comcomponent.com/knowledge/idisposable-leak/> a skos:Concept ;
    skos:prefLabel "IDisposableの解放漏れ"@ja ;
    skos:definition "using/await usingなどで所有権を明確にせず、ファイル・ソケット・ハンドルなどのリソースが解放されないまま残る状態。"@ja .

<https://comcomponent.com/knowledge/di-lifetime-mismatch/> a skos:Concept ;
    skos:prefLabel "DIライフタイムの取り違え"@ja ;
    skos:definition "寿命の長いsingletonサービスがリクエスト単位のデータを保持してしまい、リクエストが終わってもオブジェクトが残ってしまう設計上の誤り。"@ja .

<https://comcomponent.com/knowledge/large-object-heap/> a skos:Concept ;
    skos:prefLabel "LOH(Large Object Heap)"@ja ;
    skos:definition "85,000バイト以上の大きなオブジェクトが置かれる特別なヒープ。"@ja ;
    skos:altLabel "ラージオブジェクトヒープ"@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 .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/dotnet-garbage-collection/> ;
    rdf:predicate ks:verifiedBy ;
    rdf:object <https://comcomponent.com/knowledge/dotnet-counters/> ;
    schema:description "GCヒープやWorking Setの傾向はdotnet-countersでリアルタイムに確認できる"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/dotnet/core/diagnostics/dotnet-counters> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/dotnet-memory-leak/> ;
    rdf:predicate ks:verifiedBy ;
    rdf:object <https://comcomponent.com/knowledge/dotnet-gcdump/> ;
    schema:description "負荷前後で型ごとのCount/Sizeが増えているかはdotnet-gcdumpの比較で確認できる"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/dotnet/core/diagnostics/dotnet-gcdump> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/dotnet-memory-leak/> ;
    rdf:predicate ks:verifiedBy ;
    rdf:object <https://comcomponent.com/knowledge/dotnet-dump/> ;
    schema:description "増えている型が見えたあと、なぜ回収されないのかはdotnet-dumpのヒープ解析で確認できる"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/dotnet/core/diagnostics/dotnet-dump> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/dotnet-memory-leak/> ;
    rdf:predicate ks:verifiedBy ;
    rdf:object <https://comcomponent.com/knowledge/gcroot-command/> ;
    schema:description "そのオブジェクトがなぜ生きているのかという参照経路は、gcrootコマンドで確認できる"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/dotnet/framework/tools/sos-dll-sos-debugging-extension> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/gc-heap/> ;
    rdf:predicate ks:verifiedBy ;
    rdf:object <https://comcomponent.com/knowledge/dumpheap-command/> ;
    schema:description "ヒープ上の型ごとの件数とサイズの統計は、dumpheap -statコマンドで確認できる"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/dotnet/framework/tools/sos-dll-sos-debugging-extension> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/dotnet-memory-leak/> ;
    rdf:predicate ks:verifiedBy ;
    rdf:object <https://comcomponent.com/knowledge/dotnet-trace/> ;
    schema:description "いつ、どこで大量に割り当てているかは、ダンプではなくdotnet-traceのイベント収集で確認できる"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/dotnet/core/diagnostics/dotnet-trace> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/dotnet-memory-leak/> ;
    rdf:predicate ks:verifiedBy ;
    rdf:object <https://comcomponent.com/knowledge/gen2-heap/> ;
    schema:description "GC後もGen 2ヒープのサイズが増え続けているかは、メモリリークを疑う手がかりとして確認できる"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/dotnet/standard/garbage-collection/workstation-server-gc> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/total-allocated-memory/> ;
    rdf:predicate ks:notRecommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/dotnet-memory-leak/> ;
    schema:description "Total Allocatedは起動後の累積値でGCで回収されても減らないため、単独でメモリリークの判定材料に使うべきではない"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/dotnet/core/diagnostics/dotnet-counters> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/working-set-rss/> ;
    rdf:predicate ks:notRecommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/dotnet-memory-leak/> ;
    schema:description "Working Set/RSSの増加はOS視点のメモリでありGCヒープの生存オブジェクト量と一致しないため、単独でマネージドリークの判定に使うべきではない"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/dotnet/core/diagnostics/debug-memory-leak> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/induced-gc/> ;
    rdf:predicate ks:notRecommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/dotnet-memory-leak/> ;
    schema:description "強制GCで一時的にメモリが下がっても根本原因は消えておらず、本当のリークなら参照が残っているオブジェクトは強制GCでも回収されない"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/dotnet/standard/garbage-collection/induced> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/static-collection-leak/> ;
    rdf:predicate ks:mayCause ;
    rdf:object <https://comcomponent.com/knowledge/dotnet-memory-leak/> ;
    schema:description "staticフィールドのコレクションへ追加しっぱなしにすると、プロセスが生きている限りオブジェクトを保持し続けてしまうことがある"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/dotnet/core/diagnostics/debug-memory-leak> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/unbounded-cache/> ;
    rdf:predicate ks:mayCause ;
    rdf:object <https://comcomponent.com/knowledge/dotnet-memory-leak/> ;
    schema:description "上限や有効期限のないキャッシュは、キーが増え続ける設計だと実質的なメモリリークになることがある"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/dotnet/core/diagnostics/debug-memory-leak> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/event-subscription-leak/> ;
    rdf:predicate ks:mayCause ;
    rdf:object <https://comcomponent.com/knowledge/dotnet-memory-leak/> ;
    schema:description "寿命の長いpublisherへのイベント購読を解除しないと、寿命の短いsubscriberが残り続けることがある"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/dotnet/core/diagnostics/debug-memory-leak> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/timer-disposal-leak/> ;
    rdf:predicate ks:mayCause ;
    rdf:object <https://comcomponent.com/knowledge/dotnet-memory-leak/> ;
    schema:description "Timerを破棄しないまま残すと、コールバックのdelegate経由でオブジェクトが保持され続けることがある"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/dotnet/core/diagnostics/debug-memory-leak> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/idisposable-leak/> ;
    rdf:predicate ks:mayCause ;
    rdf:object <https://comcomponent.com/knowledge/dotnet-memory-leak/> ;
    schema:description "所有権が曖昧なコードでDispose漏れが起きると、ハンドルやネイティブメモリなどが解放されないまま増え続けることがある"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/dotnet/core/diagnostics/debug-memory-leak> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/di-lifetime-mismatch/> ;
    rdf:predicate ks:mayCause ;
    rdf:object <https://comcomponent.com/knowledge/dotnet-memory-leak/> ;
    schema:description "singletonがリクエスト単位のデータを保持する設計だと、リクエストが終わってもデータが増え続けることがある"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/dotnet/core/diagnostics/debug-memory-leak> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/large-object-heap/> ;
    rdf:predicate ks:mayCause ;
    rdf:object <https://comcomponent.com/knowledge/dotnet-memory-leak/> ;
    schema:description "大きな配列やバッファを長く保持したり断片化したりすると、LOHが増え続けてリークに近い状態になることがある"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/dotnet/standard/garbage-collection/large-object-heap> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/dotnet-counters/> ;
    rdf:predicate ks:shouldPrecede ;
    rdf:object <https://comcomponent.com/knowledge/dotnet-gcdump/> ;
    schema:description "実務ではまずdotnet-countersで傾向を見て、そのうえで型統計の比較にdotnet-gcdumpへ進むのが効率的な順番とされる"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/dotnet/core/diagnostics/dotnet-counters> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/dotnet-gcdump/> ;
    rdf:predicate ks:shouldPrecede ;
    rdf:object <https://comcomponent.com/knowledge/dotnet-dump/> ;
    schema:description "軽量なdotnet-gcdumpで増えている型を絞り込んだうえで、参照元を追うdotnet-dumpに進むのが効率的な順番とされる"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/dotnet/core/diagnostics/dotnet-gcdump> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/dotnet-counters/> ;
    rdf:predicate ks:incompatibleWith ;
    rdf:object <https://comcomponent.com/knowledge/dotnet-framework/> ;
    schema:description "dotnet-counters/dotnet-dump/dotnet-gcdumpは.NET Core 3.0以降のランタイムが持つ診断機能を使うツールで、.NET Framework 4.xのアプリには使えない"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/dotnet/core/diagnostics/dotnet-counters> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/dotnet-dump/> ;
    rdf:predicate ks:incompatibleWith ;
    rdf:object <https://comcomponent.com/knowledge/dotnet-framework/> ;
    schema:description "dotnet-dumpは.NET Core 3.0以降の診断機能を前提とするため.NET Framework 4.xでは使えず、代わりにWinDbgでSOSを読み込んで解析する"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/dotnet/core/diagnostics/dotnet-dump> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/dotnet-garbage-collection/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/gc-heap/> ;
    schema:description "GCはマネージドオブジェクトをGCヒープ(マネージドヒープ)上で管理し、回収の対象にする"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/dotnet/standard/garbage-collection/fundamentals> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/dotnet-garbage-collection/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/dotnet/> ;
    schema:description "ガベージコレクションは.NETランタイムが提供する仕組みである"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/dotnet/standard/garbage-collection/fundamentals> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .
