第2章: 計算機科学のオントロジー ─ Gruber定義から Closed/Open World へ
第1章で「オントロジーには3つの顔がある」と整理した。本章ではそのうち (2) 計算機科学のオントロジー を深掘りする。1990年代の Gruber 定義から、構成要素、そして「データモデルと何が違うのか」の核心まで、図解で見ていく。
Gruber 定義をもう一度
第1章で軽く触れた定義を、改めて分解する。
1993年 Tom Gruber:
"an explicit specification of a conceptualization"
1998年 Studer らによる拡張:
"a FORMAL, EXPLICIT specification of a SHARED conceptualization"
↑ ↑ ↑ ↑
機械可読 明示的 合意済み 抽象モデル
graph LR
G[Gruber 1993] --> S[Studer 1998]
G --> E1[explicit<br/>明示的]
G --> C[conceptualization<br/>抽象モデル]
S --> F[formal<br/>機械可読]
S --> SH[shared<br/>合意済み]
style G fill:#1a2030,stroke:#b794f4
style S fill:#1a2030,stroke:#4cc9f0
4つの形容詞すべてを満たすことが大事。たとえば:
| ケース | explicit | formal | shared | conceptualization |
|---|---|---|---|---|
| あなたの頭の中の概念 | ✕ | ✕ | ✕ | ◯ |
| Wiki 記事に書かれた用語集 | ◯ | ✕ | ◯ | ◯ |
| ER 図 | ◯ | △ | △ | ◯ |
| OWL ファイル | ◯ | ◯ | ◯ | ◯ |
| Palantir Ontology Manager | ◯ | ◯ | ◯ | ◯ |
ER 図がオントロジーになりきらないのは、formal(厳密なセマンティクス)と shared(標準化された共通語彙)の側面で弱いからだ。
構成要素 ─ 6つの基本ブロック
オントロジーは、以下の6つの基本ブロックから組み立てる。
graph TB
O((Ontology))
O --> CL[Class / Concept<br/>概念カテゴリー]
O --> I[Instance / Individual<br/>個体]
O --> P[Property / Relation<br/>関係]
O --> A[Attribute / DataProperty<br/>リテラル値の属性]
O --> AX[Axiom / Constraint<br/>制約]
O --> R[Inference Rule<br/>推論規則]
CL --> CLE[例: Person, Organization]
I --> IE[例: John Smith]
P --> PE[例: worksFor, partOf]
A --> AE[例: hasAge, hasName]
AX --> AXE[例: Person は Father を高々 1 つ]
R --> RE[例: friendOf は対称]
style O fill:#1a2030,stroke:#b794f4
| 要素 | 定義 | 例 |
|---|---|---|
| Class / Concept | ドメインの概念カテゴリー | Person, Organization, Product |
| Instance / Individual | クラスの具体的な個体 | John Smith, Anthropic |
| Property / Relation | インスタンス間の関係(ObjectProperty) | worksFor, partOf, friendOf |
| Attribute / DataProperty | リテラル値(数値・文字列など)への属性 | hasAge, hasName |
| Axiom / Constraint | クラスやプロパティの制約 | ”Person は Father を高々 1 つ持つ” |
| Inference rule | 推論規則 | friendOf は対称、subClassOf は推移的 |
「クラス・関係・制約」の3つが核で、Instance はそれを具体化したデータ、Inference rule はそれを動かす燃料、と考えるとシンプル。
サンプル:3行のミニオントロジー
# Class
ex:Person a owl:Class .
ex:Father a owl:Class ;
rdfs:subClassOf ex:Person .
# Property(関係)
ex:hasFather a owl:ObjectProperty ;
rdfs:domain ex:Person ;
rdfs:range ex:Father .
# Axiom(制約)
ex:Person rdfs:subClassOf [
a owl:Restriction ;
owl:onProperty ex:hasFather ;
owl:maxCardinality 1
] .
# Instance
ex:John a ex:Person .
ex:Mark a ex:Father ;
ex:childOf ex:John .
これだけで「John は Person で、Mark という父親を1人だけ持つ」という知識が機械可読に表現できる。
★ 本質:Closed World vs Open World Assumption
ここがオントロジーを理解する最大の関門であり、データモデルとの本質的違いだ。
graph TB
Q["Q: 'John に妻はいるか?'<br/>データ: John のレコードに spouse 列が空"]
Q --> CWA[Closed World<br/>'述べられていない = 偽']
Q --> OWA[Open World<br/>'述べられていない = 未知']
CWA --> CWAA[A: '妻はいない'<br/>NOT EXISTS]
OWA --> OWAA[A: 'まだ分からない'<br/>UNKNOWN]
CWA --> CWASys[ER図 / RDBMS / JSON Schema]
OWA --> OWASys[OWL / RDF / 知識グラフ]
style CWA fill:#1a2030,stroke:#ff4d6d
style OWA fill:#1a2030,stroke:#4cc9f0
Closed World Assumption (CWA) ─ データモデルの世界
「述べられていないことは偽である」と仮定する。
- ER 図、RDBMS、JSON Schema はこちら
WHERE spouse IS NULLで「妻がいない人」を取り出せる- システムが完全な情報を持っていることを前提
Open World Assumption (OWA) ─ オントロジーの世界
「述べられていないことは「未知」である」と仮定する。
- OWL、RDF、知識グラフはこちら
spouseトリプルがないからといって「妻がいない」とは結論できない(情報がないだけ)- システムが部分的な情報しか持たないことを前提
なぜ違いが重要か
実例で見る:
# データに John に関する情報が以下しかない:
ex:John a ex:Person ;
ex:hasName "John" .
# 質問: John に妻はいるか?
RDBMS(CWA)の答え:「spouse 列が NULL → 妻はいない」と答える。
OWL(OWA)の答え:「hasSpouse トリプルがない → 妻がいるか・いないかは分からない」と答える。
これは世界観の違いだ:
- CWA は「データベースは現実を完全に映している」と仮定するシステム
- OWA は「データベースは現実の一部しか知らない」と仮定するシステム
推論への影響
OWA だからこそ、オントロジーは明示されていない知識を導出できる。
# 公理:
ex:Mammal rdfs:subClassOf ex:Animal . # 哺乳類は動物のサブクラス
# データ:
ex:Lion a ex:Mammal . # ライオンは哺乳類
# 明示的には書いていないが、機械が導ける:
# → ex:Lion a ex:Animal . (ライオンは動物)
CWA でも JOIN や VIEW で似たことはできるが、OWAでは公理(subClassOf, equivalentClass, propertyChainAxiom 等)から自動的に推論される。これが「オントロジーは推論可能」と言われる所以。
OWA の落とし穴
OWA は強力だが、実務で使うときは注意が必要:
-
「妻がいない」を表現するには明示的に書く必要がある
ex:John ex:hasSpouse owl:Nothing . # 配偶者なし、を明示 -
NOT IN や NULL のような直感的なクエリが書きにくい
- SPARQL では
FILTER NOT EXISTS { ... }を使う
- SPARQL では
-
OWL Full は決定不能
- 表現力を上げすぎると推論器が止まらない可能性
- 実務では OWL DL か、より軽量な OWL 2 EL/QL/RL profile を使う
オントロジーとデータモデリングの違い・まとめ
| 観点 | データモデリング (ER / JSON Schema) | オントロジー (OWL / RDF) |
|---|---|---|
| 世界観 | Closed World (CWA) | Open World (OWA) |
| 述べられていない事実 | 偽 | 未知 |
| 主目的 | データの保存・取得 | 概念の共有・推論 |
| 制約言語 | テーブル定義、JSON Schema | OWL の Class Axiom |
| 推論 | JOIN、VIEW(手動) | Reasoner(自動) |
| 標準化 | SQL(広く) | RDF/OWL/SHACL(W3C) |
「オントロジー = データモデル」と捉えると本質を見失う。両者は目的が違う。
ただし、実装としては融合することも多い。たとえば Palantir Foundry の Ontology は CWA 的に動くし、Property Graph 系の Neo4j も部分的にはオントロジー的な使い方ができる。世界観の違いを意識しながら、実装は柔軟に、というのが2026年の現場感覚だ。
どこで使われているか
「OWA は理論的には強力だが現実には重い」という評価が2010年代に広まった。しかしドメインによっては圧倒的に活躍している:
| ドメイン | 代表オントロジー | 用途 |
|---|---|---|
| 医療 | SNOMED CT、Gene Ontology、ICD-11 | 用語標準化、推論、マッピング |
| 金融 | FIBO(Financial Industry Business Ontology) | 規制報告、コンプライアンス |
| ライフサイエンス | OBO Foundry, PrimeKG | 創薬、ゲノム解析 |
| Web | Schema.org(軽量) | SEO、構造化データ |
| 法律 | LKIF, EuroVoc | 法令間の関係マッピング |
| エンタープライズ | Palantir Foundry Ontology | 業務オペレーション |
Web全体の 12.4%(約4500万ドメイン)が Schema.org を実装している事実は、「セマンティックWebは死んだ」言説への一つの反論だ。
本章の要点
| # | 要点 |
|---|---|
| 1 | Gruber 定義(1993 単独 → 1998 Studer 拡張):「formal, explicit specification of a shared conceptualization」 |
| 2 | 構成要素は Class / Instance / Property / Attribute / Axiom / Inference Rule の 6 つ |
| 3 | 本質的違いは Closed World vs Open World Assumption ─ 「述べられていない」を「偽」と見るか「未知」と見るかの世界観 |
| 4 | OWA だから明示されていない知識を自動推論できる。これが「オントロジーは推論可能」の根拠 |
| 5 | OWA は強力だが、NOT EXISTS 系の表現が書きにくい・OWL Full は決定不能・実務では OWL DL や軽量 profile を使う |
| 6 | 「オントロジー = データモデリング」と捉えると本質を見失う。目的が違う |
| 7 | SNOMED CT / FIBO / Gene Ontology / Schema.org など、ドメイン特化のオントロジーは現役で稼働中 |
効いている根本原理
本章は 原理3(構造があるから推論ができる) を中心に展開した。Open World Assumption こそが、オントロジーが推論可能な仕組みの根本にある。次章では、これを実装する W3C のセマンティックWebスタック(RDF / OWL / SPARQL / SHACL)と、近年台頭した Property Graph を比較しながら、知識グラフ全体の地図を描く。