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

news2024/11/20 22:42:58

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. 创建节点和关系的时候需要反复注意各变量之间逻辑关系。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

pytorch学习(一):tensorboard使用

第一次使用需要加入 pip install tensorboard安装后,就可以使用tensorboard; from torch.utils.tensorboard import SummaryWriterwriterSummaryWriter("logs")# writer.add_image() for i in range(100):writer.add_scalar("yx",…

JWT令牌技术实现登录校验

一.简单登录功能 在登录界面中,我们可以输入用户的用户名以及密码,然后点击 "登录" 按钮就要请求服务器,服务端判断用户输入的用户名或者密码是否正确。如果正确,则返回成功结果,跳转至系统首页面。 1.功能…

LeetCode1657确定两个字符串是否接近

题目描述 如果可以使用以下操作从一个字符串得到另一个字符串,则认为两个字符串 接近 : 操作 1:交换任意两个 现有 字符。例如,abcde -> aecdb操作 2:将一个 现有 字符的每次出现转换为另一个 现有 字符&#xff0…

智慧公厕系统:改变“上厕所”体验的科技革新

公共厕所是城市建设中不可或缺的基础设施,然而,由于较为落后的管理模式,会常常存在着管理不到位、脏乱差的问题。为了改善公厕的使用体验,智慧公厕系统应运而生,并逐渐成为智慧城市建设的重要组成部分。本文将以智慧公…

6. RedHat认证-基于公钥的认证方式

6. RedHat认证-基于公钥的认证方式 主要学习客户端访问服务端的时候,免密登录这一方式 注意: 免密登录只是基于公钥认证的一个附带属性(基于公钥认证的方式更加安全,防止黑客暴力破解) 第一步:将客户端生成的秘钥传送到服务器 在客户端通过…

display:flex align-items:center无效的不一样的解决思路

写H5的时候&#xff0c;希望两个元素在div中垂直居中&#xff0c;但是设置align-items:center无效&#xff0c;最终排查原因是引入三方css影响了align-items:center。 具体分析如下&#xff0c;想让搜索图标和input在div里水平居中&#xff1a; 布局如下&#xff1a; <div…

实验十 智能手机互联网程序设计(微信程序方向)实验报告

实验目的和要求 完成以下页面设计。 二、实验步骤与结果&#xff08;给出对应的代码或运行结果截图&#xff09; Wxml <view class"container"> <view class"header"> <view class"logo"…

MHD093C-058-PG1-AA具备哪些特点?

MHD093C-058-PG1-AA是一种高性能的伺服电机控制器。 该产品具备以下特点&#xff1a; 高精度与高性能&#xff1a;MHD093C-058-PG1-AA设计用于提供精确的运动控制和定位&#xff0c;适用于需要高精度定位和控制的场合。快速响应&#xff1a;采用先进的控制技术&#xff0c;确…

C++类与对象基础探秘系列(二)

目录 类的6个默认成员函数 构造函数 构造函数的概念 构造函数的特性 析构函数 析构函数的概念 析构函数的特性 拷贝构造函数 拷贝构造函数的概念 拷贝构造函数的特性 赋值运算符重载 运算符重载 赋值运算符重载 const成员 const修饰类的成员函数 取地址及const取地址操作…

扫码枪与Input的火花

文章目录 前言一、需求&#xff1a;交互细节二、具体实现两个核心的函数&#xff1a;自动聚焦 三&#xff0c;扩展知识input 与 change的区别 前言 在浏览器扫描条形码获取条形的值&#xff0c;再操作对应的逻辑。这是比较常见的业务&#xff0c;这里记录实际操作。 其中PC端…

LeetCode2095删除链表的中间节点

题目描述 给你一个链表的头节点 head 。删除 链表的 中间节点 &#xff0c;并返回修改后的链表的头节点 head 。长度为 n 链表的中间节点是从头数起第 ⌊n / 2⌋ 个节点&#xff08;下标从 0 开始&#xff09;&#xff0c;其中 ⌊x⌋ 表示小于或等于 x 的最大整数。对于 n 1、…

Leaflet系列——【一】初识Leaflet与Leaflet视图操作

初识Leaflet&#xff08;vue3 &#xff09; 前言&#xff1a;当你熟悉了openlayer、mapbox、cesium等一些GIS框架之后&#xff0c;对于我们开发来说其实他们的本质就是往瓦片上面叠加图层、【点、线、面、瓦片、geoJson、热力图、图片、svg等等】都是一层层的Layer图层&#xf…

AI与人类生活的融合:安克创新CEO阳萌的深度洞见

安克创新CEO阳萌分享了他对人工智能未来发展的深刻见解。阳萌不仅深入探讨了大模型技术的应用前景&#xff0c;还对AI与人类生活的融合提出了引人入胜的思考。以下是对这次访谈内容的总结和分析。 大模型技术的现实应用 阳萌提到&#xff0c;尽管大模型在处理通用知识方面表…

拥有一个生产女朋友的工厂,是什么体验

正所谓&#xff0c;“旱的旱死&#xff0c;涝的涝死”&#xff0c;在这个充满竞争的编程界&#xff0c;我们似乎总是忙于解决bug和优化算法&#xff0c;以至于个人生活常常被忽略。但别担心&#xff0c;今天&#xff0c;我们要用一种独特的方式&#xff0c;解决这个“问题”。 …

OpenAI Whisper 语音转文本实验

为了实现语音方式与大语言模型的对话&#xff0c;需要使用语音识别&#xff08;Voice2Text&#xff09;和语音输出&#xff08;Text2Voice&#xff09;。感觉这项技术已比较成熟了&#xff0c;国内也有许多的机构开发这项技术&#xff0c;但是像寻找一个方便测试的技术居然还不…

根据后端返回下拉请求地址,前端动态请求拿到下拉数据渲染

完整代码如下&#xff1a; <template> <!-- 资源列表页 --> <div> <div> <i click"$router.go(-1)" style" color: #409eff; cursor: pointer; margin-right: 5px; font-size: 18px; " class"el-icon-back" ><…

C++ 关键字 :using

在 C 庞大语法体系中&#xff0c; using 关键字十分的灵活多用&#xff0c;它可不简单。 除了常规的引入命名空间之外&#xff0c;它还可用于引入枚举类型枚举器、定义常规类型别名、模板类型别名等。在定义常规类型别名方面与C语言中的typedef、#define与之相似&#xff0c;但…

jupyter notebook中调整图片大小

截屏 ctrl V 这个目前只能保证是截屏大小&#xff0c;改变不了&#xff0c;要么之久 把图形缩小后再截图 感觉很模糊 png文件导入 markdown 代码1 <img src"./1.png" width250 height200>markdown 代码2 <img src"./1.png" width938 height…

文献速递:多模态深度学习在医疗中的应用--多模式婴儿脑分割技术:模糊引导深度学习

Title 题目 Multimodal Infant Brain Segmentation by Fuzzy-informed Deep Learning 多模式婴儿脑分割技术&#xff1a;模糊引导深度学习 01 文献速递介绍 日益普及的非侵入式婴儿脑磁共振图像&#xff08;MRI&#xff09;为准确理解脑主要发展轨迹的动态性提供了机会&…

普中STM32F103ZET6开发板让DS0和DS1两个LED同时亮

欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一.前言 二.代码 三.运行效果 一.前言 在这套stm32教程中,只教学了如何亮DS0,而没有教学如何亮DS1。 二.代码 main.c #include "stm32f10x.h"void Syst