単純なリレーションデータベースでも「部長→田中」「田中→太郎」のようなエッジは作れます。しかし、「部長の田中が管理するすべての人」を自動的に探索できるか? という問いにRDBでは自力で再帰クエリを書く必要があります。
OWLでは、関係性(Object Property)自体に論理的な特性(Characteristic)を付与することで、推論エンジンが自動的に隠れた関係を発見します。
定義: A → B かつ B → C なら A → C が自動的に成立する関係。
| プロパティ例 | 意味 | 推論結果 |
|---|---|---|
partOf |
「AはBの一部である」 | 「A partOf B」かつ「B partOf C」→「A partOf C」 |
ancestorOf |
「AはBの祖先である」 | 親子関係から曾祖父関係まで自動推論 |
locatedIn |
「AはBに位置する」 | 「東京支店 locatedIn 東京都」かつ「東京都 locatedIn 日本」→「東京支店 locatedIn 日本」 |
課題: 親会社→子会社→事業部→チームの階層で「特定親会社配下の全チーム」を取得したい場合、RDBでは再帰CTEや階層クエリが必要。
OWLでの解決: partOf を Transitive Property に指定するだけで、推論エンジンが「日本支社 partOf A社」「東京支社 partOf 日本支社」から「東京支社 partOf A社」を自動導出。SPARQLクエリ1行で全チェーンを取得可能。
定義: A → B なら B → A が自動的に成立する関係の組。
| プロパティ | 逆プロパティ | 意味 |
|---|---|---|
manages |
managedBy |
「AがBを管理」↔「BはAに管理されている」 |
employs |
employedBy |
「会社が従業員を雇用」↔「従業員が会社に雇用されている」 |
hasPart |
partOf |
「システムAがシステムBを含む」↔「システムBはシステムAの一部」 |
定義: A → B なら B → A が自動的に成立する関係(自らが逆関係)。
| プロパティ例 | 意味 |
|---|---|
collaboratesWith |
「AとBは協力関係」↔「BとAは協力関係」 |
adjacentTo |
「AはBに隣接」↔「BはAに隣接」 |
定義: プロパティ間のis-a階層。worksFor は affiliatedWith のサブプロパティである場合、X worksFor Y なら自動的に X affiliatedWith Y も成立。
| スーパークラス | サブクラス | 意味 |
|---|---|---|
relatedTo |
manages |
「管理」は「関連」の特殊ケース |
partOf |
teamMemberOf |
「チームメンバー」は「組織の一部」の特殊ケース |
以下のような事実(トリプル)をRDFとして格納したとします:
# 事実(明示的なトリプル)
ex:東京支社 ex:partOf ex:日本支社 .
ex:日本支社 ex:partOf ex:A社本社 .
ex:田中 ex:manages ex:東京支社 .
# プロパティ定義
ex:partOf a owl:TransitiveProperty .
ex:manages owl:inverseOf ex:managedBy .
推論エンジンが自動的に導出する「隠れた知識」:
# 推論で自動導出されるトリプル
ex:東京支社 ex:partOf ex:A社本社 . # 推移性より
ex:東田支社 ex:managedBy ex:田中 . # 逆関係より
SPARQLクエリで ex:A社本社 に partOf するすべての組織を問い合わせると、中间の 日本支社 を経て 東京支社 も自動的に結果に含まれます。
問: 「部署Aが部署Bを管理し、部署Bが部署Cを管理する」という事実データがある。OWLで manages プロパティを Transitive Property として定義した場合、推論エンジンが自動導出する正しいトリプルはどれか?
OWLプロパティ特性を理解することは、Missionで掲げた「LLM/RAGの精度向上」において以下の実践的価値を持ちます:
不明点や深掘りしたいテーマがあれば、远慮なく質問してください。 推論の実装(RDFlib/Protégé)やGraphRAGアーキテクチャの詳細など、次回以降のレッスンに反映します。