知识图谱——Python操作Neo4j导入CSV文件建立图谱

2023-11-07

首先Neo4j是图数据库,最重要的就是结点和边的关系,每两个结点和边都可以看成三元组,主谓宾的关系,当然结点也是可以添加属性的,但是首先要有结点,在添加属性。本片文章就是用简单的方式一次性给大家讲解清楚。

简单起见,我们用西游记师徒四人为例子(手动写的,为了理解),来体现出本章要讲的操作

一、先把人物和关系罗列出来

注意,要将文件保存为.csv格式

 ps:知识图谱的建立,数据来源主要分为三种,一种是非结构化数据(文本)、半结构化数据(可以爬虫技术在一些网站上获取),结构化数据(关系型数据)。

二、要建立结点,只有有了结点才会有关系,和之后的属性等。代码如下:

from py2neo import Graph, Node, Relationship
import csv

fr= open("G:\四人关系.csv", mode="r", encoding="gbk") # 如果路径是在工程目录下直接下相对路径,如果不在就写绝对路径
lst = []
node = []
for row in csv.reader(fr):
    lst_ = []
    lst_.append(row[0])
    lst_.append(row[1])
    lst_.append(row[2])
    lst_.append(row[3])
    lst_.append(row[4])
    lst.append(lst_)
    node.append(row[0]+' '+row[1])
    node.append(row[3]+' '+row[4])
# print(lst)
graph = Graph('bolt://localhost:7687',name="neo4j",password="******")
node = set(node) # 消除重复结点
#  建立结点:
for item in node:
    shiti,label = item.split()
    cypher_ = "CREATE (:" + label + " {name:'" + shiti + "'})     "
    graph.run(cypher_)
# 建立关系 :
for item in lst:
    cypher_ = "MATCH  (a:" + item[1] + "),(b:" + item[4] + ") WHERE a.name = '" + item[0] + "' AND b.name = '" + item[3] + "' CREATE (a)-[r:" + item[2] + "]->(b)"
    graph.run(cypher_)

建立是先根据第1,2列、4,5列建立结点后,才根据第3列建立的关系,运行后,师徒四人的图谱就建立好了,效果如下图:

 三、增加属性

和以上操作一样,现在EXCEL上写好属性,如图(只写了一点),自己做的时候把自己要的属性像这样写清楚:

代码和上面的一样,只是换了cypher语句:

from py2neo import Graph, Node, Relationship
import csv

fr= open("属性.csv", mode="r", encoding="gbk")
lst = []
node = []
for row in csv.reader(fr):
    lst_ = []
    lst_.append(row[0])
    lst_.append(row[1])
    lst_.append(row[2])
    lst_.append(row[3])
    lst.append(lst_)
    node.append(row[0]+' '+row[1])
    node.append(row[2]+' '+row[3])
graph = Graph('bolt://localhost:7687',name="neo4j",password="******")
for item in lst:
    cypher_ = "MATCH (a:" + item[1] + "{name:'" + item[0] + "'}) SET a." + item[2] + " = '" + item[3] +"'"
    graph.run(cypher_)

运行之后,点击结点就可以看到属性的信息啦。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

知识图谱——Python操作Neo4j导入CSV文件建立图谱 的相关文章

  • 找不到 Spring MVC Neo4jConfiguration 类

    我正在学习 Spring MVC 我想扩展 Neo4jConfiguration 类 但它不可用 我导入了以下依赖项
  • Titan 顶点中心索引与 Neo4j 标签

    在接近这个问题时 我试图对这两种技术进行比较 我想知道你们中是否有人已经有处理其中任何一种或两种技术的经验 我主要对处理类似用例时的性能数字感兴趣 这两个概念之间的区别是全局索引和本地索引之间的区别 据我了解 Neo4j顶点标签允许您通过顶
  • Neo4j 3.0 中的存储过程

    我在 Windows 上使用 neo4j 3 0 并尝试使用存储过程新功能 我已经构建了 apoc jargithub 来源 https github com neo4j contrib neo4j apoc procedures 该 ja
  • 对于以双向关系连接的节点,cypher 返回两次

    我有 2 个节点 A B 通过 FRIEND 连接 当我运行以下命令时 start n node match n r FRIEND b return n name b name 它返回 2 行 A B 和 B A 我想知道如何让它只返回一条
  • Neo4j 中的自动增量

    有没有办法像在 Neo4j 的 MySQL 中一样设置 auto increment 例如 当我使用 GraphDatabaseService 对象创建节点时 我希望节点以 1000000000 等数字开头 非常感谢 看看这个答案 我可以在
  • 如何从 py2neo 获取自动节点 ID?

    我正在使用 py2neo 3 1 2 版本和 Neo4j 3 2 0 我有一个问题 在 Neo4J 的 Web 界面上 我可以运行以下查询来获取节点 id MATCH n Person RETURN ID n 我想知道 py2neo API
  • neo4j 在从 csv 导入期间指定数据类型

    有没有办法在导入时告诉neo4j值的类型 例如 neo4j 是否知道 2015 0104T10 33 44 是日期还是字符串 thanks Neo4j 使用 Java 原始类型 字符串或数组作为属性值 没有日期类型 所以 2015 0104
  • 使用 py2neo 将 python 连接到 neo4j 时出错

    我使用 py2neo 将以下 python 代码写入 neo4j from py2neo import Graph from py2neo import neo4j Node Relationship sgraph Graph alice
  • Neo4j:无法创建具有嵌套属性的节点

    我到处寻找 但找不到这个问题的答案 我需要创建一个节点Config它有一个带有 2 个键 值对的动态属性对象 例如 name and type 查询时 键应该最终为properties name and properties type 但我
  • Neo4j - 计算带有标签的节点

    我想要一个查询来计算数据集中有多少个节点具有每个标签 例如 标签A 100 标签B 200 我可以为每个单独的标签执行此操作 例如 MATCH n LabelA return count n 但是 我想在一个命令中为每个标签执行此操作 尝试
  • Neo4j.rb 创建独特的关系

    这是我的 Neo4j 活动节点 class User include Neo4j ActiveNode has many out following type following model class User end john User
  • 使用cypher删除neo4j中的所有节点和关系超出堆空间

    我一直在尝试按照 neo4j google 组和其他在线来源的建议运行此查询 开始 n 节点 匹配 n r 其中 ID n gt 0 删除n r 为了删除测试之间的所有节点和关系 当我从控制台执行此操作时 我用完了 java 堆空间 当我从
  • 如何使用 nosql 构建成就和徽章

    我目前有一个使用 mongodb 作为数据库的社交游戏应用程序 我的问题是 如果我想创建一个积分和徽章系统 有哪些建议 成就 徽章的业务逻辑可能会变得非常复杂并且非常临时 因此实时授予徽章似乎效率不高 我想象将跟踪的操作添加到队列中的某处
  • 带子图聚合的递归查询(任意深度)

    我问了一个问题earlier https stackoverflow com questions 28036055 recursive query with sub graph aggreagation关于沿着图表聚合数量 提供的两个答案效
  • 如何返回每个另一个节点属性的最大计数

    我需要计算一位作曲家的音乐作品每十年被演奏了多少次 然后只返回每十年演奏次数最多的一首作品 除了过滤除每十年最高计数之外的所有内容之外 该密码可以执行所有操作 match c Composer CREATED BY w Work lt 2
  • 同时运行 Gremlin-Server 和 NEO4J Server

    目前看来我们不能同时运行两者Neo4J服务器 and Gremlin服务器同时 有什么办法可以同时运行两者吗 NEO4J 正在运行 我尝试启动 Gremlin Server 然后出现以下错误 java lang RuntimeExcepti
  • Neo4j - 根据关系属性查找两个节点之间的最短路径

    我试图弄清楚是否有某种方法可以根据关系总和获得两个节点之间的最短距离 给出以下示例 neo4j 图像示例 https i stack imgur com fiJe1 png 上图代码 CREATE some point 1 Point ti
  • Cypher:从集合中提取唯一值

    I have MATCH x rels gt y RETURN extract r in rels r property as collected where collected是路径上所有关系的属性的集合 例如 null 4 null 4
  • with 子句做什么?新4j

    I don t understand what WITH clause do in Neo4j I read the The Neo4j Manual v2 2 2 http neo4j com docs stable query with
  • Neo4j:基于聚合函数过滤节点

    假设我有一个客户节点列表和每个客户下的订单列表 表示为与这些客户节点关联的订单节点 每个订单都有一个与其关联的成本数字属性 我想返回那些平均订单大于阈值的客户 这是一些无法运行的代码 说明了我想要的内容 MATCH n0 Customer

随机推荐

  • 【AOSP】Settings应用界面逻辑

    源码参考 AOSPXRef 现象效果 调试UI显示 Settings应用子界面Activity绝大部分都是SubSetting 通过dumpsys指令查看当前活动 adb shell dumpsys activity activities
  • python自动化_检测系统的空文件夹

    一 空文件夹的判断 1 os listdir 函数 2 权限得注意 二 统计检测消耗时间 1 引入datetime日期库 2 扫描开始start time 扫描结束end time 3 因为权限的原因 所以使用了try import os
  • Matlab中使用Mex时遇到的问题及解决方法

    在Matlab命令行使用mex命令时出现错误 error Building MFC application with MD d CRT dll version requires MFC shared dll version Please d
  • 中国姓氏大全(常见508个,罕见740个)

    1 比较靠谱的资料 资料来源 百度百科 中国姓氏 常见姓氏 508个 赵 钱 孙 李 周 吴 郑 王 冯 陈 褚 卫 蒋 沈 韩 杨 朱 秦 尤 许 何 吕 施 张 孔 曹 严 华 金 魏 陶 姜 戚 谢 邹 喻 柏 水 窦 章 云 苏 潘
  • xml报文编写以及解析

    封装电子保单回执报文 Document document org dom4j DocumentHelper createDocument document setXMLEncoding UTF 8 Element root document
  • ChatGPT“保姆级教程”——手把手教你1分钟快速制作思维导图(Markmap/Xmind+Markdown)

    目录 前言 使用ChatGPT生成markdown格式主题 Markmap Markdown 使用Markmap生成思维导图 Xmind Markdown 使用Xmind生成思维导图 建议 其它资料下载 前言 思维导图是一种强大的工具 它可
  • hdu 1003 最大连续子序列和及起始位置 && hdu 1087 最大上升子序列和

    hdu 1003 题意 求最大连续子序列和及起始位置 对于动态规划问题要找出其子问题 考虑到dp的无后效性 dp i 表示以i为结尾的最大值 当dp i 1 gt 0时 以i 1为值对以i为结尾的值有贡献 否则起始位置变为自己 动态地更新最
  • [从零开始学DeepFaceLab-6]: 使用-命令行八大操作步骤-第3步:从目标视频中提取图片

    目录 总体流程 步骤3 从目标视频中提取图片 3 0 目标视频文件和大小的选择 3 1 命令 3 cut video drop video on me bat 可选
  • 三大主流软件负载均衡器对比(LVS、Nginx、HAproxy)

    资料来自网络 做了部分的补充说明 LVS 1 抗负载能力强 性能高 能达到F5的60 对内存和CPU资源消耗比较低 2 工作在网络4层 通过VRRP协议 仅作代理之用 具体的流量是由linux内核来处理 因此没有流量的产生 3 稳定 可靠性
  • vue生命周期 —— 模板编译

    Vue 的 template 是如何编译成真正的 HTML 并做到双向绑定等等特殊功能的呢 在这张图中 我们可以看到 Vue 的模板编译是在 mount 的过程中进行的 在 mount 的时候执行了 compile 这个方法来将 templ
  • Linux 根目录满了 linux根目录扩容方法 详解!!!

    CentOS 7根目录扩容方法 最近公司测试服务器根目录满了 便有同事网上找了教程进行扩容 但是由于找的教程不够严谨 导致扩容失败 还丢失了一部分文件 所以这里详细说明一下方法 方法流程说明 1 查看系统存储空间 看一下 home做在卷已用
  • 【angular】项目实践-表格显示

    介绍 前端中经常用到的组件就是表格了 下面简单介绍下表格的显示 HTML文件 div class container style margin bottom 10px width 95 div class row div div
  • SpringBoot -- 使用logback记录日志

    Logback介绍 Logback是由log4j创始人设计的另一个开源日志组件 官方网站 http logback qos ch Logback的内核重写了 在一些关键执行路径上性能提升10倍以上 而且logback不仅性能提升了 初始化内
  • vue v-for循环中如何给部分元素添加事件和样式

    vue中给循环元素统一添加事件和样式很简单 下面看下单独给某个循环出来的元素添加事件和样式如何实现 demo vue
  • IPsec ×××基本实验

    IPsec 基本实验 一 实验拓扑 二 实验原理 IKE概述 用IPsec保护一个IP包之前 必须先建立一个安全联盟 SA SA可以手动创建或者动态建立 Internet密钥交换 IKE 用于动态建立SA IKE的精髓 通过一系列数据的交换
  • windows 服务器 部署java项目

    第一步 下载软件 只下载我这里需要的软件 如有不同请自行百度 链接 https pan baidu com s 1pAWffZZvKW2B9tj3YEuHeA pwd rps4 提取码 rps4 第二步 配置软件环境变量 配置并安装jdk
  • Jmeter系列-测试计划详细介绍(3)

    测试计划的作用 测试计划描述了 Jmeter 在执行时 一系列的步骤 一个完整的测试计划包含了一个或多个 线程组 逻辑控制器 采样器 监听器 定时器 断言和配置元素 Jmeter原件和组件的介绍 基本元件的介绍 多个类似功能组件的 容器 类
  • 浅谈Unity资源异步加载和Coroutine的使用

    为了节省内存 游戏的一些资源往往需要在运行时 runtime 动态加载 如果资源本身加载比较耗时 采用同步方法会产生卡顿现象 对此的解决方法通常采用多线程或者使用引擎本身自带的异步加载方法 在Unity开发中 由于一些方法 如Resourc
  • 微信小程序 audio 音频 组件

    完整微信小程序 Java后端 技术贴目录清单页面 必看 音频 1 6 0版本开始 该组件不再维护 建议使用能力更强的 wx createInnerAudioContext 接口 属性 类型 默认值 必填 说明 最低版本 id string
  • 知识图谱——Python操作Neo4j导入CSV文件建立图谱

    首先Neo4j是图数据库 最重要的就是结点和边的关系 每两个结点和边都可以看成三元组 主谓宾的关系 当然结点也是可以添加属性的 但是首先要有结点 在添加属性 本片文章就是用简单的方式一次性给大家讲解清楚 简单起见 我们用西游记师徒四人为例子