概览
知识图谱(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
