知识图谱:属性图数据模型与Cypher查询语言

属性图数据模型

属性图模型简介

  • 属性图模型是一种不同于RDF 三元组的一种图数据模型
  • 这个模型由点来表示现实世界中的实体,由边来表示实体与实体之间的关系。同时,点和边上都可以通过键值对的形式被关联上任意数量的属性和属性值
  • 在这种图模型中,关系被提到了一个和实体本身一样重要的程度
  • 从形式化的角度来看,属性图模型包含三种元素组成:值、图和表。
  • 语法细节参考

属性图模型的符号列表

知识图谱:属性图数据模型与Cypher查询语言_第1张图片

属性图模型组成元素:值

知识图谱:属性图数据模型与Cypher查询语言_第2张图片

属性图模型组成元素:图

知识图谱:属性图数据模型与Cypher查询语言_第3张图片

属性图模型组成元素:表

知识图谱:属性图数据模型与Cypher查询语言_第4张图片
知识图谱:属性图数据模型与Cypher查询语言_第5张图片
知识图谱:属性图数据模型与Cypher查询语言_第6张图片

Cypher查询语言

简介

Cypher语言中一个在图G上的查询Q可以认为是从空表到结果关系表的转换。一个Cypher 查询语言包括四部分:表达式、图模式、子句和查询。针对一个属性图而言,Cypher 语句既包括查询也包括数据更新和操作等功能。

表达式

所谓表达式,就是出现在Cypher 查询语句中的对于值的操作表达式,包括数值操作、字符串操作、关系操作、链表操作、映射表操作、路径操作等等

图模式

  • 所谓图模式,就是出现在Cypher 查询语句MATCH 子句中查询模式,这个是Cypher 语言的核心
  • Cypher 定义了两种基本查询模式:点模式和关系模式

点模式

  • 点模式是一个三元组(a, L, P),其中a 为所查询点对应的变量名、L 是所查询的点需要满足的标签集合、P
    是所查询的点在属性上所需满足的条件
  • 点模式的查询语义是找到属性图中的所有满足如下条件的节点:
    1. 这些节点的标签满足L 中的定义;
    2. 这些节点在属性上满足P中定义的属性约束条件;并且把这些节点的标识符赋值给变量a

示例:

MATCH (r.Person)  //找到所有标签为Person的节点

关系模式

  • 关系模式是一个五元组(d, a, T, P, I),其中d 为关系模式的方向、a 是所查询关系对应的变量名、T
    是所查询关系需要满足的边类型集合、P 是所查询关系在边属性上所需满足的条件、I 表示所查询关系的可以对应多少条边
  • 关系模式的查询语义是找到属性图中的满足如下条件的关系边:
    1、边的方向符合d 的定义,其中MATCH 语句中-[]->、<-[]-、-[]-分别表示自左向右、自右向左的有向边和无向边;
    2、边的关系类型满足T 中约束;
    3、边在属性上满足P 中定义的属性约束条件;
    4、 I 表示关系边的数量范围。其中[m, n] 表示边的数量范围在m 和n之间
    示例:
MATCH (r)[:influencedBy*]-> (p:Person)  //找到所有标签为Person,边为influencedBy的节点

子句

  • 所谓子句,就是表示一个从表到表到函数
  • Cypher 中最主要子句的就是MATCH 子句。MATCH
    子句后面跟的就是图模式,可以是点模式,也可以是点模式加关系模式,以及由点模式和关系模式组成的路径模式
  • MATCH 子句本身的含义是图模式P 在属性图上的匹配的结果关系表T;如果MATCH子句前面有关键词“OPTIONAL”,表示的是左外连接;WITH 子句是对查询中间结果的一个映射,同时WITH子句也可以表达聚集函数的操作;WHERE 子句可以用在MATCH 和WITH 子句中,用于对匹配结果进行过滤

查询

所谓查询,就是若干子句组合并以RETURN 语句结尾或者多个查询的并

示例

t1 MATCH(r:Person)
t2 OPTIONAL MATCH (r)-[:birthPlace]->(pl:Place)
t3 WITH r,pl AS birthPlace
t4 MATCH (r)-[:influencedBy*]->(p:Person)
t5 RETURN r.name,birthPlace.name,cout(p) AS incluenceNum

t1:第一个MATCH 子句中的图模式是一个“点模式”,该语句是为
了找到点标签为Person 的点,将这些节点的标识符(ID) 赋值给变量r,进而空表转换为以下的表T1
知识图谱:属性图数据模型与Cypher查询语言_第7张图片
t2:通过OPTIONAL 关键词实现类似于SQL 中的左外连接功能。如查询t2行的OPTIONAL MATCH 子句会匹配所有人物的出生地点,然后与查询t1行的结果进行左外连接
知识图谱:属性图数据模型与Cypher查询语言_第8张图片
t3: WITH 子句用在不同子句之间过渡。经过WITH 子句之后,其前面的结果表将会通过映射操作形成新的表,这个新的表会作为下一个子句的输入。查询t3行的WITH对变量r和pl进行映射,并将列名pl 重命名为birthPlace
知识图谱:属性图数据模型与Cypher查询语言_第9张图片
t4:Cypher 支持在图查询模式中存在变长的关系模式。
比如,查询t4 行的MATCH 子句就包含了一个变长的关系模式influncedBy,这个表示在计算这个图模式匹配的时候匹配一个或者多个连续的边,它们的边类型均为influncedBy知识图谱:属性图数据模型与Cypher查询语言_第10张图片
t5:RETURN 语句功能和WITH 子句类似,也是用来对前面对表进行映射操作,只不过最终得到的表会直接返回给用户,这一点等同于SQL 中的SELECT。
查询t5 行的RETURN 子句执行完会得到最终结果返回给用户,查询t5 行RETURN 语句包含一个聚集函数count(),类似于SQL 中的GROUP BY 引导聚集查询
知识图谱:属性图数据模型与Cypher查询语言_第11张图片

你可能感兴趣的:(知识图谱,数据库,数据挖掘,知识图谱)