16.1.4.5 フラット・ファイル(FLAT_FILE)

フラット・ファイル形式は、2つの記述ファイル(頂点用とエッジ用)を含むテキスト・ファイル形式です。各ファイルは、次の形式のプロパティのリストで構成されます。

vertices.opv

vertex_ID, key_name, value_type, value, value, value

<V-1> <V-1, VPK-1> <V-1, VPT-1> [<V-1, VP-1> <V-1, VP-1> <V-1, VP-1>]
...
<V-1> <V-1, VPK-N> <V-1, VPT-1> [<V-1, VP-N> <V-1, VP-N> <V-1, VP-N>]
<V-2> <V-2, VPK-1> <V-2, VPT-1> [<V-2, VP-1> <V-2, VP-1> <V-2, VP-1>]
...
<V-2> <V-2, VPK-N> <V-2, VPT-N> [<V-2, VP-N> <V-2, VP-N> <V-2, VP-N>]
...
<V-V> <V-V, VPK-N> <V-V, VPT-N> [<V-V, VP-N> <V-V, VP-N> <V-V, VP-N>]
edges.ope

edge_ID, source_vertex_ID, destination_vertex_ID, edge_label, key_name, value_type, value, value, value


<E-1> <V-1, VG-1> <E-1, EL-1> <E-1, EPK-1> <E-1, EPT-1> [<E-1, EP-1> <E-1, EP-1> <E-1, EP-1>]
...
<E-1> <V-N, VG-N> <E-1, EL-N> <E-1, EPK-N> <E-1, EPT-N> [<E-1, EP-N> <E-1, EP-N> <E-1, EP-N>]
<E-2> <V-1, VG-1> <E-2, EL-1> <E-2, EPK-1> <E-2, EPT-1> [<E-2, EP-1> <E-2, EP-1> <E-2, EP-1>]
...
<E-2> <V-N, VG-N> <E-2, EL-N> <E-2, EPK-N> <E-2, EPT-N> [<E-2, EP-N> <E-2, EP-N> <E-2, EP-N>]
...
<E-E> <V-N, VG-N> <E-E, EL-N> <E-E, EPK-N> <E-E, EPT-N> [<E-E, EP-N> <E-E, EP-N> <E-E, EP-N>]

フラット・ファイル形式を使用する際の特別な考慮事項

  • 特定の頂点またはエッジにプロパティが定義されていない場合、キー名のかわりに%20が使用されます。
    Vertices: 1,%20,,,, 
    Edges: 1,2,1,"label",%20,,,,
  • 数値でも日付でもない値は最初のフィールドに含まれ、数値は2番目、日付は3番目に含まれます。
  • 次に、PGXプロパティ・タイプとフラット・ファイルvalue_typeの間のマッピングを示します。

    表16-3 PGXプロパティ・タイプとフラット・ファイルvalue_typeの間のマッピング

    PGXプロパティ・タイプ フラット・ファイルvalue_type
    STRING 1
    INTEGER 2
    FLOAT 3
    DOUBLE 4
    DATE 5
    LOCAL_DATE 5
    TIME 5
    TIMESTAMP 5
    TIME_WITH_TIMEZONE 5
    TIMESTAMP_WITH_TIMEZONE 5
    BOOLEAN 6
    LONG 7
    POINT2D 200

    ノート:

    フラット・ファイル形式のグラフをPGXにロードする場合は、グラフ構成を使用して、適切なTemporal型または空間型を検索します。
  • フラット・ファイル形式の標準では、カンマが唯一有効な区切り文字として定義されているため、グラフ構成で設定されたすべての区切り文字は無視され、カンマがかわりに使用されます。
  • 文字列を引用符で囲むことはできませんが、一部の文字には次のエンコーディングが必要となります。
    • '%' -> '%25'
    • '\t' -> '%09'
    • ' ' -> '%20'
    • '\n' -> '%0A'
    • ',' -> '%2C'
  • グラフをフラット・ファイル形式で格納する場合、頂点ラベルは無視されます。また、グラフにエッジ・ラベルがない場合、かわりに空の文字列("")が格納されます。
  • フラット・ファイル形式を使用してグラフを並列してロードする場合は、特定の頂点またはエッジに関するすべての情報が同じパーティションに含まれている必要があり、そうでない場合は予期しない動作が発生する可能性があります。

例16-6 フラット・ファイル・テキスト形式のグラフ

次の例は、フラット・ファイル・テキスト形式でエンコードされた、それぞれdoubleプロパティとstringプロパティを持つ4つの頂点(1、2、3および4)、およびそれぞれbooleanプロパティとdateプロパティを持つ3つの頂点で構成されるグラフを示しています。

vertices.opv:

1,doubleProp,4,,8.0,
1,stringProp,1,foo,,
2,doubleProp,4,,4.3,
2,stringProp,1,bar,,
3,doubleProp,4,,6.1,
3,stringProp,1,bax,,
4,doubleProp,4,,17.78,
4,stringProp,1,f00,,
edges.ope:

1,2,1,label,boolProp,6,false,,
1,2,1,label,dateProp,5,,,1985-10-18%2010:00:00
2,3,2,label,boolProp,6,true,,
2,3,2,label,dateProp,5,,,1961-12-30%2014:45:14
3,3,4,label,boolProp,6,false,,
3,3,4,label,dateProp,5,,,2001-01-15%2007:00:43