小皮博客 | Xiaopi's Blog

94-neo4j基础教程

概览

知识图谱(Knowledge Graph),在图书情报界称为知识域可视化或知识领域映射地图,是显示知识发展进程与结构关系的一系列各种不同的图形,用 可视化技术描述知识资源及其载体,挖掘、分析、 构建、绘制和显示知识及它们之间的相互联系。 知识图谱是通过将应用数学、 图形学、信息可视化技术、 信息科学等学科的理论与方法与计量学引文分析、共现分析等方法结合,并利用可视化的图谱形象地展示学科的核心结构、发展历史、 前沿领域以及整体知识架构达到多学科融合目的的现代理论。它能为学科研究提供切实的、有价值的参考。而Neo4j是目前比较主流的构建知识图谱的存储方式。

安装

官网 https://neo4j.com/ 下载并且解压:/Users/shengl/2-sys-ai/neo4j-3.5.12

进入目录/Users/shengl/2-sys-ai/neo4j-3.5.12/bin/
./neo4j start 来运行

Active database: officialdemo.db
Directories in use:
  home:         /Users/shengl/2-sys-ai/neo4j-3.5.12
  config:       /Users/shengl/2-sys-ai/neo4j-3.5.12/conf
  logs:         /Users/shengl/2-sys-ai/neo4j-3.5.12/logs
  plugins:      /Users/shengl/2-sys-ai/neo4j-3.5.12/plugins
  import:       /Users/shengl/2-sys-ai/neo4j-3.5.12/import
  data:         /Users/shengl/2-sys-ai/neo4j-3.5.12/data
  certificates: /Users/shengl/2-sys-ai/neo4j-3.5.12/certificates
  run:          /Users/shengl/2-sys-ai/neo4j-3.5.12/run

基本操作

进入运行时环境

访问 http://127.0.0.1:7474/browser/
默认账号密码是neo4j
登录后的界面如下:

neo4j提供了类似SQL的声明式命令,用户可以通过命令对neo4j进行基本操作,如
创建、更新、删除节点和关系
通过模式匹配来查询和修改节点和关系
管理索引和约束等。
neo4j的核心是节点而不是数据条目。

创建节点

  • 语法说明: CREATE创建操作,Person是标签,代表节点的类型。{}括号里面代表节点的属性。

CREATE (n:Person {name:’姚明’}) RETURN n
创建一个标签为Person的节点,该节点有一个属性name,这个属性的值是姚明;执行后,可以看到创建成功的节点。

  • 继续创建节点。

CREATE (n:Person {name:’特雷西·麦克格雷迪’}) RETURN n
CREATE (n:Person {name:’易建联’}) RETURN n
CREATE (n:Person {name:’叶莉’}) RETURN n
CREATE (n:Person {name:’杰夫·范甘迪’}) RETURN n
CREATE (n:Person {name:’路易斯·斯科拉’}) RETURN n
CREATE (n:Person {name:’大卫·斯特恩’}) RETURN n
CREATE (n:Person {name:’莱斯利·亚历山大’}) RETURN n

  • 插入之后的效果:

创建地区节点

CREATE (n:Location {city:’休斯顿’, country:’USA’})
CREATE (n:Location {city:’上海’, country:’CHINA’})
CREATE (n:Location {city:’广州’, country:’CHINA’})
CREATE (n:Location {city:’纽约’, country:’USA’})

  • 插入之后的效果:

创建关系

  • 注意箭头是有方向的。

MATCH (a:Person {name:’姚明’}), (b:Person {name:’特雷西·麦克格雷迪’}) MERGE (a)-[:FRIENDS]->(b)
MATCH (a:Person {name:’姚明’}), (b:Person {name:’特雷西·麦克格雷迪’}) MERGE (b)-[:FRIENDS]->(a)

  • 关系可以增加属性:比如姚明和斯科拉2006年开始成为队友。

MATCH (a:Person {name:’姚明’}), (b:Person {name:’路易斯·斯科拉’}) MERGE (a)-[:TEAMATE {since:2006}]->(b)
MATCH (a:Person {name:’姚明’}), (b:Person {name:’路易斯·斯科拉’}) MERGE (b)-[:TEAMATE {since:2006}]->(a)

建立人物和地点之间的关系

  • 姚明1980年出生于上海。

MATCH (a:Person {name:’姚明’}), (b:Location {city:’上海’}) MERGE (a)-[:BORN_IN {year:1980}]->(b)

  • 插入之后的效果:

查询

  • 查询下所有在上海出生的人物,按照目前的关系数据,只能查到姚明。

MATCH (a:Person)-[:BORN_IN]->(b:Location {city:’上海’}) RETURN a,b

  • 查询所有有对外关系的节点: 可以查出姚明,麦迪和斯科拉。

MATCH (a)–>() RETURN a

  • 反过来,可以查询到姚明,麦迪,斯科拉,和上海:

MATCH (a)<–() RETURN a

  • 查询所有有关系的节点,同上面一样。

MATCH (a)–() RETURN a

  • 查询所有对外有关系的节点,以及关系类型

MATCH (a)-[r]->() RETURN a.name, type(r)

效果如下图:

创建节点的时候就创建好关系

CREATE (a:Person {name:’刘翔’})-[r:FRIENDS]->(b:Person {name:’姚明’})

关联查询:

  • 查询麦迪的朋友姚明的队友

MATCH (a:Person {name:’特雷西·麦克格雷迪’})-[r1:FRIENDS]-()-[r2:TEAMATE]-(teamate_of_a_friend) RETURN teamate_of_a_friend.name AS tofName

增加&修改节点属性

  • 这里的SET表示修改操作

MATCH (a:Person {name:’姚明’}) SET a.age=40
MATCH (a:Person {name:’斯科拉’}) SET a.age=45
MATCH (a:Person {name:’姚明’}) SET a.age=44

  • 删除节点属性:删除属性操作主要通过REMOVE

MATCH (a:Person {name:’姚明’}) SET a.role=’中国篮协主席’
MATCH (a:Person {name:’姚明’}) REMOVE a.role

删除节点

MATCH (a:Location {city:’休斯顿’}) DELETE a

  • 删除有关系的节点

MATCH (a:Person {name:’刘翔’})-[rel]-(b:Person) DELETE a,b,rel

  • 删除前的效果:

  • 删除后的效果:

版权声明

本文标题:94-neo4j基础教程

文章作者:盛领

发布时间:2019年11月29日 - 10:52:55

原始链接:http://blog.xiaoyuyu.net/post/84a86b35.html

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

如您有任何商业合作或者授权方面的协商,请给我留言:sunsetxiao@126.com

盛领 wechat
欢迎您扫一扫上面的微信公众号,订阅我的博客!
坚持原创技术分享,您的支持将鼓励我继续创作!