https://blogs.oracle.com/oraclespatial/entry/property_graph_query_language_pgql
Oracle Database 12c Release 2 (12.2.0.1)で、Oracle Spatial and Graphの既存のProperty Graph機能にProperty Graph Query Language (PGQL) のサポートを追加するパッチがリリースされました。ダウンロードにはMy Oracle Supportの契約が必要です。
Patch 25640325: MISSING PGQL FUNCTION IN ORACLE DATABASE RELEASE 12.2.0.1PGQLはSQLのような宣言型言語で、これを使って、頂点と辺、ならびに頂点と辺のプロパティへの制約から構成されるグラフクエリパターンを表現することができます。
https://support.oracle.com/rs?type=patch&id=25640325
このパッチを貴社のデータベースインスタンスに適用すると、以下のGroovy/Javaベースのクイックテストを実行して、動作方法を確認できます。
cd $ORACLE_HOME/md/property_graph/dal/groovy sh ./gremlin-opg-rdbms.sh -------------------------------- opg-oracledb> // It is very likely that you need to customize JdbcURL, Username, and Password in the following graph config setting. opg-oracledb> // opg-oracledb> cfg = GraphConfigBuilder.forPropertyGraphRdbms().setJdbcUrl("jdbc:oracle:thin:@127.0.0.1:1521:orcl") .setUsername("scott").setPassword("tiger") .setName("connections") .setMaxNumConnections(8) .setLoadEdgeLabel(false) .addVertexProperty("name", PropertyType.STRING, "default_name") .addEdgeProperty("cost", PropertyType.DOUBLE, "1000000") .build(); opg-oracledb> opg = OraclePropertyGraph.getInstance(cfg); opg-oracledb> opg.clearRepository(); // start from scratch opg-oracledb> opgdl=OraclePropertyGraphDataLoader.getInstance(); opg-oracledb> vfile="../../data/connections.opv" // vertex flat file ==>../../data/connections.opv opg-oracledb> efile="../../data/connections.ope" // edge flat file ==>../../data/connections.ope opg-oracledb> opgdl.loadData(opg, vfile, efile, 2, 10000, true, null); ==>null opg-oracledb> opg.countVertices() ==>78 opg-oracledb> opg.countEdges() ==>164 opg-oracledb> // Create an in memory analytics session and analyst opg-oracledb> session=Pgx.createSession("session_ID_1"); opg-oracledb> analyst=session.createAnalyst(); opg-oracledb> opg-oracledb> // Read graph data from database into memory opg-oracledb> pgxGraph = session.readGraphWithProperties(opg.getConfig()); ==>PgxGraph[name=connections,N=78,E=164,created=1488415009543] opg-oracledb> pgxResultSet = pgxGraph.queryPgql("SELECT n,m WHERE (n) -> (m)") ==>PgqlResultSetImpl[graph=connections,numResults=164] opg-oracledb> pgxResultSet.print(10); +------------------------------------+ | n | m | +------------------------------------+ | PgxVertex[ID=2] | PgxVertex[ID=1] | | PgxVertex[ID=3] | PgxVertex[ID=1] | | PgxVertex[ID=6] | PgxVertex[ID=1] | | PgxVertex[ID=7] | PgxVertex[ID=1] | | PgxVertex[ID=8] | PgxVertex[ID=1] | | PgxVertex[ID=9] | PgxVertex[ID=1] | | PgxVertex[ID=10] | PgxVertex[ID=1] | | PgxVertex[ID=11] | PgxVertex[ID=1] | | PgxVertex[ID=12] | PgxVertex[ID=1] | | PgxVertex[ID=19] | PgxVertex[ID=1] | +------------------------------------+
0 件のコメント:
コメントを投稿