import os.path
from neo4j import GraphDatabase
import pandas as pd
import tqdm
class GraphDatabaseManager:
def __init__(self, uri, user, password):
self.uri = uri
self._user = user
self._password = password
self._driver = GraphDatabase.driver(self.uri, auth=(self._user, self._password))
def connect(self):
self._driver = GraphDatabase.driver(self.uri, auth=(self._user, self._password))
def close(self):
if self.driver is not None:
self.driver.close()
def execute_query(self, query, parameters=None):
with self.driver.session() as session:
return session.run(query, parameters)
def create_teacher(self):
csv_file_path = os.path.abspath("./import/shiti-teacher1.csv")
df = pd.read_csv(csv_file_path, encoding='utf-8')
df.fillna("暂无", inplace=True)
for index, row in df.iterrows():
teacherid = row['teacherid']
teachername = row['teachername']
Email = row['Email']
Gender = row['Gender']
Duty = row['Duty']
Nation = row['Nation']
Course = row['Course']
Direction = row['Direction']
achievement = row['achievement']
Requirement = row['Requirement']
Level = row['Level']
query1 = """
MERGE (p:Teacher {
teacherid: $teacherid,
teachername: $teachername,
Email: $Email,
Gender: $Gender,
Duty: $Duty,
Nation: $Nation,
Course: $Course,
Direction: $Direction,
achievement:$achievement,
Requirement:$Requirement,
Level:$Level
})
"""
parameters = {"teacherid":teacherid,"teachername":teachername,"Email":Email,"Gender":Gender,
"Duty":Duty,"Nation":Nation,"Course":Course,"Direction":Direction,"achievement":achievement,
"Requirement":Requirement,"Level":Level}
self.execute_query(query1,parameters)
def create_xueyuan(self):
csv_file_path = os.path.abspath("./import/xueyuan.csv")
df = pd.read_csv(csv_file_path, encoding='utf-8')
df.fillna("暂无", inplace=True)
for index, row in df.iterrows():
collegeid = row['collegeid']
collegename = row['collegename']
query2 = """
MERGE (p:College {
collegeid: $collegeid,
collegename: $collegename
})
"""
parameters = {"collegeid":collegeid,"collegename":collegename}
self.execute_query(query2,parameters)
def create_school(self):
csv_file_path = os.path.abspath("./import/xuexiao.csv")
df = pd.read_csv(csv_file_path, encoding='utf-8')
df.fillna("暂无", inplace=True)
for index, row in df.iterrows():
schoolid = row['schoolid']
schoolname = row['schoolname']
query3 = """
MERGE (p:School {
schoolid: $schoolid,
schoolname: $schoolname
})
"""
parameters = {"schoolid":schoolid,"schoolname":schoolname}
self.execute_query(query3,parameters)
def create_guanxi_xueyuan_laoshi(self):
csv_file_path = os.path.abspath("./import/guanxi.csv")
df = pd.read_csv(csv_file_path, encoding='utf-8')
df.fillna("暂无", inplace=True)
for index, row in df.iterrows():
teacherid = row['teacherid']
collegeid = row['collegeid']
guanxi = row['guanxi']
query4 = """
MATCH (from:Teacher {teacherid: $teacherid}), (to:College {collegeid: $collegeid})
MERGE (from)-[r:BelongTO {desc: $guanxi}]->(to)
"""
parameters = {"teacherid":teacherid,"collegeid":collegeid,"guanxi":guanxi}
self.execute_query(query4,parameters)
def create_guanxi_xueyuan_xuexiao(self):
csv_file_path = os.path.abspath("./import/guanxi1.csv")
df = pd.read_csv(csv_file_path, encoding='utf-8')
df.fillna("暂无", inplace=True)
for index, row in df.iterrows():
schoolid = row['schoolid']
collegeid = row['collegeid']
guanxi1 = row['guanxi1']
query5 = """
MATCH (from:School {schoolid: $schoolid}), (to:College {collegeid: $collegeid})
MERGE (from)-[r:Include {desc: $guanxi1}]->(to)
"""
parameters = {"schoolid":schoolid,"collegeid":collegeid,"guanxi1":guanxi1}
self.execute_query(query5,parameters)
# 示例用法
if __name__ == "__main__":
# 替换为您的 Neo4j 数据库的 URI、用户名和密码
neo4j_uri = "bolt://localhost:7687"
neo4j_user = "neo4j"
neo4j_password = "12345678"
# 创建 GraphDatabaseManager 实例
graph_db_manager = GraphDatabaseManager(neo4j_uri, neo4j_user, neo4j_password)
try:
# 连接到数据库
graph_db_manager.create_teacher()
graph_db_manager.create_xueyuan()
graph_db_manager.create_school()
graph_db_manager.create_guanxi_xueyuan_laoshi()
graph_db_manager.create_guanxi_xueyuan_xuexiao()
finally:
# 关闭数据库连接
graph_db_manager.close()
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
知识图谱是一种结构化的知识表达形式,它以图形的方式组织和存储了大量实体(如人、地点、事件等)及其相互关系。在知识图谱中,实体作为节点,实体之间的各种语义关联则通过边进行连接,形成了一个庞大的数据网络。 知识图谱的核心价值在于其能够精确、直观地表示复杂世界中的知识,并支持高效的知识查询与推理。例如,在搜索引擎中,知识图谱可以提升搜索结果的相关性和准确性,为用户提供直接的答案而非仅仅是网页链接。同时,知识图谱还能支撑高级的人工智能应用,比如问答系统、推荐系统、决策支持等领域。 构建知识图谱的过程通常包括数据抽取、知识融合、实体识别、关系抽取等多个步骤,涉及到自然语言处理、机器学习、数据库技术等多种技术手段。知识图谱的不断完善有助于实现从海量信息中挖掘深层次、有价值的知识,从而推动人工智能向着更加理解人类世界的智慧方向发展。 总之,知识图谱是一个大规模、多领域、多源异构知识集成的载体,是实现智能化信息系统的基础工具和关键基础设施,对于提升信息检索质量、推动智能应用研发具有重要作用。
资源推荐
资源详情
资源评论
收起资源包目录
导师问答知识图谱系统.zip (14个子文件)
SJT-code
import
guanxi.csv 32KB
guanxi1.csv 26KB
xueyuan.csv 265B
xuexiao.csv 47B
shiti-teacher1.csv 526KB
.idea
vcs.xml 180B
misc.xml 186B
project.iml 284B
inspectionProfiles
Project_Default.xml 281B
profiles_settings.xml 174B
modules.xml 266B
.gitignore 47B
queryKG.py 1KB
createKG.py 6KB
共 14 条
- 1
资源评论
JJJ69
- 粉丝: 6234
- 资源: 5778
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功