全部产品
云市场
云游戏

Gremlin(CSV)的SET属性文件格式

更新时间:2020-07-09 10:15:35

GDB新版本(1.0.21及更高版本)添加了SET属性支持,OSS导入模块也新增了对SET属性数据的导入,以下定义OSS导入模块支持的Gremlin(CSV)文件中SET属性格式规范。

注意

更新后OSS导入模块兼容原Gremlin(CSV)格式的文件,并且支持导入SET属性。版本升级不会影响OSS导入用户接口。

系统列标题

系统列标题包含顶点标题和边标题,与原规范保持一致。

属性列标题

属性列是基础数据类型时,与原规范保持一致,新增顶点文件属性列的SET属性支持,可使用以下几种格式。

  1. 1. propertyname:type // 兼容默认格式,普通单值属性
  2. 2. propertyname:type(single) // 普通单值属性
  3. 3. propertyname:type(set) // SET属性,数据行中包含单值
  4. 4. propertyname:type[] // SET属性,数据行中包含多值
  5. 5. propertyname:type(set)[] // SET属性,数据行中包含多值
  • 其中propertyname是字符串,表示属性键值对中的Key,type是基础数据类型。与原规范的属性列标题含义一致。
  • 格式1保留对原Gremlin(CSV)格式的属性列标题的兼容,是普通单值属性,其中数据文件行格式对应的字段表示单个属性值。
  • 格式2是格式1的完整写法,含义相同。
  • 格式3描述SET属性,表示属性propertyname以SET属性规则导入,属性值类型是type,是数据文件行格式对应的字段,包含单个属性值。
  • 格式4和格式5相同,格式4是简写。表示属性propertyname以SET属性规则导入,数据文件行格式对应的字段是数组形式,包含多个属性值,类型都是type
  • 除以上定义格式外的其他写法,都会被当作非法标题处理。

    注意

    GDB中边不支持SET属性,任何给边写入SET属性的行为都会导致错误。

行格式

行格式只描述新增的SET属性格式,普通属性和系统列标题字段与原格式保持一致。

propertyname:type(set)

SET属性字段,表示数据字段是属性propertyname的一个属性值,类型是type

注意

覆盖写入一个SET属性时,相当于追加一个属性值。如果原来是一个普通属性,更新后是一个SET属性。

propertyname:type(set)[]

SET属性字段,表示数据字段是属性propertyname的属性值数组,数组元素类型是type。数组元素之间使用分号(;)分隔。

注意

  1. 数组中只有一个元素时,不需要分号(;)
  2. 数组对应的数据字段为空时,表示该点没有propertyname属性,实际不会写入该属性

属性覆盖逻辑

属性覆盖 原属性类型 新属性类型 结果
1 普通属性 普通属性 原属性值被覆盖,保留最后一次的写入
2 普通属性 SET属性 更新后是SET属性,原属性值会合并成SET中的一个属性值
3 SET属性 SET属性 SET属性追加,属性值是并集
4 SET属性 普通属性 更新后是一个普通属性,属性值是最后一次的写入

CSV格式规范

以下仅给出新增的与SET属性相关的格式规范,包含以下要求。

  • SET属性单值字段,保持与原解析格式一致。解析后的值是SET属性的一个属性值。
  • SET属性数组字段,使用分号(;)分隔数组元素。例如整型数组字段 32;45;12
  • SET属性数组字段也可以使用双引号(“)将整个字段括起来,解析时会去掉字段前后的双引号。例如整型数组字段 "32;45;12"
  • SET属性数组字段类型是字符串时,单个数组元素不能包含有分号(;)字符,会被解析成元素分隔符。

示例

以下是一个在GDB中经常使用到的演示SET属性数据文件。

  1. ~id,~label,fruits:string(set)[],codes:long(set)[]
  2. 1,person,apple;pear,22
  3. 2,person,banana;bitter orange,25;81
  4. 3,person,"cherry;blackberry;grape",3;12
  5. 4,person,,"54;11"
  • 标题行定义了顶点数据文件包含idlabel和两个SET属性,且属性列字段都是数组格式。
  • 顶点1fruits属性包含applepear两个属性值,codes属性只包含22一个属性值
  • 顶点2fruits属性包含bananabitter orange两个属性值,codes属性也包含2581两个属性值
  • 顶点3fruits属性包含cherryblackberrygrape三个属性值,codes属性包含312两个属性值
  • 顶点4codes属性包含5411两个属性值,不包含fruits属性