内容纲要
今天我们来讲一讲:知识图谱落地的核心流程。
本文我们从「MySQL 指定数据库 → 构建知识图谱」的角度,完整梳理出一条人工执行的全流程路线,让你即使不用任何自动化框架,也能一步步做出成果。
一、总体思路
从一个数据库中提取结构(Schema)与数据(Data),
→ 转换为实体(Entity)与关系(Relation),
→ 建立本体(Ontology)并导入图数据库(Neo4j等)。
整个过程可分成 6 大步骤。
二、详细流程步骤
Step 1:确定目标数据库与范围
- 目标:明确要从哪个数据库构建知识。
- 操作:
- 登录数据库(如 MySQL)。
- 选择一个数据库,例如
company_db
。 - 确认范围(全库 / 部分表),比如
employee
,department
,project
。
示例:
SHOW DATABASES;
USE company_db;
SHOW TABLES;
Step 2:导出结构元数据(Schema)
-
目标:拿到表结构、主外键、字段信息。
-
操作:
SHOW TABLE STATUS;
SHOW FULL COLUMNS FROM employee;
SHOW CREATE TABLE project;
-
结果:一份结构清单(如 CSV / Excel),包含:
表名 字段 类型 主键 外键 注释 employee emp_id int Y - 员工ID employee dept_id int - department.dept_id 所属部门
输出建议保存为:schema_export.xlsx
Step 3:抽取核心数据样本
-
目标:导出部分实际数据用于验证关系。
-
操作:
SELECT * FROM employee LIMIT 100;
SELECT * FROM department LIMIT 100;
- 结果:得到 2~5 张 CSV 文件样本,例如:
data_employee.csv
data_department.csv
data_project.csv
Step 4:构建本体(Ontology)
- 目标:定义实体类型、属性、关系类型。
- 操作(人工分析):
- 从表结构推断实体(例如:员工、部门、项目)
- 从外键推断关系(例如:员工 → 属于 → 部门)
- 从字段提炼属性(如:员工有姓名、年龄、岗位)
示例本体表:
实体 | 属性 | 关系 | 目标实体 |
---|---|---|---|
Employee | name, age, salary | belongs_to | Department |
Department | name, location | manages | Project |
Project | name, budget | has_member | Employee |
可用 Excel 或 Protégé 软件绘制本体。
Step 5:数据映射与转换
-
目标:把关系型数据映射为图数据格式(节点 + 边)。
-
操作:
- 生成节点文件(Node CSV)
employee.csv:
id,name,age,salary
1,张三,28,8000
- 生成关系文件(Relation CSV)
employee_department.csv:
start_id,end_id,relation
1,101,belong_to
- 用 Neo4j Admin 导入
neo4j-admin import \
--nodes=employee.csv \
--nodes=department.csv \
--relationships=employee_department.csv
Step 6:验证与可视化
-
目标:验证关系正确,观察图结构。
-
操作:
- 在 Neo4j Browser 中执行:
MATCH (e:Employee)-[r:belong_to]->(d:Department) RETURN e.name, d.name LIMIT 10;
- 可视化结果验证正确性。
三、流程总览图(人工操作流程)
flowchart LR
A[选择数据库] --> B[导出表结构 Schema]
B --> C[导出数据样本 CSV]
C --> D[分析并设计本体 Ontology]
D --> E[映射生成节点与关系 CSV]
E --> F[导入图数据库 Neo4j]
F --> G[验证查询与可视化]
四、手工产出文件清单
文件名 | 内容 | 用途 |
---|---|---|
schema_export.xlsx |
表结构与字段映射 | 设计本体参考 |
data_*.csv |
各表数据样本 | 构建节点属性 |
ontology.xlsx |
实体-关系模型 | 本体定义 |
nodes.csv |
节点文件 | Neo4j 导入 |
relations.csv |
关系文件 | Neo4j 导入 |
五、可选自动化替代方案(后续升级)
环节 | 手工方式 | 自动化工具 |
---|---|---|
Schema 抽取 | SQL + Excel | Python + SQLAlchemy + pandas |
实体关系分析 | 人工 | GPT / LLM Schema分析 |
映射生成 | Excel + CSV | ETL工具(Airbyte、DAG) |
导入图 | Neo4j Admin | 脚本化导入 / API 调用 |
验证 | Cypher 查询 | Streamlit / Dash 可视化 |