参考:https://www.galaxybase.com/document?file=v3.4.1%2Fstandalone-doc&docid=15
以下默认:n为点;r为边;p为路径
基础
字符规则
- 关键字:大小写敏感
- 名称:由 [字母,数组,_] 组成;以字母开头;大小写敏感
基础元素
- 点:有且只有一个类型,可以有多个 属性和标签
- 边:有且只有一个类型,可以有多个 属性,没有标签
- 属性:KV键值对
- 标签:
表示:点 边 模式 路径
这里讲的是 在MATCH中的
进行限制或绑定到变量,绑定到变量 可用于后续计算
若要在后续使用,直接 用变量名 即可
点
(n:Man {name:'hahaha',age:20})
- r:命名
- :Man:类型
- {name:‘hahaha’,age:20}):键值对
(n)
(:Man)
({name:'hahaha',age:20})
(n:Man {name:'hahaha',age:20})
边
-[r::BELONG {year:'2000'} ]-
- r:命名
- :BELONG :类型
- {year:‘2000’}:键值对
# 最基础表示,不绑定名字,[不考虑方向,右点指向左点,指向右点]
--
<--
-->
# 加`[]`,里面不放东西,加了等于没加
-[]-
# 给这条边命名,方便后续使用
-[r]-
# 给这条边加上一些限制m,[类型,属性,类型+属性]
-[:BELONG]-
-[ {year:'2000'} ]-
-[:BELONG {year:'2000'} ]-
# 支持两种类型
-[:BELONG|MANAGE]-
# 同时 命名+限制(类型+属性)
-[r::BELONG {year:'2000'} ]-
可变长边
可限制 最小长度与最大长度,不限制最大长度时 很危险
-[*1..3]-
-[:BELONG *1..3]-
-[:BELONG *1..]-
-[:BELONG *..3]-
-[:BELONG *..]-
模式
- 由边将点连接起来的
- 总是以 点 开始和结束
- 方向并不要求一致
- 根据模式查到 路径
(n)
(n)-[r]->(n)
(n)-[r]->(n)-[r]->(n)
(n)-[r]->(n)<-[r]-(n)
语句结构
- 为下面的理解做作铺垫
- 向MYSQL一样,MATCH查到一条数据就增加一行;其他预计按照上一行的数据逐行处理,聚合函数 和
UNION
除外 - 这条语句执行完成,生成完整的一张表格后,传到下一行(这意味着 不能 既传一张表,又传一个变量)
查询 MATCH等基础语句
[OPTIONAL] MATCH [p=]路径
WHERE 筛选条件
WITH 变量1,变量2
ORDER BY 变量1,变量2
SKIP 4
LIMIT 6
RETURN p
MERGE
UNION [ALL]
- MATCH:普配路径
- WHERE:进行过滤,简单的删选条件可以放在匹配规则
- WITH:限制传入的变量(放弃一部分变量)
- ORDER BY:排序,前一个相等了,再用后一个
- SKIP:跳过前几个,上面的是跳过4个
- LIMIT:取前面几个,上面的是取前面6个
- RETURN:返回
- UNION:拼接表,要求以下相同 [列数,列名];会进行去重
- MERGE:类似于MATCH,查不到时会CREATE
OPTIONAL MATCH:对未匹配到的位置,填入null
p=路径匹配规则:把获取到的路径放到p中
SKIP LIMIT
配合使用:选择第5-10个
UNION ALL:不进行去重,直接拼接
修改图结构
创建 CREATE
CREATE
删除 DELETE
DELETE n
DELETE r
DETACH DELETE
修改属性值 SET
SET r.name='hahaha'
删除属性和标签 REMOVE
REMOVE n.name
REMOVE n:Man
REMOVE n:Man:Chinese
加载CSV
LOAD CSV FROM 'https://www.chuanglintech.com/public/company.csv' AS line
查看执行计划
- EXPLAIN:粗略
- PROFILE:精确
其他
CALL … YIELD …
UNWIND
EXIST
IS NULL
IS NOT NULL
UNIQUE
INDEX
STARTS WITH
ENDS WITH
CONTAINS
DISTINCT
AS
OR
AND
NOT
USING [INDEX [SEEK] | SCAN ] variable:Label(property)
FOREACH <设值操作>
ALLOWREPEAT DIRECTED
CREATE INDEX ON :label(key…)
DROP INDEX ON :label(key…)
函数
allShortestPaths()
id()
Neo4j/存储接口
apoc函数
apoc.custom.declareProcedure
GDS
官方文档:https://neo4j.com/docs/graph-data-science/current/
非算法
函数 | 作用 | 链接 |
---|---|---|
gds.graph.list | 列出所有映射; 这不是一个快照,原图新增了符合的节点,在使用的时候也会出现 | https://neo4j.com/docs/graph-data-science/current/graph-list/ |
gds.graph.project | 创建 映射(临时图,用完需手动删除) | https://neo4j.com/docs/graph-data-science/current/graph-project/ |
gds.util.asNode | 从ID转换为node | |
gds.graph.drop | 删除映射 | https://neo4j.com/docs/graph-data-science/current/graph-drop/ |
并不是都有CALL调用
# gds.graph.list
CALL gds.graph.list()
# gds.graph.project
CALL gds.graph.project('friends','person','friend')
# gds.util.asNode:
CALL gds.pageRank.stream('friends')
YIELD nodeId
WITH gds.util.asNode(nodeId) AS n
RETURN n
^等价
CALL gds.pageRank.stream('friends')
YIELD nodeId
RETURN gds.util.asNode(nodeId) AS n
# gds.graph.drop
CALL gds.graph.drop('friends')
算法
使用方式
CALL gds.labelPropagation.stats(xx)
CALL gds.labelPropagation.write(xx)
CALL gds.labelPropagation.mutate(xx)
CALL gds.labelPropagation.stream(xx)
算法 执行模式 execution mode
https://neo4j.com/docs/graph-data-science/current/common-usage/running-algos/
https://neo4j.com/docs/graph-data-science/current/algorithms/syntax/
四种
- stream
- stats
- mutate
- write