| 编辑推荐: |
本文用ABC 企业的知识图谱案例,系统讲清 Ontology 与 Knowledge Graph 的关系:前者规定知识怎么组织(Class / Property / Axiom),后者承载具体的实体、关系与事实;并延伸到 RDF 的三元组表达、OWL 的语义与逻辑描述、SPARQL 查询、Reasoner 推理,以及 Neo4j 代表的 Property Graph 模型,对比 RDF Graph 与 Property Graph 在基本单位、核心表达、强项与场景上的差异,同时厘清了“Ontology 能否直接放进 Neo4j”这一常见误解——Neo4j 解决怎么存、怎么查、怎么做图分析,Ontology 解决这些数据意味着什么,Reasoner 解决根据这些语义还能推导出什么。希望对你的学习有帮助。 本文来自于微信公众号AI手抄笔记,由火龙果软件Alice编辑、推荐。 |
|
前面我们已经了解了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不只是“找到知识”,而是“理解知识”。
|