知识图谱之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博客

相关内容

热门资讯

中证A500ETF摩根(560... 8月22日,截止午间收盘,中证A500ETF摩根(560530)涨1.19%,报1.106元,成交额...
A500ETF易方达(1593... 8月22日,截止午间收盘,A500ETF易方达(159361)涨1.28%,报1.104元,成交额1...
何小鹏斥资约2.5亿港元增持小... 每经记者|孙磊    每经编辑|裴健如 8月21日晚间,小鹏汽车发布公告称,公司联...
中证500ETF基金(1593... 8月22日,截止午间收盘,中证500ETF基金(159337)涨0.94%,报1.509元,成交额2...
中证A500ETF华安(159... 8月22日,截止午间收盘,中证A500ETF华安(159359)涨1.15%,报1.139元,成交额...
科创AIETF(588790)... 8月22日,截止午间收盘,科创AIETF(588790)涨4.83%,报0.760元,成交额6.98...
创业板50ETF嘉实(1593... 8月22日,截止午间收盘,创业板50ETF嘉实(159373)涨2.61%,报1.296元,成交额1...
港股异动丨航空股大幅走低 中国... 港股航空股大幅下跌,其中,中国国航跌近7%表现最弱,中国东方航空跌近5%,中国南方航空跌超3%,美兰...
电网设备ETF(159326)... 8月22日,截止午间收盘,电网设备ETF(159326)跌0.25%,报1.198元,成交额409....
红利ETF国企(530880)... 8月22日,截止午间收盘,红利ETF国企(530880)跌0.67%,报1.034元,成交额29.0...