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":" "
}
親トピック: プレーン・テキスト形式