26.2 グラフ・サーバー(PGX)のデータ型およびコレクション
このガイドでは、グラフ・サーバー(PGX)でサポートされているデータ型およびコレクションのリストを示します。
プリミティブ・データ型
次のセクションでは、グラフ・サーバー(PGX)でサポートされるプリミティブ・データ型とその制限について説明します。
PGXは、次のプリミティブ・データ型をサポートしています。
- 数値型:
integer
、long
、float
およびdouble
。これらの型のサイズ、範囲および精度は、対応するJavaプリミティブ・データ型と同じです。 - ブール型:
boolean
データ型に指定できる値は、true
とfalse
の2つのみです。JavaとC++と同様に、そのサイズは厳密には定義されていません。 - 文字列:
String
は、PGXのプリミティブ・データ型です。PGXは、文字列表現のJava規則に従います。 - 日時型:
date
、time
、timestamp
、time 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()
などの一部の操作は、不変コレクションを返します。これらのコレクションは通常のコレクションと同様に動作しますが、addAll
、removeAll
、clear
などの操作では変更できません。
不変コレクションは、コレクションの可変コピーを返すtoMutable
メソッドを使用して、可変コレクションに変換できます。すでに変更可能なコレクションでtoMutable
をコールすると、メソッドclone
と同じ結果になります。
コレクションが変更可能かどうかを確認するには、isMutable
メソッドを使用します。
マップ
PGXには、次の2種類のマップが用意されています。
- グラフバインド・マップでは、
PropertyType
のタイプ間のマッピングを保持できます。これは、キーまたは値の型がVERTEX
やEDGE
などのグラフ関連である場合に使用するマップです。それ以外の場合は、セッションバインド・マップを使用することをお薦めします。 - セッションバインド・マップは、グラフ関連でない型間でマップでき、セッションに直接バインドされます。
マップの作成と使用方法の例は、マップ・データ型を参照してください。
親トピック: PGXプログラミング・ガイド