图数据库 Cypher语言
图数据库
属性图
属性图(Property Graph)概述
属性图是一种广泛用于建模关系数据的图数据结构,它将**顶点(节点)和边(关系)**进行结构化存储,并为它们附加属性以提供丰富的语义信息。属性图通常表示为一个四元组 ((V, L, E, A)),其定义如下:
组成部分
-
顶点(Vertices,V)
- 定义:顶点是图中的基本单元,用于表示实体、对象、或概念。
- 集合:(V) 是顶点集合,其中每个顶点都有一个唯一标识符。
- 属性:每个顶点可以附加属性,属性是键值对形式,用于描述顶点的特征。
- 示例:
{id: 1, name: "Alice", age: 30}
。
- 示例:
-
标签(Labels,L)
- 定义:标签用于描述顶点或边的类别,为不同类型的顶点和边赋予语义。
- 顶点标签:表示顶点的类别,例如 “Person” 或 “City”。
- 边标签:表示边的关系类型,例如 “FRIENDS_WITH” 或 “LOCATED_IN”。
- 集合:(L) 是所有可能标签的集合。
- 定义:标签用于描述顶点或边的类别,为不同类型的顶点和边赋予语义。
-
边(Edges,E)
- 定义:边表示两个顶点之间的关系,是有向的或无向的。
- 集合:(E \subseteq V \times V),即边是顶点对的子集。
- 属性:边也可以有属性,描述关系的特性。
- 示例:
{type: "FRIENDS_WITH", since: "2020-01-01"}
。
- 示例:
-
属性(Attributes,A)
- 定义:属性是一组附加到顶点或边的键值对。
- 集合:(A) 是所有属性的集合,每个属性由键、值组成。
- 键:描述属性的名称,例如
name
,age
,since
。 - 值:可以是字符串、数字、布尔值或嵌套结构。
- 键:描述属性的名称,例如
属性图模型的特点
-
灵活性
- 属性图允许为顶点和边附加任意数量的属性,从而能以直观的方式建模复杂数据。
-
丰富的语义表达
- 顶点和边的标签及属性提供了丰富的语义信息,便于理解和分析图结构。
-
关系建模
- 边不仅表示顶点之间的关系,还可以通过属性描述关系的特性,例如时间戳、权重等。
-
支持有向边
- 边可以是有向的,支持双向关系建模。
属性图的示例
用例:社交网络
一个社交网络可以用属性图建模,其中:
- 顶点表示用户或地点(如 “Alice”, “Bob”, “New York”)。
- 标签描述顶点或边的类型(如 “Person”, “City”, “FRIENDS_WITH”, “LOCATED_IN”)。
- 边描述用户之间的关系或用户与地点的关系。
- 属性附加信息(如年龄、关系时间)。
具体表示
顶点集合 (V):
[{id: 1, label: "Person", properties: {"name": "Alice", "age": 30}},{id: 2, label: "Person", properties: {"name": "Bob", "age": 25}},{id: 3, label: "City", properties: {"name": "New York"}}
]
边集合 (E):
[{source: 1, target: 2, label: "FRIENDS_WITH", properties: {"since": "2020-01-01"}},{source: 1, target: 3, label: "LOCATED_IN", properties: {"duration": "5 years"}}
]
Cypher
Cypher设计的目的是一种人类查询语言,构造理念是基于英语单词以及灵巧的图解。Cypher是一个声明式的语言,它的关注点在于要从图中找回的内容是什么,而不关心怎么去做。它的许多关键字如LIKE
和ORDER BY
是受SQL的启发;模式匹配的表达式来自于SPARQL;正则表达式匹配的实现使用Scala programming language语言。
Cypher基本命令
CREATE
:创建顶点、边和属性。MATCH
:检索相关顶点、边和属性。RETURN
:返回查询结果。WHERE
:提供条件,过滤检索数据。REMOVE
:删除顶点和边的属性。SET
:添加或更新标签。
Cypher对象创建
创建顶点
CREATE (n1:导演:演员{名字:'周星驰', 性别:'男'}), (n2:演员{名字:'吴孟达', 性别:'男'})
创建边(有向边)
CREATE (n1)-[r:导演]->(n2)
创建路径(含多个顶点和边)
CREATE (n1)-[r1:导演]->(n2)-[r2:导演]->(n3)
Cypher检索
检索顶点
MATCH(n)
RETURN n
检索顶点(带条件)
MATCH(n:movie)
RETURN n
Cypher图匹配
MATCH (n1)-[:导演]->(n2:电影)
MATCH (n1)-[:出演]->(n2:电影)
RETURN n1.姓名, n2.名称
Cypher图导航
共同出演
MATCH (t:Person {姓名:'吴孟达'})-[:出演]->(m1)<-[:出演]-(coActors),(coActors)-[:出演]->(m2)<-[:出演]-(co_co_Actors)
WHERE NOT (t)-[:出演]->()<-[:出演]-(co_co_Actors)
AND t<>co_co_Actors
RETURN co_co_Actors.姓名
可变数量的关系->节点:判断顶点3到顶点2或4之间是否存在边标签为KNOWS且长度不超过3的路径,如果存在则返回相应路径的起点和终点。
MATCH (a) WHERE id(a)=3
MATCH (x) WHERE id(x) IN [2,4]
MATCH a-[:KNOWS*1..3]->x
RETURN a, x
最短路径: shortestPath函数找出一条两个节点间的最短路径
例:找出两点1和2之间的一条最短路径,且搜索的最大关系长度为15
MATCH (s) WHERE id(s) = 1
MATCH (e) WHERE id(e) = 2
MATCH p = shortestPath( (s)-[*..15]->(e))
RETURN pMATCH (s) WHERE id(s) = 1
MATCH (e) WHERE id(e) = 2
MATCH p = allShortestPaths( s-[*..15]->e )
RETURN p
Cypher图与关系复杂操作
聚合(Aggregation)
MATCH (n) WHERE id(n) = 2
MATCH (n)-->(x)
RETURN count(x)
With从句
WITH 决定传入下一阶段的数据
MATCH (n:Person)-[r:ACTED_IN]->(o:Movie)
WITH o, count(r) as count_r
WHERE count_r > 8
RETURN o
Cypher图更新
图结构更新
在已有节点基础上增加边
MATCH (n1:演员:导演 {姓名:'周星驰'})
MATCH (n2:电影{名称:功夫})
CREATE (n1)-[E1:导演]-> (n2)
删除顶点以及和顶点相连的边
MATCH (n:演员:导演{姓名:'张三'})
DETACH DELETE n
删除边
MATCH (n:演员:导演{姓名:'张三'})-[r:导演]->()
DELETE r
图内容更新
添加标签
MATCH (n:导演:演员{姓名:'张三'})
SET n:编剧
删除标签
MATCH (n:导演:演员{姓名:'张三'})
REMOVE n:编剧
添加属性 /重置属性
MATCH (n:导演:演员{姓名:'张三'})
SET n.国籍='中国', 出生年月='1962-6-22'
删除属性
MATCH (n:导演:演员{姓名:'张三'})
SET n.国籍=NULL
相关文章:

图数据库 Cypher语言
图数据库 属性图 属性图(Property Graph)概述 属性图是一种广泛用于建模关系数据的图数据结构,它将**顶点(节点)和边(关系)**进行结构化存储,并为它们附加属性以提供丰富的语义信…...

阿里云oss转发上线-实现不出网钓鱼
本地实现阿里云oss转发上线,全部代码在文末,代码存在冗余 实战环境 被钓鱼机器不出网只可访问内部网络包含集团oss 实战思路 若将我们的shellcode文件上传到集团oss上仍无法上线,那么就利用oss做中转使用本地转发进行上线,先发送…...

Spring Boot 3.4.0 发行:革新与突破的里程碑
🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/literature?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,…...
【网络安全】
黑客入侵 什么是黑客入侵? “黑客”是一个外来词,是英语单词hacker的中文音译。最初,“黑客”只是一个褒义词,指的是那些尽力挖掘计算机程序最大潜力的点脑精英,他们讨论软件黑客的技巧和态度,以及共享文化…...

在SQLyog中导入和导出数据库
导入 假如我要导入一个xxx.sql,我就先创建一个叫做xxx的数据库。 然后右键点击导入、执行SQL脚本 选择要导入的数据库文件的位置,点击执行即可 注意: 导入之后记得刷新一下导出 选择你要导出的数据库 右键选择:备份/导出、…...

RabbitMQ简单应用
概念 RabbitMQ 是一种流行的开源消息代理(Message Broker)软件,它实现了高级消息队列协议(AMQP - Advanced Message Queuing Protocol)。RabbitMQ 通过高效的消息传递机制,主要应用于分布式系统中解耦应用…...

使用LUKS对Linux磁盘进行加密
前言 本实验用于日常学习用,如需对存有重要数据的磁盘进行操作,请做好数据备份工作。 此实验只是使用LUKS工具的冰山一角,后续还会有更多功能等待探索。 LUKS(Linux Unified Key Setup)是Linux系统中用于磁盘加密的一…...

戴尔电脑安装centos7系统遇到的问题
1,找不到启动盘(Operation System Loader signature found in SecureBoot exclusion database(‘dbx’).All bootable devices failed secure Boot Verification) 关闭 Secure Boot(推荐): 进入 BIOS/UEFI…...

3.4.SynchronousMethodHandler组件之ResponseHandler
前言 feign发送完请求后, 拿到返回结果, 那么这个返回结果肯定是需要经过框架进一步处理然后再返回到调用者的, 其中ResponseHandler就是用来处理这个返回结果的, 这也是符合正常思维的处理方式, 例如springmvc部分在调用在controller端点前后都会增加扩展点。 从图中可以看得…...

Linux 下进程的状态
操作系统中常见进程状态 在操作系统中有六种常见进程状态: 新建状态: 进程正在被创建. 此时操作系统会为进程分配资源, 如: 内存空间等, 进行初始化就绪状态: 进程已经准备好运行了, 只需要等待被调度, 获取 CPU 资源就可以执行了, 操作系统中可能同时存在多个进程处于就绪状…...

【计算机网络】核心部分复习
目录 交换机 v.s. 路由器OSI七层更实用的TCP/IP四层TCPUDP 交换机 v.s. 路由器 交换机-MAC地址 链接设备和设备 路由器- IP地址 链接局域网和局域网 OSI七层 物理层:传输设备。原始电信号比特流。数据链路层:代表是交换机。物理地址寻址,交…...
Spring Boot开发实战:从入门到构建高效应用
Spring Boot 是 Java 开发者构建微服务、Web 应用和后端服务的首选框架之一。其凭借开箱即用的特性、大量的自动化配置和灵活的扩展性,极大简化了开发流程。本文将以实战为核心,从基础到高级,全面探讨 Spring Boot 的应用开发。 一、Spring B…...

pyshark安装使用,ubuntu:20.04
1.容器创建 命令 docker run -d --name pyshark -v D:\src:/root/share ubuntu:2004 /bin/bash -c "while true;do sleep 1000;done" 用于创建并启动一个新的 Docker 容器。 docker run -d --name pyshark -v D:\src:/root/share ubuntu:2004 /bin/bash -c "w…...

基本功能实现
目录 1、环境搭建 2、按键控制灯&电机 LED 电机 垂直按键(机械按键) 3、串口调试功能 4、定时器延时和定时器中断 5、振动强弱调节 6、万年历 7、五方向按键 1、原理及分析 2、程序设计 1、环境搭建 需求: 搭建一个STM32F411CEU6工程 分析: C / C 宏定义栏…...
《那个让服务器“跳舞”的bug》
在程序的世界里,bug 就像隐藏在暗处的小怪兽,时不时跳出来捣乱。而在我的职业生涯中,有一个bug让我至今难忘,它不仅让项目差点夭折,还让我熬了无数个通宵。这个故事发生在一个风和日丽的下午,我们正在开发一…...
Python 网络爬虫进阶:动态网页爬取与反爬机制应对
在上一篇文章中,我们学习了如何使用 Python 构建一个基本的网络爬虫。然而,在实际应用中,许多网站使用动态内容加载或实现反爬机制来阻止未经授权的抓取。因此,本篇文章将深入探讨以下进阶主题: 如何处理动态加载的网…...
创建可直接用 root 用户 ssh 登陆的 Docker 镜像
有时候我们在 Mac OS X 或 Windows 平台下需要开发以 Linux 为运行时的应用,IDE 或可直接使用 Docker 容器,或 SSH 远程连接。本地命令行下操作虽然可以用 docker exec 连接正在运行的容器,但 IDE 远程连接的话 SSH 总是一种较为通用的连接方…...
wordpress 中添加图片放大功能
功能描述 使用 Fancybox 实现图片放大和灯箱效果。自动为文章内容中的图片添加链接,使其支持 Fancybox。修改了 header.php 和 footer.php 以引入必要的 CSS 和 JS 文件。在 functions.php 中通过过滤器自动为图片添加 data-fancybox 属性。 最终代码 1. 修改 hea…...

数据结构 (7)线性表的链式存储
前言 线性表是一种基本的数据结构,用于存储线性序列的元素。线性表的存储方式主要有两种:顺序存储和链式存储。链式存储,即链表,是一种非常灵活和高效的存储方式,特别适用于需要频繁插入和删除操作的场景。 链表的基本…...

库的操作.
创建、删除数据库 创建语法: CREATE DATABASE [IF NOT EXISTS] db_name[ ]是可选项,IF NOT EXISTS 是表明如果不存在才能创建数据库 //查看数据库,假设7行 show databases; //创建数据库 --- 本质在Linux创建一个目录 create database databa…...
vscode里如何用git
打开vs终端执行如下: 1 初始化 Git 仓库(如果尚未初始化) git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...

基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真
目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销,平衡网络负载,延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...

盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来
一、破局:PCB行业的时代之问 在数字经济蓬勃发展的浪潮中,PCB(印制电路板)作为 “电子产品之母”,其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透,PCB行业面临着前所未有的挑战与机遇。产品迭代…...

基于Flask实现的医疗保险欺诈识别监测模型
基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施,由雇主和个人按一定比例缴纳保险费,建立社会医疗保险基金,支付雇员医疗费用的一种医疗保险制度, 它是促进社会文明和进步的…...

理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端
🌟 什么是 MCP? 模型控制协议 (MCP) 是一种创新的协议,旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议,它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...

转转集团旗下首家二手多品类循环仓店“超级转转”开业
6月9日,国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解,“超级…...
基于数字孪生的水厂可视化平台建设:架构与实践
分享大纲: 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年,数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段,基于数字孪生的水厂可视化平台的…...

高等数学(下)题型笔记(八)空间解析几何与向量代数
目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...

MySQL 8.0 OCP 英文题库解析(十三)
Oracle 为庆祝 MySQL 30 周年,截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始,将英文题库免费公布出来,并进行解析,帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...

HarmonyOS运动开发:如何用mpchart绘制运动配速图表
##鸿蒙核心技术##运动开发##Sensor Service Kit(传感器服务)# 前言 在运动类应用中,运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据,如配速、距离、卡路里消耗等,用户可以更清晰…...