全部产品
云市场
云游戏

Gremlin(CSV)文件格式

更新时间:2020-01-11 17:33:26

使用 CSV 格式加载 Apache TinkerPop Gremlin 数据,必须将顶点和边分别放到单独的文件。加载程序可以在单个加载任务中加载多个顶点文件和多个边文件。

每一个加载任务的加载文件集必须位于OSS的bucket同一文件夹中,不使用文件名和文件扩展名来区分顶点文件和边文件。

Gremlin CSV格式遵循RFC 4180 CSV规范。有关更多信息,请参阅Internet Engineering Task Force (IETF)网站上的CSV文件的一般格式和MIME类型

注意

所有文件必须采用 UTF-8 格式编码。

每个文件都包含一个逗号分隔的标题行,此标题行由系统列标题和属性列标题组成。

注意

标题行是数据文件的第一行,由\n\r\n结束,行内部不支持使用双引号、行换符等特殊字符,除分隔符逗号(,)外的其余字符均被解析为标题内容。

系统列标题

顶点文件和边文件的系统列标题不同,每个系统列在标题中只能出现一次,所有标签都是字符串类型,并且区分大小写。

顶点标题

  • ~id - 必需,顶点的ID。
  • ~label,- 顶点的标签,只支持单个标签

边标题

  • ~id - 必需,边的ID。
  • ~from - 必需,源顶点的顶点ID
  • ~to - 必需,目标顶点的顶点ID
  • ~label,- 边的标签,只支持单个标签

属性列标题

可通过以下语法指定属性列,类型名称不区分大小写。

  1. propertyname:type

注意

  1. 列标题中不允许使用空格,因此,属性名称也不能包含空格。
  2. 属性不支持List和Set数据类型,只能有一个值。

以下示例显示了名为age、类型为Int的属性的列标题。

  1. age:Int

文件中的每行都需要在该位置具有整数或保留为空。

数据类型

下面列出允许的属性值类型及描述。

Bool(或Boolean)

指示Boolean字段,允许的值:false, true, FALSE, TRUE。

整数类型

超出所定义范围的值将导致错误。

类型 Range
char -128 ~ 127
short -32768 ~ 32767
int -2^31 ~ 2^31 -1
long -2^63 ~ 2^63 -1

小数类型

支持十进制记数法或科学记数法。不支持(+/-)INFINITY或NaN。

类型 Range
float 32位IEEE 754浮点
double 64位IEEE 754浮点

字符串

双引号是可选的,字符串中如果包含逗号(,)、换行(\r\n\n),双引号(“)等特殊字符,需要使用双引号(“)括起来。示例:”Hello,World”

如果用双引号括起来的字符串中包含有双引号,可根据CSV规则使用两个双引号转义。示例:”Hello “”World”””

字符串中不包含特殊字符,可以不使用双引号括起来。

注意

支持长度为零的空字符串,表示为:””,不使用双引号的空白域表示不存在,为nullptr

行格式

分隔符

行中字段是用逗号分隔的,行间是用换行符(\n)或回车换行符(\r\n)分隔的。

空白字段

非必需列 (如用户定义的属性) 允许使用空白字段。空白字段仍需要逗号分隔符。

顶点ID

每个顶点文件中所有顶点的 ~id 值都必须是唯一的。~id 值相同的多个顶点行适用于图形中的单个顶点。

边ID

每个边文件中所有边的 ~id 值都必须是唯一的。~id 值相同的多个边行适用于图形中的单个边。

标签

标签是字符串类型,区分大小写。

字符串值

引号是可选的,当包含逗号等特殊字符时需要使用双引号(“)括起来。

示例

以下使用TinkerPop modern图形为示例,表示为图的CSV数据文件。

tinkerpop-modern

以下是Gremlin CSV加载格式的数据文件。

顶点文件:

  1. ~id,~label,name:string,lang:string,age:int
  2. 1,person,marko,,29
  3. 2,person,vadas,,27
  4. 3,software,lop,java,
  5. 4,person,josh,,32
  6. 5,software,ripple,java,
  7. 6,person,peter,,35

顶点文件的表格视图:

~id ~label name:string lang:string age:int
1 person marko 29
2 person vadas 27
3 software lop java
4 person josh 32
5 software ripple java
6 person peter 35

边文件:

  1. ~id,~from,~to,~label,weight:double
  2. 7,1,2,knows,0.5
  3. 8,1,4,knows,1.0
  4. 9,1,3,created,0.4
  5. 10,4,5,created,1.0
  6. 11,4,3,created,0.4
  7. 12,6,3,created,0.2

边文件的表格视图:

~id ~from ~to ~label weight:double
7 1 2 knows 0.5
8 1 4 knows 1.0
9 1 3 created 0.4
10 4 5 created 1.0
11 4 3 created 0.4
12 6 3 created 0.2