Graph Database Self-Managed Neo4j 知识图谱存储实践1:安装和基础知识学习
Neo4j 是一个原生图数据库,这意味着它在存储层实现了真正的图模型。它不是在其他技术之上使用“图抽象”,而是以您在白板上绘制想法的相同方式在Neo4j中存储数据。
自2007年以来,Neo4j已经发展成为一个丰富的工具、应用程序和库的生态系统。该生态系统允许您以多种方式将图技术与您的工作环境集成,
除了核心图之外,Neo4j还提供ACID事务、集群支持和运行时故障转移。
Neo4j 使用Java和Scala编写。可以在GitHub上查看源代码:https://github.com/neo4j/neo4j
中文教程: https://neo4j.com.cn/
下载安装
下载页面:Neo4j Deployment Center - Graph Database & Analytics
可以选择:Graph Database Self-Managed(图形数据库自我管理 )选社区版下载,也可以下载Ubuntu 包文件,或者下载桌面版,比如Windows安装版文件进行安装。
下载Windows安装版安装
在下载页面选中windows桌面版,第一次需要注册信息,点击后会自动下载,并给Neo4j Desktop Activation Key
将key保存好。当然国内的ip可能无法下载。
或者点击Neo4j的:Download your free copy of O’Reilly’s Graph Databases 社区版
显示:
Your download should begin automatically. Click here if it doesn't.
Default login is username 'neo4j' and password 'neo4j' (full installation instructions below)
想办法下载neo4j-community-2025.03.0-windows后,解压后是一个目录,到目录的bin子目录,然后执行
E:\360Downloads\neo4j-community-2025.03.0-windows\bin>neo4j.bat console
在FreeBSD下安装neo4j
启动FreeBSD VirtualBox虚拟机 192.168.0.109
ssh 登录普通账户,然后su - 到root账户(FreeBSD里面sudo不是默认安装,所以个人近几年才流行使用sudo来进行管理)
安装neo4j软件,先搜索一下:
pkg search neo4j
neo4j-4.4.35 High performance graph store and database
发现确实有4.4.35的包,于是sudo pkg install来安装neo4j:
sudo pkg install neo4j
对于FreeBSD系统来说,因为有pkg包,所以安装特别简单。但是遗憾的是版本有点低。
FreeBSD下还支持ports编译安装,可定制,性能和安全性有保障,当然版本也是4.4.35 。
启动服务
注意,这里需要使用管理员账户启动服务:
# 启动服务(命令行)
neo4j console
启动后,会显示网页链接地址:
2025-04-22 14:03:23.617+0000 INFO Remote interface available at http://localhost:7474/
为了非本地主机也能控制,可以修改配置文件,比如FreeBSD的配置文件在:/usr/local/etc/neo4j.conf:
找到这句:#dbms.default_listen_address=0.0.0.0
把注释去掉即可。
这样启动后就可以远程访问了,比如:
http://192.168.0.109:7474/browser/
连上网页控制台
启动后,访问
http://192.168.0.109:7474/browser/
连上控制页面:
默认用户和密码是neo4j,连上后会提示设置新密码,设好新密码后,就进入了管理页面。
在这个页面,可以neoj4$提示符后,输入运行的语句:
// 创建电影图谱
CREATE (m:Movie {title:"黑客帝国", year:1999})
CREATE (a:Person {name:"基努·里维斯"})
CREATE (a)-[:ACTED_IN {role:"Neo"}]->(m)
然后输入如下三句进行查询:
// 查询出演过某电影的演员
MATCH (p:Person)-[r:ACTED_IN]->(m:Movie)
WHERE m.title = "黑客帝国"
RETURN p.name, r.role
查询结果:
p.name | r.role | |
---|---|---|
1 | "基努·里维斯" | "Neo" |
Windows下将 Neo4j 安装为 Windows 服务
- 在命令行中运行以下命令将 Neo4j 安装为 Windows 服务:
neo4j.bat install-service
- 安装成功后,可以使用以下命令启动、停止、重启和查询 Neo4j 服务的状态:
neo4j.bat start neo4j.bat stop neo4j.bat restart neo4j.bat status
- 这样设置后,Neo4j 会在 Windows 启动时自动运行。
配置
Neo4j 的配置文件位于 conf
文件夹中的 neo4j.conf
文件。Windows就是解压缩目录所在的conf目录,FreeBSD就是/usr/local/etc 目录。
去掉neo4j.conf文件这句的注释就能绑定到0.0.0.0监听:
dbms.default_listen_address=0.0.0.0
修改监听端口号
修改server.http.listen_address的值来修改端口号
#server.http.listen_address=:7474
技术学习:
Neo4j 图数据库将数据存储为节点、关系和属性,而不是存储在表或文档中。这意味着您可以像在白板上绘制想法一样组织数据。
Neo4j 目前被各种行业的初创公司、教育机构和大型企业广泛使用,包括金融服务、政府、能源、技术、零售和制造业。图在帮助他们开发创新新技术、业务管理、洞察力和收入再生以及整体效率提升方面取得了成功。
什么是什么是 Cypher
Cypher 是 Neo4j 的声明式和 GQL 兼容的查询语言。Cypher 通过 openCypher 项目以开源形式提供,类似于 SQL,但针对图进行了优化。
Cypher 直观且接近自然语言,通过基于 ASCII 艺术类型语法的自身设计,提供了一种可视化匹配模式和关系的方式:
(:nodes)-[:ARE_CONNECTED_TO]->(:otherNodes)
圆括号用于表示 (:Nodes)
,而 -[:ARROWS]->
用于表示 (:Nodes)
之间的关系。使用此查询语法,您可以对图执行创建、读取、更新或删除 (CRUD) 操作。
模式
Neo4j 的属性图由节点和关系组成,它们都可以具有属性。节点表示实体,例如概念、事件、地点和事物。关系连接成对的节点。
但是,节点和关系可以被认为是低级构建块。属性图的真正优势在于它能够编码连接的节点和关系的模式。单个节点或关系通常编码的信息很少,但是节点和关系的模式可以编码任意复杂的想法。
Cypher®(Neo4j 的查询语言)强烈基于模式。具体来说,模式用于匹配所需的图结构。一旦找到或创建了匹配的结构,Neo4j 就可以使用它进行进一步处理。
一个简单的模式(只有一个关系)连接一对节点(或者,偶尔,一个节点连接到自身)。例如,一个人 LIVES_IN
一个城市,或者一个城市是 PART_OF
一个国家。
使用多个关系的复杂模式可以表达任意复杂的概念,并支持各种有趣的用例。例如,我们可能想要匹配一个人 LIVES_IN
一个国家的实例。以下 Cypher 代码将两个简单的模式组合成一个稍微复杂的模式,该模式执行此匹配:
(:Person) -[:LIVES_IN]-> (:City) -[:PART_OF]-> (:Country)
节点语法
Cypher 使用一对括号来表示一个节点:()
。这让人联想到一个圆形或一个带有圆形端盖的矩形。
关系语法
Cypher 使用一对破折号 (--
) 来表示无向关系。有向关系在一端有一个箭头 (<--
,-->
)。带括号的表达式 ([...]
) 可用于添加详细信息。
模式语法
结合节点和关系的语法,我们可以表达模式。以下可能是此域中的一个简单模式(或事实):
(keanu:Person:Actor {name: 'Keanu Reeves'})-[role:ACTED_IN {roles: ['Neo']}]->(matrix:Movie {title: 'The Matrix'})
与节点标签等效,:ACTED_IN
模式声明关系的类型。变量(例如,role
)可以在语句中的其他地方使用以引用该关系。
模式变量
为了提高模块化并减少重复,Cypher 允许将模式分配给变量。这允许检查匹配的路径,在其他表达式中使用等。
acted_in = (:Person)-[:ACTED_IN]->(:Movie)
acted_in
变量将包含每个找到或创建的路径的两个节点和连接关系。有许多函数可以访问路径的详细信息,例如:nodes(path)
、relationships(path)
和 length(path)
。
子句
Cypher 语句通常具有多个子句,每个子句执行一个特定任务,例如:
- 在图中创建和匹配模式
- 过滤、投影、排序或分页结果
- 组成部分语句
通过组合 Cypher 子句,您可以组成复杂的语句,表达您想要知道或创建的内容。
关于桌面版的官方的文档
Launch
Step 1: Activation
Copy and Paste the activation at the top of this page in the "Activation Key" box in the Neo4j Desktop app.
Alternatively, you can also generate a key from within the app by filling out the form on the right side of the app screen.
Step 2: Create a database
After activation, click on the "New Graph" button. Select "Create a local graph" from the options presented.
Next, enter the "Database name" and "Password" in field and click on the "Create" button.
Step 3: Start the database
After the database is created, click on the "Start" button.
Open the Neo4j Browser
Step 1: Start Neo4j Browser
After the database starts, click on the "Manage" button.
On the next screen, locate "Open Browser" on top of the screen and click on it. This will open Neo4j Browser in a new window.
Learn more about how to use Neo4j Browser here.
Step 2: Explore sample dataset
Neo4j Desktop comes with two sample datasets. You can run them using the following commands
:play movie graph
and :play northwind graph
Learn more about how to use Neo4j Browser here.
调试
下载报错:The Amazon CloudFront distribution is configured to block access from your country
被禁了?
好消息是FreeBSD里有。
在FreeBSD下安装neo4j
pkg search neo4j
neo4j-4.4.35 High performance graph store and database
安装
sudo pkg install neo4j
安装完毕显示:
Message from openjdk11-11.0.26+4.1_1:--
This OpenJDK implementation may require fdescfs(5) mounted on /dev/fd
and procfs(5) mounted on /proc for some applications.If you have not done it yet, please do the following:mount -t fdescfs fdesc /dev/fdmount -t procfs proc /procTo make it permanent, you need the following lines in /etc/fstab:fdesc /dev/fd fdescfs rw 0 0proc /proc procfs rw 0 0
=====
Message from neo4j-4.4.35:--
===> NOTICE:The neo4j port currently does not have a maintainer. As a result, it is
more likely to have unresolved issues, not be up-to-date, or even be removed in
the future. To volunteer to maintain this port, please create an issue at:https://bugs.freebsd.org/bugzillaMore information about port maintainership is available at:https://docs.freebsd.org/en/articles/contributing/#ports-contributing
neo4j启动报错:Failed to write PID file: Access denied at /var/run/neo4j.pid
使用管理员账户启动
neo4j console
启动后显示:
Directories in use:
home: /usr/local/neo4j
config: /usr/local/etc
logs: /var/log/neo4j
plugins: /usr/local/neo4j/plugins
import: /usr/local/neo4j/import
data: /var/db/neo4j
certificates: /usr/local/neo4j/certificates
licenses: /usr/local/neo4j/licenses
run: /var/run
Starting Neo4j.
......
2025-04-22 14:03:23.617+0000 INFO Remote interface available at http://localhost:7474/
2025-04-22 14:03:23.635+0000 INFO id: E631C7E152FA51F51F15CBC9797D6C2D30A5D3C627B6433DF27CF7911201DA13
2025-04-22 14:03:23.635+0000 INFO name: system
node4j启动后只能本地打开
打开配置文件/usr/local/etc/neo4j.conf:
找到这句:#dbms.default_listen_address=0.0.0.0
把注释去掉即可。
这样启动后就可以远程访问了,比如:
http://192.168.0.109:7474/browser/
下载了neo4j-community-2025.03.0-windows ,解压后是一个目录,应该怎么启动?
到目录的bin子目录,然后执行
E:\360Downloads\neo4j-community-2025.03.0-windows\bin>neo4j.bat console
windows下执行neo4j.bat console报错
neo4j.bat console
: org.neo4j.server.startup.Neo4jCommand ʱ LinkageErrorjava.lang.UnsupportedClassVersionError: org/neo4j/server/startup/Neo4jCommand has been compiled by a more recent version of the Java Runtime (class file version 65.0), this version of the Java Runtime only recognizes class file versions up to 55.0
需要升级java,算了,就先用FreeBSD版本实践了。
相关文章:

Graph Database Self-Managed Neo4j 知识图谱存储实践1:安装和基础知识学习
Neo4j 是一个原生图数据库,这意味着它在存储层实现了真正的图模型。它不是在其他技术之上使用“图抽象”,而是以您在白板上绘制想法的相同方式在Neo4j中存储数据。 自2007年以来,Neo4j已经发展成为一个丰富的工具、应用程序和库的生态系统。…...

一天学完Servlet!!!(万字总结)
文章目录 前言Servlet打印Hello ServletServlet生命周期 HttpServletRequest对象常用api方法请求乱码问题请求转发request域对象 HttpServletResponse对象响应数据响应乱码问题请求重定向请求转发与重定向区别 Cookie对象Cookie的创建与获取Cookie设置到期时间Cookie注意点Cook…...

E3650工具链生态再增强,IAR全面支持芯驰科技新一代旗舰智控MCU
近日,全球嵌入式软件开发解决方案领导者IAR与全场景智能车芯引领者芯驰科技正式宣布,IAR Embedded Workbench for Arm已全面支持芯驰E3650,为这一旗舰智控MCU提供开发和调试一站式服务,进一步丰富芯驰E3系列智控芯片工具链生态&am…...
Spring Boot Controller 单元测试撰写
文章目录 引言标准用法必需依赖项核心注解说明代码示例 当涉及静态方法时的测试策略必需依赖项核心注解说明代码示例 引言 之前在编写 Controller 层的单元测试时,我一直使用 SpringBootTest 注解,但它会加载整个 Spring 应用上下文,资源开销…...
TypeScripts前端基础篇(4)--- 如何定义泛型?
在 TypeScript 中,泛型(Generics)是语言内置的功能,不需要额外下载或安装任何东西;泛型(Generics)允许你创建可重用的组件,这些组件可以支持多种类型。现在给出的两个例子展示了不同的用法&…...
在深度学习中FLOPs和GFLOPs的含义及区别
在深度学习中,FLOPs和GFLOPs是衡量计算性能的关键指标,但两者的定义和应用场景不同: 1. 定义与区别 • FLOPs(Floating-point Operations) 表示模型或算法执行时所需的浮点运算总次数,用于衡量模型的计算复…...

MSSQL-数据库还原报错-‘32(另一个程序正在使用此文件,进程无法访问。)‘
这里是引用 标题: Microsoft SQL Server Management Studio 还原 对于 服务器“<<服务器名称>>”失败。 (Microsoft.SqlServer.SmoExtended) 有关帮助信息,请单击: http://go.microsoft.com/fwlink?ProdNameMicrosoftSQLServer&ProdVer12.0.2000.8…...

卷积神经网络:视觉炼金术士的数学魔法
引言:当数学遇见视觉炼金术 在人工智能的奇幻世界里,卷积神经网络(CNN)犹如掌握视觉奥秘的炼金术士,将原始像素的"铅块"淬炼成认知的"黄金"。这种融合数学严谨性与生物灵感的算法架构,…...

立马耀:通过阿里云 Serverless Spark 和 Milvus 构建高效向量检索系统,驱动个性化推荐业务
作者:厦门立马耀网络科技有限公司大数据开发工程师 陈宏毅 背景介绍 行业 蝉选是蝉妈妈出品的达人选品服务平台。蝉选秉持“陪伴达人赚到钱”的品牌使命,致力于洞悉达人变现需求和痛点,提供达人选高佣、稳变现、速响应的选品服务。 业务特…...
青少年编程与数学 02-018 C++数据结构与算法 07课题、堆
青少年编程与数学 02-018 C数据结构与算法 07课题、堆 一、堆1. 定义2. 堆的存储方式3. 堆的常见操作4. 堆的应用 二、最大堆的实现1. 堆的存储2. 基本操作3. C代码实现4. 代码说明5. 示例输出 三、最小堆的实现四、建堆操作1. 建堆操作的原理2. 为什么从最后一个非叶子节点开始…...
机器学习特征工程中的数值分箱技术:原理、方法与实例解析
标题:机器学习特征工程中的数值分箱技术:原理、方法与实例解析 摘要: 分箱技术作为机器学习特征工程中的关键环节,通过将数值数据划分为离散区间,能够有效提升模型对非线性关系的捕捉能力,同时增强模型对异…...
安装Github软件详细流程,win10系统从配置git到安装软件详解,以及github软件整合包制作方法(
win10系统部署安装开源ai必备 一、安装git应用程序(用来下来github软件) 官网下载git的exe可执行文件,Git - Downloads 或者这里下夸克网盘分享 运行git应用程序,一路’Next’到底即可。 配置安装路径 此时如果直接运行git命…...

专业热度低,25西电光电工程学院(考研录取情况)
1、光电工程学院各个方向 2、光电工程学院近三年复试分数线对比 学长、学姐分析 由表可看出: 1、光学工程25年相较于24年下降20分, 2、光电信息与工程(专硕)25年相较于24年上升15分 3、25vs24推免/统招人数对比 学长、学姐分析…...

java—11 Redis
目录 一、Redis概述 二、Redis类型及编码 三、Redis对象的编码 1. 类型&编码的对应关系 2. string类型常用命令 (1)string类型内部实现——int编码 (2)string类型内部实现——embstr编码 编辑 (3&#x…...
C语言编程--14.电话号码的字母组合
题目: 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 示例 1: 输入:digits “23” …...

热门算法面试题第19天|Leetcode39. 组合总和40.组合总和II131.分割回文串
39. 组合总和 力扣题目链接(opens new window) 给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的数字可以无限制重复被选取。 说明: 所有数字(包括 ta…...
OpenCv高阶(十一)——物体跟踪
文章目录 前言一、OpenCV 中的物体跟踪算法1、均值漂移(Mean Shift):2、CamShift:3、KCF(Kernelized Correlation Filters):4、MIL(Multiple Instance Learning)…...

2194出差-节点开销Bellman-ford/图论
题目网址: 蓝桥账户中心 我先用Floyd跑了一遍,不出所料TLE了 n,mmap(int,input().split())clist(map(int,input().split()))INFfloat(inf) ma[[INF]*n for i in range(n)]for i in range(m):u,v,wmap(int,input().split())ma[u-1][v-1]wma[v-1][u-1]w#“…...

Docker安装beef-xss
新版的kali系统中安装了beef-xss会因为环境问题而无法启动,可以使用Docker来安装beef-xss,节省很多时间。 安装步骤 1.启动kali虚拟机,打开终端,切换到root用户,然后执行下面的命令下载beef的docker镜像 wget https:…...
产品经理学习过程
一:扫盲篇(初始产品经理) 阶段1:了解产品经理 了解产品经理是做什么的、产品经理的分类、产品经理在实际工作中都会接触什么样的岗位、以及产品经理在实际工作中具体要做什么事情。 二:准备篇 阶段2:工…...

时间序列-数据窗口进行多步预测
在时间序列预测领域,多步预测旨在基于历史数据预测未来多个时间点的值,而创建数据窗口是实现这一目标的常用且高效的技术手段。数据窗口技术的核心是通过滑动窗口机制构建训练数据集,其核心逻辑可概括为:利用历史时间步的序列模式…...
【系统架构设计师】嵌入式微处理器
目录 1. 说明2. 微处理器(MPU)3. 微控制器(MCU)4. 信号处理器(DSP)5. 图形处理器(GPU)6. 片上系统(SoC)7. 例题7.1 例题1 1. 说明 1.嵌入式微处理器主要用于处理相关任务。2.由于嵌入式系统通常都在室外使用,可能处于不同环境,因此,选择处理…...
Oracle创建触发器实例
一 创建DML 触发器 DML触发器基本要点: 触发时机:指定触发器的触发时间。如果指定为BEFORE,则表示在执行DML操作之前触发,以便防止某些错误操作发生或实现某些业务规则;如果指定为AFTER,则表示在执行DML操作…...

(三)mac中Grafana监控Linux上的Redis(Redis_exporter安装使用)
框架:GrafanaPrometheusRedis_exporter Grafana安装-CSDN博客 普罗米修斯Prometheus监控安装(mac)-CSDN博客 1.Redis_exporter安装 直接下载 wget https://github.com/oliver006/redis_exporter/releases/download/v1.0.3/redis_expor…...

Linux Sed 深度解析:从日志清洗到 K8s 等12个高频场景
看图猜诗,你有任何想法都可以在评论区留言哦~ 摘要:Sed(Stream Editor)作为 Linux 三剑客之一,凭借其流式处理与正则表达式能力,成为运维场景中文本批处理的核心工具。本文聚焦生产环境高频需求ÿ…...

基于java的网络编程入门
1. 什么是IP地址 由此可见,32位最大为255.255.255.255 打开cmd查询自己电脑的ip地址:ipconfig 测试网络是否通畅:ping 目标ip地址 2. IP地址的组成 注意:127.0.0.1是回送地址,指本地机,一般用来测试使用 …...
CV和NLP领域常见模型列表
图像分类(Image Classification) 模型名特点备注ConvNeXt V2卷积改进,媲美 Transformer强于 ResNet、EfficientNetVision Transformer (ViT)全 Transformer 架构开创图像 transformer 浪潮Swin Transformer V2局部注意力 金字塔结构更强的多…...

Git简介与入门
Git的发明 Git由著名的Linux创始人linus于2005年发明(所以git的界面、使用方式与Linux挺像的,即命令行方式) 经过发展,现在广泛应用于代码管理与团队协作。 Git特性 Git是分布式版本控制系统 分布式 每个开发者拥有完整仓库&…...

Linux 网络基础三 (数据链路层协议:以太网协议、ARP 协议)
一、以太网 两个不同局域网的主机传递数据并不是直接传递的,而是通过路由器 “一跳一跳” 的传递过去。 跨网络传输的本质:由无数个局域网(子网)转发的结果。 所以,要理解数据跨网络转发原理就要先理解一个局域网中数…...

16.QT-Qt窗口-菜单栏|创建菜单栏|添加菜单|创建菜单项|添加分割线|添加快捷键|子菜单|图标|内存泄漏(C++)
Qt窗⼝是通过QMainWindow类来实现的。 QMainWindow是⼀个为⽤⼾提供主窗⼝程序的类,继承⾃QWidget类,并且提供了⼀个预定义的布局。QMainWindow包含⼀个菜单栏(menu bar)、多个⼯具栏(tool bars)、多个浮动窗⼝(铆接部…...