全部产品

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

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

注意

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

系统列标题

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

属性列标题

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

1. propertyname:type                  // 兼容默认格式,普通单值属性。
2. propertyname:type(single)          // 普通单值属性
3. propertyname:type(set)           // SET属性,数据行中包含单值。
4. propertyname:type[]                // SET属性,数据行中包含多值。
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。数组元素之间使用分号(;)分隔。

注意

  • 数组中只有一个元素时,不需要分号(;)。

  • 数组对应的数据字段为空时,表示该点没有propertyname属性,实际不会写入该属性。

属性覆盖逻辑

原属性类型

新属性类型

结果

普通属性

普通属性

原属性值被覆盖,保留最后一次的写入。

普通属性

SET属性

更新后是SET属性,原属性值会合并成SET中的一个属性值。

SET属性

SET属性

SET属性追加,属性值是并集。

SET属性

普通属性

更新后是一个普通属性,属性值是最后一次的写入。

CSV格式规范

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

  • SET属性单值字段,保持与原解析格式一致。解析后的值是SET属性的一个属性值。

  • SET属性数组字段,使用分号(;)分隔数组元素。例如整型数组字段 32;45;12

  • SET属性数组字段也可以使用双引号(“)将整个字段括起来,解析时会去掉字段前后的双引号。例如整型数组字段"32;45;12"

  • SET属性数组字段类型是字符串时,单个数组元素不能包含有分号(;)字符,会被解析成元素分隔符。

示例

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

~id,~label,fruits:string(set)[],codes:long(set)[]
1,person,apple;pear,22
2,person,banana;bitterorange,25;81
3,person,"cherry;blackberry;grape",3;12
4,person,"54;11"
  • 标题行定义了顶点数据文件包含idlabel和两个SET属性,且属性列字段都是数组格式。

  • 顶点1fruits属性包含applepear两个属性值,codes属性只包含22一个属性值。

  • 顶点2fruits属性包含bananabitter orange两个属性值,codes属性也包含2581两个属性值。

  • 顶点3fruits属性包含cherryblackberrygrape三个属性值,codes属性包含312两个属性值。

  • 顶点4codes属性包含5411两个属性值,不包含fruits属性。