知识图谱之py2neo
py2neo介绍
介绍
Py2neo是一个客户端库和工具包,用于从Python应用程序和命令行使用Neo4j(Neo4j Graph Data Platform | Graph Database Management System)。该库同时支持 Bolt 和 HTTP,并提供高级 API、OGM、管理工具、交互式控制台、Pygments 的 Cypher 词法分析器以及许多其他功能。
安装
pip install py2neo
注:Neo4j也需要安装,地址https://neo4j.com/
py2neo基本使用
启动Neo4j
连接代码
from py2neo import Graph, Node, Relationshipgraph = Graph("http://localhost:7474//browser", name='neo4j', auth=("neo4j", "12345678"))
print(graph.run("show databases"))
基于xsls文件的demo
demo效果
xls文件内容
sheet 结构
"关系"sheet内容如下
id |
from |
to |
type |
1 |
令狐冲 |
宁中则 |
师娘 |
2 |
仪琳 |
令狐冲 |
倾慕 |
3 |
任盈盈 |
令狐冲 |
爱慕 |
4 |
令狐冲 |
岳林珊 |
小师妹 |
5 |
岳林珊 |
岳不群 |
父亲 |
6 |
任盈盈 |
任我行 |
父亲 |
7 |
岳不群 |
宁中则 |
夫妻 |
#8 |
林平之 |
岳林珊 |
夫妻 |
下面的表格分别对应"恒山派"、"华山派"、"日月教"sheet中的内容()
id |
title |
1 |
令狐冲 |
2 |
仪清 |
3 |
仪和 |
4 |
仪琳 |
id |
title |
1 |
岳不群 |
2 |
宁中则 |
3 |
岳林珊 |
4 |
林平之 |
id |
title |
1 |
任我行 |
2 |
任盈盈 |
3 |
向问天 |
demo依赖
pip install pandas
pip install openpyxl
Neo4j和py2neo也是需要的。
demo主要代码块
import osimport pandas as pd
from py2neo import Graph, Node, RelationshipsheetNameList = [{'sheet':'恒山派', 'type':'Node'},{'sheet':'华山派', 'type':'Node'},{'sheet':'日月教', 'type':'Node'},{'sheet':'关系', 'type':'Relationship'},
]
def __init__(self, filename=None):self.filename = filenameself.nodeList = []self.relationshipList = []self._loadfile()self._buildGraph()
def _loadfile(self):if not os.path.exists(self.filename):print('_loadfile', 'file not exist')return Falsefor sheetName in sheetNameList:sheetData = pd.read_excel(self.filename, index_col=None, comment='#', sheet_name=sheetName['sheet'])if sheetName['type'] == 'Node':keys=[]for index, row in sheetData.iterrows():if not row['title']:continuekeys.append(row['title'])keyval = dict(zip(keys, keys))node = Node(sheetName['sheet'], name=sheetName['sheet'], **keyval)self.nodeList.append(node)for index, row in sheetData.iterrows():if not row['title']:continuesubNode = Node(sheetName['sheet'], name=row['title'])self.nodeList.append(subNode)rel = Relationship(node, '属性', subNode)self.relationshipList.append(rel)elif sheetName['type'] == 'Relationship':startNode = NoneendNode = Nonefor index, row in sheetData.iterrows():if not row['from'] or not row['to']:continuefor node in self.nodeList:if node['name'] == row['from']:startNode = nodeelif node['name'] == row['to']:endNode = nodeelse:passrel = Relationship(startNode, row['type'], endNode)self.relationshipList.append(rel)else:pass
def _buildGraph(self):graph = Graph("http://localhost:7474//browser", name='neo4j', auth=("neo4j", "12345678"))graph.delete_all()for node in self.nodeList:graph.create(node)for rel in self.relationshipList:graph.merge(rel)passgraph.begin()
参考
The Py2neo Handbook — py2neo 2021.1
Python创建知识图谱_python知识图谱 md_趋吉避凶的博客-CSDN博客
Python neo4j建立知识图谱,药品知识图谱,neo4j知识图谱,知识图谱的建立过程,智能用药知识图谱,智能问诊必备知识图谱_医学小达人的博客-CSDN博客
Neo4j简介及Py2Neo的用法_neo4j py2neo_yayun_kg的博客-CSDN博客
pandas处理Excel基本方法_<编程路上>的博客-CSDN博客
知识图谱之py2neo相关推荐
- [知识图谱]利用py2neo从Neo4j数据库获取数据
1 # -*- coding: utf-8 -*- 2 3 from py2neo import Graph 4 import json 5 import re 6 7 8 class Neo4jTo ...
- 知识图谱构建:py2neo的实体关系以及节点显示图片
简单示例 py2neo 节点可以显示图片.你可以将图片作为节点的属性存储在 Neo4j 数据库中,然后使用 py2neo 读取这些属性并在应用程序中显示.举个例子,你可以这样创建一个节点: from ...
- 【知识图谱】py2neo基本操作(2021-11-11)
py2neo基本操作(2021-11-11) 1. 连接Neo4j数据库 2. 节点的建立 3. 节点间关系的建立 4. 删除节点 5. 节点/关系的属性赋值以及属性值的更新 6. 通过属性值来查找节 ...
- 【知识图谱】Py2neo操作Neo4j使用教程
Py2neo操作Neo4j使用教程 1. Py2neo 安装 2. 连接 Neo4j 3. 数据对象 Object 3.1 Node 3.2 Relationship 3.3 Subgraphs 4. ...
- “基于医疗知识图谱的问答系统”代码解析(一)
"基于医疗知识图谱的问答系统"代码解析(一) build_medicalgraph.py -建立医疗知识图谱的代码解析 "基于医疗知识图谱的问答系统"代码解析( ...
- 基于Python实现的医疗知识图谱的知识问答系统
资源下载地址:https://download.csdn.net/download/sheziqiong/85942554 资源下载地址:https://download.csdn.net/downl ...
- 四、py2neo 使用及构建图谱(知识图谱构建射雕人物关系)
Neo4j 为多种语言提供了 API 接口,如 java,python,C#,RUBY,.NET等.本文首先介绍用 python 操作 Neo4j. 首先安装好py2neo库 sudo pip3 in ...
- 知识图谱实战应用11-基于py2neo构建一个简单的问答功能
大家好,我是微学AI,今天给大家介绍一下知识图谱实战应用10-基于py2neo构建一个简单的问答功能,利用知识图谱来实现智能的问答功能.知识图谱是一种用于表示实体之间关系的图形化模型,它是人工智能和自 ...
- NLP模型笔记2022-31:neo4j+py2neo构建图GCN卷积神经网络数据集知识图谱(Karate俱乐部)
[只展示图谱,下一篇文章给出GCN模型构建方法,将包含训练与预测两部分] 目录 往前文章链接 1.数据集 2.实现源码 3.图谱生成结果 参考资料 往前文章链接 NLP模型笔记2022-30:neo4 ...
最新文章
- orgman set触发的pricing set创建逻辑
- golang http Specifically check for timeout error
- RabbitMQ入门学习系列(四) 发布订阅模式
- ASP.NET Core Api网关Ocelot的中文文档
- HTML5 footer元素
- gettid()和pthread_self()的区别
- 造成ORA-01843 无效的月份 的一些原因
- PHP curl传输文件的版本兼容性
- 数据库系统概论第五版课后习题答案王珊
- oneno浏览器插件_Send to OneNote 1.2.13
- 串口服务器与串口协议转换器,串口服务器和串口转以太网模块有什么不同(示例代码)...
- 新形势下国家医疗保障局信息化建设注意点(二)标准先行
- 自学web前端课程大纲分享,适合所有人学习
- vue设置LED字体
- NOIP2016普及组复赛全国一等奖名单及排名(1~745名)
- Lumen 中对 Dingo API 异常接管并自定义响应结果
- rabbitMQ的使用概述及使用rabbitMQ进行短信验证码发送案例
- layui点击表格图片放大
- 微信小程序 - 查看输入值的长度
- STM8L101时钟管理
热门文章
- GitHub 热榜:轻量级无 Agent 的自动化运维平台!
- 【ESP 保姆级教程】玩转巴法云篇④ —— TCP创客云,同步时间,OLED时钟
- 深入理解电容器的等效串联电阻(ESR),多个小电容并联取代大电解电容的作用
- 微信小程序商机_微信小程序可能有哪些创业机会?
- 5.5直流稳压电源电路
- student(sid,sname,sage,ssex) 学生表course(cid,cname,tid) 课程表sc(sid,cid,score) 成绩表teacher(tid,Tnam
- atos阿托斯电磁方向阀DLOH-3C-U 21
- 计算机毕业设计Java网上图书销售系统(源码+系统+mysql数据库+Lw文档)
- 分享 | 如何在不同工艺间进行设计的移植转换
- 一个老程序员的工作经历