26.5.1.1.2 エッジ・プロバイダのロード

alterationBuilder.addEdgeProvider(EntityProviderConfig edgeProviderConfig)をコールすることで、エッジ・プロバイダを追加できます。ここで、edgeProviderConfigはエッジ・プロバイダ構成であり、次のような構成詳細を提供します。
  • ロード元となるデータソースの場所
  • 格納形式
  • エッジ・プロバイダのプロパティ

それがリンクされている出力および入力頂点プロバイダは、ベース・グラフにすでに存在するか(変更で削除されない)、変更とともに追加される必要があります。

JSON構成からのエッジ・プロバイダの追加

また、alterationBuilder.addEdgeProvider(String pathToEdgeProviderConfig)をコールすることでもプロバイダを追加できます。ここで、pathToEdgeProviderConfigは、エッジ・プロバイダ構成のJSON表現を含む、クライアントからアクセス可能なファイルを指します。

たとえば、エッジ・プロバイダ構成は、次のようにJSONファイルに格納できます。

{
  "name": "Transfers",
  "format": "rdbms",
  "database_table_name": "BANK_EDGES_AMT",
  "key_column": "ID",
  "source_column": "SRC_ID",
  "destination_column": "DEST_ID",
  "source_vertex_provider": "Accounts",
  "destination_vertex_provider": "Accounts",
  "props": [
    {
      "name": "AMOUNT",
      "type": "float"
    }
  ]
}

その後、次の例で示すように、エッジ・プロバイダを追加できます。

// Loading by indicating the path to the JSON file
opg4j> alterationBuilder.addEdgeProvider("<path-to-edge-provider-configuration>")
$10 ==> oracle.pgx.api.graphalteration.internal.GraphAlterationBuilderImpl@48d464cf

// Or by first loading the content of a JSON file into an EntityProviderConfig object
opg4j> EntityProviderConfig edgeProviderConfig = new AnyFormatEntityProviderConfigFactory().fromPath("<path-to-edge-provider-configuration>")
edgeProviderConfig ==> {"format":"rdbms","source_vertex_provider":"Accounts","name":"Transfers","database_table_name":"BANK_EDGES_AMT","loading":{"create_key_mapping":false},"source_column":"SRC_ID","destination_column":
"DEST_ID","key_type":"long","destination_vertex_provider":"Accounts","props":[{"type":"float","name":"AMOUNT"}],"key_column":"ID"}

opg4j> alterationBuilder.addEdgeProvider(edgeProviderConfig)
$26 ==> oracle.pgx.api.graphalteration.internal.GraphAlterationBuilderImpl@7b303608
// Loading by indicating the path to the JSON file
alterationBuilder.addEdgeProvider("<path-to-edge-provider-configuration>");

// Or by first loading the content of a JSON file into an EntityProviderConfig object
EntityProviderConfig edgeProviderConfig = new AnyFormatEntityProviderConfigFactory().fromPath("<path-to-edge-provider-configuration>");
alterationBuilder.addEdgeProvider(edgeProviderConfig);
# Loading by indicating the path to the JSON file
alterationBuilder.add_edge_provider("<path-to-edge-provider-configuration>");

APIの使用によるプログラムでのエッジ・プロバイダの追加

または、エッジ・プロバイダ構成をプログラムで作成することもできます。

opg4j> RdbmsEntityProviderConfigBuilder edgeProviderConfigBuilder = new RdbmsEntityProviderConfigBuilder().
...>                                              setName("Transfers").
...>                                              setKeyColumn("id").
...>                                              setSourceColumn("src_id").
...>                                              setDestinationColumn("dest_id").
...>                                              setSourceVertexProvider("Accounts").
...>                                              setDestinationVertexProvider("Accounts").
...>                                              createKeyMapping(true).
...>                                              setDatabaseTableName("bank_txns").
...>                                              addProperty("from_acct_id", PropertyType.LONG).
...>                                              addProperty("to_acct_id", PropertyType.LONG).
...>                                              addProperty("amount", PropertyType.LONG)
edgeProviderConfigBuilder ==> oracle.pgx.config.RdbmsEntityProviderConfigBuilder@5a5f65b9

opg4j> EntityProviderConfig edgeProviderConfig = edgeProviderConfigBuilder.build()
edgeProviderConfig ==> {"error_handling":{},"attributes{},"destination_column":"dest_id","key_type":"long","destination_vertex_provider":"Accounts","key_column":"id","format":"rdbms","source_vertex_provider":
"Accounts","name":"Transfers","database_table_name":"bank_txns","loading":{"create_key_mapping":true},"source_column":"src_id","props":[{"dimension":0,"type":"long","name":"from_acct_id"},{"dimension":0,"type":"long",
"name":"to_acct_id"},{"dimension":0,"type":"long","name":"amount"}]}

opg4j> alterationBuilder.addEdgeProvider(edgeProviderConfig)
$30 ==> oracle.pgx.api.graphalteration.internal.GraphAlterationBuilderImpl@441ccfd7
RdbmsEntityProviderConfigBuilder edgeProviderConfigBuilder = new RdbmsEntityProviderConfigBuilder()
.setName("Transfers")
.setKeyColumn("id")
.setSourceColumn("src_id")
.setDestinationColumn("dest_id").
.setSourceVertexProvider("Accounts")
.setDestinationVertexProvider("Accounts")
.createKeyMapping(true)
.setDatabaseTableName("bank_txns")
.addProperty("from_acct_id", PropertyType.LONG)
.addProperty("to_acct_id", PropertyType.LONG)
.addProperty("amount", PropertyType.LONG);

EntityProviderConfig edgeProviderConfig = edgeProviderConfigBuilder.build();
alterationBuilder.addEdgeProvider(edgeProviderConfig);