[知识图谱] Neo4J实战骚操作--用图数据库找到自己的远房亲戚 [手动捂脸]

本文主要是介绍[知识图谱] Neo4J实战骚操作--用图数据库找到自己的远房亲戚 [手动捂脸],希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

摘要

NLP应用中一个很重要的内容是知识图谱,而图数据库是构建知识图谱的很好选择,所以,耍起


基本语句


Step 1 :创建实体
(1) CREATE (:Person {name:'TangBrother1', gender:'Male'}) 

Step 2 : 查询实体
(2) MATCH (p:Person) RETURN p  

然后可以看到我们刚刚创建的Person实体TangBrother:
这里写图片描述


Step 3 :创建关系

首先,我们加入Uncle1 作为TangBrother1的父亲

(3) CREATE (:Person {name:'Uncle1', gender:'Male'})

然后,我们通过MATCH来得到这两个实体,并新建关系ChildOf

(4)
MATCH (u1:Person {name:'Uncle1'}), (b1:Person {name:'TangBrother1'}) 
CREATE (b1)-[:ChildOf]->(u1)

我们用命名(2)来查看一下当前的Person关系图,发现TangBrother1已经是Uncle1的Child了:
这里写图片描述


Step 4 :补充家庭关系

首先,创建我的家庭,包含我、我爹和我娘:

(5)
CREATE (:Person {name:'Me', gender:"Male"}), (:Person {name:'Father', gender:"Male"}), (:Person {name:'Mother', gender:"Female"})

创建我们家的关系:

(6)
MATCH (me:Person {name:'Me', gender:"Male"}), (dad:Person {name:'Father', gender:"Male"}), (mom:Person {name:'Mother', gender:"Female"}) CREATE (me)-[:ChildOf]->(dad), (me)-[:ChildOf]->(mom)

然后添加小姨妈一家,创建实体以及创建关系可以同时进行:

(7)
CREATE (aunt:Person {name:'Aunt1', gender:"Female"}), (brother:Person {name:'BiaoBrother1', gender:"Male"}), (brother)-[:ChildOf]->(aunt)

现在就有了三个家庭:我家,我叔叔家,和我小姨妈家
这里写图片描述

最后,将叔叔、小姨妈和我爹妈联系起来

(8)
MATCH (dad:Person {name:'Father'}), (uncle:Person {name:'Uncle1'}) CREATE (dad)-[:BrotherOf]->(uncle), (uncle)-[:BrotherOf]->(dad)MATCH (mom:Person {name:'Mother'}), (aunt:Person {name:'Aunt1'}) CREATE (mom)-[:SisterOf]->(aunt), (aunt)-[:SisterOf]->(mom)

Step 5 :查找亲戚

我想要查找的远房兄弟姐妹,首先要做的就是找父母的兄弟姐妹,然后再找父母的兄弟姐妹的孩纸,有了这个思路,问题就很简单了

查找父母的兄弟姐妹,并查找他们的孩子:

(9)
MATCH (dad:Person {name:'Father'}), (mom:Person {name:'Mother'}), (p1:Person), (p2:Person) WHERE 
((p1)-[:BrotherOf]-(dad) or (p1)-[:SisterOf]-(dad) or(p1)-[:BrotherOf]-(mom) or (p1)-[:SisterOf]-(mom)) 
AND 
((p2)-[:ChildOf]-(p1) or (p2)-[:ChildOf]-(p1)) RETURN p2

得到最终结果:
这里写图片描述

完美!


总结

Neo4J确实好用,但是刚开始的时候还是遇到了很多坑

算是为知识图谱打基础了

这篇关于[知识图谱] Neo4J实战骚操作--用图数据库找到自己的远房亲戚 [手动捂脸]的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/687075

相关文章

SpringBoot中四种AOP实战应用场景及代码实现

《SpringBoot中四种AOP实战应用场景及代码实现》面向切面编程(AOP)是Spring框架的核心功能之一,它通过预编译和运行期动态代理实现程序功能的统一维护,在SpringBoot应用中,AO... 目录引言场景一:日志记录与性能监控业务需求实现方案使用示例扩展:MDC实现请求跟踪场景二:权限控制与

Git可视化管理工具(SourceTree)使用操作大全经典

《Git可视化管理工具(SourceTree)使用操作大全经典》本文详细介绍了SourceTree作为Git可视化管理工具的常用操作,包括连接远程仓库、添加SSH密钥、克隆仓库、设置默认项目目录、代码... 目录前言:连接Gitee or github,获取代码:在SourceTree中添加SSH密钥:Cl

MySQL数据库约束深入详解

《MySQL数据库约束深入详解》:本文主要介绍MySQL数据库约束,在MySQL数据库中,约束是用来限制进入表中的数据类型的一种技术,通过使用约束,可以确保数据的准确性、完整性和可靠性,需要的朋友... 目录一、数据库约束的概念二、约束类型三、NOT NULL 非空约束四、DEFAULT 默认值约束五、UN

使用Java将各种数据写入Excel表格的操作示例

《使用Java将各种数据写入Excel表格的操作示例》在数据处理与管理领域,Excel凭借其强大的功能和广泛的应用,成为了数据存储与展示的重要工具,在Java开发过程中,常常需要将不同类型的数据,本文... 目录前言安装免费Java库1. 写入文本、或数值到 Excel单元格2. 写入数组到 Excel表格

Python中pywin32 常用窗口操作的实现

《Python中pywin32常用窗口操作的实现》本文主要介绍了Python中pywin32常用窗口操作的实现,pywin32主要的作用是供Python开发者快速调用WindowsAPI的一个... 目录获取窗口句柄获取最前端窗口句柄获取指定坐标处的窗口根据窗口的完整标题匹配获取句柄根据窗口的类别匹配获取句

Python位移操作和位运算的实现示例

《Python位移操作和位运算的实现示例》本文主要介绍了Python位移操作和位运算的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1. 位移操作1.1 左移操作 (<<)1.2 右移操作 (>>)注意事项:2. 位运算2.1

Python ZIP文件操作技巧详解

《PythonZIP文件操作技巧详解》在数据处理和系统开发中,ZIP文件操作是开发者必须掌握的核心技能,Python标准库提供的zipfile模块以简洁的API和跨平台特性,成为处理ZIP文件的首选... 目录一、ZIP文件操作基础三板斧1.1 创建压缩包1.2 解压操作1.3 文件遍历与信息获取二、进阶技

一文详解Java异常处理你都了解哪些知识

《一文详解Java异常处理你都了解哪些知识》:本文主要介绍Java异常处理的相关资料,包括异常的分类、捕获和处理异常的语法、常见的异常类型以及自定义异常的实现,文中通过代码介绍的非常详细,需要的朋... 目录前言一、什么是异常二、异常的分类2.1 受检异常2.2 非受检异常三、异常处理的语法3.1 try-

Java中字符串转时间与时间转字符串的操作详解

《Java中字符串转时间与时间转字符串的操作详解》Java的java.time包提供了强大的日期和时间处理功能,通过DateTimeFormatter可以轻松地在日期时间对象和字符串之间进行转换,下面... 目录一、字符串转时间(一)使用预定义格式(二)自定义格式二、时间转字符串(一)使用预定义格式(二)自

Maven如何手动安装依赖到本地仓库

《Maven如何手动安装依赖到本地仓库》:本文主要介绍Maven如何手动安装依赖到本地仓库问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、下载依赖二、安装 JAR 文件到本地仓库三、验证安装四、在项目中使用该依赖1、注意事项2、额外提示总结一、下载依赖登