A.1 2表スキーマの準備

OraclePropertyGraphUtils.prepareTwoTablesGraphVertexTabにより、2表スキーマを使用して頂点表のスキーマをカスタマイズして、すべての頂点をグラフに格納することができます。この操作には、Oracleデータベース、表の所有者、表名、およびプロパティ名とデータ型を指定する2つの配列に対する接続が必要です。デフォルトで、生成された表の表スキーマには、属性VIDが含まれ、これは表の主キーを表し、頂点IDにマッピングされます。

次のコード・スニペットは、2表スキーマを使用して頂点表を作成します。この場合、生成された表employeesNodesには4つの属性が含まれます。nameageaddressおよびSSN (Social Security Number)です。頂点表の主キーは生成された属性VIDです。

import oracle.pgx.common.types.PropertyType;
List<String> propertyNames = new ArrayList<String>();
propertyNames.addAll(new String[4]{ "name", "age", "address", "SSN" });

List<PropertyType> = new ArrayList<PropertyType>();
propertyType.add(PropertyType.STRING);
propertyType.add(PropertyType.INTEGER);
propertyType.add(PropertyType.STRING);
propertyType.add(PropertyType.STRING);

OraclePropertyGraphUtils.prepareTwoTablesGraphVertexTab(conn /* Connection object */,
                                            pg /* table owner */, 
                                            "employeesNodes" /* vertex table name */, 
                                            propertyNames /* property names */, 
                                            propertyTypes /* property data types */,
                                            "pgts" /* table space */, 
                                            null /* storage options */, 
                                            true /* no logging */);

前述のコードは次のような表スキーマを生成します。

CREATE TABLE employeenodes
( VID number not null,
  NAME nvarchar2(15000),
  AGE integer,
  ADDRESS nvarchar2(15000),
  SSN nvarchar2(15000),  
  CONSTRAINT employenodes_pk PRIMARY KEY (VID)
);

同様に、OraclePropertyGraphUtils.prepareTwoTablesGraphEdgeTabにより、2表スキーマを使用してエッジ表のスキーマをカスタマイズして、すべてのエッジをグラフに格納することができます。この操作には、Oracleデータベース、表の所有者、表名、およびプロパティ名とデータ型を指定する2つの配列に対する接続が必要です。デフォルトで、生成された表の表スキーマには、次の属性が含まれます。EID、表の主キーを表し、エッジIDにマップされます。EL、エッジ・ラベルにマップされます。SVIDおよびDVID、それぞれ出力および入力頂点IDです。

次のコード・スニペットは、2表スキーマを使用してエッジ表を作成します。この場合、生成された表organizationEdgesにはweightという名前の属性が含まれます。頂点表の主キーは、生成された属性EIDで、これは表スキーマのデフォルトの属性で、頂点ID(long値)の値にマッピングされます。

import oracle.pgx.common.types.PropertyType;
List<String> propertyNames = new ArrayList<String>();
propertyNames.addAll(new String[1]{ "weight" });

List<PropertyType> = new ArrayList<PropertyType>();
propertyType.add(PropertyType.DOUBLE);
OraclePropertyGraphUtils.prepareTwoTablesGraphEdgeTab(conn /* Connection object */,
                                            pg /* table owner */, 
                                            organizationEdges" /* edge table name */, 
                                            propertyNames /* property names */, 
                                            propertyTypes /* property data types */,
                                            "pgts" /* table space */, 
                                            null /* storage options */, 
                                            true /* no logging */);

前述のコードは次のような表構造を生成します。

CREATE TABLE organizationedges
( EID number not null,
  SVID number not null,
  DVID number not null,
  EL nvarchar2(3100),
  WEIGHT number,
  CONSTRAINT organizationedges_pk PRIMARY KEY (EID)
);

表がすでに存在する場合、prepareTwoTablesGraphEdgeTabprepareTwoTablesGraphEdgeTabの両方は表コンテンツを切り捨てます。