在neo4j中导入csv文件并构建知识图谱

发布时间:2024-12-27 16:59

×

本文csv文件数据来源于openKG中达观的开源知识图谱数据。

从开源社区中下载下来的数据文件还是json,先用python把json文件转为csv文件。

import csv

import json

with open('entities.json','r',encoding='utf-8') as fp:

    data=json.load(fp,strict=False)

csv_file = open('entities.csv', 'a', newline='', encoding='utf-8')  # 实体文件保存位置

writer = csv.writer(csv_file)

writer.writerow(['entity:id', 'name', 'label'])

# print(data)

for da in data:

  for i in range(len(data[da])):

    csv_file = open('entities.csv', 'a', newline='', encoding='utf-8')  # 实体文件保存位置

    writer = csv.writer(csv_file)

    num=0

    writer.writerow(['e'+str(num+1),data[da][i],da])

    num+=1

导入之后在neo4j中使用命令

导入csv到neo4j并创建节点

load csv from "file:///entities.csv" as line

create(:entity{id:line[0],name:line[1],label:line[2]})

load csv from "file:///relationships.csv" as line

create(:relationship{head:line[0],relationship:line[1],end:line[2]})

load csv from "file:///attributes.csv" as line

create(:attribute{attrname:line[0],from:line[1],to:line[2]})

导入成功之后的部分节点,这里以entitiy为例:

注:其他两个表attributes和relationships操作同理

创建关系

使用新节点创建关系:

举例:

CREATE (n:entity{name:'郑树森'})-[r:夫妻]->(m:entity{name:'李兰娟'}) return type(r)

使用已知节点创建带属性的关系

match (n:entity{name:'药明生物'}),(m:entity{name:'药明海德'}) create (n)-[r:`同行`{relation:'同行'}]->(m)return r

删除关系

match(n:relationship{end:'药明生物'})<-[r]-(m) delete r

用已知节点构建关系:

把entity根据relationship连接起来

MATCH (a:entity),(b:entity),(c:relationship)

WHERE a.name = c.head AND b.name = c.end and c.relationship='采用'

CREATE (a)-[r:采用] -> (b)

给以有节点添加新属性

match(n:entity{label:'文章'}) set n.date=null return n

match(n:entity{label:'机构'}) set n.全称=null,n.英文名=null return n

match(n:entity{label:'研报'}) set n.发布时间=null,n.评级=null,n.上次评级=null return n

把文章类的实体节点与属性集和发布时间连接

match(a:entity),(b:attribute) where a.label='文章' and a.name=b.attrname set a.date=b.to return a

把机构类的实体节点与属性集和发布时间连接

match(a:entity),(b:attribute) where a.label='机构' and a.name=b.attrname and b.from='全称' set a.全称=b.to return a

把研报类的实体节点与属性集和发布时间连接

match(a:entity),(b:attribute) where a.label='研报' and a.name=b.attrname and b.from='发布时间' set a.发布时间=b.to return a

match(a:entity),(b:attribute) where a.label='研报' and a.name=b.attrname and b.from='评级' set a.评级=b.to return a

match(a:entity),(b:attribute) where a.label='研报' and a.name=b.attrname and b.from='上次评级' set a.上次评级=b.to return a

match(a:entity),(b:attribute) where a.label='研报' and a.name=b.attrname and b.from='上次评级' set a.上次评级=b.to return a

查看原文

×

网址:在neo4j中导入csv文件并构建知识图谱 https://mxgxt.com/news/view/535541

相关内容

利用图数据库neo4j搭建娱乐圈知识图谱
Neo4j实战应用构建明星关系图谱
利用python构建知识图谱,在neo4j里显示不了关系,如何解决?
Neo4j在构建掘金人物关系图中的应用
什么是知识图谱(KG)?
知识图谱
Neo4j:图数据库的引领者及其应用场景探索
知识图谱软件
水滴上线CONF医疗知识图谱,构建健康保障数据中台
react前端关系图谱实现

随便看看