16.1.4.1 カンマ区切り値(CSV)
CSV形式はテキスト・ファイル形式で、頂点とエッジが別々のファイルに格納されます。ファイルの各行が頂点またはエッジを表します。頂点キーとラベル、エッジ・キー、出力、入力とラベル、およびアタッチされたプロパティが、ファイル・ヘッダー(最初の行)および構成で指定された順序で格納されます。
V個の頂点のそれぞれにN個の頂点プロパティとK個の近隣があり、E個のエッジにM個のエッジ・プロパティがあるグラフは、CSVでは次のように表されます。
vertices.csv <V-1>,<VL-1>,<V-1, NP-1>,...,<V-1, NP-N> <V-2>,<VL-2>,<V-2, NP-1>,...,<V-2, NP-N> ... <V-V>,<VL-N>,<V-V, NP-1>,...,<V-V, NP-N>
edges.csv <E-1>,<V-1>,<V-1, VG-1>,<EL-1>,<E-1, EP-1>,...,<E-1, EP-M> ... <E-K>,<V-1>,<V-1, VG-K>,<EL-N>,<E-K, EP-1>,...,<E-K, EP-M> <E-K+1>,<V-2>,<V-2, VG-1>,<EL-N+1>,<E-K+1, EP-1>,...,<E-K+1, EP-M> ... <E-V*K>,<V-V>,<V-V, VG-K>,<EL-V*K>,<E-V*K, EP-1>,...,<E-V*K, EP-M>
例16-1 ヘッダー詳細を含むCSVファイルからのグラフのロード
次の例は、2つの頂点と2つのエッジを含むグラフをロードするためのグラフ構成ファイルを示しています。
vertices.csv
key,integer_prop,string_prop
1,33,"Alice"
2,42,"Bob"
edges.csv
source,dest,integer_prop,string_prop
1,2,0,"baz"
2,2,-12,"bat"
対応するグラフ構成ファイルは次のとおりです。
{
"format": "csv",
"header": true,
"vertex_id_column": "key",
"edge_source_column": "source",
"edge_destination_column": "dest",
"vertex_uris": ["vertices.csv"],
"edge_uris": ["edges.csv"],
"vertex_props": [
{
"name": "integer_prop",
"type": "integer"
},
{
"name": "string_prop",
"type": "string"
}
],
"edge_props": [
{
"name": "integer_prop",
"type": "integer"
},
{
"name": "string_prop",
"type": "string"
}
]
}
例16-2 ヘッダー詳細のないCSVファイルからのグラフのロード
次の例は、2つの頂点と2つのエッジを含むグラフをロードするためのグラフ構成ファイルを示しています。
vertices.csv
1,33,"Alice"
2,42,"Bob"
edges.csv
1,2,0,"baz"
2,2,-12,"bat"
対応するグラフ構成ファイルは次のとおりです。
ノート:
列索引が列名のかわりに指定されます。{
"format": "csv",
"header": false,
"vertex_id_column": 1,
"edge_source_column": 1,
"edge_destination_column": 2,
"vertex_uris": ["vertices.csv"],
"edge_uris": ["edges.csv"],
"vertex_props": [
{
"name": "integer_prop",
"type": "integer",
"column": 2
},
{
"name": "string_prop",
"type": "string",
"column": 3
}
],
"edge_props": [
{
"name": "integer_prop",
"type": "integer",
"column": 3
},
{
"name": "string_prop",
"type": "string",
"column": 4
}
]
}
構成ファイルに列索引が設定されていない場合、列の順序は次のように想定されます。
- 頂点ファイルの場合: - 頂点ID - 頂点ラベル(存在する場合) - 構成で宣言された順序の頂点プロパティ
- エッジ・ファイルの場合: - エッジID (存在する場合) - エッジ出力 - エッジ入力 - エッジ・ラベル(存在する場合) - 構成で宣言された順序のエッジ・プロパティ
したがって、前の構成は次と同等です。
{
"format": "csv",
"header": false,
"vertex_uris": ["vertices.csv"],
"edge_uris": ["edges.csv"],
"vertex_props": [
{
"name": "integer_prop",
"type": "integer"
},
{
"name": "string_prop",
"type": "string"
}
],
"edge_props": [
{
"name": "integer_prop",
"type": "integer"
},
{
"name": "string_prop",
"type": "string"
}
]
}
親トピック: プレーン・テキスト形式