14.3.1.1 Oracle Graph Javaクライアント

Oracle Graph Server and Clientに付属しているoracle-graph-client-24.1.0.zipファイルからJavaクライアントをインストールしたり、Maven CentralでJavaクライアントを使用できます。

14.3.1.1.1 グラフ・サーバーおよびクライアント・ダウンロードからのJavaクライアントのインストール

Oracle Graph Client 24.1.0のzipファイルをダウンロードし、Javaクライアントをインストールできます。

Javaクライアントをインストールするための前提条件は次のとおりです。
  • サポートされているオペレーティング・システム: Unixベースのオペレーション・システム(Linuxなど)、macOSまたはMicrosoft Windows
  • サポートされているJDKバージョン:
    • Oracle JDK 11またはJDK 17
    • OpenJDK JDK 11またはJDK 17

ノート:

Oracle JDKおよびOpenJDKのバグにより、JShellセッションにコピー・アンド・ペーストしようとするとデッドロックが発生するため、次のJDKバージョンは使用しないようにすることをお薦めします:
  • JDK 11.0.9
  • JDK 11.0.10
  • JDK 11.0.11
  • JDK 11.0.12
  1. Oracle Software CloudからOracle Graph Clientをダウンロードします。
    たとえば、oracle-graph-client-24.1.0.zipです。
  2. 選択したディレクトリに、このファイルを解凍します。
  3. 自己署名キーストアを信頼するようにクライアントを構成します。詳細は、「自己署名キーストアを信頼するためのクライアントの構成」を参照してください。
  4. 次に示すように、OPG4Jシェルを起動してグラフ・サーバー(PGX)に接続します。
    cd <CLIENT_INSTALL_DIR>
    ./bin/opg4j --base_url https://<host>:7007 --username <graphuser>
    

    前述のコードで:

    • <CLIENT_INSTALL_DIR>: シェル実行可能ファイルが置かれているディレクトリ。

      シェル実行可能ファイルは、通常、サーバーのインストール後は/opt/oracle/graph/binにあり、クライアントのインストール後は<CLIENT_INSTALL_DIR>/binにあります。

    • <host>: サーバー・ホスト

      ノート:

      グラフ・サーバー(PGX)は、デフォルトでポート7007でリスニングします。必要に応じて、サーバー構成ファイル(server.conf)内のポート値を変更して、別のポートでリスニングするようにグラフ・サーバーを構成できます。詳細は、グラフ・サーバー(PGX)の構成を参照してください。
    • <graphuser>: データベース・ユーザー

    データベース・パスワードの入力を要求されます。

    OPG4Jシェルを起動できる様々な方法の詳細は、OPG4Jシェルの起動を参照してください。

    OPG4Jシェルが起動し、次に示すコマンドライン・プロンプトが表示されます。

    For an introduction type: /help intro
    Oracle Graph Server Shell 24.1.0
    Variables instance, session, and analyst ready to use.
    opg4j>

    関連項目:

    Java APIの詳細は、Java APIリファレンスを参照してください

14.3.1.1.2 Maven CentralでのOracle Graph Java Clientの使用

Maven Centralからプロパティ・グラフJavaクライアントを取得できます。

グラフJavaクライアント用のMavenアーティファクトは、次のとおりです。
  • グループ名: com.oracle.database.graph
  • アーティファクト名: opg-client
  • バージョン: 24.10

次のステップを実行して、Maven CentralからグラフJavaクライアントを使用できます。

  1. Apache Mavenをシステムにダウンロードしてインストールします。
    詳細は、Apache Maven Projectを参照してください。
  2. mvnコマンドを使用してbinフォルダをPATH変数に追加します。
  3. Mavenプロジェクトをビルドし、プロジェクト・ディレクトリにナビゲートします。
  4. 次のように、pom.xmlファイルを編集します。
    1. 次のように、グラフJavaクライアントの依存関係を追加します。
      <dependencies>
          <dependency>
            <groupId>com.oracle.database.graph</groupId>
            <artifactId>opg-client</artifactId>
            <version>24.1.0</version>
          </dependency>
      </dependencies>

      ノート:

      Gradleをビルド・ツールとして使用している場合、Javaクライアントの同等の依存関係宣言は次のとおりです。

      implementation group: 'com.oracle.database.graph', name: 'opg-client', version: '24.1.0'

    2. JavaクライアントがSpoofax Language Workbenchライブラリに依存してPGQL問合せをコンパイルするため、次のリポジトリを追加します。
      <repositories>
          <repository>
            <id>spoofax</id>
            <url>https://artifacts.metaborg.org/content/repositories/releases</url>
          </repository>
      </repositories>
  5. 必要に応じて、ステップ4をスキップし、<project_dir>/POM.xmlファイルに次の最小POM構成をコピーできます。
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <groupId>com.mycompany.app</groupId>
      <artifactId>my-app</artifactId>
      <packaging>jar</packaging>
      <version>1.0-SNAPSHOT</version>
      <name>my-app</name>
      <repositories>
        <repository>
          <id>spoofax</id>
          <url>https://artifacts.metaborg.org/content/repositories/releases</url>
        </repository>       
      </repositories>
      <dependencies>
        <dependency>
          <groupId>com.oracle.database.graph</groupId>
          <artifactId>opg-client</artifactId>
          <version>24.1.0</version>
        </dependency>
      </dependencies>
    </project>
  6. <project_dir>/src/main/java/com/mycompany/appでJavaコードを作成し、Mavenを使用してコンパイルします。
    たとえば、次のコードは<project_dir>/src/main/java/com/mycompany/app/App1.javaファイルに格納されます。
    package com.mycompany.app;
     
    import java.sql.DriverManager;
    import java.sql.Connection;
    import java.sql.Statement;
    import oracle.pg.rdbms.pgql.PgqlConnection;
    import oracle.pg.rdbms.pgql.PgqlStatement;
    import oracle.pg.rdbms.pgql.PgqlResultSet;
    import oracle.pgx.api.*;
    import oracle.pg.rdbms.GraphServer;
    import oracle.pg.rdbms.pgql.jdbc.PgqlJdbcRdbmsDriver;
    
    public class App1 {
     
      public static void main(String[] args) throws Exception {
        String dbConnectString = args[0];
        String username = args[1];
        String password = args[2];
     
        // Obtain a JDBC database connection
        DriverManager.registerDriver(new PgqlJdbcRdbmsDriver());
        String jdbcUrl = "jdbc:oracle:pgql:@" + dbConnectString;
        System.out.println("connecting to " + jdbcUrl);
    
        try (Connection conn = DriverManager.getConnection(jdbcUrl, username, password)) {
          conn.setAutoCommit(false);
    
          // Create PGQL connection
          PgqlConnection pgqlConn = PgqlConnection.getConnection(conn);
    
          // Create a PGQL statement to execute PGQL queries
          PgqlStatement pgqlStmt = pgqlConn.createStatement();
    
          // Create a PGQL property graph using the CREATE PROPERTY GRAPH statement
          String pgPgqlName = "BANK_GRAPH";
          String createPgPgqlQuery = 
              "CREATE PROPERTY GRAPH " + pgPgqlName + " " +
              "VERTEX TABLES ( BANK_ACCOUNTS AS ACCOUNTS " +
              "KEY (ID) " +
              "LABEL ACCOUNTS " +
              "PROPERTIES (ID, NAME)" +
              ") " +
              "EDGE TABLES ( BANK_TXNS AS TRANSFERS " +
              "KEY (FROM_ACCT_ID, TO_ACCT_ID, AMOUNT) " +
              "SOURCE KEY (FROM_ACCT_ID) REFERENCES ACCOUNTS (ID) " +
              "DESTINATION KEY (TO_ACCT_ID) REFERENCES ACCOUNTS (ID) " +
              "LABEL TRANSFERS " +
              "PROPERTIES (FROM_ACCT_ID, TO_ACCT_ID, AMOUNT, DESCRIPTION)" +
              ") OPTIONS(PG_PGQL)";
    
          pgqlStmt.execute(createPgPgqlQuery);
    
          // Execute a query to retrieve the first 10 elements of the graph
          String pgqlQuery = 
              "SELECT e.from_acct_id, e.to_acct_id, e.amount FROM " +
              "MATCH (n:ACCOUNTS) -[e:TRANSFERS]-> (m:ACCOUNTS) ON " +
              pgPgqlName + " LIMIT 10";
    
          PgqlResultSet rs = pgqlStmt.executeQuery(pgqlQuery);
          rs.print();
    
          // Drop the PGQL property graph using the DROP PROPERTY GRAPH statement
          String dropPgPgqlQuery = "DROP PROPERTY GRAPH " + pgPgqlName;
          pgqlStmt.execute(dropPgPgqlQuery);
        }
        System.exit(0);
      }
    }

    その後、プロジェクト・ディレクトリにナビゲートして次のコマンドを実行することで、前述のコードをコンパイルして実行できます。

    mvn compile exec:java -Dexec.mainClass="com.mycompany.app.App1"-Dexec.arguments='<db-connect-string>,<username>,<password>'

    正常に処理されると、コードによって次のような出力が生成されます。実際の出力は、<db-connect-string>によって異なる場合があります。

    [INFO] --- exec-maven-plugin:3.1.0:java (default-cli) @ my-app ---
    connecting to jdbc:oracle:pgql:@myhost:1521/oradb
    name = Baz