PHp后端知识图谱,知识图谱和neo4j的基本操作

本文介绍了知识图谱的概念,包括其作为关系图网络的特性,以及Schema的定义。知识图谱的构建涉及结构化和非结构化数据,常用技术包括命名实体识别和关系抽取。在存储方面,RDF和图数据库(如Neo4j)被用于高效查询。Neo4j的安装和基本操作步骤被详细阐述,包括结点创建、关系建立和查询。此外,还展示了如何在Python中使用neo4j和py2neo模块进行图数据库操作。
摘要由CSDN通过智能技术生成

一.知识图谱的简介

1.知识图谱是什么

可以理解为一个关系图网络。

2.什么是图

3.什么是Schema

二.知识图谱的构建

1.数据来源

结构化数据和非结构化数据,前者可能是本地数据库中的信息,后者主要是在网页上抓取的信息。

2.涉及的技术

命名实体识别,关系抽取等自然语言处理技术。

三.知识图谱的存储

RDF一个重要的设计原则是数据的易发布以及共享,图数据库则把重点放在了高效的图查询和搜索上。其次,RDF以三元组的方式来存储数据而且不包含属性信息,但图数据库一般以属性图为基本的表示形式,所以实体和关系可以包含属性,这就意味着更容易表达现实的业务场景。其中Neo4j系统目前仍是使用率最高的图数据库,它拥有活跃的社区,而且系统本身的查询效率高,但唯一的不足就是不支持准分布式。

四.Neo4j的介绍

Neo4j的安装很简单,先到官方网站Neo4j下载,下载完压缩包之后直接解压缩,然后配置好环境变量,可以按照这篇博客的方法https://www.cnblogs.com/jpfss/p/10874303.html。

之后我们在浏览器内输入http://127.0.0.1:7474/browser/就进入了Neo4j的界面。

520528

五.Neo4j的基本操作

//删库

MATCH (n) DETACH DELETE n//创建人物结点

CREATE (n:Person {name:'John'}) RETURN n//创建地区结点

CREATE (n:Location {city:'Miami', state:'FL'})//创建朋友关系

MATCH (a:Person {name:'Liz'}),

(b:Person {name:'Mike'})

MERGE (a)-[:FRIENDS]->(b)//创建出生地关系

MATCH (a:Person {name:'John'}), (b:Location {city:'Boston'}) MERGE (a)-[:BORN_IN {year:1978}]->(b);

MATCH (a:Person {name:'Liz'}), (b:Location {city:'Boston'}) MERGE (a)-[:BORN_IN {year:1981}]->(b);//按照出生地查询

MATCH (a:Person)-[:BORN_IN]->(b:Location {city:'Boston'}) RETURN a,b//查询所有对外有关系的结点和类型

MATCH (a)-[r]->() RETURN a.name, type(r)//查询所有婚姻关系的结点

MATCH (n)-[:MARRIED]-() RETURN n//查找某人朋友的朋友

MATCH (a:Person {name:'Mike'})-[r1:FRIENDS]-()-[r2:FRIENDS]-(friend_of_a_friend) RETURN friend_of_a_friend.name AS fofName//增加或者修改结点属性

MATCH (a:Person {name:'Liz'}) SET a.age=34

//删除结点属性

MATCH (a:Person {name:'Mike'}) SET a.test='test';

MATCH (a:Person {name:'Mike'}) REMOVE a.test;

六.在python中操纵neo4j

1.neo4j模块

#step 1:导入 Neo4j 驱动包

from neo4j importGraphDatabase#step 2:连接 Neo4j 图数据库

driver = GraphDatabase.driver("bolt://localhost:7687", auth=("neo4j", "password"))#添加 关系 函数

defadd_friend(tx, name, friend_name):

tx.run("MERGE (a:Person {name: $name})"

"MERGE (a)-[:KNOWS]->(friend:Person {name: $friend_name})",

name=name, friend_name=friend_name)#定义 关系函数

defprint_friends(tx, name):for record in tx.run("MATCH (a:Person)-[:KNOWS]->(friend) WHERE a.name = $name"

"RETURN friend.name ORDER BY friend.name", name=name):print(record["friend.name"])#step 3:运行

with driver.session() as session:

session.write_transaction(add_friend,"Arthur", "Guinevere")

session.write_transaction(add_friend,"Arthur", "Lancelot")

session.write_transaction(add_friend,"Arthur", "Merlin")

session.read_transaction(print_friends,"Arthur")

注意这里的密码要改成自己的,否则无法正常登陆。运行完上面的脚本后,就出现了如下的结点和边:

520528

2.py2neo模块

#step 1:导包

from py2neo importGraph, Node, Relationship#step 2:构建图

g = Graph("http://localhost:7474",auth=("neo4j","password"))#step 3:创建节点

tx =g.begin()

a= Node("Person", name="Alice")

tx.create(a)

b= Node("Person", name="Bob")#step 4:创建边

ab = Relationship(a, "KNOWS", b)#step 5:运行

tx.create(ab)

tx.commit()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值