1、什么是图数据库
图数据库是一种使用图数据结构实现语义查询的数据管理系统,通过节点、边和属性来表示和存储数据。
上面的数字1到数字6,都叫做“点”(或顶点)
连接点与点之间的线,叫做“边”
也就是说,由点和连接每对点的边所构成的图就叫做“图”(Graph)
点(node):称之为顶点(Vertex)或点(node),也可以称作实体(Entity)。
边(edge):连接两个点(node)的边,在知识图谱范畴内也常被称作关系(relation、relationship)。
图(Graph)用至为简洁的点与边,即可以表现出人与人、人与物、物与物之间的各种关系。
图概念对于图数据库的理解至关重要。图是一组点和边的集合,“点”表示实体,“边”表示实体间的关系。在图数据库中,数据间的关系和数据本身同样重要,它们被作为数据的一部分存储起来。这样的架构使图数据库能够快速响应复杂关联查询,因为实体间的关系已经提前存储到了数据库中。图数据库可以直观地可视化关系,是存储、查询、分析高度互联数据的最好办法。
有两种常用的图形数据库模型:属性图和 RDF 图。属性图侧重于分析和查询,而 RDF 图则侧重于数据集成。这两种图形均是由一系列点(顶点)以及这些点之间的连接(边)构成的集合。但它们是有区别的。
2、属性图
目前主流的图数据库选择的图模型是属性图。属性图由点、边、标签和属性组成,我们结合一个具体的属性图实例来看一下。
以上属性图可以帮助我们理解一些相关概念:
1) 可以为点设置标签,比如 person, war等,拥有相同标签的点我们认为它们属于一个分组,是一个集合,这样刘备和曹操属于一个分组;
2) 同样可以为边设置标签,标签可以为 relation等;
3) 节点可以拥有很多属性,比如 style name、year等,这些属性值以键值对的形式表示,例如:刘备的style name是玄德;
4) 边也可以拥有属性,比如army等;
5) 边允许有方向,例如刘备和汉中之战之间的边的方向是由刘备指向汉中之战的;
6) 元数据是用来描述点和边的属性信息的,元数据由若干标签组成,每个标签由若干属性组成。
2.1 有向图
“有向图”,顾名思义就是能表示出方向的图,我们则称为“有向图”。
与此相对,边上没有箭头表示出明确方向的图,便是“无向图”了。
有向图:当图中的边有明确的方向时,且在图中的各类操作可以利用这种方向的时候,我们称其为有向图。例如,区块链就是典型的有向无环图,英文简称为DAG(Directed Acyclic Graph)。以DAG的方式,可以追溯每一笔比特币的流向、分布、归属。
无向图:
无向图指的是忽略了边的方向。在实际的图数据库实现中,通常都采用双向边存储的方式来实现无向图。
2.2 加权图
由点和边所构成的图,还可以给边加上一个值。这个值就叫作边的“权重”或“权”,加了权的图被称为“加权图”。
没有权的边只能表示两个点的连接状态,而有权的边就可以表示顶点之间的“连接程度”。
这个“程度”是什么意思呢?
就是根据“图”的内容不同,“程度”表示的意思也不同。
比如在地铁线路中,如果把车站与车站间的票价加在边上,就能在“图”中看出乘车费了。
2.3 属性图的局限性
在属性图的应用中,以下的需求是常见的但是却难以满足:
支持对图中模式的捕获
支持验证和数据完整性
支持捕捉丰富的规则
支持继承和推理
支持全局唯一标识符
支持可替换的标识符
图之间的连通性
图形可进化性的更好解决方案
这些是属性图设计中没有解决的基本限制,原则上,在属性图中添加其中一些这样的功能是可能的——但实现起来并不容易或便捷。
3 RDF图
RDF 图(RDF 即资源描述框架)符合一系列 W3C(万维网联盟)标准,旨在表示各种语句,适合用于表示复杂的元数据和主数据。它们通常用于关联数据、数据集成和知识图谱。它们可以表示域中的复杂概念,也可以提供丰富的语义和数据推断。
在 RDF 模型中,语句由三个元素表示:一条边连接两个顶点,反映语句的主语、谓语和宾语 — 叫做 RDF 三元组。每个顶点和边都由唯一的 URI(即唯一资源标识符)来标识。RDF 模型支持通过定义明确的语义以标准格式发布数据,从而实现信息交换。政府统计机构、制药公司和医疗机构现已广泛采用 RDF 图。
RDF模型在顶点和边上没有属性,只有一个资源描述符,这是RDF与属性图模型间最根本的区别。在RDF中每增加一条信息都要用一个单独的节点表示。比如,在图中给表示人的节点添加姓名。在属性图中只需要在节点添加属性即可,而在RDF中必须添加一个名字的单独加节点,并用hasName与原始节点相连。
就是所有的信息都是节点,无论是张三这个名字,还是张三这个人,他们都属于节点
张三相关节点为张三,身份证号,住所等等