コース目次
アカデミーモジュール 2 · ナレッジグラフの構築と管理
オントロジーの基礎:エンティティ・関係・出典
このレッスンで学ぶこと
- オントロジーとは何か、Consilienceがノートからオントロジーを構築する理由を説明できる
- トリプルを構成する3つの要素を挙げ、実際の文章を手作業でトリプルへ分解できる
- 名前付きグラフが、各事実を記したノートを記録する仕組みを説明できる
- 基本の11種類と、ドメインに合わせた独自の種類の関係を説明できる。
- フォルダやタグでは答えられない質問に、グラフが答えられる理由を説明できる
3週間前、会議ノートに「パク・ジウは、釜山に本社を置くハヌル・ロボティクスを創業した」と1行だけ書きました。今日、「釜山のロボット企業とつながりのある知人は誰?」と尋ねたいとします。
フォルダにもタグにも、この質問には答えられません。あらかじめ質問を予測したタグがないからです。しかし、文章が構造化された事実として保存されていれば、答えはわずかなつながりをたどるだけで見つかります。
このレッスンではMarkdownを変えずに文章を検索可能な事実にする過程を扱います。原文の事実は再抽出できます。オントロジーの意味を保つには、グラフ、語彙、人の判断を一緒にエクスポートします。
オントロジーとは何か
オントロジーとは、2つの問いに答える共通語彙です。1つ目は、どのようなものが存在するか(人物、組織、場所)。2つ目は、それらがどう関係するか(創業した、本社を置く、開発する)です。
すべてのノートにある事実が、この共通語彙を使うとします。2024年の会議ノートと2026年の読書ノートが互いに言及していなくても、事実は同じモデルに入り、つながります。
オントロジーを一文で
オントロジーとは、もの(エンティティの種類)と関係(述語)について合意された語彙です。異なるノートから得た事実を互換性のある形に保ち、1つのグラフとして検索できるようにします。
Consilienceのオントロジーには、このレッスンで扱う3つの要素があります。基本の11種類と独自のエンティティ分類(何であるか)、開かれた関係動詞の語彙(どうつながるか)、リテラル属性(日付や数値などの値)です。4つ目のStatementは、自分の意思決定や問いを原文のまま記録します。こちらは別のレッスンで扱います。
この考え方の由来
Consilienceの基盤となるデータモデルは、セマンティックウェブを支えるW3C標準のRDF(Resource Description Framework)です。人間だけが読める文章だけでなく、機械が読める小さな事実として知識を保存する考え方です。
方法は単純です。ある領域を対象、リンク、プロパティとしてモデル化し、リンクをたどって調べます。大規模な組織でも、膨大な案件資料のつながりを追うために同じ方法が使われています。Consilienceは、これを自分のノートという個人の領域へ適用します。
エンティティには同一性がある
通常のMarkdownでは、「PostgreSQL」は単なる文字列です。検索すれば文字は見つかりますが、1月のノートと6月のノートにある「PostgreSQL」が同じ対象だとファイル自体が理解しているわけではありません。
グラフの最初の役割は、同一性を扱うことです。抽出された対象はすべてエンティティとなり、正規化したラベル(前後の空白を除去し、連続する空白をまとめ、小文字化)からアドレスが決まります。20件のノートで「PostgreSQL」に言及しても、すべてが1つのノードへ集まり、そのノードが4つの情報を持ちます。
- 標準表示ラベル:アプリの各所で表示するエンティティ名。
- 別名:ノートに実際に記された他の名前。どの別名も自分の言葉へ直接たどれます。
- エンティティの内容や役割を示す1行の説明。
- 任意の種類:基本の種類や設定済みの独自の種類から選び、ノートごとに記録します。
同じラベルは同じノード。異なるラベルは解決を支援
2つのノートに「PostgreSQL」と書けば、どちらの事実も同じエンティティへ結び付きます。正規化後のラベルが一致すれば、構造上1つのノードになります。
「k8s」と「Kubernetes」はラベルが異なるため、最初は別のノードです。別の解決レイヤーが、同じ対象である可能性を検知し、統合を提案します。誤った統合は後から分割できます。詳しくは別のレッスンで扱います。ここでは、完全一致はそのまま統合され、近い一致は解決が支援されると覚えてください。
トリプル:主語・述語・目的語
はの分野を。
主語 — この事実が述べている対象です。
グラフが保存する事実の形は1つ、トリプルです。主語 → 述語 → 目的語として読みます。「パク・ジウがハヌル・ロボティクスを創業した」。主語は事実の中心となるエンティティ、述語は型の付いた関係、目的語は別のエンティティまたは値です。これが最小単位です。身の回りについて述べられる内容は、この形へ分解できます。
ノートを保存すると、抽出器が各文を読み、見つけたエンティティとその間の関係を取り出します。冒頭の文章を分解すると、次のようになります。
Sentence in your note:
"Jiwoo Park founded Haneul Robotics, which is
headquartered in Busan."
The facts it becomes:
(Jiwoo Park) is a (Person)
(Haneul Robotics) is an (Organization)
(Busan) is a (Place)
(Jiwoo Park) founded → (Haneul Robotics)
(Haneul Robotics) headquartered in → (Busan)目的語はエンティティとは限りません。数値、日付、測定値はリテラルとして保存されます。トリプルの末尾に置かれる単純な値です。そのため、「2024年に公開」は、不要なノードを増やすのではなく、エンティティの値になります。多くは、取り込んだ表やCSVの行から得られます。
- オントロジー
- 何が存在するか(種別)と、どう関係するか(述語)を表す共通語彙です。
- エンティティ
- ノートをまたいで安定した同一性を持ち、文字列ではなくノードとして保存される対象です。
- トリプル
- 主語、述語、目的語からなる、最小の完全な事実です。
- 述語
- 「創業した」「本社を置く」など、主語と目的語を結ぶ型付きの関係です。
- リテラル
- トリプルの目的語となる単純な値(数値、日付、文字列)です。
- 名前付きグラフ
- 各事実をどのノートが記したかを保存する、ノートごとのコンテナです。
- RDF
- Consilienceがこれらの情報を保存するW3C標準のデータモデルです。
名前付きグラフ:どのノートに書かれていたか
出典のない事実は噂と変わりません。そのため、Consilienceは裸のトリプルを保存しません。各ワークスペースは端末上にローカルRDFストアを持ち、すべての事実は、それを記したノートに属する名前付きグラフ内へ保存されます。グラフのアドレスは、ワークスペースを基準としたノートの相対パスです。つまり各事実は、主語、述語、目的語、出典ノートからなるクワッドです。
Every fact is stored WITH the note that asserted it:
(Haneul Robotics) headquartered in → (Busan)
from note: meetings/2026-03-kickoff.md
The source note comes straight from the note's path.
The "which note said this" record is built into every fact.- ノートを再抽出 → そのノートのグラフだけを置き換えます。他のノートの事実には影響しません。
- ノートを削除 → 対応するグラフを削除します。名前を変更 → 新しいパスをキーとしてグラフを付け替えます。
- Markdownには一切変更を加えません。グラフはファイルと並行して存在し、いつでもファイルから再構築できます。
- 持ち運べます:グラフ全体を
graph.nqファイルとしてエクスポートできます。共有ダイアログの「ナレッジグラフ(オントロジー)を含める」を選ぶと、共有先向けに同梱されます。
出典を厳密に扱う理由
自分が書いたことと機械が推測したことを区別できなくなると、知識システムの信頼性は損なわれます。Consilienceは両者を明確に分けます。ノートの事実は各ノートの名前付きグラフに保存されます。機械による推論は、意思決定の改訂候補、AIが補完したエンティティ種別、同義語統合、ジオコーディングした座標など、それぞれ別の派生グラフへ保存されます。
記述と推論が混ざらないため、機械による提案を確認、却下、再構築しても、ノートに実際に書かれた内容はそのまま保たれます。
基本・独自の種類と開かれた動詞
基本の11種類は、グラフの色、表、フィルターが共有する土台です。「オントロジー」で基本の種類を親に持つ独自の種類を定義でき、抽出器はその詳細な分類も選べます。根拠が足りない場合は未分類のままにします。
| 種別 | 対象 | 例 |
|---|---|---|
| 人物 | 個人 | パク・ジウ |
| 組織 | 企業、チーム、機関 | ハヌル・ロボティクス |
| 場所 | 都市、建物、地域など、あらゆる地点 | 釜山 |
| イベント | 特定の時点で起きる出来事 | キックオフ会議 |
| プロジェクト | 目標を持つ継続的な取り組み | Aurora公開プロジェクト |
| 作品 | 書籍、論文、映画、創作物 | 人月の神話 |
| 製品 | 作られ、提供されるもの | CloudPine |
| 技術 | ツール、プラットフォーム、手法 | Kubernetes |
| 概念 | 抽象的な考え方 | 出典 |
| 物質 | 材料、化学物質 | リチウム |
| 生物 | 生物 | ミツバチ |
関係を示す動詞は、ノートの表現からそのまま得られます。「本社を置く」は「本社を置く」のまま、日本語の動詞も保持されます。グラフはノートの言語を使い、述語を普通の言葉で表示します。「分野別語彙」パネルでは、標準述語とその表現違いを定義できます。たとえば、「作った」と「開発した」を1つの「開発する」エッジへ抽出時にまとめられます。
関係をたどって複数の文書を検索
1つのファイルは1つのフォルダにしか置けないため、階層はすべてのノートに1つの置き場所を強います。タグは、事前に考えて付ける平坦なラベルです。グラフにはどちらも不要です。すべての事実に独自のアドレスがあり、ドキュメントを探す代わりに関係をたどります。これは記憶の働きにも近い方法です。
- 複数ホップの質問を機械的に処理できます。人物 → 創業した → 企業 → 本社を置く → 都市。「釜山のロボット企業とつながりのある知人は誰?」は、2段階の関係をたどる質問です。
- 想定外の質問にも答えられます。「robotics-busan」のタグを付けた人はいなくても、事実を組み合わせれば答えがあります。
- 自動的に集約します。1つのプロジェクトに言及する20件のノートが散在していても、すべて同じノードへ集まります。ノート同士を手作業でリンクする必要はありません。
- エージェントが推論できます。出典付きの構造化された事実は、キーワード検索を超えて、AIがたどり、引用できる対象になります。
自分のノートが事実になる過程を見る
- 自分のノートを1件開き、2つか3つの対象を挙げた1文を選びます。下書き用の行へコピーします。
- 上の「1つの文章 → トリプル」と同じように手作業で分解します。1行に1つの事実を、主語、述語、目的語の順で書き、各対象が何であるかも1行ずつ書きます。
- 基本の種類の表と、定義済みの独自の種類を使って分類します。根拠が足りなければ未分類にします。
- ドキュメントのサイドバーを開いて「主な事実」をクリックし、自分の一覧とエンティティカードを比べます。種別チップと自分の推測、関係の行と自分の述語を見比べてください。
自分の分類と抽出結果を比べてください。異なる動詞、独自の種類、未分類の対象から、原文や語彙を見直す手掛かりが得られます。
まとめ:1つのモデルをすべての画面で使う
これでモデル全体を把握できました。ノートからエンティティを読み取り、正規化されたラベルから同一性を決めます。エンティティはトリプルで結ばれ、各トリプルは、それを記したノートの名前付きグラフへ保存されます。このコースで見るグラフ画面はすべて、同じ構造を別の角度から見せるものです。3Dビュー、エンティティテーブル、プロフィールページがそれに当たります。
構造を知れば、より明確に質問できる
アプリは仕組みを前面に出しません。「主な事実」「つながり」「あなたの言葉」といった平易な表現で操作し、その下のモデルを使って考えます。グラフの構造を知ることで、より明確な質問ができるようになります。
「分野別語彙」で独自の用語を教えると、それ以後の抽出に反映されます。このパネルについては別のレッスンで扱います。次は、この構造を画面上で見る3Dグラフビューです。