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フラット・ファイル形式の定義