关于数据库:知识图谱描边13cypher查询语法

2次阅读

共计 1451 个字符,预计需要花费 4 分钟才能阅读完成。

——感激博主 悦时光 的文章 cypher 查问入门给了我肯定的帮忙

相熟 cypher 语言

老手在执行 neo4j 查问时,先要理解一些常识:
1、查问后展现时,抉择 text 格局后所展现的是每个节点的各项属性;table 格局所展现的是节点的全副 json 信息。

2、节点 所有的节点模式:
都有三个键:identity、labels、properties:

{
  "identity": 13333,
  "labels": ["乡镇"],
  "properties": {
    "乡镇 id": "5cd1483789730d2fec6a878b",
    "乡镇名称": "密云镇",
    "乡镇代码": "110118100000"
  }
}

3、关系的模式:

{
  "identity": 1077341,
  "start": 2380,
  "end": 5725,
  "type": "所在地区",
  "properties": {}}

查询语言

1、展现所有节点的所有信息

match (n) return n 

后果:崩掉(内存间接占用 14 个 G)

2、依据指定的 labels,展现某一类节点

match (n: 乡镇) return n. 乡镇名称

后果:返回 乡镇 的属性:节点的乡镇名称:

也能够依据某一属性值来查问一个具体节点(其中’水电站’是 labels,水电站名称属于 properties):
match (n: 水电站{水电站名称:'李家峡水电站'}) return n
也能够不指定 labels(不晓得这个实体属于哪一类实体时)
match (n{河流名称:'黄河'}) return n
2.1、返回某个实体的某项属性(已知 labels、属性中的名称)
match (n: 河流{河流名称:'黄河'}) return n.` 河流面积 `

3、找所有跟三峡大坝无关的其余节点,’三峡大坝’是实体的某一属性名

match(directory{大坝名称:’三峡大坝’})——(en)return en

返回的是两个节点(有 id 标识)

3.1 试试去掉 directory:
match ({大坝名称:'三峡大坝'})--(en) return en

成果和有 directory 雷同

3.2 匹配检索(比 3.1 更加严格,多了河流这个标签的束缚):
match (: 河流{河流名称:'黄河'})--(en) return en

后果有 52 个(蕴含各种省份、装机容量、水库简介、水库代码、湖泊代码、湖泊简介、大坝名称等)

4 波及 where 的限度

match ({河流名称:'黄河'})-[:` 所在地区 `]->(loc)
where loc. 省份名称 ='山西省' or loc. 省份名称 ='青海省'
return loc

5 关系——比如说我想找内蒙古和黄河的关系:

match (: 河流{河流名称:'黄河'})-[r]->(: 省{省份名称:'内蒙古自治区'})
return r,type(r)

note: 在——之后有没有 > 都能够,但如果要应用 <——,则须要把两个实体反过来放

6 实体相干的函数:

return id()
return type()    # 关系类型
return labels()    # 节点标签
return keys()    # 节点 / 关系 的属性键
return properties()    # 节点 / 关系 的属性


7 关系的模式

变长门路的模式


8 属性——晓得一个属性,返回所有领有此属性的实体

MATCH (n) WHERE EXISTS(n.` 是否为正式主题词 `) RETURN n
8.1 更进一步——依据属性返回领有此属性的实体品种
MATCH (n) WHERE EXISTS(n.` 简介 `) RETURN labels(n)
正文完
 0