知识图谱 | 语义网络写入图形数据库(含jdk和neo4j的安装过程)

Hi,大家好,我是半亩花海。本文主要介绍如何使用 Neo4j 图数据库呈现语义网络,并通过 Python 将语义网络的数据写入数据库。具体步骤包括识别知识中的节点和关系,将其转化为图数据库的节点和边,最后通过代码实现数据的写入和展示。


目录

一、实验目的

二、实验要求

三、实验原理

四、实验步骤

1. 环境配置

(1)下载 JDK

(2)安装 neo4j

(3)配置环境变量

(4)启动 neo4j

2. 安装 py2neo 库

3. 从 py2neo 包导入库

4. 连接 Neo4j 图形数据库

5. 创建并覆盖节点

6. 创建关系

7. 将关系应用到图中

五、实验结果

六、实验小结


一、实验目的

(1)了解向数据库中写入语义网络的方法。

(2)简单使用Neo4j呈现语义网络。

二、实验要求

本次实验后,能理解语义网络的节点(Node)和关系(Relationship)在数据库中是如何呈现的。


三、实验原理

按照5.3节《知识的语义网络表示》介绍的方法(5.3.1-事实性知识的表示,5.3.2-情况、动作和事件的表示,5.3.3-连词和量词的表示,5.3.4-用语义网络表示知识的步骤),将一个事实用语义网络表示,首先要找出它的节点,再描述它与其他节点的关系,最后用 Python 写入数据库中。


四、实验步骤

1. 环境配置

(1)下载 JDK

官网下载链接:Java Downloads | Oracle

JDK版本的选择一定要恰当,这里我下载安装的是jdk11。Jdk的版本很重要,需要与neo4j匹配适应,版本太低或太高都可能导致后续的neo4j无法使用。

可以参考CSDN上的经验贴,比如借鉴以下这个博主的经验:Neo4j安装教程及版本匹配_neo4j5.15对应哪个版本jdk-CSDN博客(Neo4j安装教程及版本匹配_neo4j5.15对应哪个版本jdk-CSDN博客)。

(2)安装 neo4j

安装好JDK之后,便可以安装neo4j。

官方下载链接:Neo4j Deployment Center - Graph Database & Analytics

根据上述jdk对应版本来看,这里我下载安装的是neo4j 4.4.33

(3)配置环境变量

安装好 JDK 和 neo4j 之后就要开始配置环境变量。步骤如下:右键单击此电脑→属性→高级系统设置→高级→环境变量,着眼于在下方的系统变量区域。

  • 新建第一个环境变量,变量名为JAVA_HOME,变量值是jdk的文件路径,这里我是E:\jdk\jdk-11.0.23_windows-x64_bin\jdk-11.0.23。
  • 新建第二个环境变量,变量名为NEO4J_HOME,变量值是neo4j的文件路径,这里我是E:\neo4j\neo4j-community-4.4.33-windows\neo4j-community-4.4.33。
  • 编辑Path新建→输入 %JAVA_HOME%\bin 和 %NEO4J_HOME%\bin

(4)启动 neo4j

管理员身份运行 cmd。在命令行处输入neo4j.bat console。

如出现此界面,则证明neo4j启动成功。在浏览器中输入上述界面中给出的网址http://localhost:7474/,则会显示如下界面。

默认的用户名和密码均为neo4j。但是可以修改密码,记住这个密码,后续代码会用到。随后cmd也会出现上述结果。至此,neo4j安装完毕

2. 安装 py2neo 库

在cmd中输入以下命令即可:pip install py2neo。

3. 从 py2neo 包导入库

from py2neo import Graph, Node, Relationship

4. 连接 Neo4j 图形数据库

# 连接Neo4j图形数据库
g = Graph('http://localhost:7474', user='neo4j', password='0123456789', name='neo4j')

此处,密码我修改为0123456789,进入neo4j。

5. 创建并覆盖节点

植物、树、草、叶、根、水草、水、果树、结果、梨树、结梨这些节点类继承自StructuredNode类,包括节点属性和连接关系。

即将要构造的事实为“树和草都是植物。树和草都有叶和根。水草是草,且生长水中。果树是树,且会结果。梨树是果树的一种,它会结梨”。

# 删除数据库中的所有节点和关系
g.delete_all()

# 创建节点
test_node_1 = Node("植物", name="植物")
test_node_2 = Node("根", name="根")
test_node_3 = Node("叶", name="叶")
test_node_4 = Node("草", name="草")
test_node_5 = Node("水草", name="水草")
test_node_6 = Node("水中", name="水中")
test_node_7 = Node("树", name="树")
test_node_8 = Node("果树", name="果树")
test_node_9 = Node("结果", name="结果")
test_node_10 = Node("梨树", name="梨树")
test_node_11 = Node("结梨", name="结梨")

# 覆盖创建节点
g.merge(test_node_1, "植物", "name")
g.merge(test_node_2, "根", "name")
g.merge(test_node_3, "叶", "name")
g.merge(test_node_4, "草", "name")
g.merge(test_node_5, "水草", "name")
g.merge(test_node_6, "水中", "name")
g.merge(test_node_7, "树", "name")
g.merge(test_node_8, "果树", "name")
g.merge(test_node_9, "结果", "name")
g.merge(test_node_10, "梨树", "name")
g.merge(test_node_11, "结梨", "name")

6. 创建关系

# 创建关系
relation1 = Relationship(test_node_1, 'Have', test_node_2)
relation2 = Relationship(test_node_1, 'Have', test_node_3)
relation3 = Relationship(test_node_4, 'AKO', test_node_1)
relation4 = Relationship(test_node_5, 'AKO', test_node_4)
relation5 = Relationship(test_node_5, 'Live', test_node_6)
relation6 = Relationship(test_node_7, 'AKO', test_node_1)
relation7 = Relationship(test_node_8, 'AKO', test_node_7)
relation8 = Relationship(test_node_8, 'Can', test_node_9)
relation9 = Relationship(test_node_10, 'ISA', test_node_8)
relation10 = Relationship(test_node_11, 'Can', test_node_10)

7. 将关系应用到图中

# 将关系应用到图中
g.merge(relation1)
g.merge(relation2)
g.merge(relation3)
g.merge(relation4)
g.merge(relation5)
g.merge(relation6)
g.merge(relation7)
g.merge(relation8)
g.merge(relation9)
g.merge(relation10)

五、实验结果


六、实验小结

  1. jdkneo4j的版本需要匹配,这里我用的是 jdk11和neo4j 4.4.33,其中任何一个版本过高或过低都会导致安装库之后运行错误。
  2. 配置环境变量的时候,需要注意两个变量命名和路径的正确性。
  3. 创建节点和关系的时候需要反复注意各变量之间逻辑关系。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/626117.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

两数相加 - (LeetCode)

前言 今天无意间看到LeetCode的一道“两数相加”的算法题,第一次接触链表ListNode,ListNode结构如下: public class ListNode {int val;ListNode next;ListNode() {}ListNode(int val) {this.val val;}ListNode(int val, ListNode next) {…

使用TimeSum教你打造一套最牛的知识笔记管理系统!

从用户使用场景进行介绍软件的使用: 一、用户需求: 我需要一款软件记录我每天: 干了啥事有啥输出(文档)需要时间统计,后续会复盘记录的内容有好的逻辑关系需要有日历进行展示。 二、软件使用介绍&#xf…

【UE5.1 角色练习】01-使用小白人蓝图控制商城角色移动

目录 效果 步骤 一、导入资源 二、控制角色移动 三、更换角色移动动作 效果 步骤 一、导入资源 新建一个工程,然后在虚幻商城中将角色动画的相关资源加入工程,这里使用的是“动画初学者内容包”和“MCO Mocap Basics” 将我们要控制的角色添加进…

在idea中使用vue

一、安装node.js 1、在node.js官网(下载 | Node.js 中文网)上下载适合自己电脑版本的node.js压缩包 2、下载完成后进行解压并安装,一定要记住自己的安装路径 一直点击next即可,这部选第一个 3、安装成功后,按住winR输入…

【Shell脚本】Shell编程之数组

目录 一.数组 1.基本概念 2.定义数组的方法 2.1.方法一 2.2.方法二 2.3.方法三 2.4.方法四 2.5.查看数组长度 2.6.查看数组元素下标 3.数组分片 4.数组字符替换 4.1.临时替换 4.2.永久替换 5.数组删除 5.1.删除某个下标 5.2.删除整组 6.数组遍历和重新定义 7…

2024洗地机爆款榜单,哪个牌子洗地机值得买?助你轻松选对洗地机

随着现代生活节奏的加快,人们对于家庭清洁的需求也越来越高。家用洗地机作为一种高效清洁工具,能够帮助您轻松应对家庭地板的清洁问题,节省时间和精力。然而,在选择洗地机时,究竟哪个牌子的洗地机值得买呢?…

【 第一性原理计算方法及应用】

第一性原理计算方法及应用述

Android Iptables 客制化方法及基本使用

Android Iptables 客制化方法及基本使用 Android netd 的自定义链NetdConstants.cpp 的 execIptablesRestore 方法IptablesRestoreController 的 execute 方法使用 oem-iptables-init.sh 添加自定义的防火墙规则oem-iptables-init.sh 示例文件 基本概念Iptables 链Iptables 表 …

关于nvm管理node版本的一些问题

背景: 基于开发项目的迭代不能做到全部更新,有的项目是vue2.0 有的项目是vue3.0, 那么我们开发的时候就需要对node 进行更新,进而产生因为版本不同导致的错误:由此我们需要一款管理 切换node版本的东西,那就…

其它高阶数据结构①_并查集(概念+代码+两道OJ)

目录 1. 并查集的概念 2. 并查集的实现 3. 并查集的应用 3.1 力扣LCR 116. 省份数量 解析代码1 解析代码2 3.2 力扣990. 等式方程的可满足性 解析代码 本篇完。 写在前面: 此高阶数据结构系列,虽然放在⑤数据结构与算法专栏,但还是作…

2023年全国职业院校技能大赛(高职组)“云计算应用”赛项赛卷5(私有云)

#需要资源(软件包及镜像)或有问题的,可私聊博主!!! #需要资源(软件包及镜像)或有问题的,可私聊博主!!! #需要资源(软件包…

idea2023.3.2版本全局设置maven地址

idea每次新建项目都默认使用了一个user目录下的地址,而不是自己安装的maven地址,每次创建项目后,都要重新从settings中设置一下maven地址。 可以全局修改:首先在File-->Close Project回到idea最开始的界面 然后在Customize里点…

Spring Boot 整合讯飞星火3.5通过接口Api接口实现聊天功能(首发)复制粘贴即可使用,后续更新WebSocket实现聊天功能

程序员必备网站&#xff1a; 天梦星服务平台 (tmxkj.top)https://tmxkj.top/#/ 1.pom.xml <dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.72</version></dependency><depen…

我和jetson-Nano的故事(10)——安装OpenCV3.2.0

1. 仓库地址 opencv https://opencv.org/releases/page/6/opencv_contrib https://github.com/opencv/opencv_contrib/tree/3.2.0 2. cmake-gui安装 安装指令 sudo apt-get install cmake-qt-gui如果安装过程中入到下面的问题 可以按照以下方法解决 sudo apt --fix-broke…

Cartographer前后端梳理

0. 简介 最近在研究整个SLAM框架的改进处&#xff0c;想着能不能从Cartographer中找到一些亮点可以用于参考。所以这一篇博客希望能够梳理好Cartographer前后端优化&#xff0c;并从中得到一些启发。carto整体是graph-based框架&#xff0c;前端是scan-map匹配&#xff0c;后端…

SpringBoot自动装配(二)

近日&#xff0c;余溺于先贤古哲之文无法自拔。虽未明其中真意&#xff0c;但总觉有理。遂抄录一篇以供诸君品鉴——公孙鞅曰&#xff1a;“臣闻之&#xff1a;‘疑行无名&#xff0c;疑事无功。’君亟定变法之虑&#xff0c;殆无顾天下之议之也。且夫有高人之行者&#xff0c;…

52岁「豹嫂」代夫尽孝送花畀奶奶被赞

歌手胡蓓蔚与「豹哥」单立文相爱28年&#xff0c;两人曾上节目分享婚姻之道&#xff0c;指婚姻最紧要有忍耐力&#xff0c;要抗拒引诱。其实除了忍耐力&#xff0c;胡蓓蔚和奶奶相处都有一套。 早前单立文带胡蓓蔚及妈妈到米芝连一星餐厅叹美食&#xff0c;庆祝奶奶89岁生日&am…

数据结构之二叉树详解[1]

在前面我们介绍了堆和二叉树的基本概念后&#xff0c;本篇文章将带领大家深入学习链式二叉树。 1.预备知识 2.二叉树结点的创建 3.二叉树的遍历 3.1前序遍历 3.2中序遍历 3.3 后序遍历 4.统计二叉树的结点个数 5.二叉树叶子结点的个数 6.二叉树第k层的结点个数 7.总结 …

如何使用恢复模式修复Mac启动问题?这里提供详细步骤

如果你的Mac无法启动,不要惊慌,Mac有一个隐藏的恢复模式,你可以使用它来诊断和修复任何问题,或者在需要时完全重新安装macOS。以下是如何使用它。 如何在Mac上启动到恢复模式 你需要做的第一件事是启动到恢复模式。尽管操作说明会因你使用的Mac电脑而异,但幸运的是,启动…

[数据结构1.0]快速排序

最近学习了快速排序&#xff0c;鼠鼠俺来做笔记了&#xff01; 本篇博客用排升序为例介绍快速排序&#xff01; 1.快速排序 快速排序是Hoare于1962年提出的一种二叉树结构的交换排序方法&#xff0c;其基本思想为&#xff1a;任取待排序元素序列中的某元素作为基准值&#x…