工具准备
本项目涉及 Protege 本体构建、Neo4j 图数据库存储以及前端可视化展示。主要依赖以下工具:
- Protégé: 版本建议使用 5.5.0,用于创建和管理 OWL 本体文件。
- Neo4j: 图数据库服务端,需配合 JDK 11 运行。
- APOC Library: Neo4j 的扩展库,用于数据导出。
- Python: 用于数据格式转换脚本。
注意:Neo4j 启动及 RDF 导入过程对 Java 环境有特定要求,建议统一使用 JDK 11,避免版本冲突导致类加载错误。
数据导入流程
1. 启动 Neo4j
在 Windows 环境下,通过命令行启动 Neo4j 控制台模式:
neo4j.bat console
确保服务正常启动后,访问 http://localhost:7474 进入管理界面。
2. 本体文件转换
Protege 导出的 .owl 文件通常需要先转换为 .turtle 格式以便 Neo4j 解析。若遇到生成文件为 0KB 或无法生成的情况,可尝试手动调用 JAR 包进行转换。
在项目目录下打开 PowerShell,执行以下命令(请根据实际文件名调整):
java -jar rdf2rdf-1.0.1-2.3.1.jar creature.owl creature.turtle
转换完成后检查文件大小,非零即表示成功。
3. 导入至 Neo4j
清除旧数据
为避免数据污染,首次导入前建议清空数据库:
MATCH (n) DETACH DELETE n;
初始化配置
启用 Neo4j 的 RDF 插件配置:
CALL n10s.graphconfig.init();
执行导入
使用 n10s.rdf.import.fetch 命令导入本地 turtle 文件。请修改路径为实际存放位置:
CALL n10s.rdf.import.fetch("file:///E:/your_path/test.turtle", "RDF/XML", {handleVocabUris: "IGNORE"});
导入成功后,可通过 Cypher 语句验证数据:
// 查询部分节点
MATCH (n) WHERE n:`课名称` OR n:`知识元` RETURN n LIMIT 500;
// 查询关系类型
MATCH ()-[r]->() RETURN DISTINCT type(r) AS relationshipType;
清理 URI 前缀
导入后的节点 URI 往往包含冗长的命名空间前缀,可使用以下语句简化:
MATCH (n) SET n.uri = REPLACE(n.uri, 'http://www.semanticweb.org/florence/ontologies/2025/1/untitled-ontology-9#', '') RETURN n;
数据导出与处理
1. 导出 JSON 数据
为了在前端展示,需要将图数据导出为 JSON 格式。这需要安装 APOC 库,并确认版本可用:
RETURN apoc.version();
使用 apoc.export.json.query 导出指定范围的数据:


