protege+Neo4j+前端可视化知识图谱项目(教育领域)

protege+Neo4j+前端可视化知识图谱项目(教育领域)
声明:自己的学习笔记,仅供交流分享。

注意其中JDK版本的切换!

目录

1、工具下载

1.1protege的安装

1.2Neo4j的安装

2、Neo4j导入protege文件

2.1启动Neo4j

2.2protege导出owl文件转turtle文件

2.3导入Neo4j

1. 清除数据库中的所有数据

2. 初始化 RDF 导入配置

3. 导入 RDF 数据

4.查询所有(部分)数据

5.查询边关系

6.一些细节

3、Neo4j导出JSON文件

4、可视化前的操作

4.1利用python对数据进行处理

4.2学习VUE&Echarts


1、工具下载

1.1protege的安装

版本说明:Protégé-5.5.0

知识图谱_protege的安装_protege下载-ZEEKLOG博客

了解其基本使用

protege基本使用【小记】_protege使用-ZEEKLOG博客

1.2Neo4j的安装

1.梳理一下neo4j的安装的过程以及错误_错误: 找不到或无法加载主类 org.neo4j.server.startup.neo4jcomma-ZEEKLOG博客

2、Neo4j导入protege文件

2.1启动Neo4j

版本:JDK11


win+R 输入cmd
neo4j.bat console

2.2protege导出owl文件转turtle文件

01 protege基本使用-导入neo4j_哔哩哔哩_bilibili

我在跟这个教程的时候,不是无法生成turtle文件就是生成的turtle文件为0KB,所以下面就进行自己的一些经验分享。

首先是JDK的版本,与启动Neo4j的Java版本不一样,所以这里又涉及到关于如何在电脑上配置多个Java的版本并实现切换。可以参考下面的这篇文章进行配置。简单来说,就是从官网上下载想要的两个Java版本,然后分别去配置系统变量。最后主要是通过修改JAVA_HOME这个的变量的变量值%JDK1.8%(这里表示的是变量JDK1.8),如果想切换为JDK11,则修改变量值为%JDK11%

windows安装两个或多个JDK,并实现自由切换_windows安装两个jdk-ZEEKLOG博客

其次再打开那位B站博主分享的文件,在他的视频简介里。将其下载存储倒本地。但不过我按照视频里面的教程做的时候,遇到了很多问题,要么就是转化之后的turtle文件的大小变为0KB,要么就是无法正常生成turtle文件。所以我采用了下面的方法,大家可以参考。

在这个文件夹里面,shift+鼠标右键会出现这个窗口,然后打开powershell,输入这串指令。后面的两个文件名可以替换,源文件为creature.owl,输出为creature.turtle。

java -jar rdf2rdf-1.0.1-2.3.1.jar creature.owl creature.turtle

然后会提示已经完成了转化,所以在文件夹我们就可以看到转化后的文件了。

注意看转化后的文件大小是不是0KB,不是的话就说明转化成功了。

2.3导入Neo4j

1. 清除数据库中的所有数据

MATCH (n) DETACH DELETE n;

2. 初始化 RDF 导入配置

CALL n10s.graphconfig.init();

3. 导入 RDF 数据

CALL n10s.rdf.import.fetch("file:///E:/BaiduNetdiskDownload/owl导入neo4j/第一单元_test.turtle", "RDF/XML", {handleVocabUris: "IGNORE"})

注意修改你自己的文件地址

4.查询所有(部分)数据

MATCH (n) WHERE n:`节点名称1` OR n:`节点名称2` OR n:`节点名称3` RETURN n LIMIT 500;

5.查询边关系

MATCH ()-[r]->() RETURN DISTINCT type(r) AS relationshipType

6.一些细节

节点信息的uri有很长的前缀,怎么删除,用下面的指令。

MATCH (n) SET n.uri = REPLACE(n.uri, 'http://www.semanticweb.org/florence/ontologies/2025/1/untitled-ontology-9#', '') RETURN n

注意更换你自己的uri前缀。下面的uri就没有前缀了。

3、Neo4j导出JSON文件

导出JSON文件的目的是方便后面利用Echarts进行可视化。需要借用到APOC库。关于他的下载可以自己去网上搜搜,如果后面找到了我当时看的文章,会再更新的。

所以先下载APOC库,再进行后续操作。

这一步可以检验是否下载成功。

RETURN apoc.version()

导出文件。

CALL apoc.export.json.query(   "MATCH (n) WHERE n:`节点名称1` OR n:`节点名称2` OR n:`节点名称3` OPTIONAL MATCH (n)-[r]->(m) RETURN n, r, m LIMIT 500",   "file:///E:/neo4j/neo4j-community-4.4.41/import/output_3.0.json",   {format: 'PLAIN'} )

这个代码的主体包括

第一行:查询所有节点+匹配关系+返回所有信息

第二行:导出文件路径及文件名称

第三行:指定导出的格式为 PLAIN,即简单的 JSON 格式

至此,原始数据已经获得。下面将进行数据的处理,然后利用Echarts和VUE实现前端可视化,由于该项目主要与教育领域有关,所有后面这个案例就是教育领域的了,如果大家已经成功完成了上述的所有尝试,那么可以尝试形成自己的文件了。

4、可视化前的操作

4.1利用python对数据进行处理

在导入Echarts之前,我们发现从neo4j导出的JSON文件并不符合Echarts的数据格式,所以我们需要利用Python对数据进行处理。

以下是原始的JSON数据,是不符合Echarts的数据格式的。

{ "n": { "type": "node", "id": "2", "labels": [ "Resource", "课名称", "owl__NamedIndividual" ], "properties": { "描述": "算法的多分支结构,判断闰年的规则", "编号": 3.3, "名称": "闰年平年我知道(1)", "所属知识单元": "用算法解决问题", "对应课标内容": "(1)借助学习与生活中的实例,体验身边的算法,理解算法是通过明确的、可执行的操作步骤描述的问题求解方案, 能用自然语言、流程图等方式描述算法。(2)结合生活中的实例,了解算法的顺序、分支和循环三种基本控制结构,能分析简单算法的执行过程与结果。", "所属类型": "课名称", "uri": "闰年平年我知道(1)" } }, "r": { "id": "69", "type": "relationship", "label": "父子", "start": { "id": "2", "labels": [ "Resource", "课名称", "owl__NamedIndividual" ] }, "end": { "id": "101", "labels": [ "Resource", "知识元", "owl__NamedIndividual" ] } }, "m":

下面是python代码。记得修改输入和输出文件的地址

import json def convert_to_echarts_data(file_path): # 加载Neo4j导出的JSON数据 with open(file_path, 'r', encoding='utf-8') as f: neo4j_data = json.load(f) # 初始化ECharts数据 echarts_data = { "nodes": [], "links": [] } # 节点处理 node_map = {} # 用于去重和避免重复添加节点 for item in neo4j_data: node = item.get("n", None) if node: node_id = node.get("id") node_labels = node.get("labels", []) node_properties = node.get("properties", {}) node_name = node_properties.get("名称", node_properties.get("name", node_id)) node_uri = node_properties.get("uri", node_id) # 创建或更新节点 if node_id not in node_map: echarts_node = { "id": node_id, "name": node_name, "category": node_labels[1] if node_labels else "其他", "value": node_uri, "properties":node_properties } echarts_data["nodes"].append(echarts_node) node_map[node_id] = echarts_node m_node = item.get("m", None) if m_node: node_id = m_node.get("id") node_labels = m_node.get("labels", []) node_properties = m_node.get("properties", {}) node_name = node_properties.get("名称", node_properties.get("name", node_id)) node_uri = node_properties.get("uri", node_id) # 创建或更新节点 if node_id not in node_map: echarts_node = { "id": node_id, "name": node_name, "category": node_labels[1] if node_labels else "其他", "value": node_uri, "properties": node_properties } echarts_data["nodes"].append(echarts_node) node_map[node_id] = echarts_node # 边处理 for item in neo4j_data: relationship = item.get("r", None) if relationship: start_node = item.get("r").get("start") start_id = start_node.get("id") end_node = item.get("r").get("end") end_id = end_node.get("id") relationship_label = relationship.get("label") # 创建边对象 echarts_link = { "source": start_id, "target": end_id, "value": relationship_label, } echarts_data["links"].append(echarts_link) return echarts_data # 将转换后的数据保存为文件 if __name__ == "__main__": input_file = r"E:\neo4j\neo4j-community-4.4.41\import\output_4.0.json" output_file = "converted_data2.0.json" echarts_data = convert_to_echarts_data(input_file) with open(output_file, 'w', encoding='utf-8') as f: json.dump(echarts_data, f, ensure_ascii=False, indent=4) print(f"数据已成功转换并保存到 {output_file}")

最后输出的是这样的JSON数据。

"nodes": [ { "id": "2", "name": "闰年平年我知道(1)", "category": "课名称", "value": "闰年平年我知道(1)", "properties": { "描述": "算法的多分支结构,判断闰年的规则", "编号": 3.3, "名称": "闰年平年我知道(1)", "所属知识单元": "用算法解决问题", "对应课标内容": "(1)借助学习与生活中的实例,体验身边的算法,理解算法是通过明确的、可执行的操作步骤描述的问题求解方案, 能用自然语言、流程图等方式描述算法。(2)结合生活中的实例,了解算法的顺序、分支和循环三种基本控制结构,能分析简单算法的执行过程与结果。", "所属类型": "课名称", "uri": "闰年平年我知道(1)" } }, ..... "links": [ { "source": "2", "target": "101", "value": "父子" },

4.2学习VUE&Echarts

250924

更新结束,下次有机会继续更新。

Read more

AI股票分析师daily_stock_analysis一键部署教程:Python爬虫数据采集实战

AI股票分析师daily_stock_analysis一键部署教程:Python爬虫数据采集实战 你是不是也厌倦了每天手动盯盘,在几十个股票软件和财经新闻网站之间来回切换?想不想拥有一个24小时在线的AI分析师,帮你自动抓取数据、分析行情,还能把分析报告直接推送到你的手机上? 今天,我就带你手把手搭建一个属于自己的AI股票分析系统。这个系统叫daily_stock_analysis,是一个在GitHub上非常火的开源项目。它最大的特点就是“全自动”和“零成本”——利用免费的云端资源和AI大模型,帮你把繁琐的复盘工作自动化。 听起来有点复杂?别担心,这篇教程就是写给新手看的。我会用最直白的话,一步步教你如何在星图GPU平台上把它跑起来,并且重点讲解如何用Python爬虫技术,为这个系统注入“活水”——也就是自动采集股票数据。 整个过程就像搭积木,跟着我做,你也能拥有一个专属的智能投研助理。 1. 准备工作:认识你的AI分析师 在动手之前,我们先花几分钟了解一下我们要部署的这个“家伙”到底能干什么。这样你才知道自己即将拥有一个什么样的工具。 daily_stock_anal

2026年3月18日人工智能早间新闻

各位读者,早上好。今天是2026年3月18日,星期三。欢迎收看人工智能早间新闻。昨日,从英伟达GTC大会到国内产业一线,人工智能领域释放出密集信号——算力竞赛正从地面延伸至太空,智能体加速从概念走向实干,而AI与实体经济的深度融合正在催生“超级团队”与“一人公司”的新范式。 一、国内产业纵深:“人工智能+”催生“超级团队”,智能体从概念走向实干 今年的政府工作报告首次提出打造智能经济新形态,并提出“促进新一代智能终端和智能体加快推广”“支持人工智能开源社区建设”等具体路径。在3月6日举行的经济主题记者会上,国家发改委主任郑栅洁表示,将深化“人工智能+”行动,“十五五”末人工智能相关产业规模将增长到10万亿元以上。 1. AI正从根本上释放个体能力:科大讯飞董事长刘庆峰代表指出,AI正从根本上释放个体能力,带来生产力的跃升。科大讯飞内部已涌现出一批“超级团队”,团队仅凭1名产品经理加2名前端开发人员,就完成了专家评估需15人开发3个月的任务,日产10万行高质量代码。“AI能够让一个人完成过去一个团队才能做到的事。” 刘庆峰认为,未来3至5年,AI将在数字内容、科研创新等领域持续催

2026全网最热Claude Skills工具箱,GitHub上最受欢迎的7大Skills开源AI技能库

2026全网最热Claude Skills工具箱,GitHub上最受欢迎的7大Skills开源AI技能库

猫头虎AI开源福利|全网最热Claude Skills工具箱,GitHub上最受欢迎的7大Skills神器! 大家好,我是猫头虎 🐯最近AI圈有个词儿火得一塌糊涂——#Skills(技能)。 作为Claude生态的"外挂系统",#Skills能让你的AI Agent从"聊天机器人"进化成"专业打工仔"。今天本虎给大家扒一扒GitHub上最受欢迎的7大#Skills神器,全部开源免费,文末附直达 戳! ⚠️ 安全提醒:近期已有黑客利用第三方#Skills进行攻击的案例,强烈建议优先使用官方或自制#Skills!别担心,第一个工具就是官方出品的"元技能制造机",零代码也能DIY专属技能! 🛠️ 核心工具篇|官方出品,必属精品 文章目录 * 猫头虎AI开源福利|全网最热Claude Skills工具箱,GitHub上最受欢迎的7大Skills神器! * 🛠️ 核心工具篇|官方出品,必属精品 * 1️

私人 AI 随身带!OpenClaw+cpolar 外网访问完整教程

私人 AI 随身带!OpenClaw+cpolar 外网访问完整教程

前言 在人人都用 AI 的时代,拥有一台完全私有、本地运行、数据不泄露的私人 AI,已经成为很多人的刚需。OpenClaw 就是这样一款宝藏工具,可绝大多数人都用错了方式 —— 只把它放在家里电脑上,出门就用不了。结果就是:部署时兴致勃勃,用几天后慢慢闲置,明明花了时间搭建,却没能发挥一半价值。我自己踩过这个坑,也试过各种办法突破局域网限制,要么配置复杂,要么不稳定,直到遇见 cpolar。它能轻松把本地服务映射到公网,安全加密、多平台兼容、新手友好。把 OpenClaw 和 cpolar 组合在一起,就等于把私人 AI 装进口袋,上班、出差、旅行,只要有网就能用。这篇文章不讲难懂原理,只给可直接复制的操作,带你从零完成外网访问,让私人 AI 真正随身带、随时用。 1 OpenClaw和cpolar是什么?