Ontology和知识图谱到底是什么关系?
本文来源: 飞翔海马(公众号:飞翔海马)
原文链接: https://mp.weixin.qq.com/s/q1ygbBr1lEFCrI_aqT_5ZQ
发布时间: 2026-09-15 06:30

作者: 飞翔海马 发布时间: 2026-09-15 06:30
前面我们已经了解了Ontology的基本概念,也知道了OWL、SHACL、SWRL和Reasoner分别负责什么。但很多人在真正开始做项目时,都会遇到一个问题:Ontology和知识图谱到底是什么关系?
简单来说:Ontology负责“规定知识怎么组织”,Knowledge Graph负责“组织具体的实体、关系和事实”。
这篇文章就用一个企业知识管理的例子,把它们之间的关系讲清楚。
1. 一个企业知识图谱案例
假设给一家ABC公司构建企业知识图谱:

这些就是具体的知识事实:
- 张三在ABC公司工作
- 张三属于技术部
- 张三参与AI项目
- 李四管理技术部
- ...
如果把这些事实全部放进图数据库,就形成了一个具体的Knowledge Graph。
但是问题来了:系统怎么知道Employee、Company、Department分别是什么? worksFor和belongsTo又分别代表什么?
如果没有统一的语义定义,随着数据越来越多,图谱很容易变成一个“关系很多,但含义不统一”的数据集合。这就是Ontology要解决的问题。
2. Ontology:先定义知识的“规则”
我们可以先建立一个简单的企业Ontology:

这里的重点不是具体有哪些Class,而是:Ontology在定义这些概念和关系的“含义”。
例如:
Manager ⊆ Employee
Employee ⊆ Person意味着Manager是Employee的一种,而Employee又是Person的一种。
再比如:
worksFor
Domain → Employee
Range → Company表示worksFor这个关系通常连接Employee和Company,不只是两个节点之间存在一条边,而是具有明确的语义:
张三是一名Employee,ABC公司是一家Company,张三为ABC公司工作。
这就是Ontology和普通图数据之间非常重要的区别。
3. Ontology和Knowledge Graph的关系
可以把两者简单理解成:
Ontology = 知识的设计规范
Knowledge Graph = 按照这些语义组织起来的具体知识

不过这里需要注意一个技术细节:Ontology本身也可以包含Individual,Knowledge Graph也不一定完全没有Schema,即“Ontology = Schema,Knowledge Graph = Data”更适合作为入门阶段的理解方式,而不是绝对的技术定义。
4. RDF:一种标准化的知识表达方式
说到Ontology和知识图谱,就不得不提RDF。RDF最核心的思想非常简单:
Subject → Predicate → Object(主语 → 谓词 → 宾语)。
例如:
| Subject | Predicate | Object |
|---|---|---|
| 张三 | worksFor | ABC公司 |
| 张三 | belongsTo | 技术部 |
| 张三 | participates | AI项目 |
因此RDF非常适合表达“谁”和“谁”之间存在什么语义关系。而OWL则可以进一步描述这些Class、Property、Axiom以及它们之间的语义。
所以可以把这套体系理解成:

这里不要把RDF、OWL和Knowledge Graph看成三个完全独立的东西。它们处在同一个语义知识技术体系中,但解决的问题不同:
| 技术 | 解决的问题 |
|---|---|
| RDF | 怎么表达知识 |
| OWL | 怎么描述知识的语义和逻辑 |
| Knowledge Graph | 如何组织具体的实体、关系和事实 |
| SPARQL | 怎么查询RDF图 |
| Reasoner | 怎么根据语义推导隐含知识 |
5. 那Neo4j又是什么?
实际项目中,我们经常会使用Neo4j。Neo4j更常见的是Property Graph(属性图) 模型,即节点和关系都可以携带属性。
例如:
(:Employee {
name: "张三",
title: "工程师"
})关系也可以有属性:
[:WORKS_FOR {
since: 2020
}]因此Neo4j非常适合企业关系网络、推荐系统、社交关系、组织架构、路径分析、图算法以及复杂关系查询。
6. RDF Graph和Property Graph有什么区别?
| 对比维度 | RDF Graph | Property Graph |
|---|---|---|
| 基本单位 | Triple(三元组) | Node+Edge |
| 核心表达 | 主语-谓词-宾语 | 节点-关系-属性 |
| 常见技术 | RDF/OWL/SPARQL | Neo4j/Cypher |
| 强项 | 标准化语义、互操作 | 工程实践、图查询、图算法 |
| 常见场景 | Semantic Web、Ontology | 企业图应用、关系分析 |
7. Ontology能不能直接放进Neo4j?
可以借助Neo4j表达一部分Ontology信息,但Neo4j本身并不等于OWL Ontology推理平台。例如,我们完全可以在Neo4j中建模:
(:Employee)
(:Manager)
(:Company)
(:Department)
(:Manager)-[:SUBCLASS_OF]->(:Employee)但这并不意味着Neo4j自动具备完整的OWL语义。
例如在具备OWL语义和Reasoner的体系中,Manager ⊆ Employee、Employee ⊆ Person、张三 : Manager可以推导出张三 : Employee、张三 : Person。而普通的Neo4j图查询并不会因为存在Manager → Employee → Person就自动完成所有OWL语义推理。
因此需要明确三件事:
Neo4j解决“怎么存、怎么查、怎么做图分析”
Ontology解决“这些数据意味着什么”
Reasoner解决“根据这些语义还能推导出什么”
结尾
Ontology提供语义模型,Knowledge Graph提供事实数据,Reasoner基于语义做推理——三者结合,才能让Agent不只是“找到知识”,而是“理解知识”。
概念篇到此收尾,下一篇进入Protégé实战:从0创建第一个本体,敬请期待~
觉得有用?点赞 👍 + 收藏 ⭐ + 转发 🔄
本文转载自微信公众号「飞翔海马」,仅供学习交流使用。
觉得内容不错?我要