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

——感激博主 悦时光 的文章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)

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理