更新时间:2023-03-03 GMT+08:00

动态图数据格式

在大多数实际生活场景中,实体以及关系是动态变化的(如疫情传播网络、转账关系等),这些时序、变化背后蕴含的信息会对结果产生重要影响,因此需要采用动态图对其进行数据建模、存储和动态分析。本服务对动态图的相关能力进行了支持。

图1 动态图示例

本章节重点介绍动态图数据格式,关于动态图相关操作,请参考动态图创建动态图使用指导

动态图的数据模型介绍

对于一般属性图,可以建模为由点、边、标签(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] 期间感染了新冠(注:这里点的状态变化,如感染疾病,建模为与对应点相关的边)。

图2 动态图数据示例

动态图的元数据

时间戳是动态图的重要特征,为了描述动态图数据,需要在元数据中,定义时间戳相关的属性startTime 、endTime。

注意:这里的startTime 、endTime为动态图相关属性定义,直接关系到对应点、边的生命周期,类型应为:date型或long型。示例如下:
<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