27.1.4.3 エッジ・リスト(EDGE_LIST)

エッジ・リスト形式は、1行当たり1つの頂点を含むセクションから始まるテキスト・ファイル形式であり、その後に1行当たり1つのエッジを含むセクションが続きます。頂点にラベルまたはプロパティが存在しない場合、最初のセクションでは頂点を省略できますが、2番目のセクションでは引き続き頂点のエッジを指定します。

EdgeList      := {Vertex '\n'}* '\n' {Edge '\n'}*

Vertex        := VertexId '*' VertexLabels? PropertyValue*
VertexId      := Integer | Long | String
VertexLabels  := '{' String* '}'

Edge          := SrcVertex DstVertex EdgeLabel? PropertyValue*
SrcVertex     := VertexId
DstVertex     := VertexId
EdgeLabel     := String

PropertyValue := Integer | Long | Double | Float | Boolean | String | Date

頂点は識別子(VertexId)で始まり、その後に*、オプションの頂点ラベル・セット(VertexLabels?)および頂点プロパティ(PropertyValue*)が続きます。頂点識別子は、Integer、LongまたはStringのいずれかです。さらに、頂点ラベルは、中カッコに囲まれたゼロ個以上のString ('{' String* '}')です。

エッジは、出力および入力頂点の識別子(SrcVertex DstVertex)で始まり、その後にオプションのエッジ・ラベル(EdgeLabel?)およびエッジ・プロパティ(PropertyValue*)が続きます。エッジ・ラベルはStringです。

例27-4 エッジ・リスト形式のグラフ

次の例は、2つの頂点と2つのエッジを含むグラフを、ラベルとプロパティとともに示しています。

1 * { "Person" "Male" } "Mario" 15
2 * { "Person" "Male" } "Luigi" 14
1 2 "likes" 3.5
2 1 "likes" 2.1

2つの頂点(1-2行目)には識別子1と2があり、どちらの識別子にもラベル"Person"と"Male"、文字列プロパティ("Mario"と"Luigi")および整数プロパティ(15と14)があります。頂点1から頂点2へのエッジ(行3)には、ラベル"likes"と値が3.5のdoubleプロパティが、頂点2から頂点1への別のエッジには、ラベル"likes"と値が2.1のdoubleプロパティがあります。

次に、対応するグラフ構成を示します。

{
  "format":"edge_list",
  "uri":"example.edgelist",
  "vertex_id_type":"long",
  "vertex_labels":true,
  "edge_label":true,
  "vertex_props":[
    {
      "name":"name",
      "type":"string"
    },
    {
      "name":"age",
      "type":"int"
    }
  ],
  "edge_props":[
    {
      "name":"rating",
      "type":"double"
    }
  ],
  "loading_options": {
    "load_vertex_labels":true,
    "load_edge_label":true
  },
  "separator":" "
}