@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/opc-ua-windows-data-collection/#article>
    schema:about <https://comcomponent.com/knowledge/opc-ua/> ;
    schema:mentions <https://comcomponent.com/knowledge/opc-classic/>, <https://comcomponent.com/knowledge/com/>, <https://comcomponent.com/knowledge/dcom-protocol/>, <https://comcomponent.com/knowledge/opc-ua-address-space/>, <https://comcomponent.com/knowledge/opc-ua-nodeid/>, <https://comcomponent.com/knowledge/opc-ua-datavalue/>, <https://comcomponent.com/knowledge/opc-ua-statuscode/>, <https://comcomponent.com/knowledge/opc-ua-subscription/>, <https://comcomponent.com/knowledge/opc-ua-monitored-item/>, <https://comcomponent.com/knowledge/opc-ua-message-security-mode/>, <https://comcomponent.com/knowledge/opc-ua-application-instance-certificate/>, <https://comcomponent.com/knowledge/opc-ua-net-standard/>, <https://comcomponent.com/knowledge/windows-firewall/> .

<https://comcomponent.com/knowledge/opc-ua/> a skos:Concept ;
    skos:prefLabel "OPC UA"@ja ;
    skos:definition "OPC Foundationが2008年に公開した、特定のプラットフォームに依存しないサービス指向の産業用通信の仕様。OPC Classicの各仕様の機能を一つにまとめ、IEC 62541のシリーズとして規格化されている。"@ja ;
    skos:altLabel "OPC Unified Architecture" ;
    skos:altLabel "IEC 62541" ;
    ks:succeeds <https://comcomponent.com/knowledge/opc-classic/> ;
    ks:uses <https://comcomponent.com/knowledge/opc-ua-address-space/> ;
    ks:uses <https://comcomponent.com/knowledge/opc-ua-datavalue/> ;
    ks:uses <https://comcomponent.com/knowledge/opc-ua-subscription/> ;
    ks:uses <https://comcomponent.com/knowledge/opc-ua-message-security-mode/> .

<https://comcomponent.com/knowledge/opc-classic/> a skos:Concept ;
    skos:prefLabel "OPC Classic"@ja ;
    skos:definition "WindowsのCOM/DCOMでソフトウェア部品の間のデータ交換を行うOPCの仕様群。工程データのOPC DA、アラームのOPC A&E、履歴のOPC HDAに分かれている。"@ja ;
    skos:altLabel "OPC Classic仕様"@ja ;
    ks:uses <https://comcomponent.com/knowledge/com/> ;
    ks:uses <https://comcomponent.com/knowledge/dcom-protocol/> .

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

<https://comcomponent.com/knowledge/dcom-protocol/> a skos:Concept ;
    skos:prefLabel "DCOMプロトコル"@ja ;
    skos:definition "COMをネットワーク越しに呼び出すプロトコル。WS-Management以前のリモートWMI接続が既定で使ってきた経路で、ファイアウォールを越えにくい。"@ja .

<https://comcomponent.com/knowledge/opc-ua-address-space/> a skos:Concept ;
    skos:prefLabel "アドレス空間(OPC UA)"@ja ;
    skos:definition "OPC UAのサーバーがクライアントに公開する、ノードと、ノード同士をつなぐ参照の集まり。"@ja ;
    skos:altLabel "AddressSpace" ;
    skos:altLabel "OPC UAのアドレス空間"@ja ;
    ks:uses <https://comcomponent.com/knowledge/opc-ua-nodeid/> .

<https://comcomponent.com/knowledge/opc-ua-nodeid/> a skos:Concept ;
    skos:prefLabel "NodeId"@ja ;
    skos:definition "OPC UAのアドレス空間でノードを識別する値。名前空間のインデックスと識別子からなり、インデックスはサーバーのNamespaceArrayでの名前空間URIの位置を表す。"@ja ;
    skos:altLabel "OPC UAのNodeId"@ja .

<https://comcomponent.com/knowledge/opc-ua-datavalue/> a skos:Concept ;
    skos:prefLabel "DataValue"@ja ;
    skos:definition "OPC UAで変数の値を返す構造。値、状態コード、SourceTimestamp、ServerTimestampを持つ。"@ja ;
    skos:altLabel "OPC UAのDataValue"@ja ;
    ks:uses <https://comcomponent.com/knowledge/opc-ua-statuscode/> .

<https://comcomponent.com/knowledge/opc-ua-statuscode/> a skos:Concept ;
    skos:prefLabel "StatusCode(OPC UA)"@ja ;
    skos:definition "OPC UAで操作や値の結果を表す32ビットのコード。上位2ビットでGood、Uncertain、Badを示す。"@ja ;
    skos:altLabel "OPC UAの状態コード"@ja .

<https://comcomponent.com/knowledge/opc-ua-subscription/> a skos:Concept ;
    skos:prefLabel "サブスクリプション(OPC UA)"@ja ;
    skos:definition "OPC UAで、MonitoredItemが作った通知をパブリッシング間隔ごとにまとめてクライアントへ送る仕組み。通知がない周期が続くとキープアライブを送る。"@ja ;
    skos:altLabel "Subscription(OPC UA)" ;
    ks:uses <https://comcomponent.com/knowledge/opc-ua-monitored-item/> .

<https://comcomponent.com/knowledge/opc-ua-monitored-item/> a skos:Concept ;
    skos:prefLabel "MonitoredItem"@ja ;
    skos:definition "OPC UAで監視する1つの対象。サンプリング間隔で値を標本化し、フィルターを通った通知をキューに入れて、属するサブスクリプションに渡す。"@ja ;
    skos:altLabel "モニタードアイテム"@ja .

<https://comcomponent.com/knowledge/opc-ua-message-security-mode/> a skos:Concept ;
    skos:prefLabel "MessageSecurityMode"@ja ;
    skos:definition "OPC UAのセッションでメッセージに適用する保護の度合い。None(保護しない)、Sign(署名する)、SignAndEncrypt(署名して暗号化する)がある。"@ja ;
    skos:altLabel "メッセージセキュリティモード"@ja .

<https://comcomponent.com/knowledge/opc-ua-application-instance-certificate/> a skos:Concept ;
    skos:prefLabel "アプリケーションインスタンス証明書"@ja ;
    skos:definition "OPC UAで、個々のアプリケーションインスタンスを一意に識別する証明書。同じ製品でもインストールごとに異なる。"@ja ;
    skos:altLabel "ApplicationInstanceCertificate" ;
    skos:altLabel "Application Instance Certificate" .

<https://comcomponent.com/knowledge/opc-ua-net-standard/> a skos:Concept ;
    skos:prefLabel "UA-.NETStandard"@ja ;
    skos:definition "OPC Foundationが公開しているOPC UAの.NET向けの実装。クライアントとサーバーのライブラリをNuGetパッケージとして提供する。"@ja ;
    skos:altLabel "OPC Foundation UA .NET Standard" ;
    skos:altLabel "OPCFoundation.NetStandard.Opc.Ua" ;
    ks:implements <https://comcomponent.com/knowledge/opc-ua/> .

<https://comcomponent.com/knowledge/windows-firewall/> a skos:Concept ;
    skos:prefLabel "Windowsファイアウォール"@ja ;
    skos:definition "全エディションで既定有効の、Windows標準のホスト型ファイアウォール。"@ja ;
    skos:altLabel "Windows Defender Firewall" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/opc-ua/> ;
    rdf:predicate ks:succeeds ;
    rdf:object <https://comcomponent.com/knowledge/opc-classic/> ;
    schema:description "OPC Foundationは2008年にOPC UAを公開し、OPC Classicの各仕様(DA、A&E、HDA)の機能を一つの仕様にまとめた。"@ja ;
    ks:evidence <https://opcfoundation.org/about/opc-technologies/opc-classic/> ;
    ks:verifiedAt "2026-11-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/opc-classic/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/com/> ;
    schema:description "OPC Classicの仕様は、WindowsのCOMを使ってソフトウェア部品の間でデータをやり取りする。"@ja ;
    ks:evidence <https://opcfoundation.org/about/opc-technologies/opc-classic/> ;
    ks:verifiedAt "2026-11-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/opc-classic/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/dcom-protocol/> ;
    schema:description "OPC Classicの仕様はCOM/DCOMでデータをやり取りする。OPC FoundationはMicrosoftがCOM/DCOMよりクロスプラットフォームの仕組みを重視するようになったことを、OPC UAを作った理由の一つに挙げている。"@ja ;
    ks:evidence <https://opcfoundation.org/about/opc-technologies/opc-classic/> ;
    ks:verifiedAt "2026-11-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/opc-ua/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/opc-ua-address-space/> ;
    schema:description "OPC UAのサーバーは持っているデータをノードの集まりとして公開し、クライアントはBrowseのサービスで参照をたどってノードを調べる。本記事の模擬サーバーでは、Line1の下の4つの変数をブラウズで見つけた。"@ja ;
    ks:evidence <https://reference.opcfoundation.org/Core/Part4/v105/docs/5.9.2>, <https://github.com/OPCFoundation/UA-.NETStandard/blob/2.0.1/docs/Concepts.md> ;
    ks:verifiedAt "2026-11-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/opc-ua-address-space/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/opc-ua-nodeid/> ;
    schema:description "アドレス空間のノードはNodeIdで識別する。名前空間のインデックスはNamespaceArrayでのURIの位置に当たるので、クライアントは数値をコードに書かず、URIからインデックスを引いてNodeIdを作る。"@ja ;
    ks:evidence <https://reference.opcfoundation.org/Core/Part3/v105/docs/8.2.2> ;
    ks:verifiedAt "2026-11-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/opc-ua/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/opc-ua-datavalue/> ;
    schema:description "Readの結果や購読の通知は、値、状態コード、SourceTimestamp、ServerTimestampを持つDataValueで返る。"@ja ;
    ks:evidence <https://reference.opcfoundation.org/Core/Part4/v105/docs/7.11> ;
    ks:verifiedAt "2026-11-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/opc-ua-datavalue/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/opc-ua-statuscode/> ;
    schema:description "DataValueは状態コードを持ち、状態コードがエラーを示すときは値を無視する。本記事では存在しないノードを読んでBadNodeIdUnknownが返った。"@ja ;
    ks:evidence <https://reference.opcfoundation.org/Core/Part4/v105/docs/7.11>, <https://reference.opcfoundation.org/Core/Part4/v105/docs/7.38.1> ;
    ks:verifiedAt "2026-11-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/opc-ua/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/opc-ua-subscription/> ;
    schema:description "OPC UAでは、クライアントがReadを繰り返す代わりに、サブスクリプションでサーバーに値の監視を任せ、変化を通知してもらえる。"@ja ;
    ks:evidence <https://reference.opcfoundation.org/Core/Part4/v105/docs/5.14.1.1> ;
    ks:verifiedAt "2026-11-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/opc-ua-subscription/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/opc-ua-monitored-item/> ;
    schema:description "サブスクリプションは複数のMonitoredItemをまとめ、MonitoredItemがサンプリング間隔で標本化してキューに入れた通知を、パブリッシング間隔ごとにクライアントへ送る。"@ja ;
    ks:evidence <https://reference.opcfoundation.org/Core/Part4/v105/docs/5.13.1.2>, <https://reference.opcfoundation.org/Core/Part4/v105/docs/5.13.1.5>, <https://reference.opcfoundation.org/Core/Part4/v105/docs/5.14.1.1> ;
    ks:verifiedAt "2026-11-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/opc-ua/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/opc-ua-message-security-mode/> ;
    schema:description "OPC UAの接続では、メッセージの保護の度合いをNone、Sign、SignAndEncryptから選ぶ。本記事ではBasic256Sha256のSignAndEncryptで接続した。"@ja ;
    ks:evidence <https://reference.opcfoundation.org/Core/Part4/v105/docs/7.20> ;
    ks:verifiedAt "2026-11-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/opc-ua-message-security-mode/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/opc-ua-application-instance-certificate/> ;
    schema:description "SignやSignAndEncryptでの署名と暗号化には、アプリケーションごとの証明書を使い、互いに信頼していない相手との接続は拒否される。本記事では、サーバーの証明書を信頼するまでBadCertificateUntrustedで接続できなかった。Noneを選んだ場合は署名も暗号化もしない。"@ja ;
    ks:evidence <https://reference.opcfoundation.org/Core/Part4/v105/docs/7.20>, <https://github.com/OPCFoundation/UA-.NETStandard/blob/2.0.1/docs/Certificates.md> ;
    ks:verifiedAt "2026-11-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/opc-ua-net-standard/> ;
    rdf:predicate ks:implements ;
    rdf:object <https://comcomponent.com/knowledge/opc-ua/> ;
    schema:description "OPC Foundationが公開しているOPC UAの.NET向けの実装で、本記事のC#のクライアントはNuGetパッケージOPCFoundation.NetStandard.Opc.Ua.Client 2.0.1を使った。拒否した証明書はrejectedのストアに保存され、ManagedSessionは切断後に自動で再接続する。"@ja ;
    ks:evidence <https://github.com/OPCFoundation/UA-.NETStandard/blob/2.0.1/docs/GettingStarted.md>, <https://github.com/OPCFoundation/UA-.NETStandard/blob/2.0.1/docs/Sessions.md> ;
    ks:verifiedAt "2026-11-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/opc-ua/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/windows-firewall/> ;
    schema:description "OPC UAのサーバーをWindowsで動かす場合は、エンドポイントのポート(IANAに登録されたopcua-tcpは4840/TCPだが、サーバーによって異なる)への受信をWindowsファイアウォールで許可する。"@ja ;
    ks:evidence <https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml>, <https://github.com/OPCFoundation/UA-.NETStandard/blob/2.0.1/docs/GettingStarted.md> ;
    ks:verifiedAt "2026-11-01" ;
    ks:certainty "context-dependent" .
