5.9.3 頂点ファイル
頂点ファイルの各行は、プロパティ・グラフの1つの頂点を記述する1つのレコードです。1つのレコードは1つの頂点のキー値プロパティを記述できるので、複数のプロパティを持つ頂点を記述する場合は複数のレコード/行が使用されます。
レコードには、カンマで区切られたフィールドが含まれています。各レコードには、値があるかどうかに関係なく、最初の6つのフィールドを区切るために5つのカンマが含まれている必要があります。オプションの7番目のフィールドを(カンマで6番目のフィールドから区切って)追加して、頂点のラベルを定義できます。
vertex_ID, key_name, value_type, value, value, value, vertex_label
次の表では、頂点ファイルのレコードを構成するフィールドについて説明します。
表5-2 頂点ファイルのレコードの形式
| フィールド番号 | 名前 | 説明 | 
|---|---|---|
| 
                               1  | 
                           
                               vertex_ID  | 
                           
                               頂点を一意に識別する整数  | 
                        
| 
                               2  | 
                           
                               key_name  | 
                           
                               キー値ペアのキーの名前 頂点にプロパティが指定されていない場合は、空白( 1,%20,,,,  | 
                        
| 
                               3  | 
                           
                               value_type  | 
                           
                               キー値ペアの値のデータ型を表す整数。 
  | 
                        
| 
                               4  | 
                           
                               value  | 
                           
                               数値でも日付でもない場合のkey_nameのエンコードされたnullでない値  | 
                        
| 
                               5  | 
                           
                               value  | 
                           
                               数値の場合のkey_nameのエンコードされたnullではない値  | 
                        
| 
                               6  | 
                           
                               value  | 
                           
                               タイムスタンプ(日付)の場合のkey_nameのエンコードされたnullではない値 日付の形式を識別するには、Java  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX"); encode(sdf.format((java.util.Date) value)); | 
                        
| 
                               7  | 
                           
                               vertex_label  | 
                           
                               頂点のオプションのエンコードされたラベルで、頂点のタイプまたはカテゴリを示すために使用できます。  | 
                        
頂点の必須グループ化: 1つの頂点には複数のプロパティを指定でき、頂点ファイルには、頂点IDとその頂点の1つのプロパティの組合せごとに1つのレコード(フラット・ファイル内の単一テキスト行によって表される)が含まれます。頂点ファイルでは、各頂点のすべてのレコードがまとめてグループ化されている(つまり、他の頂点のレコードが間に入っていない)必要があります。これは任意の方法で行えますが、便利な方法は、頂点ファイルのレコードを頂点ID別に昇順(または降順)にソートすることです(ただし、頂点ファイルのすべてのレコードを頂点ID別にソートする必要があるわけではありません。これはグループ化要件を満たすための単なる1つの方法です)。
Oracleフラット・ファイル形式でエッジ・ファイルを構築する場合、頂点プロパティ名と値フィールドが適切にエンコードされていることを確認することが重要です(特に特殊文字のエンコーディングを参照)。エンコーディングを簡素化するには、OraclePropertyGraphUtils.escape Java APIを使用できます。 
               
OraclePropertyGraphUtils.outputVertexRecord(os, vid, key, value)ユーティリティ・メソッドを使用して、頂点レコードをOracleフラット・ファイル形式で直接直列化できます。このメソッドでは、特殊文字のエンコーディングについて心配する必要はありません。このメソッドは、vidによって識別される特定の頂点のキー/値プロパティを記述する新しいテキスト行を特定の出力ストリーム内に書き込みます。
               
例5-25 OraclePropertyGraphUtils.outputVertexRecordの使用
この例では、OraclePropertyGraphUtils.outputVertexRecordを使用して、頂点1に2つの新しい行を書き込んでいます。
                  
OutputStream os = new FileOutputStream("./example.opv");
long vid = 1;
String label = "person";
OraclePropertyGraphUtils.outputVertexRecord(os, vid, label, "name", "Robert Smith");
OraclePropertyGraphUtils.outputVertexRecord(os, vid, label, "birth year", 1961);
os.flush();
os.close();
生成される出力ファイルの1行目では、値「Robert Smith」を使用してプロパティ名を記述し、2行目はその出生年の1961年を記述しています。
% cat example.opv 1,name,1,Robert%20OSmith,,,person 1,birth%20year,2,,1961,,person
親トピック: Oracleフラット・ファイル形式の定義