@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/msmq-migration-decision-guide/#article>
    schema:about <https://comcomponent.com/knowledge/msmq/>, <https://comcomponent.com/knowledge/system-messaging/> ;
    schema:mentions <https://comcomponent.com/knowledge/dotnet-framework/>, <https://comcomponent.com/knowledge/dotnet/>, <https://comcomponent.com/knowledge/windows-compat-pack/>, <https://comcomponent.com/knowledge/corewcf/>, <https://comcomponent.com/knowledge/dtc/>, <https://comcomponent.com/knowledge/table-queue/>, <https://comcomponent.com/knowledge/rabbitmq/>, <https://comcomponent.com/knowledge/azure-service-bus/>, <https://comcomponent.com/knowledge/binaryformatter/>, <https://comcomponent.com/knowledge/readpast-hint/>, <https://comcomponent.com/knowledge/read-committed-snapshot/>, <https://comcomponent.com/knowledge/multi-system-messaging/> .

<https://comcomponent.com/knowledge/msmq/> a skos:Concept ;
    skos:prefLabel "MSMQ(Microsoft Message Queuing)"@ja ;
    skos:definition "Windowsに同梱されてきたメッセージキュー基盤。store-and-forward・トランザクション・OS同梱を特徴とし、2026年7月時点で公式の非推奨機能一覧には載っていない。"@ja ;
    skos:altLabel "MSMQ" ;
    ks:uses <https://comcomponent.com/knowledge/transactional-queue/> ;
    ks:uses <https://comcomponent.com/knowledge/express-message/> ;
    ks:uses <https://comcomponent.com/knowledge/recoverable-message/> ;
    ks:uses <https://comcomponent.com/knowledge/journal-queue/> ;
    ks:uses <https://comcomponent.com/knowledge/dead-letter-queue/> ;
    ks:notRecommendedFor <https://comcomponent.com/knowledge/new-project-adoption/> .

<https://comcomponent.com/knowledge/system-messaging/> a skos:Concept ;
    skos:prefLabel "System.Messaging"@ja ;
    skos:definition "MSMQを扱う.NETの標準クラスライブラリ。対象バージョンは.NET Framework 1.1〜4.8.1のみで、.NET(Core以降)向けの版は存在しない。"@ja ;
    skos:altLabel "MessageQueueクラス"@ja ;
    ks:requires <https://comcomponent.com/knowledge/dotnet-framework/> ;
    ks:incompatibleWith <https://comcomponent.com/knowledge/dotnet/> .

<https://comcomponent.com/knowledge/dtc/> a skos:Concept ;
    skos:prefLabel "DTC(分散トランザクションコーディネーター)"@ja ;
    skos:definition "複数のリソース(MSMQのキューとデータベースなど)にまたがるトランザクションを調停するWindowsのサービス。クラウド系のキューサービスは参加できない。"@ja ;
    skos:altLabel "MS DTC" ;
    skos:altLabel "分散トランザクション"@ja ;
    ks:incompatibleWith <https://comcomponent.com/knowledge/rabbitmq/> ;
    ks:incompatibleWith <https://comcomponent.com/knowledge/azure-service-bus/> .

<https://comcomponent.com/knowledge/transactional-queue/> a skos:Concept ;
    skos:prefLabel "トランザクションキュー"@ja ;
    skos:definition "トランザクションメッセージだけを扱うMSMQのキュー。作成時に決まり、後から変更できない。"@ja .

<https://comcomponent.com/knowledge/express-message/> a skos:Concept ;
    skos:prefLabel "expressメッセージ"@ja ;
    skos:definition "MSMQの既定の送信モード。配送中も配送後もメモリ上に置かれ高速だが、MSMQサービスやマシンの再起動で失われる。"@ja .

<https://comcomponent.com/knowledge/recoverable-message/> a skos:Concept ;
    skos:prefLabel "recoverable(回復可能)メッセージ"@ja ;
    skos:definition "送信側と中継する各コンピューターでディスクに書かれ、宛先キューでもディスク上に保持されるMSMQの送信モード。再起動をまたいで残る。"@ja ;
    ks:prevents <https://comcomponent.com/knowledge/message-loss-on-restart/> .

<https://comcomponent.com/knowledge/journal-queue/> a skos:Concept ;
    skos:prefLabel "ジャーナルキュー"@ja ;
    skos:definition "送信した・取り出したメッセージの控えを保持する、MSMQが自動生成するシステムキュー。放置すると容量を食うため塩漬け運用では監視対象になる。"@ja .

<https://comcomponent.com/knowledge/dead-letter-queue/> a skos:Concept ;
    skos:prefLabel "配信不能(デッドレター)キュー"@ja ;
    skos:definition "届けられなかったメッセージを保持する、MSMQが自動生成するシステムキュー。"@ja ;
    skos:altLabel "配信不能キュー"@ja .

<https://comcomponent.com/knowledge/private-queue/> a skos:Concept ;
    skos:prefLabel "プライベートキュー"@ja ;
    skos:definition "ディレクトリサービス(Active Directory)には発行せず、そのコンピューター上にだけ登録されるMSMQのキュー。中小規模の業務システムで使われているのはほとんどがこちら。対するパブリックキューはディレクトリサービスに登録される。"@ja ;
    skos:altLabel "パブリックキュー"@ja .

<https://comcomponent.com/knowledge/message-loss-on-restart/> a skos:Concept ;
    skos:prefLabel "再起動時のメッセージ喪失"@ja ;
    skos:definition "MSMQサービスやマシンの再起動によって、メモリ上にしか無いメッセージが失われること。"@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 の後継となるクロスプラットフォームのランタイム。System.Messagingの公式マネージドAPIが存在しない対象。"@ja ;
    skos:altLabel ".NET Core" ;
    skos:altLabel "モダンな.NET"@ja .

<https://comcomponent.com/knowledge/windows-compat-pack/> a skos:Concept ;
    skos:prefLabel "Windows互換パック"@ja ;
    skos:definition ".NET Framework専用APIへの依存を.NET移行時に補うため約2万のAPIを提供するパッケージ。技術領域一覧にメッセージング(System.Messaging)は含まれない。"@ja ;
    skos:altLabel "Microsoft.Windows.Compatibility" ;
    ks:incompatibleWith <https://comcomponent.com/knowledge/system-messaging/> .

<https://comcomponent.com/knowledge/msmq-native-api/> a skos:Concept ;
    skos:prefLabel "MSMQのWin32ネイティブAPI"@ja ;
    skos:definition "MQSendMessage・MQReceiveMessageなど、MSMQをC/C++向けに操作する文書化されたWin32 API。.NETからP/Invokeで呼ぶことも可能だが、フォーマッターやトランザクション連携は自前で書く延命手段。"@ja ;
    skos:altLabel "MQSendMessage" ;
    skos:altLabel "MQReceiveMessage" ;
    ks:requires <https://comcomponent.com/knowledge/msmq/> .

<https://comcomponent.com/knowledge/corewcf/> a skos:Concept ;
    skos:prefLabel "CoreWCF"@ja ;
    skos:definition "WCFのサーバー側を.NETに移植するコミュニティ主導プロジェクト。マイクロソフトが公式なサポートポリシーを提供する一方、MSMQ対応パッケージ(CoreWCF.MSMQ)はSystem.Messagingのコミュニティ移植に依存する。"@ja ;
    ks:uses <https://comcomponent.com/knowledge/system-messaging/> .

<https://comcomponent.com/knowledge/table-queue/> a skos:Concept ;
    skos:prefLabel "DBのテーブルキュー"@ja ;
    skos:definition "データベースのテーブルをキューとして使う設計。メッセージの取り出しと業務データの更新を同一のローカルトランザクションで確定でき、MSMQ+DTCの整合性をより単純な仕組みで置き換えられる。"@ja ;
    skos:altLabel "テーブルキュー"@ja ;
    ks:succeeds <https://comcomponent.com/knowledge/msmq/> ;
    ks:recommendedFor <https://comcomponent.com/knowledge/dtc/> ;
    ks:uses <https://comcomponent.com/knowledge/outbox-pattern/> ;
    ks:uses <https://comcomponent.com/knowledge/readpast-hint/> .

<https://comcomponent.com/knowledge/rabbitmq/> a skos:Concept ;
    skos:prefLabel "RabbitMQ"@ja ;
    skos:definition "オンプレミスで運用できるメッセージブローカー。複数システム・複数言語間の疎結合な連携やファンアウト配信が得意な一方、自前運用の冗長化・更新の負荷を伴う。"@ja .

<https://comcomponent.com/knowledge/azure-service-bus/> a skos:Concept ;
    skos:prefLabel "Azure Service Bus"@ja ;
    skos:definition "クラウド上で運用できるメッセージブローカー。複数システム間の疎結合な連携に向くが、DTCには参加できない。"@ja .

<https://comcomponent.com/knowledge/multi-system-messaging/> a skos:Concept ;
    skos:prefLabel "複数システム・複数言語間の疎結合な連携"@ja ;
    skos:definition "配信のファンアウトやルーティングが必要な、複数システム・複数言語にまたがる非同期連携の要件。"@ja .

<https://comcomponent.com/knowledge/binaryformatter/> a skos:Concept ;
    skos:prefLabel "BinaryFormatter"@ja ;
    skos:definition "セキュリティ上の理由から段階的に廃止された.NETのバイナリ直列化機構。.NET 9以降はランタイムから実装が削除され既定では使用できない。"@ja ;
    ks:incompatibleWith <https://comcomponent.com/knowledge/dotnet/> .

<https://comcomponent.com/knowledge/outbox-pattern/> a skos:Concept ;
    skos:prefLabel "Outboxパターン"@ja ;
    skos:definition "送信側で業務データの更新とメッセージ行のINSERTを同一トランザクションに入れ、業務データは更新されたのにメッセージが出ていないという不整合を防ぐ設計。"@ja .

<https://comcomponent.com/knowledge/readpast-hint/> a skos:Concept ;
    skos:prefLabel "READPASTテーブルヒント"@ja ;
    skos:definition "他のトランザクションがロックしている行を読まずに飛ばすSQL Serverのテーブルヒント。複数ワーカーによるテーブルキューの並列な取り出しに使う。行ロックは飛ばせるがページロックは飛ばせない。"@ja ;
    skos:altLabel "READPAST" ;
    ks:incompatibleWith <https://comcomponent.com/knowledge/read-committed-snapshot/> .

<https://comcomponent.com/knowledge/read-committed-snapshot/> a skos:Concept ;
    skos:prefLabel "READ_COMMITTED_SNAPSHOTデータベースオプション"@ja ;
    skos:definition "読み取りのブロッキング対策として行バージョニングを使うデータベースオプション。ONのときセッションの分離レベルがREAD COMMITTEDだと、READCOMMITTEDLOCKヒントの併記なしにREADPASTを指定できない。Azure SQL Databaseでは既定でON。"@ja ;
    skos:altLabel "RCSI" .

<https://comcomponent.com/knowledge/new-project-adoption/> a skos:Concept ;
    skos:prefLabel "新規プロジェクトでの新規採用"@ja ;
    skos:definition "これから作るシステムでキュー技術を新規に選定・採用すること。"@ja .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/msmq/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/dtc/> ;
    schema:description "MSMQはMS DTC(分散トランザクションコーディネーター)と組み合わせて、キューからの取り出しとデータベース更新を1つの分散トランザクションで確定できる"@ja ;
    ks:evidence <https://learn.microsoft.com/previous-versions/windows/desktop/msmq/ms711472(v=vs.85)> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/msmq/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/transactional-queue/> ;
    schema:description "MSMQはトランザクションメッセージだけを扱うトランザクションキューを持てる"@ja ;
    ks:evidence <https://learn.microsoft.com/previous-versions/windows/desktop/msmq/ms705161(v=vs.85)> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/msmq/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/express-message/> ;
    schema:description "MSMQの既定の送信モードはexpressメッセージ"@ja ;
    ks:evidence <https://learn.microsoft.com/previous-versions/windows/desktop/msmq/ms704130(v=vs.85)> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/msmq/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/recoverable-message/> ;
    schema:description "送信側が明示的に指定すると、MSMQはメッセージをディスクに永続化するrecoverableモードで扱える"@ja ;
    ks:evidence <https://learn.microsoft.com/previous-versions/windows/desktop/msmq/ms704130(v=vs.85)> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/msmq/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/journal-queue/> ;
    schema:description "MSMQは送受信の控えを保持するジャーナルキューを自動生成する"@ja ;
    ks:evidence <https://learn.microsoft.com/previous-versions/windows/desktop/msmq/ms705161(v=vs.85)> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/msmq/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/dead-letter-queue/> ;
    schema:description "MSMQは届けられなかったメッセージを保持する配信不能キューを自動生成する"@ja ;
    ks:evidence <https://learn.microsoft.com/previous-versions/windows/desktop/msmq/ms705161(v=vs.85)> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/msmq/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/private-queue/> ;
    schema:description "中小規模の業務システムで使われているMSMQのキューは、ほとんどがディレクトリサービスに発行しないプライベートキュー"@ja ;
    ks:evidence <https://learn.microsoft.com/previous-versions/windows/desktop/msmq/ms705161(v=vs.85)> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/express-message/> ;
    rdf:predicate ks:mayCause ;
    rdf:object <https://comcomponent.com/knowledge/message-loss-on-restart/> ;
    schema:description "expressメッセージはメモリ上に留まり得るため、MSMQサービスやマシンの再起動でメッセージが失われる"@ja ;
    ks:evidence <https://learn.microsoft.com/previous-versions/windows/desktop/msmq/ms704130(v=vs.85)> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/recoverable-message/> ;
    rdf:predicate ks:prevents ;
    rdf:object <https://comcomponent.com/knowledge/message-loss-on-restart/> ;
    schema:description "recoverableメッセージはディスクに書かれるため、再起動をまたいで残る"@ja ;
    ks:evidence <https://learn.microsoft.com/previous-versions/windows/desktop/msmq/ms704130(v=vs.85)> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/system-messaging/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/dotnet-framework/> ;
    schema:description "System.Messaging.MessageQueueクラスのリファレンスが対象とするのは.NET Framework 1.1から4.8.1まで"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/api/system.messaging.messagequeue?view=netframework-4.8.1> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/system-messaging/> ;
    rdf:predicate ks:incompatibleWith ;
    rdf:object <https://comcomponent.com/knowledge/dotnet/> ;
    schema:description ".NET(Core以降)向けのSystem.Messaging版は存在せず、公式なマネージドAPIの道が閉じている"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/api/system.messaging.messagequeue?view=netframework-4.8.1> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/windows-compat-pack/> ;
    rdf:predicate ks:incompatibleWith ;
    rdf:object <https://comcomponent.com/knowledge/system-messaging/> ;
    schema:description "Windows互換パックが提供する約2万のAPIの技術領域一覧に、メッセージング(System.Messaging)は含まれていない"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/core/porting/windows-compat-pack> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/dotnet/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/msmq-native-api/> ;
    schema:description ".NETからMSMQのWin32ネイティブAPIをP/Invokeで呼ぶことは技術的には可能だが、フォーマッターやトランザクション連携を自前で書いて保守する延命手段になる"@ja ;
    ks:evidence <https://learn.microsoft.com/previous-versions/windows/desktop/msmq/ms704996(v=vs.85)> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/msmq-native-api/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/msmq/> ;
    schema:description "MQSendMessageなどのネイティブAPIはMSMQ自体が有効化・インストールされていることを前提とする"@ja ;
    ks:evidence <https://learn.microsoft.com/previous-versions/windows/desktop/msmq/ms704996(v=vs.85)> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/corewcf/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/system-messaging/> ;
    schema:description "CoreWCFのMSMQトランスポート(CoreWCF.MSMQ)の実装は.NET Framework版System.Messagingライブラリのコミュニティ移植に依存している"@ja ;
    ks:evidence <https://www.nuget.org/packages/CoreWCF.MSMQ> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/table-queue/> ;
    rdf:predicate ks:succeeds ;
    rdf:object <https://comcomponent.com/knowledge/msmq/> ;
    schema:description "中小規模の業務システムでMSMQが担っていた非同期処理の移行先として、本記事はDBのテーブルキューを第一候補として位置付ける"@ja ;
    ks:evidence <https://learn.microsoft.com/sql/t-sql/queries/hints-transact-sql-table> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/transactional-queue/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/dtc/> ;
    schema:description "MSMQのトランザクションキューとDB更新をアトミックに扱うには、DTCによる分散トランザクションが必要だった"@ja ;
    ks:evidence <https://learn.microsoft.com/previous-versions/windows/desktop/msmq/ms711472(v=vs.85)> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/table-queue/> ;
    rdf:predicate ks:recommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/dtc/> ;
    schema:description "MSMQ+DTCで実現していた整合性は、業務データと同一のローカルトランザクションで確定できるテーブルキューに置き換えるのが本記事の推奨"@ja ;
    ks:evidence <https://learn.microsoft.com/sql/t-sql/queries/hints-transact-sql-table> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/dtc/> ;
    rdf:predicate ks:incompatibleWith ;
    rdf:object <https://comcomponent.com/knowledge/rabbitmq/> ;
    schema:description "クラウド系キューはDTCに参加できないため、この要件がある限りRabbitMQへの移行は遠回りになる"@ja ;
    ks:evidence <https://learn.microsoft.com/previous-versions/windows/desktop/msmq/ms711472(v=vs.85)> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/dtc/> ;
    rdf:predicate ks:incompatibleWith ;
    rdf:object <https://comcomponent.com/knowledge/azure-service-bus/> ;
    schema:description "Azure Service BusもDTCに参加できないため、DTC要件がある限り移行の遠回りになる"@ja ;
    ks:evidence <https://learn.microsoft.com/previous-versions/windows/desktop/msmq/ms711472(v=vs.85)> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/rabbitmq/> ;
    rdf:predicate ks:recommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/multi-system-messaging/> ;
    schema:description "配信のファンアウトやルーティングが必要な、複数システム・複数言語間の疎結合な連携にはRabbitMQ(オンプレ)が候補になる"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/whats-new/deprecated-features> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/azure-service-bus/> ;
    rdf:predicate ks:recommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/multi-system-messaging/> ;
    schema:description "クラウドに置ける場合、複数システム間の疎結合な連携にはAzure Service Busが候補になる"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/whats-new/deprecated-features> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/table-queue/> ;
    rdf:predicate ks:notRecommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/multi-system-messaging/> ;
    schema:description "配信のファンアウトやルーティングが必要な複数システム・複数言語間の連携には、テーブルキューでは要件が足りないことがある"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/whats-new/deprecated-features> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/binaryformatter/> ;
    rdf:predicate ks:incompatibleWith ;
    rdf:object <https://comcomponent.com/knowledge/dotnet/> ;
    schema:description "BinaryFormatterは.NET 9以降ランタイムから実装が削除され、既定では使用できない"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/standard/serialization/binaryformatter-migration-guide/> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/table-queue/> ;
    rdf:predicate ks:incompatibleWith ;
    rdf:object <https://comcomponent.com/knowledge/binaryformatter/> ;
    schema:description "移行先がモダンな.NETの場合、BinaryFormatterは実装が削除されているため、テーブルキューへ移す新システムにこの直列化形式は持ち込めず、JSONなどへの置き換えが必要になる"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/standard/serialization/binaryformatter-migration-guide/> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/table-queue/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/outbox-pattern/> ;
    schema:description "送信側は業務データの更新とメッセージ行のINSERTを同一トランザクションに入れるOutboxパターンで、メッセージの出し漏れを防げる"@ja ;
    ks:evidence <https://learn.microsoft.com/sql/t-sql/queries/hints-transact-sql-table> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/table-queue/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/readpast-hint/> ;
    schema:description "テーブルキューの取り出しはREADPASTヒントを使うことで、他のワーカーがロックしている行を待たずに飛ばし、複数プロセスで同時に回せる"@ja ;
    ks:evidence <https://learn.microsoft.com/sql/t-sql/queries/hints-transact-sql-table> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/readpast-hint/> ;
    rdf:predicate ks:incompatibleWith ;
    rdf:object <https://comcomponent.com/knowledge/read-committed-snapshot/> ;
    schema:description "READ_COMMITTED_SNAPSHOTがONでセッションの分離レベルがREAD COMMITTEDのとき、READCOMMITTEDLOCKヒントの併記なしにREADPASTは指定できず、文そのものがエラーになる"@ja ;
    ks:evidence <https://learn.microsoft.com/sql/t-sql/queries/hints-transact-sql-table> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/msmq/> ;
    rdf:predicate ks:notRecommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/new-project-adoption/> ;
    schema:description "公式な将来の道(モダンな.NETからの利用手段)がないため、新規プロジェクトでのMSMQ新規採用は推奨できない"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/whats-new/deprecated-features> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .
