26.2 グラフ・サーバー(PGX)のデータ型およびコレクション

このガイドでは、グラフ・サーバー(PGX)でサポートされているデータ型およびコレクションのリストを示します。

プリミティブ・データ型

次のセクションでは、グラフ・サーバー(PGX)でサポートされるプリミティブ・データ型とその制限について説明します。

PGXは、次のプリミティブ・データ型をサポートしています。

  • 数値型: integerlongfloatおよびdouble。これらの型のサイズ、範囲および精度は、対応するJavaプリミティブ・データ型と同じです。
  • ブール型: booleanデータ型に指定できる値は、truefalseの2つのみです。JavaとC++と同様に、そのサイズは厳密には定義されていません。
  • 文字列: Stringは、PGXのプリミティブ・データ型です。PGXは、文字列表現のJava規則に従います。
  • 日時型: datetimetimestamptime with time zoneおよびtimestamp with time zone。これらの型は、標準のライブラリ・パッケージjava.util.timeからの、表26-2に示すJava型に対応しています。
  • 頂点およびエッジ:グラフ自体の型であるvertexまたはedgeは、PGXの適切な型です。

ノート:

  • vertexおよびedge自体は、有効なプリミティブ・データ型です。たとえば、パス検索アルゴリズムでは、各vertexに、パス内の先行する頂点である入力近隣を格納する一時プロパティpredecessorを指定できます。このようなプロパティの型はvertexになります。
  • グラフ構成ファイルでは、dateのかわりにlocal_dateを使用する必要があります。日時データ型のその他の使用例については、日時データ型の使用を参照してください。

すべてのプロパティおよびスカラー変数は、前述のデータ型のいずれかである必要があります。一時プロパティおよびスカラー変数の処理の詳細は、一時データの管理を参照してください。

次の表に、サポートされるデータ型、異なる言語とAPIにおけるこれらのデータ型の統合、およびその最小値と最大値に関する制限について概要を示します。

ノート:

  • float型およびdouble型の場合、最小の絶対値が表に記載されています。最小値は、これらの型の最大値の負の値です。
  • 文字列値の場合、PGXは任意の長い文字列をサポートします。

表26-2 データ型の概要

データ型 ロードおよび格納 PGX Java API PGQLおよびフィルタ式 最小値の制限 最大値の制限
string string String STRING - -
int/integer int/integer int INT/INTEGER -2147483648 2147483647
long long long LONG -9223372036854775808 -9223372036854775807
float float float FLOAT 1.4E-45 3.4028235e+38
double double double DOUBLE 4.9E-324 1.7976931348623157E308
boolean boolean boolean BOOLEAN - -
date local_date LocalDate DATE -5877641-06-23 5881580-07-11
time time LocalTime TIME 00:00:00.000 23:59:59.999
timestamp timestamp LocalDateTime TIMESTAMP -292275055-05-17 00:00:00.000 292278994-08-17 07:12:55.807
time with time zone time_with_timezone OffsetTime TIMEWITHTIMEZONE 00:00:00.000+18:00 23:59:59.999-18:00
タイム・ゾーン付きタイムスタンプ timestamp_with_timezone OffsetDateTime TIMESTAMPWITHTIMEZONE -292275055-05-17 00:00:00.000+18:00 292278994-08-17 07:12:55.807-18:00
vertex - PgxVertex - - -
edge - PgxEdge - - -

コレクション

グラフ・サーバー(PGX)では、sequence、setおよびorderという3つの異なるコレクション型がサポートされています。これらすべてのコレクションにはvertex型の値を含めることができますが、各コレクションでは一意性およびその要素の順序の保持に関するセマンティクスが異なります。

  • シーケンス: sequenceは基本的にリストと同じように機能します。これにより、追加された要素の順序が保持され、同じ要素を複数回使用できます。
  • 集合: setには、同じ値を最大で1回含めることができます。setにすでに含まれている値を追加しても無効となります。setでは、含まれている要素の順序は保持されません。
  • 順序: setと同様に、orderコレクションには、各要素が最大で1回含まれます。ただし、orderでは、挿入された要素の順序が保持されます(つまり、FIFOデータ構造です)。

様々なコレクションの作成と使用方法の例は、コレクション・データ型を参照してください。

不変コレクション

PgxGraph.getVertices()PgxGraph.getEdges()などの一部の操作は、不変コレクションを返します。これらのコレクションは通常のコレクションと同様に動作しますが、addAllremoveAllclearなどの操作では変更できません。

不変コレクションは、コレクションの可変コピーを返すtoMutableメソッドを使用して、可変コレクションに変換できます。すでに変更可能なコレクションでtoMutableをコールすると、メソッドcloneと同じ結果になります。

コレクションが変更可能かどうかを確認するには、isMutableメソッドを使用します。

マップ

PGXには、次の2種類のマップが用意されています。

  • グラフバインド・マップでは、PropertyTypeのタイプ間のマッピングを保持できます。これは、キーまたは値の型がVERTEXEDGEなどのグラフ関連である場合に使用するマップです。それ以外の場合は、セッションバインド・マップを使用することをお薦めします。
  • セッションバインド・マップは、グラフ関連でない型間でマップでき、セッションに直接バインドされます。

マップの作成と使用方法の例は、マップ・データ型を参照してください。