REPORT

Verifiable Credentials × 知識グラフ:NEXT-PFIFの信頼・推論基盤

NEXT-PFIFの信頼・推論基盤:災害時行方不明者検索における検証可能性と知識統合の技術的深掘り

1 はじめに:なぜこの2技術が「非常に重要」なのか

PFIF 1.4の最大の設計思想は「データの追跡可能性」と「オリジナルリポジトリの権威」でした。しかし、AIが自動的に被災者レコードを生成する時代において、「誰が」「どのような根拠で」「どの程度信頼できる情報」を生成したかを、機械的に検証・追跡する仕組みが不可欠です。

ここで中心的役割を果たすのが、Verifiable Credentials(検証可能な証明書、VC)知識グラフ(Knowledge Graph, KG)です。VCは「情報の信頼性を数学的に保証」し、KGは「断片的な情報を意味的に統合・推論」します。両者は独立した技術ですが、NEXT-PFIFではVCで検証された事実をKGのノードとして組み込み、推論の信頼性を担保するという形で深く連携します。

補足

本稿の狙い:VCとKGを、W3C標準・実装技術・災害時ユースケースの3軸から深く掘り下げ、NEXT-PFIFのアーキテクチャにどう組み込むかを技術的に具体化します。

2 Verifiable Credentials(VC)の技術的深掘り

2.1 W3C標準の全体構造

VCはW3C勧告(Verifiable Credentials Data Model 2.0、2024年)として標準化されています。核心的なデータ構造は以下の3要素です。

要素役割NEXT-PFIFでの具体例
Credential Subject
(証明対象)
「誰について」「何を」主張しているか id: did:pfif:person/abc123
status: believed_alive
location: geo:35.6,139.7
Issuer
(発行者)
誰がこの主張を保証しているか id: did:web:firedept.tokyo.gov
(東京消防庁のDID)
Proof
(証明)
改ざん検知・発行者の真正性を数学的に保証 EdDSA署名、またはZK-Proof

2.2 VCのJSON-LD表現(具体例)

以下は、救助隊が被災者の所在を確認したことをVCとして発行した場合の具体例です。

{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://pfif.example/ns/disaster-vocab/v1"
  ],
  "id": "urn:uuid:7e76fdd7-6c1c-4b3c-82e0-9f1c8f9f7c3e",
  "type": ["VerifiableCredential", "DisasterStatusCredential"],
  "issuer": {
    "id": "did:web:firedept.tokyo.gov",
    "name": "東京消防庁 救助隊A"
  },
  "validFrom": "2026-08-28T09:14:00Z",
  "credentialSubject": {
    "id": "did:pfif:person/abc123",
    "type": "DisasterVictim",
    "fullName": "山田太郎",
    "currentStatus": "believed_alive",
    "location": {
      "type": "GeoCoordinates",
      "latitude": 35.6586,
      "longitude": 139.7454,
      "accuracyMeters": 15
    },
    "confirmedBy": "did:web:firedept.tokyo.gov",
    "confirmationMethod": "visual_contact_drone_thermal",
    "confidenceScore": 0.94
  },
  "proof": {
    "type": "Ed25519Signature2020",
    "created": "2026-08-28T09:14:30Z",
    "proofPurpose": "assertionMethod",
    "verificationMethod": "did:web:firedept.tokyo.gov#keys-1",
    "proofValue": "z58D...xYf2Q"
  }
}
補足

ポイント:confirmationMethodconfidenceScore はPFIFには存在しなかったフィールドです。AIやセンサー由来の情報に対して、「どの方法で」「どの程度の確信をもって」確認したかを、発行者が明示的に記述できます。

2.3 DID(分散識別子):VCの発行者・対象者を特定する鍵

VCの issuer.idcredentialSubject.id にはDID(Decentralized Identifier)が使われます。DIDは中央管理型のID(メールアドレスやURL)とは異なり、以下の特徴を持ちます。

NEXT-PFIFにおけるDID設計案

DID Method用途災害時の利点
did:web 自治体・消防・警察等の組織ID 既存のWebインフラで運用可能。DNS+HTTPSで検証。
did:key 救助隊員・ドローン・エッジデバイス オフラインで完全に検証可能。外部インフラ不要。
did:pfif:...
(カスタムMethod)
被災者個人の一時ID プライバシー保護(本名と紐付けずにVCを発行可能)。

2.4 オフライン検証:災害時の最重要要件

通信インフラが破壊された被災地では、VCを「オンラインで発行者のサーバーに問い合わせて検証する」ことはできません。ここで重要になるのがオフライン検証可能なVCの設計です。

オフライン検証の技術的実現方法

  1. 事前配布された発行者公開鍵:救助隊の端末に、信頼する発行者(消防庁・警察等)の公開鍵を災害前にキャッシュしておく。did:webのDID Documentを事前にダウンロードし、有効期限(cacheUntil)を設定。
  2. 自己完結型Proof(did:key + 埋め込み公開鍵)did:keyはDIDそのものが公開鍵のハッシュであるため、DID Documentを外部から取得する必要がありません。DID文字列だけで公開鍵が復元でき、完全にオフラインで署名検証が可能です。
  3. VCの持ち運び(QRコード・NFC・BLE):被災者が自身のVC(避難所受入証明等)をスマートフォンに保存し、救助隊員の端末にQRコード・NFC・Bluetooth Low Energyで提示。端末内で署名検証を完結。
  4. ステートメント証明(Status Listのオフラインキャッシュ):VCの失効状態を示すStatus List(W3C VC Bitstring Status List)も、定期的に端末に同期しておくことで、オフラインで「このVCは失効していないか」を確認できます。
補足

具体シナリオ:避難所での本人確認

1. 被災者がスマホに保存したVC(避難所Aで受け入れた証明)を表示。

2. 避難所Bの職員が端末でQRコードをスキャン。

3. 端末内のキャッシュされた公開鍵で署名を検証(オフライン完結)。

4. 「避難所Aで生存確認済み・要介護度2・食物アレルギーあり」が検証済み事実として取得。

5. この事実をKGに登録し、他の避難所・救助隊と共有。

2.5 ゼロ知識証明(ZKP)との融合:プライバシー保護検証

VCは「内容をそのまま開示」する形式ですが、災害時には「年齢が65歳以上であること」のみを証明したいが、「正確な生年月日」は開示したくない、という場面があります。ここでBBS+署名やCoconut credentialsなどのZKP対応VCが活きます。

技術仕組みNEXT-PFIFでの用途
BBS+ Signatures 1つの署名から、開示する属性を選択的に「切り出して」ZK-Proofを生成できる。 「要支援者(高齢・障害・妊婦)」であることを証明しつつ、具体的な疾患名や住所は秘匿。
Coconut Credentials 複数の発行者の閾値署名による分散発行。単一発行者への依存を排除。 「消防+警察+自治体」の3者中2者の署名があれば有効なVCを発行。単独組織の compromise に強い。
Idemix IBM開発の匿名認証プロトコル。発行者に対しても開示属性を制御できる。 避難所間の移動履歴を追跡されずに、受援資格を証明。
注意

注意:ZKP対応VCの検証は、従来のEdDSA署名より計算コストが高いです。エッジデバイス(救助隊員のスマホ)での検証には、WASMやGPUアクセラレーション、あるいは検証をクラウドにオフロードする設計が必要です。

2.6 VCの信頼フレームワーク:Trust Registry

「署名が数学的に正しい」ことと「発行者を信頼する」ことは別問題です。災害時に突然現れた「自称救助隊」のVCを受け入れるべきか? ここでTrust Registry(信頼レジストリ)が必要です。

2.7 VCの失効・更新・履歴管理

災害時の状況は刻一刻と変わります。「生存確認済み」のVCが、後に「死亡確認」のVCで上書きされることもあります。

3 知識グラフ(KG)の技術的深掘り

3.1 RDF/OWL vs Property Graph:どちらを選ぶか

知識グラフには大きく2つのパラダイムがあります。NEXT-PFIFでは、両者を使い分けるハイブリッドアーキテクチャが現実的です。

側面RDF/OWL(Semantic Web)Property Graph(Neo4j等)
データモデル Subject-Predicate-Objectのトリプル。スキーマ(オントロジー)を厳密に定義。 ノード・リレーションシップ・プロパティ。柔軟なスキーマ。
推論能力 OWL Reasonerによる論理的推論(三段論法、包含関係等)。 グラフアルゴリズム(最短経路、コミュニティ検出等)に強い。
標準化 W3C標準(RDF, RDFS, OWL, SPARQL)。 デファクト標準(OpenCypher, GQL標準化進行中)。
スケーラビリティ トリプルストア(Apache Jena, GraphDB等)。億トリプル級。 Neo4j, Amazon Neptune等。数十億ノード級。
NEXT-PFIFでの用途 「意味的整合性の担保」:オントロジーに基づく検証、矛盾検出。 「関係性の探索・最適化」:救助ルート、重複検出、影響範囲。
補足

推奨アーキテクチャ:RDF/OWLで「意味的に正しいデータ」を定義し、Property Graphで「高速な関係性探索」を実行。両者間の同期は、RDF→Property Graphの変換マッピング(Neo4jのneosemantics等)で実現。

3.2 災害救援ドメインのオントロジー設計

NEXT-PFIFのKGを支えるオントロジーは、以下の主要クラス・プロパティで構成されます。

@prefix pfif: <https://pfif.example/ontology/v1/> .
@prefix sio: <http://semanticscience.org/resource/> .
@prefix geo: <http://www.w3.org/2003/01/geo/wgs84_pos#> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .

pfif:DisasterVictim a owl:Class ;
  rdfs:subClassOf foaf:Person ;
  rdfs:label "災害被災者" .

pfif:RescueTeam a owl:Class ;
  rdfs:label "救助隊" .

pfif:Shelter a owl:Class ;
  rdfs:label "避難所" .

pfif:confirmedAt a owl:ObjectProperty ;
  rdfs:domain pfif:DisasterVictim ;
  rdfs:range pfif:Shelter ;
  rdfs:label "確認された場所" .

pfif:hasStatus a owl:DatatypeProperty ;
  rdfs:domain pfif:DisasterVictim ;
  rdfs:range xsd:string ;
  rdfs:label "安否状態" .

pfif:requiresAssistance a owl:DatatypeProperty ;
  rdfs:domain pfif:DisasterVictim ;
  rdfs:range xsd:boolean ;
  rdfs:label "支援要否" .

pfif:hasFamilyMember a owl:ObjectProperty ;
  rdfs:domain pfif:DisasterVictim ;
  rdfs:range pfif:DisasterVictim ;
  rdfs:label "家族関係" .

pfif:locatedAt a owl:ObjectProperty ;
  rdfs:domain pfif:DisasterVictim ;
  rdfs:range geo:Point ;
  rdfs:label "所在位置" .

pfif:confirmedBy a owl:ObjectProperty ;
  rdfs:domain pfif:DisasterVictim ;
  rdfs:range pfif:RescueTeam ;
  rdfs:label "確認者" .

pfif:hasCredential a owl:ObjectProperty ;
  rdfs:domain pfif:DisasterVictim ;
  rdfs:range <https://www.w3.org/2018/credentials#VerifiableCredential> ;
  rdfs:label "関連VC" .

3.3 推論エンジン(Reasoner)の役割

OWL Reasoner(Pellet, HermiT, RDFox等)は、明示的に記述されていない事実を論理的に導出します。

推論の具体例

推論タイプ入力事実導出事実
包含関係 Aさんは「要介護5」である。
「要介護5」は「要支援者」のサブクラス。
Aさんは「要支援者」である。
推移性 AさんはBさんの家族。
BさんはCさんの家族。
AさんとCさんは同じ家族単位に属する(救助優先度の集団評価に利用)。
矛盾検出 VC1: Aさんは「避難所Xに所在」(2026-08-28 08:00)
VC2: Aさんは「避難所Yに所在」(2026-08-28 08:30)
避難所XとYは30km離れている。
物理的に移動不可能 → 少なくとも一方のVCに問題あり(信頼度再評価)。
制約違反 Aさんの hasStatus = "believed_dead"
かつ confirmedBy = ドローンAI(信頼度0.6)
「死亡確認」は人間(医師・消防)のみが発行可能な制約違反を検出。

3.4 時空間推論:災害KGの核心

災害KGの最も重要な特徴は、「時間」と「空間」がファーストクラス概念であることです。

時間オントロジー(OWL-Timeの拡張)

W3C OWL-Timeを拡張し、災害特有の時間概念を表現します。

空間推論(GeoSPARQL)

OGC GeoSPARQL標準を用い、以下の空間推論を実行します。

補足

具体例:時空間推論による救助優先度計算

1. Aさん(80歳・要介護5)の最終確認:2026-08-27T14:00、位置(35.6, 139.7)。

2. 現在時刻:2026-08-28T09:00(19時間経過)。

3. その位置はGeoSPARQLで「浸水深度1m以上区域」に含まれると判定。

4. OWL推論:「高齢・要介護・浸水区域・長時間未確認」→ 最高救助優先度。

5. 最も近い救助隊(B隊)との距離をGeoSPARQL sfDistanceで計算 → 2.3km。

6. B隊の現在の任務完了予定時刻と合わせて、動的ルート再計算。

3.5 大規模KGの実装技術スタック

レイヤー技術候補選定理由
ストレージ Neo4j(Property Graph)
or Amazon Neptune(RDF+PG両対応)
Neo4jはグラフアルゴリズムに強く、災害時の高速探索に最適。Neptuneは2024年にRDFとPGの統合サポートを強化。
推論エンジン RDFox(インメモリ)
or GraphDB
RDFoxはDatalogベースの高速推論。災害時のリアルタイム推論に適する。GraphDBはGeoSPARQLフルサポート。
分散処理 JanusGraph + Cassandra/ScyllaDB 億ノード規模の分散グラフ。全国規模の災害データを扱う場合に検討。
検索・可視化 Elasticsearch(全文検索)
+ Kibana/Grafana(可視化)
「山田太郎」のような名前検索と、地理的可視化の両方をカバー。
キャッシュ RedisGraph or KeyDB 頻繁にアクセスされる被災者・避難所のサブグラフをキャッシュ。

3.6 LLM + KG:RAGの強化と「幻覚」対策

生成AI(LLM)をKGと組み合わせることで、以下の強化が可能です。

KG-augmented RAG(GraphRAG)

従来のRAGは「文書をベクトル化して類似検索」でしたが、GraphRAGではKGの構造を検索に活用します。

LLMによるKG構築(Inverse Direction)

逆に、LLMを使って非構造化テキスト(SNS投稿・119通報・ニュース記事)からKGのトリプルを自動抽出することも可能です。

補足

具体例:119通報テキストからのトリプル抽出

入力:「〇〇町3丁目のマンション2階に、車椅子の高齢女性が取り残されています。階段が崩れています。」

LLM抽出トリプル:

  • (_:victim1, rdf:type, pfif:DisasterVictim)
  • (_:victim1, pfif:hasDisability, "wheelchair")
  • (_:victim1, pfif:estimatedAge, "elderly")
  • (_:victim1, pfif:locatedAt, geo:Point(35.6,139.7)) ← 住所ジオコーディング
  • (_:victim1, pfif:hasAccessConstraint, "stairs_collapsed")
  • (_:victim1, pfif:requiresAssistance, true)

→ これらのトリプルは、VCの検証済み事実と区別して「信頼度0.7(未確認)」としてKGに登録。

重要

リスク:LLMが生成したトリプルは、幻覚の可能性があります。必ず「信頼度スコア」と「出典(LLMモデル名・入力テキストID)」を付与し、人間または推論エンジンによる検証を経て、信頼度を更新するワークフローが必要です。

4 VC × KG の連携アーキテクチャ

4.1 連携の基本概念

VCとKGは以下のように連携します。

┌─────────────────────────────────────────────────────────────┐ │ VC層:「検証された事実」の発行・検証・失効管理 │ │ - 発行者:消防・警察・自治体・ドローン・医療機関 │ │ - 検証:署名検証 + Trust Registry確認 + Status List確認 │ │ - 出力:検証済みトリプル(信頼度1.0) │ └──────────────────────┬──────────────────────────────────────┘ │ 検証済みトリプルの投入 ▼ ┌─────────────────────────────────────────────────────────────┐ │ KG層:「意味的統合・推論・探索」の実行 │ │ - ノード:被災者・避難所・救助隊・災害区域 │ │ - エッジ:所在・家族関係・確認関係・移動履歴 │ │ - 推論:OWL Reasoner + GeoSPARQL + 時空間推論 │ │ - 出力:救助優先度・探索範囲・重複検出結果 │ └──────────────────────┬──────────────────────────────────────┘ │ 推論結果のフィードバック ▼ ┌─────────────────────────────────────────────────────────────┐ │ AI/LLM層:「意思決支援・自然言語インターフェース」 │ │ - GraphRAG:KGサブグラフをコンテキストとしてLLMに提供 │ │ - 生成:救助計画・安否通知・多言語翻訳 │ │ - 検証:LLM出力をKGと照合して幻覚検出 │ └─────────────────────────────────────────────────────────────┘

4.2 VCをKGの「信頼付きエッジ」として扱う

KGのエッジ(例:Aさん --[confirmedAt]--> 避難所X)に、VCのURIをプロパティとして付与することで、「この関係はどのVCによって裏付けられているか」を追跡できます。

pfif:DisasterVictim/abc123 pfif:confirmedAt pfif:Shelter/shinjuku-01 ;
  pfif:hasEvidence <urn:vc:7e76fdd7-6c1c-4b3c-82e0-9f1c8f9f7c3e> .

<urn:vc:7e76fdd7...> a <https://www.w3.org/2018/credentials#VerifiableCredential> ;
  pfif:issuerTrustScore 0.98 ;
  pfif:verificationMethod "Ed25519Signature2020" ;
  pfif:verifiedAt "2026-08-28T09:14:30Z"^^xsd:dateTime .

これにより、KGの推論エンジンは「信頼度0.98の消防庁VCによる確認」と「信頼度0.45のSNS投稿由来の未確認情報」を区別して扱えます。

4.3 信頼度の伝播(Trust Propagation)

KG上で、VCの信頼度が関係性を通じて伝播するモデルを設計できます。

伝播ルールの例(Datalog表現)

(1) trust(person, "location", T) :- 
      VC verifies person.location,
      VC.issuerTrustScore >= T.

(2) trust(person, "family", 0.8 * T) :-
      trust(person, "location", T),
      person.hasFamilyMember(family),
      family.lastConfirmedAt == person.lastConfirmedAt.

(3) inferredRisk(person, "high") :-
      trust(person, "location", T), T > 0.7,
      person.locatedAt geo:within DisasterZone.flooded,
      person.hasStatus "believed_alive",
      person.requiresAssistance true,
      now - person.lastConfirmed > 12 hours.

ルール(2)は「Aさんの所在が高信頼度で確認されていれば、同じ場所にいる家族の所在も間接的に信頼できる(ただし信頼度は減衰)」という推論を表します。

4.4 プライバシー保護されたままのKG推論

VCにZKP(BBS+等)を用いる場合、KG側で「属性の存在」を知りたいが「属性の値」を知りたくない、という要求が生じます。

5 実装上の課題と推奨アーキテクチャ

5.1 技術スタックの統合提案

コンポーネント推奨技術理由
VC発行・検証 Veramo(TypeScript)
or ACA-Py(Python)
VeramoはWeb標準に親和性が高い。ACA-PyはAriesフレームワークの実装で、政府系プロジェクトに実績あり。
DID解決 Universal Resolver W3C CCWGの参照実装。複数DID Methodを統一的に解決。
Trust Registry OIDF Trust Mark + 分散Git OpenID FoundationのTrust Mark仕様をベースに、災害時の動的更新はGitの分散性を活用。
KGストア Neo4j(PG)+ RDFox推論 Neo4jで高速な関係性探索、RDFoxで厳密なOWL推論。neosemanticsで同期。
時空間索引 GeoWave or PostGIS GeoSPARQLの完全実装と、大規模時空間データの索引。
LLM連携 LangChain + GraphRAG KGをLangChainのRetrieverとして統合。GraphRAGでサブグラフ抽出。
ZKP検証 Mattr BBS+ Library
or Idemix Go
BBS+署名の生成・検証ライブラリ。WASMでブラウザ/モバイル対応。

5.2 災害時の運用フロー(統合シナリオ)

補足

シナリオ:大規模地震発生後の統合運用

T+0〜1時間(発災直後):

  • ドローン隊が出動。エッジAIで熱画像から人影を検知。
  • 検知位置・時刻を did:key で署名したVCを生成(オフライン完結)。
  • 救助隊員の端末にメッシュWi-Fi/LoRaでVCを配布。

T+1〜6時間(避難所運営):

  • 避難所で被災者のVC(避難所受入証明・医療初診記録)を発行。
  • VCをKGに投入。GeoSPARQLで「避難所の収容率・要支援者数」をリアルタイム集計。
  • OWL推論で「避難所Xは満杯→新規被災者は避難所Yへ誘導」を自動導出。

T+6〜48時間(重複解消・家族再会):

  • 複数避難所のKGをクラウドに集約。
  • フェイス認識AI + NLPファジーマッチングで重複被災者を検出。
  • GraphRAGで「山田太郎の家族」のサブグラフを抽出し、LLMが自然言語で安否通知を生成。
  • 家族再会後、VCで「再会確認」を発行し、KG上で家族ノードを統合。

T+48時間〜(復旧・プライバシー保護):

  • expiry_dateに相当するVC失効をStatus Listで管理。
  • 差分プライバシーで統計データ(年齢分布・障害別支援数等)を公開。
  • 個人識別可能なKGサブグラフは暗号化し、一定期間後に削除。

5.3 課題と対策のまとめ

課題対策
VC検証の計算コスト(ZKP等) エッジでは軽量検証(did:key + EdDSA)、クラウドで厳密検証(BBS+等)の2段階設計。
KGのスケーラビリティ 地域単位のシャーディング + 災害フェーズごとのサブグラフ切り出し。
オントロジーの進化 Semantic Versioning + マイグレーションスクリプト。災害種別ごとの拡張モジュール化。
組織間の信頼構築 Trust Registryの事前登録 + 災害時の動的オンボーディング。国際救援隊にはWISeID等の既存枠組みを活用。
LLMの幻覚によるKG汚染 「LLM生成トリプル」は必ず「信頼度0.5以下 + 人間検証待ち」としてKGに登録。推論エンジンでは未検証トリプルを除外。
オフライン完全性 CRDT(Conflict-free Replicated Data Type)でエッジ間のKG断片を非同期同期。VCはQRコードで物理的持ち運び。

6 まとめ:VC × KG が NEXT-PFIF にもたらすもの

PFIF 1.4の課題VC × KG による解決
「source_name/source_url」は人間が読むためのテキスト VCのProofは機械的に検証可能な数学的保証。発行者・時刻・内容の真正性を自動確認。
「同じ人の複数レコード」をマージしない推奨 KGの推論エンジンが自動重複検出・信頼度付き統合ビューを生成。
位置情報は住所テキストのみ GeoSPARQLによる時空間推論。浸水区域・救助範囲・移動可能性を自動判定。
プライバシー保護は「期限切れ削除」のみ ZKP-VC + 差分プライバシー + SMPCで、開示せずに推論・集計が可能。
AI生成情報の信頼性管理がない VCのconfidenceScore + KGの信頼度伝播 + LLM出力のKG検証で、検証可能なAIを実現。
オフライン・分散環境での動作が未設計 did:key + オフラインVC検証 + CRDTベースKG同期で、通信インフラ非依存を実現。
補足

結論:Verifiable Credentialsは「検証可能な信頼の単位」を提供し、知識グラフは「意味的に統合された世界モデル」を提供します。両者の連携により、NEXT-PFIFは「人間が手動で入力した静的レコードの交換」から、「AI・センサー・人間が協調して生成・検証・推論する動的な信頼インフラ」へと進化します。これは単なるフォーマットの更新ではなく、災害情報管理のパラダイムそのものの転換です。

参考文献・技術仕様