知识图谱之py2neo
创始人
2024-06-01 23:56:29
0

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博客

相关内容

热门资讯

暖心!“小哥专用卡”能歇脚、可... 转自:千龙网骑电动车送餐途中,不小心摔倒、擦伤手臂,到附近医院“遵小哥”专属窗口出示“遵小哥”暖心卡...
港股概念追踪|多数玻璃企业计划... 近日召开的中央财经委员会第六次会议进一步深化了“反内卷”工作部署,建材行业更多领域加入“反内卷”号召...
这种菜被称为“水中人参” 夏天... 莼菜有“水中人参”的美称夏季尤其推荐你食用有助于解暑热、除烦渴提高免疫力、减重对健康好处多多~1夏季...
比特币刷新历史新高 今日凌晨,比特币首次触及112000美元,刷新历史新高。比特币盘中涨幅最高达3%,今年迄今涨幅约为1...
特朗普政府裁员计划被放行 同这... 新华财经北京7月10日电 美国联邦最高法院8日撤销下级法院命令,允许特朗普政府推进削减联邦劳动力和解...
北京两机场暑运以来实现航班量旅... 转自:北京日报客户端记者昨天(7月9日)从北京首都机场和大兴机场了解到,暑运以来,两家机场实现航班量...
中国不断刷高“印象分”,靠的是... 7月8日,联合国人权理事会第59届会议通过“发展对享有所有人权的贡献”决议,这项决议由中国主提,42...
快手“留不住”周杰伦:账号或成...   文 | 《BUG》栏目 徐苑蕾  7月9日,华语乐坛天王周杰伦正式入驻抖音,账号名为“周同学”,...
2025数字经济论坛在廊坊举办 转自:河北新闻网河北日报讯(记者刘英)7月9日,2025数字经济论坛在廊坊市举办。本次论坛主题为“加...
六月居民消费价格指数同比由降转...   本报北京7月9日电  (记者刘志强)记者从国家统计局获悉:今年6月份,扩内需、促消费政策持续显效...