动态图数据格式
在大多数实际生活场景中,实体以及关系是动态变化的(如疫情传播网络、转账关系等),这些时序、变化背后蕴含的信息会对结果产生重要影响,因此需要采用动态图对其进行数据建模、存储和动态分析。本服务对动态图的相关能力进行了支持。
动态图的数据模型介绍
对于一般属性图,可以建模为由点、边、标签(Label)和属性(Property)组成的有向图。
动态图相较于一般属性图有所区别,其突出的特点是:点、边会随时间发生变化。根据时域演化粒度可以划分为:纯静态图(Static Graph)、 时空图(STGs)、离散动态图(DTDGs)、连续动态图(CTDGs)。其中,连续型动态图的表示形式粒度最细,保留信息更加全面。
本服务支持连续型动态图的建模方式:
例如图2,此图数据由3个点和3条边组成,Vivian、P1和P2表示点,(Vivian,P1)、(Vivian,P2)和(Vivian、Vivian)表示边,Person、Place表示点的类型(标签),Visited和Diagnosed表示关系类型(标签), 时间戳:[startTime, endTime ]表示对应状态持续的时间。例如,对于(Vivian,P1)表示:Vivian在[2021-11-21 12:05:21, 2021-11-21 14:00:00]到访了P1地点, 而(Vivian,Vivian)表示Vivian在[2021-11-25 23:00:00, 2021-12-04 08:00:00] 期间感染了新冠(注:这里点的状态变化,如感染疾病,建模为与对应点相关的边)。
动态图的元数据
时间戳是动态图的重要特征,为了描述动态图数据,需要在元数据中,定义时间戳相关的属性startTime 、endTime。
<PMML> <labels> <label name="Person"> <properties> <property dataType="long" name="startTime" cardinality="single"/> <property dataType="long" name="endTime" cardinality="single"/> <property dataType="string" name="name" cardinality="single"/> <property dataType="int" name="age" cardinality="single"/> <property dataType="string" name="gender" cardinality="single"/> </properties> </label> <label name="Place"> <properties> <property dataType="string" name="type" cardinality="single"/> <property dataType="string" name="address" cardinality="single"/> <property dataType="float" name="longitude" cardinality="single"/> <property dataType="float" name="latitude" cardinality="single"/> </properties> </label> <label name="Visited"> <properties> <property dataType="long" name="startTime" cardinality="single"/> <property dataType="long" name="endTime" cardinality="single"/> </properties> </label> <label name="Dignosed"> <properties> <property dataType="long" name="startTime" cardinality="single"/> <property dataType="long" name="endTime" cardinality="single"/> <property dataType="string" name="risk" cardinality="single"/> </properties> </label> </labels> </PMML>
动态图的点数据
- 动态点
对于动态图的点数据如下所示,一行为一个点的数据,放在点文件中。其中,id是点数据的唯一标识,startTime表示点的整个生命周期起始时间,endTime表示点生命周期中止时间:
id,label,startTime,endTime,property1,property2...
示例:
Vivian,Person,1991-02-03 08:00:00,9999-12-31 24:00:00,薇薇安,F,25-34
- 静态点
当点数据,没有指定/定义startTime、 endTime时,认为是静态点,如下所示,一行为一个点的数据, 放在点文件中:
id,label,property1,property2...
示例:
Vivian,Person,薇薇安,F,25-34
P1,Place,residentialArea,xxxxxx,114.001494,22.554249
P2,Place,publicArea,xxxxxx,114.074367,22.53492
- 特殊说明
对于点在生命周期内的随时间发生多个特殊状态变化,如Person某段时间健康状态信息,可以将这种状态变化建模为边,一行表示点的一个状态数据,放在边文件数据中。
id,id,label,startTime,endTime,property...
示例:
Vivian,Vivian,Diagnosed,2021-11-25 23:00:00,2021-12-04 08:00:00,Covid-9
动态图的边数据
- 动态边
对于动态图的边数据如下所示,一行为一条边的数据, 格式如下所示,其中,id 1、id 2是一条边的两个端点的id,startTime表示这条边生命周期起始时间,endTime表示这条边生命周期中止时间:。
id 1, id 2, label, startTime, endTime, property 1, property 2, …
示例如下:
Vivian,P1,Visited,2021-11-21 12:05:21,2021-11-21 14:00:00
Vivian,P2,Visited,2021-11-21 16:33:18,2021-11-21 19:51:00
- 静态边
当不指定边的生命周期起始和终止时间时,认为是静态边,按一般静态边建模。
id 1, id 2, label, property 1, property 2, …
动态图点边数据文件
- 点数据文件
Vivian,Person,薇薇安,F,25-34
P1,Place,residentialArea,xxxxxx,114.001494,22.554249
P2,Place,publicArea,xxxxxx,114.074367,22.53492
- 边数据文件
Vivian,P1,Visited,2021-11-21 12:05:21,2021-11-21 14:00:00
Vivian,P2,Visited,2021-11-21 16:33:18,2021-11-21 19:51:00