19.2 グラフ・サーバーのREST APIバージョン1

グラフ・サーバーのREST APIバージョン1 (v1)について学習します。

19.2.1 ログイン

POST https://localhost:7007/ui/v1/login/

グラフ・サーバーにログインします。

バージョン: v1

認証: Cookieベースの認証を使用します。

表19-4 パラメータ

パラメータ パラメータ・タイプ 必須
Content-type ヘッダー application/json はい
username 本文 <username> はい
password 本文 <password> はい
baseUrl 本文 グラフ・サーバー(PGX)またはデータベースを指す<baseUrl> オプション。空の場合、/opt/oracle/graph/pgx/server/graph-server-webapp-24.3.0.warweb.xmlファイル内のpgx.base_urlパラメータ値が使用されます。
pgqlDriver 本文 有効なPGQLドライバの構成値は次のとおりです。
  • pgxDriver: グラフ・サーバー上のPGQL (PGX)の場合
  • pgqlDriver: Oracle Database上のPGQLの場合
はい
sessionId 本文 グラフ・サーバー(PGX)からのsessionId オプション

リクエスト

次のcurlコマンドは、グラフ・サーバーにユーザーをサインインします:

curl --cacert /etc/oracle/graph/ca_certificate.pem -c cookie.txt -X POST -H "Content-Type: application/json" -d '{"username": "<username>", "password": "<password>", "pgqlDriver": "<pgqlDriver>","baseUrl": "<baseUrl>", "sessionId": "<sessionId>" }' https://localhost:7007/ui/v1/login/
レスポンス: ログインに使用されたusername。たとえば:
"oracle"

ログインに成功すると、サーバー・セッションCookieがCookieファイルcookie.txtに格納されます。APIへのその後のコールで、このCookieファイルを使用します。

19.2.2 グラフの取得

GET https://localhost:7007/ui/v1/graphs

ユーザーに属するすべてのグラフのリストを取得します。

バージョン: v1

リクエスト

次のcurlコマンドは、ユーザーに属するすべてのグラフをリストします。

curl --cacert /etc/oracle/graph/ca_certificate.pem -b cookie.txt 'https://localhost:7007/ui/v1/graphs'

レスポンス: 現在のユーザーが使用できるグラフのリスト。たとえば:

[
  {
    "schema": "HR",
    "graphName": "MY_GRAPH"
  }
]

また、schemaパラメータは、グラフ・サーバー(PGX)で作成されたグラフの場合、NULLになることに注意してください。

19.2.3 PGQL問合せの実行

POST https://localhost:7007/ui/v1/query

プロパティ・グラフでPGQL問合せを実行します。

バージョン: v1

表19-5 リクエスト問合せのパラメータ

パラメータ 説明 必須
pgql PGQL問合せ文字列 <PGQL_query> はい
graph グラフの名前 <graph_name> pgql問合せパラメータにグラフ名が含まれている場合にのみ、オプションです。それ以外の場合は、必須です。
parallelism 並列度 <parallelism_value> オプション。
デフォルト値は、PGQLドライバ構成によって異なります。
  • pgxDriver: <number-of-cpus>

    表23-1parallelismを参照してください。

  • pgqlDriver: 1
size 問合せ結果のフェッチ・サイズ(=行数) <size_value> オプション。サイズのデフォルト値は100です。
formatter グラフのフォーマッタ <formatter_value> オプション。
サポートされているフォーマッタは次のとおりです:
  • datastudio
  • gvt

デフォルト値はdatastudioです。

リクエスト

次のcurlコマンドは、プロパティ・グラフでPGQL問合せを実行します。

curl --cacert /etc/oracle/graph/ca_certificate.pem -b cookie.txt 'https://localhost:7007/ui/v1/query?pgql=SELECT%20e%0AMATCH%20()-%5Be%5D-%3E()%0ALIMIT%205&graph=hr&size=100'

レスポンス: PGQL問合せの結果はJSON形式になります。

{
  "name": "bank_graph_analytics_2",
  "resultSetId": "pgql_14",
  "graph": {
    "idType": "number",
    "vertices": [
      {
        "_id": "1",
        "p": [],
        "l": [
          "Accounts"
        ],
        "g": [
          "anonymous_1"
        ]
      },
      {
        "_id": "418",
        "p": [],
        "l": [
          "Accounts"
        ],
        "g": [
          "anonymous_2"
        ]
      },
      {
        "_id": "259",
        "p": [],
        "l": [
          "Accounts"
        ],
        "g": [
          "anonymous_2"
        ]
      }
    ],
    "edges": [
      {
        "_id": "0",
        "p": [
          {
            "n": "AMOUNT",
            "v": "1000.0",
            "s": false
          }
        ],
        "l": [
          "Transfers"
        ],
        "g": [
          "e"
        ],
        "s": "1",
        "d": "259",
        "u": false
      },
      {
        "_id": "1",
        "p": [
          {
            "n": "AMOUNT",
            "v": "1000.0",
            "s": false
          }
        ],
        "l": [
          "Transfers"
        ],
        "g": [
          "e"
        ],
        "s": "1",
        "d": "418",
        "u": false
      }
    ],
    "paths": [],
    "totalNumResults": 2
  },
  "table": "e\nPgxEdge[provider=Transfers,ID=0]\nPgxEdge[provider=Transfers,ID=1]"
}

19.2.4 ユーザーの取得

GET https://localhost:7007/ui/v1/user

現在のユーザーの名前を取得します。

バージョン: v1

リクエスト

次のcurlコマンドは、現行ユーザーの名前を取得します。

curl --cacert /etc/oracle/graph/ca_certificate.pem -b cookie.txt 'https://localhost:7007/ui/v1/user'

レスポンス: 現行ユーザーの名前。たとえば:

"oracle"

19.2.5 ログアウト

POST https://localhost:7007/ui/v1/logout/

グラフ・サーバーからログアウトします。

バージョン: v1

リクエスト

次のcurlコマンドは、グラフ・サーバーから正常にログアウトするためのものです。

curl --cacert /etc/oracle/graph/ca_certificate.pem -b cookie.txt -X POST 'https://localhost:7007/ui/v1/logout/'

レスポンス: なし

ログアウトに成功すると、サーバーはHTTPステータス・コード200を戻し、cookie.txtファイルのセッション・トークンが無効になります。

19.2.6 非同期RESTエンドポイント

グラフ・サーバーのRESTエンドポイントは、問合せの取消しをサポートしています。

問合せを取り消すには、次の非同期RESTエンドポイントを使用して問合せを送信する必要があります。

19.2.6.1 非同期PGQL問合せの実行

GET https://localhost:7007/ui/v1/async-query

プロパティ・グラフでPGQL問合せを非同期で実行します。

バージョン: 1

問合せパラメータの詳細は、表19-5を参照してください。

リクエスト

次のcurlコマンドは、プロパティ・グラフでPGQL問合せを非同期に実行します。

curl --cacert /etc/oracle/graph/ca_certificate.pem -b cookie.txt 'https://localhost:7007/ui/v1/async-query?pgql=SELECT%20e%0AMATCH%20()-%5Be%5D-%3E()%0ALIMIT%205&graph=hr&parallelism=&size=100'

レスポンス: なし。

ノート:

問合せの形式が正しくない場合、またはグラフが存在しない場合は、エラー・メッセージが返されます。

19.2.6.2 非同期問合せ完了の確認

GET https://localhost:7007/ui/v1/async-query-complete

非同期問合せの実行が完了しているかどうかを確認します。

バージョン: v1

リクエスト

次のcurlコマンドは、PGQL問合せの実行が完了しているかどうかを確認します。

curl --cacert /etc/oracle/graph/ca_certificate.pem -b cookie.txt 'https://localhost:7007/ui/v1/async-query-complete'

レスポンス: 問合せの実行が完了したかどうかを示すブール。たとえば、

true

ノート:

現在実行中の問合せはHTTPセッションにアタッチされているため、リクエストIDを指定する必要はありません。セッションごとに1つの問合せのみを実行できます。問合せを同時実行するには、複数回ログインして複数のHTTPセッションを作成します。

19.2.6.3 非同期問合せ結果の取得

GET https://localhost:7007/ui/v1/async-result

非同期問合せの結果を取得します。

バージョン: v1

ノート:

問合せ結果を取得するエンドポイントGET https://localhost:7007/ui/v1/async-resultは非推奨です。
curl --cacert /etc/oracle/graph/ca_certificate.pem -b cookie.txt 'https://localhost:7007/ui/v1/async-result?pgql=SELECT%20e%0AMATCH%20()-%5Be%5D-%3E()%0ALIMIT%205&graph=hr&parallelism=&size=100'

リクエスト

次のcurlコマンドは、正常に完了した問合せの結果を取得します。

curl --cacert /etc/oracle/graph/ca_certificate.pem -b cookie.txt 'https://localhost:7007/ui/v1/async-result'

レスポンス: PGQL問合せの結果はJSON形式になります。

{
  "name": "bank_graph_analytics_2",
  "resultSetId": "pgql_14",
  "graph": {
    "idType": "number",
    "vertices": [
      {
        "_id": "1",
        "p": [],
        "l": [
          "Accounts"
        ],
        "g": [
          "anonymous_1"
        ]
      },
      {
        "_id": "418",
        "p": [],
        "l": [
          "Accounts"
        ],
        "g": [
          "anonymous_2"
        ]
      },
      {
        "_id": "259",
        "p": [],
        "l": [
          "Accounts"
        ],
        "g": [
          "anonymous_2"
        ]
      }
    ],
    "edges": [
      {
        "_id": "0",
        "p": [
          {
            "n": "AMOUNT",
            "v": "1000.0",
            "s": false
          }
        ],
        "l": [
          "Transfers"
        ],
        "g": [
          "e"
        ],
        "s": "1",
        "d": "259",
        "u": false
      },
      {
        "_id": "1",
        "p": [
          {
            "n": "AMOUNT",
            "v": "1000.0",
            "s": false
          }
        ],
        "l": [
          "Transfers"
        ],
        "g": [
          "e"
        ],
        "s": "1",
        "d": "418",
        "u": false
      }
    ],
    "paths": [],
    "totalNumResults": 2
  },
  "table": "e\nPgxEdge[provider=Transfers,ID=0]\nPgxEdge[provider=Transfers,ID=1]"
}

19.2.6.4 非同期問合せ実行の取消し

DELETE https://localhost:7007/ui/v1/async-query

非同期問合せの実行を取り消します。

バージョン: 1

リクエスト

次のcurlコマンドは、プロパティ・グラフで現在実行中のPGQL問合せを取り消します。

curl -X DELETE --cacert /etc/oracle/graph/ca_certificate.pem -b cookie.txt 'https://localhost:7007/ui/v1/async-query'

レスポンス: 取消しの確認か、問合せの実行がすでに完了している場合はエラー・メッセージ。