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);
親トピック: 追加の頂点またはエッジ・プロバイダのロードまたは削除