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