9 OPG_APISパッケージのサブプログラム

OPG_APISパッケージには、Oracleデータベースのプロパティ・グラフを操作するためのサブプログラム(ファンクションおよびプロシージャ)が含まれています。

この章で説明するサブプログラムを使用する場合は、このマニュアルの前の章の概念および使用方法を理解しておく必要があります。

この章では、サブプログラムに関するリファレンス情報をアルファベット順に説明します。

9.1 OPG_APIS.ANALYZE_PG

構文

OPG_APIS.ANALYZE_PG(
     graph_name       IN VARCHAR2,
     estimate_percent IN NUMBER,
     method_opt       IN VARCHAR2,
     degree           IN NUMBER,
     cascade          IN BOOLEAN,
     no_invalidate    IN BOOLEAN,
     force            IN BOOLEAN DEFAULT FALSE,
     options          IN VARCHAR2 DEFAULT NULL);

説明

指定したプロパティ・グラフに対し、VT$、GE$、IT$およびGT$表の統計を収集します。

パラメータ

graph_name

プロパティ・グラフの名前。

estimate_percent

スキーマ表の推定する行のパーセント(NULLは計算を意味します)。有効なレンジは、[0.000001,100]です。定数DBMS_STATS.AUTO_SAMPLE_SIZEを使用すると、有効な統計を生成するための適切なサンプル・サイズをOracleデータベースで決定できるようになります。これが通常のデフォルトです。

mrthod_opt

内部プロパティ・グラフ・スキーマ表に対し、次のオプションのいずれかまたは両方の組み合わせを受け入れます。

  • FOR ALL [INDEXED | HIDDEN] COLUMNS [size_clause]

  • FOR COLUMNS [size clause] column|attribute [size_clause] [,column|attribute [size_clause]...]

size_clauseは、size_clause := SIZE {integer | REPEAT | AUTO | SKEWONLY}として定義されます。

  • integer: ヒストグラム・バケット数。範囲は[1,254]である必要があります。

  • REPEAT: すでにヒストグラムがある列に対してのみ、ヒストグラムを収集します。

  • AUTO: 列のデータ配分とワークロードに基づいて、ヒストグラムを収集する列が判断されます。

  • SKEWONLY: 列のデータ配分に基づいて、ヒストグラムを収集する列が判断されます。

columnは、column := column_name | (extension)として定義されます。

  • column_name: 列の名前

  • extension(column_name, colume_name [, ...])の書式の列グループまたは式。

通常のデフォルトは、FOR ALL COLUMNS SIZE AUTOです

degree

プロパティ・グラフ・スキーマ表の並列度。通常、degreeのデフォルト値はNULLで、CREATE TABLE文またはALTER TABLE文のDEGREE句で指定された表のデフォルト値が使用されます。初期化パラメータに基づくデフォルト値を指定するには、定数DBMS_STATS.DEFAULT_DEGREEを使用します。AUTO_DEGREE値を指定すると、並列度が自動的に決定されます。オブジェクトのサイズに応じて、1(シリアル実行)またはDEFAULT_DEGREE(CPU数と初期化パラメータに基づくシステム・デフォルト値)になります。

cascade

プロパティ・グラフ・スキーマ表の索引の統計を収集します。索引の統計情報を収集するかどうかをOracle Databaseが決定できるようにするには、定数DBMS_STATS.AUTO_CASCADEを使用します。これが通常のデフォルトです。

no_invalidate

TRUEの場合、依存カーソルが無効化されることはありません。FALSEの場合、依存カーソルがすぐに無効化されます。DBMS_STATS.AUTO_INVALIDATE(通常のデフォルト)が有効な場合、Oracle Databaseによって依存カーソルを無効化するタイミングが決定されます。

force

TRUEの場合、1つ以上の基礎になる表がロックされていても操作が行われます。

options

(将来使用するために予約済)

使用上のノート

プロパティ・グラフの所有者だけがこのプロシージャをコールできます。

次の例では、プロパティ・グラフmypgの統計が収集されます。

EXECUTE OPG_APIS.ANALYZE_PG('mypg', estimate_percent=> 0.001, method_opt=>'FOR ALL COLUMNS SIZE AUTO', degree=>4, cascade=>true, no_invalidate=>false, force=>true, options=>NULL);

9.2 OPG_APIS.CF

構文

OPG_APIS.CF(
     edge_tab_name   IN      VARCHAR2,
     edge_label      IN      VARCHAR2,
     rating_property IN      VARCHAR2,
     iterations      IN      NUMBER DEFAULT 10,
     min_error       IN      NUMBER DEFAULT 0.001,
     k               IN      NUMBER DEFAULT 5,
     learning_rate   IN      NUMBER DEFAULT 0.0002,
     decrease_rate   IN      NUMBER DEFAULT 0.95,
     regularization  IN      NUMBER DEFAULT 0.02,
     dop             IN      NUMBER DEFAULT 8,
     wt_l            IN/OUT  VARCHAR2, 
     wt_r            IN/OUT  VARCHAR2, 
     wt_l1           IN/OUT  VARCHAR2, 
     wt_r1           IN/OUT  VARCHAR2, 
     wt_i            IN/OUT  VARCHAR2, 
     wt_ld           IN/OUT  VARCHAR2, 
     wt_rd           IN/OUT  VARCHAR2, 
     tablespace      IN      VARCHAR2 DEFAULT NULL,
     options         IN      VARCHAR2 DEFAULT NULL);

説明

指定したグラフで行列因子分解を使用して協調フィルタリングを実行します。結果として作成される行列積の因子は、左表と右表に格納されます。

パラメータ

edge_tab_name

プロパティ・グラフ・エッジ表(GE$)の名前。

edge_label

評価プロパティを保持するエッジのラベル。

rating_property

(将来の使用のために予約済。評価プロパティの名前。)

iterations

実行する必要がある最大反復数。デフォルトは10。

min_error

達成する最小エラー。一部の反復でエラー値がこの値より小さい場合、プロシージャは終了します。デフォルトは0.001。

k

左側の積と右側の積の機能の数。デフォルトは5。

learning_rate

勾配降下法の学習率。デフォルトは0.0002。

decrease_rate

(将来の使用のために予約済。効率的な勾配降下法にとって学習率が大きすぎる場合、率を削減。デフォルトは0.95。)

regularization

過剰適合を回避するための追加パラメータ。デフォルトは0.02

dop

並列度。デフォルトは8。

wt_l

行列因子分解の左側を保持する作業表の名前。

wt_r

行列因子分解の右側を保持する作業表の名前。

wt_l1

勾配降下法で左側の中間ステップを保持する作業表の名前。

wt_r1

勾配降下法で右側の中間ステップを保持する作業表の名前。

wt_I

中間行列積を保持する作業表の名前。

wt_ld

勾配降下法で中間の左側のデルタを保持する作業表の名前。

wt_rd

勾配降下法で中間の右側のデルタを保持する作業表の名前。

tablespace

中間データを保管する表領域の名前です。

options

操作に対する追加の設定。次の値が1つ以上含まれる(カンマ区切り)オプションの文字列。

  • 'INMEMORY=T'は'inmemory'句を使用してスキーマ表を作成するためのオプションです。

  • 'IMC_MC_B=T'はINMEMORY MEMCOMPRESS BASIC句を使用してスキーマ表を作成します。

使用上のノート

RDFデータを使用した協調フィルタリングの詳細は、「SQLベースのプロパティ・グラフ分析」、その中でも特に「協調フィルタリングの概要および例」を参照してください。

作業表がすでに存在する場合は、作業テーブルに関連したパラメータにそれらの名前を指定できます。この場合、アルゴリズムは、表を再作成せずに、前の反復の進行状況を継続できます。

作業表が存在しない場合、または既存の作業表を使用しない場合は、まずOPG_APIS.CF_PREPプロシージャをコールする必要があります。それにより、必要な作業表が作成されます。

協調フィルタリング・アルゴリズムの最終結果は、行列積の2つの因子であるwt_l作業表とwt_r作業表です。協調フィルタリングの予測を行う場合、これらの行列因子を使用する必要があります。

将来使用するために出力行列因子とアルゴリズムの現在の進行状況を保持することに関心がない場合は、OPG_APIS.CF_CLEANUPプロシージャをコールして、中間表と出力行列因子を保持するすべての作業表を削除できます。

次の例は、OPG_APIS.CF_PREPプロシージャをコールして作業表を作成し、それからOPG_APIS.CFプロシージャをコールし、ratingラベルが付いたエッジを使用してphonesグラフで協調フィルタリングを実行します。

DECLARE
  wt_l varchar2(32);
  wt_r varchar2(32);
  wt_l1 varchar2(32);
  wt_r1 varchar2(32);
  wt_i varchar2(32);
  wt_ld varchar2(32);
  wt_rd varchar2(32);
  edge_tab_name    varchar2(32) := 'phonesge$';
  edge_label       varchar2(32) := 'rating';
  rating_property  varchar2(32) := '';
  iterations       integer      := 100;
  min_error        number       := 0.001;
  k                integer      := 5;
  learning_rate    number       := 0.001;
  decrease_rate    number       := 0.95;
  regularization   number       := 0.02;
  dop              number       := 2;
  tablespace       varchar2(32) := null;
  options          varchar2(32) := null; 
BEGIN
 opg_apis.cf_prep(edge_tab_name,wt_l,wt_r,wt_l1,wt_r1,wt_i,wt_ld,wt_rd);
 opg_apis.cf(edge_tab_name,edge_label,rating_property,iterations,min_error,k,
             learning_rate,decrease_rate,regularization,dop,
             wt_l,wt_r,wt_l1,wt_r1,wt_i,wt_ld,wt_rd,tablespace,options);
END;
/ 

次の例は、OPG_APIS.CF_PREPが以前に実行されていることを前提としており、その実行中に作成された様々な作業表を指定します。この場合、前述の例は、作業表の名前に「$CFL57$」のような接尾辞を自動的に割り当てました。(出力名は、生成時に表示できます。あるいは、OPG_APIS.CF_PREPへのコールでユーザー定義できます。)したがって、次の例は、OPG_APIS.CF_PREPを最初に呼び出さずに、OPG_APIS.CFを使用してアルゴリズムの追加反復を実行し、それによって前の実行の進行状況を継続できます。

DECLARE
  wt_l varchar2(32)  = 'phonesge$$CFL57';
  wt_r varchar2(32)  = 'phonesge$$CFR57';
  wt_l1 varchar2(32) = 'phonesge$$CFL157';
  wt_r1 varchar2(32) = 'phonesge$$CFR157';
  wt_i varchar2(32)  = 'phonesge$$CFI57';
  wt_ld varchar2(32) = 'phonesge$$CFLD57';
  wt_rd varchar2(32) = 'phonesge$$CFRD57';
  edge_tab_name    varchar2(32) := 'phonesge$';
  edge_label       varchar2(32) := 'rating';
  rating_property  varchar2(32) := '';
  iterations       integer      := 100;
  min_error        number       := 0.001;
  k                integer      := 5;
  learning_rate    number       := 0.001;
  decrease_rate    number       := 0.95;
  regularization   number       := 0.02;
  dop              number       := 2;
  tablespace       varchar2(32) := null;
  options          varchar2(32) := null; 
BEGIN
 opg_apis.cf(edge_tab_name,edge_label,rating_property,iterations,min_error,k,
             learning_rate,decrease_rate,regularization,dop,
             wt_l,wt_r,wt_l1,wt_r1,wt_i,wt_ld,wt_rd,tablespace,options);
END;
/ 

9.3 OPG_APIS.CF_CLEANUP

構文

OPG_APIS.CF_CLEANUP(
     wt_l            IN/OUT  VARCHAR2, 
     wt_r            IN/OUT  VARCHAR2, 
     wt_l1           IN/OUT  VARCHAR2, 
     wt_r1           IN/OUT  VARCHAR2, 
     wt_i            IN/OUT  VARCHAR2, 
     wt_ld           IN/OUT  VARCHAR2, 
     wt_rd           IN/OUT  VARCHAR2, 
     options         IN      VARCHAR2 DEFAULT NULL);

説明

グラフの協調フィルタリングが行われた後にクリーンアップ作業を実行します。中間表と出力行列因子を保持するすべての作業表が削除されます。

パラメータ

edge_tab_name

プロパティ・グラフ・エッジ表(GE$)の名前。

wt_l

行列因子分解の左側を保持する作業表の名前。

wt_r

行列因子分解の右側を保持する作業表の名前。

wt_l1

勾配降下法で左側の中間ステップを保持する作業表の名前。

wt_r1

勾配降下法で右側の中間ステップを保持する作業表の名前。

wt_I

中間行列積を保持する作業表の名前。

wt_ld

勾配降下法で中間の左側のデルタを保持する作業表の名前。

wt_rd

勾配降下法で中間の右側のデルタを保持する作業表の名前。

options

(将来使用するために予約済)

使用上のノート

将来使用するために出力行列因子とアルゴリズムの現在の進行状況を保持することに関心がない場合にのみ、このプロシージャをコールしてください。

結果として作成された積の因子(wt_l表とwt_r表)を使用してさらに予測を行う場合は、これらの2つの表のバックアップ・コピーを以前に作成しているのでないかぎり、このプロシージャをコールしないでください。

OPG_APIS.CFプロシージャに関する情報も参照してください。

次の例は、OPG_APIS.CF_PREPプロシージャの例で作成された作業表を削除します。

DECLARE
  wt_l varchar2(32)  = 'phonesge$$CFL57';
  wt_r varchar2(32)  = 'phonesge$$CFR57';
  wt_l1 varchar2(32) = 'phonesge$$CFL157';
  wt_r1 varchar2(32) = 'phonesge$$CFR157';
  wt_i varchar2(32)  = 'phonesge$$CFI57';
  wt_ld varchar2(32) = 'phonesge$$CFLD57';
  wt_rd varchar2(32) = 'phonesge$$CFRD57';
BEGIN
  opg_apis.cf_cleanup('phonesge$',wt_l,wt_r,wt_l1,wt_r1,wt_i,wt_ld,wt_rd);
END;
/

9.4 OPG_APIS.CF_PREP

構文

OPG_APIS.CF_PREP(
     wt_l            IN/OUT  VARCHAR2. 
     wt_r            IN/OUT  VARCHAR2. 
     wt_l1           IN/OUT  VARCHAR2. 
     wt_r1           IN/OUT  VARCHAR2. 
     wt_i            IN/OUT  VARCHAR2. 
     wt_ld           IN/OUT  VARCHAR2. 
     wt_rd           IN/OUT  VARCHAR2. 
     options         IN      VARCHAR2 DEFAULT NULL);

説明

必要な中間表の作成を含め、協調フィルタリングを実行する、後のOPG_APIS.CFプロシージャへのコールのための準備作業を実行します。

パラメータ

edge_tab_name

プロパティ・グラフ・エッジ表(GE$)の名前。

wt_l

行列因子分解の左側を保持する作業表の名前。

wt_r

行列因子分解の右側を保持する作業表の名前。

wt_l1

勾配降下法で左側の中間ステップを保持する作業表の名前。

wt_r1

勾配降下法で右側の中間ステップを保持する作業表の名前。

wt_I

中間行列積を保持する作業表の名前。

wt_ld

勾配降下法で中間の左側のデルタを保持する作業表の名前。

wt_rd

勾配降下法で中間の右側のデルタを保持する作業表の名前。

options

操作に対する追加の設定。次の値が1つ以上含まれる(カンマ区切り)オプションの文字列。

  • 'INMEMORY=T'は'inmemory'句を使用してスキーマ表を作成するためのオプションです。

  • 'IMC_MC_B=T'はINMEMORY MEMCOMPRESS BASIC句を使用してスキーマ表を作成します。

使用上のノート

作業表の名前は、指定しても、NULLパラメータのままでもかまいません。作業表のパラメータ名が指定されていない場合は、自動的に名前が生成され、OUTパラメータとして返されます。これらの作業表名は、協調フィルタリング・アルゴリズムを実行するためにOPG_APIS.CFプロシージャをコールするときに使用できます。

OPG_APIS.CFの使用上のノートと例も参照してください。

次の例は、phonesという名前のグラフの作業表を作成し、それらの作業表に対して自動的に生成された名前を表示します。

DECLARE
  wt_l varchar2(32);
  wt_r varchar2(32);
  wt_l1 varchar2(32);
  wt_r1 varchar2(32);
  wt_i varchar2(32);
  wt_ld varchar2(32);
  wt_rd varchar2(32);
BEGIN
  opg_apis.cf_prep('phonesge$',wt_l,wt_r,wt_l1,wt_r1,wt_i,wt_ld,wt_rd);
  dbms_output.put_line(' wt_l ' || wt_l);
  dbms_output.put_line(' wt_r ' || wt_r);
  dbms_output.put_line(' wt_l1 ' || wt_l1);
  dbms_output.put_line(' wt_r1 ' || wt_r1);
  dbms_output.put_line(' wt_i ' || wt_i);
  dbms_output.put_line(' wt_ld ' || wt_ld);
  dbms_output.put_line(' wt_rd ' || wt_rd);
END;
/ 

9.5 OPG_APIS.CLEAR_PG

構文

OPG_APIS.CLEAR_PG(
     graph_name  IN VARCHAR2);

説明

プロパティ・グラフからすべてのデータをクリアします。

パラメータ

graph_name

プロパティ・グラフの名前。

使用上のノート

このプロシージャは、グラフ表(VT$、GE$など)のデータを削除することにより、プロパティ・グラフのすべてのデータを削除します。

次の例は、mypgという名前のプロパティ・グラフからすべてのデータを削除します。

EXECUTE OPG_APIS.CLEAR_PG('mypg');

9.6 OPG_APIS.CLEAR_PG_INDICES

構文

OPG_APIS.CLEAR_PG(
     graph_name  IN VARCHAR2);

説明

プロパティ・グラフのIT$表のすべてのテキスト索引メタデータを削除します。

パラメータ

graph_name

プロパティ・グラフの名前。

使用上のノート

このプロシージャはテキスト索引データを実際に削除するわけではありません。

次の例は、mypgという名前のプロパティ・グラフからすべての索引メタデータを削除します。

EXECUTE OPG_APIS.CLEAR_PG_INDICES('mypg');

9.7 OPG_APIS.CLONE_GRAPH

構文

OPG_APIS.CLONE_GRAPH(
     orgGraph      IN VARCHAR2,
     newGraph      IN VARCHAR2,
     dop           IN INTEGER DEFAULT 4,
     num_hash_ptns IN INTEGER DEFAULT 8,
     tbs           IN VARCHAR2 DEFAULT NULL);

説明

元のグラフのクローンを作成し、新しいグラフに新しい名前を付けます。

パラメータ

orgGraph

元のプロパティ・グラフの名前。

newGraph

新しい(クローン)プロパティ・グラフの名前。

dop

操作の並列度。

num_hash_ptns

表およびエッジ表のパーティション化に使用するハッシュ・パーティションの数2の累乗(2、4、8、16など)を使用することをお薦めします。

tbs

すべてのグラフ・データおよび索引データを保持する表領域の名前。

使用上のノート

元のプロパティ・グラフはデータベースにすでに存在する必要があります。

次の例では、並列度4で8パーティションを使用して、表領域 my_tsのプロパティ・グラフmypgからmypgcloneという名前のクローン・グラフを作成します。

EXECUTE OPG_APIS.CLONE_GRAPH('mypg', 'mypgclone', 4, 8, 'my_ts');

9.8 OPG_APIS.COUNT_TRIANGLE

構文

OPG_APIS.COUNT_TRIANGLE(
     edge_tab_name IN VARCHAR2,
     wt_und        IN OUT VARCHAR2,
     num_sub_ptns  IN NUMBER DEFAULT 1,
     dop           IN INTEGER DEFAULT 1,
     tbs           IN VARCHAR2 DEFAULT NULL,
     options       IN VARCHAR2 DEFAULT NULL
) RETURN NUMBER;

説明

プロパティ・グラフでトライアングル・カウンティングを実行します。

パラメータ

edge_tab_name

プロパティ・グラフ・エッジ表の名前。

wt_und

グラフの方向付けのないバージョンを保持する作業表。

num_sub_ptns

トライアングルの計算に使用する論理サブパーティションの数。正の整数で2の累乗(1、2、4、8など)である必要があります。比較的低い最大並列度のグラフの場合、値1(デフォルト)を使用します。

dop

操作の並列度。デフォルトは1。

tbs

作業表に格納されたデータを保持する表領域の名前。

options

操作に対する追加の設定。

  • ’PDML=T'はパラレルDMLを使用可能にします。

使用上のノート

プロパティ・グラフ・エッジ表はデータベースに存在している必要があり、OPG_APIS.COUNT_TRIANGLE_PREPプロシージャは実行済である必要があります。

次の例は、connectionsという名前のプロパティ・グラフでトライアングル・カウンティングを実行します。

set serveroutput on
DECLARE
  wt1 varchar2(100);  -- intermediate working table
  wt2 varchar2(100);
  wt3 varchar2(100);
  n number;
BEGIN
  opg_apis.count_triangle_prep('connectionsGE$', wt1, wt2, wt3);
  n := opg_apis.count_triangle(
     'connectionsGE$',
      wt1,
      num_sub_ptns=>1,
      dop=>2,
      tbs => 'MYPG_TS',
      options=>'PDML=T'
      ); 
  dbms_output.put_line('total number of triangles ' || n);
END;
/

9.9 OPG_APIS.COUNT_TRIANGLE_CLEANUP

構文

COUNT_TRIANGLE_CLEANUP(
   edge_tab_name IN VARCHAR2,
   wt_undBM      IN VARCHAR2,
   wt_rnmap      IN VARCHAR2,
   wt_undAM      IN VARCHAR2,
   options       IN VARCHAR2 DEFAULT NULL);

説明

トライアングル・カウンティングで使用される一時作業表をクリーンアップして削除します。

パラメータ

edge_tab_name

プロパティ・グラフ・エッジ表の名前。

wt_undBM

元のグラフの方向付けのないバージョンを保持する作業表(再番号付けの最適化前)。

wt_rnmap

再番号付けの最適化前のマッピング表である作業表。

wt_undAM

再番号付けの最適化の適用後のグラフ・データの方向付けのないバージョンを保持する作業表。

options

操作に対する追加の設定。次の値が1つ以上含まれる(カンマ区切り)オプションの文字列。

  • PDML=TはパラレルDMLを使用可能にします。

使用上のノート

トライアングル・カウンティングの実行後、このプロシージャを使用してクリーンアップする必要があります。

作業表はデータベース内に存在する必要があります。

次の例は、connectionsという名前のプロパティ・グラフでトライアングル・カウンティングを実行し、終了後、作業表を削除します。

set serveroutput on

DECLARE
  wt1 varchar2(100);  -- intermediate working table
  wt2 varchar2(100);
  wt3 varchar2(100);
  n number;
BEGIN
  opg_apis.count_triangle_prep('connectionsGE$', wt1, wt2, wt3);
  n := opg_apis.count_triangle_renum(
     'connectionsGE$',
      wt1,
      wt2,
      wt3,
      num_sub_ptns=>1,
      dop=>2,
      tbs => 'MYPG_TS',
      options=>'PDML=T'
      ); 
  dbms_output.put_line('total number of triangles ' || n);
  opg_apis.count_triangle_cleanup('connectionsGE$', wt1, wt2, wt3);
END;
/

9.10 OPG_APIS.COUNT_TRIANGLE_PREP

構文

OPG_APIS.COUNT_TRIANGLE_PREP(
     edge_tab_name  IN VARCHAR2,
     wt_undBM       IN OUT VARCHAR2,
     wt_rnmap       IN OUT VARCHAR2,
     wt_undAM       IN OUT VARCHAR2,
     options        IN VARCHAR2 DEFAULT NULL);

説明

トライアングル・カウンティングの準備を行います。

パラメータ

edge_tab_name

プロパティ・グラフ・エッジ表の名前。

wt_undBM

元のグラフの方向付けのないバージョンを保持する作業表(再番号付けの最適化前)。

wt_rnmap

再番号付けの最適化前のマッピング表である作業表。

wt_undAM

再番号付けの最適化の適用後のグラフ・データの方向付けのないバージョンを保持する作業表。

options

操作に対する追加の設定。次の値が1つ以上含まれる(カンマ区切り)オプションの文字列。

  • CREATE_UNDIRECTED=T

  • REUSE_UNDIRECTED_TAB=T

使用上のノート

プロパティ・グラフ・エッジ表はデータベース内に存在する必要があります。

次の例は、connectionsという名前のプロパティ・グラフでとの準備を行います。

set serveroutput on

DECLARE
  wt1 varchar2(100);  -- intermediate working table
  wt2 varchar2(100);
  wt3 varchar2(100);
  n number;
BEGIN
  opg_apis.count_triangle_prep('connectionsGE$', wt1, wt2, wt3);

  n := opg_apis.count_triangle_renum(
     'connectionsGE$',
      wt1,
      wt2,
      wt3,
      num_sub_ptns=>1,
      dop=>2,
      tbs => 'MYPG_TS',
      options=>'CREATE_UNDIRECTED=T,REUSE_UNDIREC_TAB=T'
      ); 
  dbms_output.put_line('total number of triangles ' || n);
END;
/

9.11 OPG_APIS.COUNT_TRIANGLE_RENUM

構文

COUNT_TRIANGLE_RENUM(
   edge_tab_name IN VARCHAR2,
   wt_undBM      IN VARCHAR2,
   wt_rnmap      IN VARCHAR2,
   wt_undAM      IN VARCHAR2,
   num_sub_ptns  IN INTEGER DEFAULT 1,
   dop           IN INTEGER DEFAULT 1,
   tbs           IN VARCHAR2 DEFAULT NULL,
   options       IN VARCHAR2 DEFAULT NULL
   ) RETURN NUMBER;

説明

その並列度で、グラフの頂点の再番号付けの最適化を使用して、プロパティ・グラフでトライアングル・カウンティングを実行します。

パラメータ

edge_tab_name

プロパティ・グラフ・エッジ表の名前。

wt_undBM

元のグラフの方向付けのないバージョンを保持する作業表(再番号付けの最適化前)。

wt_rnmap

再番号付けの最適化前のマッピング表である作業表。

wt_undAM

再番号付けの最適化の適用後のグラフ・データの方向付けのないバージョンを保持する作業表。

num_sub_ptns

トライアングルの計算に使用する論理サブパーティションの数。正の整数で2の累乗(1、2、4、8など)である必要があります。比較的低い最大並列度のグラフの場合、値1(デフォルト)を使用します。

dop

操作の並列度。デフォルトは1(並列度なし)です。

tbs

作業表に格納されたデータを保持する表領域の名前。

options

操作に対する追加の設定。次の値が1つ以上含まれる(カンマ区切り)オプションの文字列。

  • PDML=TはパラレルDMLを使用可能にします。

使用上のノート

このファンクションによりアルゴリズムの実行は高速になりますが、より多くの領域が必要となります。

プロパティ・グラフ・エッジ表はデータベースに存在している必要があり、OPG_APIS.COUNT_TRIANGLE_PREPプロシージャは実行済である必要があります。

次の例は、connectionsという名前のプロパティ・グラフでトライアングル・カウンティングを実行します。終了後にクリーンアップは実行されないので、準備プロシージャをコールせずに同じグラフでトライアングルを再度カウントすることができます。

set serveroutput on

DECLARE
  wt1 varchar2(100);  -- intermediate working table
  wt2 varchar2(100);
  wt3 varchar2(100);
  n number;
BEGIN
  opg_apis.count_triangle_prep('connectionsGE$', wt1, wt2, wt3);
  n := opg_apis.count_triangle_renum(
     'connectionsGE$',
      wt1,
      wt2,
      wt3,
      num_sub_ptns=>1,
      dop=>2,
      tbs => 'MYPG_TS',
      options=>'PDML=T'
      ); 
  dbms_output.put_line('total number of triangles ' || n);
END;
/

9.12 OPG_APIS.CREATE_EDGES_TEXT_IDX

構文

OPG_APIS.CREATE_EDGES_TEXT_IDX(
     graph_owner IN VARCHAR2,
     graph_name  IN VARCHAR2,
     pref_owner  IN VARCHAR2 DEFAULT NULL,
     datastore   IN VARCHAR2 DEFAULT NULL,
     filter      IN VARCHAR2 DEFAULT NULL,
     storage     IN VARCHAR2 DEFAULT NULL,
     wordlist    IN VARCHAR2 DEFAULT NULL,
     stoplist    IN VARCHAR2 DEFAULT NULL,
     lexer       IN VARCHAR2 DEFAULT NULL,
     dop         IN INTEGER DEFAULT NULL,
     options     IN VARCHAR2 DEFAULT NULL,);

説明

プロパティ・グラフ・エッジ表にテキスト索引を作成します。

パラメータ

graph_owner

プロパティ・グラフの所有者。

graph_name

プロパティ・グラフの名前。

pref_owner

プリファレンスの所有者。

datastore

ドキュメントの保存方法。

filter

ドキュメントのプレーン・テキストへの変換方法。

storage

索引データの格納方法。

wordlist

ステミング問合せおよびファジー問合せの拡張方法

stoplist

索引付け対象外のワードまたはテーマ。

lexer

索引付けに使用される言語。

dop

索引作成に使用される並列度。

options

索引の作成に対する追加の設定。

使用上のノート

プロパティ・グラフはデータベースに存在する必要があります。

このプロシージャを実行するには、ALTER SESSION権限が必要です。

次の例では、並列度4でレクサーOPG_AUTO_LEXERを使用して、ユーザーSCOTTが所有するプロパティ・グラフmypgのエッジ表に、テキスト索引を作成します。

EXECUTE OPG_APIS.CREATE_EDGES_TEXT_IDX('SCOTT', 'mypg', 'MDSYS', null, null, null, null, null, 'OPG_AUTO_LEXER', 4, null);

9.13 OPG_APIS.CREATE_PG

構文

OPG_APIS.CREATE_PG(
     graph_name    IN VARCHAR2,
     dop           IN INTEGER DEFAULT NULL,
     num_hash_ptns IN INTEGER DEFAULT 8,
     tbs           IN VARCHAR2 DEFAULT NULL,
     options       IN VARCHAR2 DEFAULT NULL);

説明

指定したプロパティ・グラフ名で、頂点、エッジ、テキスト索引およびスナップショットを格納するのに必要な、プロパティ・グラフ・スキーマ表を作成します。

パラメータ

graph_name

プロパティ・グラフの名前。

dop

操作の並列度。

num_hash_ptns

表およびエッジ表のパーティション化に使用するハッシュ・パーティションの数2の累乗(2、4、8、16など)を使用することをお薦めします。

tbs

すべてのグラフ・データおよび索引データを保持する表領域の名前。

options

スキーマ表の索引の作成をカスタマイズするのに使用できるオプション。(1つまたは複数のカンマ区切り)

  • 'SKIP_INDEX=T'はデフォルトの索引の作成をスキップします。

  • 'SKIP_ERROR=T'は表/索引の作成時に発生したエラーを無視します。

  • 'INMEMORY=T'はINMEMORY句を使用してスキーマ表を作成します。

  • 'IMC_MC_B=T'はINMEMORY BASIC句を使用してスキーマ表を作成します。

使用上のノート

このプロシージャをコールするには、CREATE TABLEおよびCREATE INDEX権限が必要です。

デフォルトで、すべてのスキーマ表は基本圧縮が有効な状態で作成されます。

次の例では、8パーティションを使用して、表領域my_tsmypgという名前のプロパティ・グラフを作成します。

EXECUTE OPG_APIS.CREATE_PG('mypg', 4, 8, 'my_ts');

9.14 OPG_APIS.CREATE_PG_SNAPSHOT_TAB

構文

OPG_APIS.CREATE_PG_SNAPSHOT_TAB(
     graph_owner IN VARCHAR2,
     graph_name  IN VARCHAR2,
     dop         IN INTEGER DEFAULT NULL,
     tbs         IN VARCHAR2 DEFAULT NULL,
     options     IN VARCHAR2 DEFAULT NULL);

または

OPG_APIS.CREATE_PG_SNAPSHOT_TAB(
     graph_name  IN VARCHAR2,
     dop         IN INTEGER DEFAULT NULL,
     tbs         IN VARCHAR2 DEFAULT NULL,
     options     IN VARCHAR2 DEFAULT NULL);

説明

指定したプロパティ・グラフ名で、グラフのスナップショットに関するデータを格納するのに必要な、プロパティ・グラフ・スキーマ表(<graph_name>SS$)を作成します。

パラメータ

graph_owner

プロパティ・グラフの所有者の名前。

graph_name

プロパティ・グラフの名前。

dop

操作の並列度。

tbs

すべてのグラフ・スナップショット・データおよび関連する索引を保持する表領域の名前。

options

操作に対する追加の設定。

  • 'INMEMORY=T'は'inmemory'句を使用してスキーマ表を作成するためのオプションです。

  • 'IMC_MC_B=T'はINMEMORY MEMCOMPRESS BASIC句を使用してスキーマ表を作成します。

使用上のノート

このプロシージャをコールするには、CREATE TABLE権限が必要です。

作成されたスナップショット表は次のような構造をとりますが、リリース間で変わる可能性があります。

Name                       Null?    Type
 ----------------------------------------- -------- ----------------------------
 SSID                       NOT NULL NUMBER
 CONTENTS                            BLOB
 SS_FILE                             BINARY FILE LOB
 TS                                  TIMESTAMP(6) WITH TIME ZONE
 SS_COMMENT                          VARCHAR2(512)

デフォルトで、すべてのスキーマ表は基本圧縮が有効な状態で作成されます。

次の例では、並列度4でMY_TS表領域を使用して、現在のスキーマにプロパティ・グラフmypgのスナップショット表を作成します。

EXECUTE OPG_APIS.CREATE_PG_SNAPSHOT_TAB('mypg', 4, 'my_ts');

9.15 OPG_APIS.CREATE_PG_TEXTIDX_TAB

構文

OPG_APIS.CREATE_PG_TEXTIDX_TAB(
     graph_owner IN VARCHAR2,
     graph_name  IN VARCHAR2,
     dop         IN INTEGER DEFAULT NULL,
     tbs         IN VARCHAR2 DEFAULT NULL,
     options     IN VARCHAR2 DEFAULT NULL);

または

OPG_APIS.CREATE_PG_TEXTIDX_TAB(
     graph_name  IN VARCHAR2,
     dop         IN INTEGER DEFAULT NULL,
     tbs         IN VARCHAR2 DEFAULT NULL,
     options     IN VARCHAR2 DEFAULT NULL);

説明

指定したプロパティ・グラフ名で、グラフのテキスト索引メタデータを管理するためのデータを格納するのに必要な、プロパティ・グラフ・テキスト索引スキーマ表(<graph_name>IT$)を作成します。

パラメータ

graph_owner

プロパティ・グラフの所有者の名前。

graph_name

プロパティ・グラフの名前。

dop

操作の並列度。

tbs

すべてのグラフ索引メタデータおよび関連する索引を保持する表領域の名前。

options

操作に対する追加の設定。

  • 'INMEMORY=T'は'inmemory'句を使用してスキーマ表を作成するためのオプションです。

  • 'IMC_MC_B=T'はINMEMORY MEMCOMPRESS BASIC句を使用してスキーマ表を作成します。

使用上のノート

このプロシージャをコールするには、CREATE TABLE権限が必要です。

作成された索引メタデータ表は次のような構造をとりますが、リリース間で変わる可能性があります。

          (
             EIN     nvarchar2(80) not null,  -- index name
             ET      number,                  -- entity type 1 - vertex, 2 -edge 
             IT      number,                  -- index type 1 - auto   0 - manual
             SE      number,                  -- search engine 1 -solr, 0 - lucene
             K       nvarchar2(3100),         -- property key use an empty space when there is no K/V
             DT      number,                  -- directory type 1 - MMAP, 2 - FS, 3 - JDBC 
             LOC     nvarchar2(3100),         -- directory location (1, 2)
             NUMDIRS number,                  -- property key used to index CAN BE NULL
             VERSION nvarchar2(100),          -- lucene version
             USEDT   number,                  -- user data type (1 or 0)
             STOREF  number,                  -- store fields into lucene
             CF      nvarchar2(3100),          -- configuration name
             SS      nvarchar2(3100),          -- solr server url
             SA      nvarchar2(3100),          -- solr server admin url
             ZT      number,                  -- zookeeper timeout
             SH      number,                  -- number of shards
             RF      number,                  -- replication factor
             MS      number,                  -- maximum shards per node
             PO      nvarchar2(3100),         -- preferred owner oracle text
             DS      nvarchar2(3100),         -- datastore 
             FIL     nvarchar2(3100),         -- filter
             STR     nvarchar2(3100),         -- storage
             WL      nvarchar2(3100),         -- word list
             SL      nvarchar2(3100),         -- stop list
             LXR     nvarchar2(3100),         -- lexer
             OPTS    nvarchar2(3100),         -- options
             primary key (EIN, K, ET)  
          )

デフォルトで、すべてのスキーマ表は基本圧縮が有効な状態で作成されます。

次の例では、並列度4でMY_TS表領域を使用して、現在のスキーマにプロパティ・グラフmypgのプロパティ・グラフ・テキスト索引メタデータ表を作成します。

EXECUTE OPG_APIS.CREATE_PG_TEXTIDX_TAB('mypg', 4, 'my_ts');

9.16 OPG_APIS.CREATE_STAT_TABLE

構文

OPG_APIS.CREATE_STAT_TABLE(
     stattab   IN VARCHAR2,
     tblspace  IN VARCHAR2 DEFAULT NULL);

説明

プロパティ・グラフの統計を保持できる表を作成します。

パラメータ

stattab

統計を保持する表の名前

tblapace

統計表を保持する表領域の名前。指定しないと、統計表はユーザーのデフォルトの表領域に作成されます。

使用上のノート

このプロシージャをコールするには、CREATE TABLE権限が必要です。

統計表には次の列があります。列とタイプはリリース間で異なる可能性があることに注意してください。

 Name					   Null?    Type
 ----------------------------------------- -------- ----------------------------
 STATID 					    VARCHAR2(128)
 TYPE						    CHAR(1)
 VERSION					    NUMBER
 FLAGS						    NUMBER
 C1						    VARCHAR2(128)
 C2						    VARCHAR2(128)
 C3						    VARCHAR2(128)
 C4						    VARCHAR2(128)
 C5						    VARCHAR2(128)
 C6						    VARCHAR2(128)
 N1						    NUMBER
 N2						    NUMBER
 N3						    NUMBER
 N4						    NUMBER
 N5						    NUMBER
 N6						    NUMBER
 N7						    NUMBER
 N8						    NUMBER
 N9						    NUMBER
 N10						    NUMBER
 N11						    NUMBER
 N12						    NUMBER
 N13						    NUMBER
 D1						    DATE
 T1						    TIMESTAMP(6) WITH TIME ZONE
 R1						    RAW(1000)
 R2						    RAW(1000)
 R3						    RAW(1000)
 CH1						    VARCHAR2(1000)
 CL1						    CLOB

次の例では、mystatという名前の統計表を作成します。

EXECUTE OPG_APIS.CREATE_STAT_TABLE('mystat',null);

9.17 OPG_APIS.CREATE_SUB_GRAPH

構文

OPG_APIS.CREATE_SUB_GRAPH(
     graph_owner IN VARCHAR2,
     orgGraph    IN VARCHAR2,
     newGraph    IN VARCHAR2,
     nSrc        IN NUMBER,
     depth       IN NUMBER);

説明

指定した頂点からの拡張であるサブグラフを作成します。拡張の深さはカスタマイズ可能です。

パラメータ

graph_owner

プロパティ・グラフの所有者。

orgGraph

元のプロパティ・グラフの名前。

newGraph

元のグラフから作成されたサブグラフの名前。

nSrc

頂点ID: サブグラフはこの頂点からの拡張として作成されます。たとえば、nSrc = 1はIDが1の頂点から拡張を開始します。

depth

拡張の深さ: 拡張は、出力エッジに従い、頂点nSrcからdepthホップの範囲内にあるすべての頂点を含みます。たとえば、depth = 2は、頂点nSrc(前の例では頂点ID 1)から2ホップの範囲内にあるすべての頂点を含むようにします。

使用上のノート

元のプロパティ・グラフはデータベースに存在する必要があります。

次の例は、所有者がSCOTTであるプロパティ・グラフmypgからサブグラフmypgsubを作成します。サブグラフには、頂点1と、IDの頂点から2ホップ内で到達可能なすべての頂点が含まれます。

EXECUTE OPG_APIS.CREATE_SUB_GRAPH('SCOTT', 'mypg', 'mypgsub', 1, 2);

9.18 OPG_APIS.CREATE_VERTICES_TEXT_IDX

構文

OPG_APIS.CREATE_VERTICES_TEXT_IDX(
     graph_owner IN VARCHAR2,
     graph_name  IN VARCHAR2,
     pref_owner  IN VARCHAR2 DEFAULT NULL,
     datastore   IN VARCHAR2 DEFAULT NULL,
     filter      IN VARCHAR2 DEFAULT NULL,
     storage     IN VARCHAR2 DEFAULT NULL,
     wordlist    IN VARCHAR2 DEFAULT NULL,
     stoplist    IN VARCHAR2 DEFAULT NULL,
     lexer       IN VARCHAR2 DEFAULT NULL,
     dop         IN INTEGER DEFAULT NULL,
     options     IN VARCHAR2 DEFAULT NULL,);

説明

プロパティ・グラフ頂点表にテキスト索引を作成します。

パラメータ

graph_owner

プロパティ・グラフの所有者。

graph_name

プロパティ・グラフの名前。

pref_owner

プリファレンスの所有者。

datastore

ドキュメントの保存方法。

filter

ドキュメントのプレーン・テキストへの変換方法。

storage

索引データの格納方法。

wordlist

ステミング問合せおよびファジー問合せの拡張方法

stoplist

索引付け対象外のワードまたはテーマ。

lexer

索引付けに使用される言語。

dop

索引作成に使用される並列度。

options

索引の作成に対する追加の設定。

使用上のノート

元のプロパティ・グラフはデータベースに存在する必要があります。

このプロシージャを実行するには、ALTER SESSION権限が必要です。

次の例では、並列度4でレクサーOPG_AUTO_LEXERを使用して、ユーザーSCOTTが所有するプロパティ・グラフmypgの頂点表に、テキスト索引を作成します。

EXECUTE OPG_APIS.CREATE_VERTICES_TEXT_IDX('SCOTT', 'mypg', null, null, null, null, null, null, 'OPG_AUTO_LEXER', 4, null);

9.19 OPG_APIS.DROP_EDGES_TEXT_IDX

構文

OPG_APIS.DROP_EDGES_TEXT_IDX(
     graph_owner IN VARCHAR2,
     graph_name  IN VARCHAR2,
     options     IN VARCHAR2 DEFAULT NULL);

説明

プロパティ・グラフ・エッジ表のテキスト索引を削除します。

パラメータ

graph_owner

プロパティ・グラフの所有者。

graph_name

プロパティ・グラフの名前。

options

操作に対する追加の設定。

使用上のノート

テキスト索引はプロパティ・グラフ・エッジ表にすでに存在する必要があります。

次の例では、ユーザーSCOTTが所有するプロパティ・グラフmypgのエッジ表のテキスト索引を削除します。

EXECUTE OPG_APIS.DROP_EDGES_TEXT_IDX('SCOTT', 'mypg', null);

9.20 OPG_APIS.DROP_PG

構文

OPG_APIS.DROP_PG(
     graph_name  IN VARCHAR2);

説明

プロパティ・グラフを削除します。

パラメータ

graph_name

プロパティ・グラフの名前。

使用上のノート

すべてのグラフ表(VT$、GE$など)がデータベースから削除されます。

次の例は、mypgという名前のプロパティ・グラフを削除します。

EXECUTE OPG_APIS.DROP_PG('mypg');

9.21 OPG_APIS.DROP_PG_VIEW

構文

OPG_APIS.DROP_PG_VIEW(
     graph_name  IN VARCHAR2);
     options     IN VARCHAR2);

説明

プロパティ・グラフのビュー定義を削除します。

パラメータ

graph_name

プロパティ・グラフの名前。

options

(将来使用するために予約済)

使用上のノート

物理プロパティ・グラフとプロパティ・グラフ・ビューの作成がサポートされます。たとえば、RDFモデルを指定して、RDFグラフの一番上でプロパティ・グラフ分析を実行できるように、RDFモデルでのプロパティ・グラフ・ビューの作成をサポートします。

このプロシージャは元に戻すことができません。

次の例は、mypgという名前のプロパティ・グラフのビュー定義を削除します。

EXECUTE OPG_APIS.DROP_PG_VIEW('mypg');

9.22 OPG_APIS.DROP_VERTICES_TEXT_IDX

構文

OPG_APIS.DROP_VERTICES_TEXT_IDX(
     graph_owner IN VARCHAR2,
     graph_name  IN VARCHAR2,
     options     IN VARCHAR2 DEFAULT NULL);

説明

プロパティ・グラフ頂点表のテキスト索引を削除します。

パラメータ

graph_owner

プロパティ・グラフの所有者。

graph_name

プロパティ・グラフの名前。

options

操作に対する追加の設定。

使用上のノート

テキスト索引はプロパティ・グラフ頂点表にすでに存在する必要があります。

次の例では、ユーザーSCOTTが所有するプロパティ・グラフmypgの頂点表のテキスト索引を削除します。

EXECUTE OPG_APIS.DROP_VERTICES_TEXT_IDX('SCOTT', 'mypg', null);

9.23 OPG_APIS.ESTIMATE_TRIANGLE_RENUM

構文

COUNT_TRIANGLE_ESTIMATE(
   edge_tab_name IN VARCHAR2,
   wt_undBM      IN VARCHAR2,
   wt_rnmap      IN VARCHAR2,
   wt_undAM      IN VARCHAR2,
   num_sub_ptns  IN INTEGER DEFAULT 1,
   chunk_id      IN INTEGER DEFAULT 1,
   dop           IN INTEGER DEFAULT 1,
   tbs           IN VARCHAR2 DEFAULT NULL,
   options       IN VARCHAR2 DEFAULT NULL
   ) RETURN NUMBER;

説明

プロパティ・グラフのトライアングルの数を予測します。

パラメータ

edge_tab_name

プロパティ・グラフ・エッジ表の名前。

wt_undBM

元のグラフの方向付けのないバージョンを保持する作業表(再番号付けの最適化前)。

wt_rnmap

再番号付けの最適化前のマッピング表である作業表。

wt_undAM

再番号付けの最適化の適用後のグラフ・データの方向付けのないバージョンを保持する作業表。

num_sub_ptns

トライアングルの計算に使用する論理サブパーティションの数。正の整数で2の累乗(1、2、4、8など)である必要があります。比較的低い最大並列度のグラフの場合、値1(デフォルト)を使用します。

chunk_id

トライアングルの予測に使用される論理サブパーティション(このパーティションのみカウントされます)。0とnum_sub_ptns*num_sub_ptns-1の間の整数である必要があります。

dop

操作の並列度。デフォルトは1(並列度なし)です。

tbs

作業表に格納されたデータを保持する表領域の名前。

options

操作に対する追加の設定。次の値が1つ以上含まれる(カンマ区切り)オプションの文字列。

  • PDML=TはパラレルDMLを使用可能にします。

使用上のノート

このファンクションはグラフのサイズ1/(num_sub_ptns*num_sub_ptns)の部分のトライアングルの合計をカウントします。グラフのトライアングルの合計数を予測するために、この結果とnum_sub_ptns*num_sub_ptnsを掛けることができます。

プロパティ・グラフ・エッジ表はデータベースに存在している必要があり、OPG_APIS.COUNT_TRIANGLE_PREPプロシージャは実行済である必要があります。

次の例は、connectionsという名前のプロパティ・グラフでのトライアングルの数を予測します。終了後にクリーンアップは実行されないので、準備プロシージャをコールせずに同じグラフでトライアングルを再度カウントすることができます。

set serveroutput on

DECLARE
  wt1 varchar2(100);  -- intermediate working table
  wt2 varchar2(100);
  wt3 varchar2(100);
  n number;
BEGIN
  opg_apis.count_triangle_prep('connectionsGE$', wt1, wt2, wt3);
  n := opg_apis.estimate_triangle_renum(
     'connectionsGE$',
      wt1,
      wt2,
      wt3,
      num_sub_ptns=>64,
      chunk_id=>2048,
      dop=>2,
      tbs => 'MYPG_TS',
      options=>'PDML=T'
      ); 
  dbms_output.put_line('estimated number of triangles ' || (n * 64 * 64));
END;
/

9.24 OPG_APIS.EXP_EDGE_TAB_STATS

構文

OPG_APIS.EXP_EDGE_TAB_STATS(
     graph_name    IN VARCHAR2,
     stattab       IN VARCHAR2,
     statid        IN VARCHAR2 DEFAULT NULL,
     cascade       IN BOOLEAN DEFAULT TRUE,
     statown       IN VARCHAR2 DEFAULT NULL,
     stat_category IN VARCHAR2 DEFAULT 'OBJECT_STATS');

説明

指定したプロパティ・グラフのエッジ表の統計情報を取得し、ユーザー作成の統計表に格納します。

パラメータ

graph_name

プロパティ・グラフの名前。

stattab

統計表の名前。

statid

stattab内の統計情報を関連付けるオプションの識別子。

cascade

TRUEの場合は、列と索引の統計情報がエクスポートされます。

statown

stattabを含むスキーマ。

stat_category

値を区切るのにカンマを使用して、インポートする統計情報を指定します。サポートされる値は、'OBJECT_STATS'(デフォルト: 表統計、列統計および索引統計)と'SYNOPSES'(統計が増分的に保持されるときに作成される補助統計)です。

使用上のノート

(なし。)

次の例では、統計表を作成し、この表にプロパティ・グラフ・エッジ表統計をエクスポートし、新しく作成された統計情報に対して関連する行をカウントする問合せを発行します。

EXECUTE OPG_APIS.CREATE_STAT_TABLE('mystat',null);

EXECUTE OPG_APIS.EXP_EDGE_TAB_STATS('mypg', 'mystat', 'edge_stats_id_1', true, null, 'OBJECT_STATS');

SELECT count(1) FROM mystat WHERE statid='EDGE_STATS_ID_1';

       153

9.25 OPG_APIS.EXP_VERTEX_TAB_STATS

構文

OPG_APIS.EXP_VERTEX_TAB_STATS(
     graph_name    IN VARCHAR2,
     stattab       IN VARCHAR2,
     statid        IN VARCHAR2 DEFAULT NULL,
     cascade       IN BOOLEAN DEFAULT TRUE,
     statown       IN VARCHAR2 DEFAULT NULL,
     stat_category IN VARCHAR2 DEFAULT 'OBJECT_STATS');

説明

指定したプロパティ・グラフの頂点表の統計情報を取得し、ユーザー作成の統計表に格納します。

パラメータ

graph_name

プロパティ・グラフの名前。

stattab

統計表の名前。

statid

stattab内の統計情報を関連付けるオプションの識別子。

cascade

TRUEの場合は、列と索引の統計情報がエクスポートされます。

statown

stattabを含むスキーマ。

stat_category

値を区切るのにカンマを使用して、インポートする統計情報を指定します。サポートされる値は、'OBJECT_STATS'(デフォルト: 表統計、列統計および索引統計)と'SYNOPSES'(統計が増分的に保持されるときに作成される補助統計)です。

使用上のノート

(なし。)

次の例では、統計表を作成し、この表にプロパティ・グラフ頂点表統計をエクスポートし、新しく作成された統計情報に対して関連する行をカウントする問合せを発行します。

EXECUTE OPG_APIS.CREATE_STAT_TABLE('mystat',null);

EXECUTE OPG_APIS.EXP_VERTEX_TAB_STATS('mypg', 'mystat', 'vertex_stats_id_1', true, null, 'OBJECT_STATS');

SELECT count(1) FROM mystat WHERE statid='VERTEX_STATS_ID_1';

       108

9.26 OPG_APIS.FIND_CC_MAPPING_BASED

構文

OPG_APIS.FIND_CC_MAPPING_BASED(
     edge_tab_name IN VARCHAR2,
     wt_clusters   IN OUT VARCHAR2,
     wt_undir      IN OUT VARCHAR2,
     wt_cluas      IN OUT VARCHAR2,
     wt_newas      IN OUT VARCHAR2,
     wt_delta      IN OUT VARCHAR2,
     dop           IN INTEGER DEFAULT 4,
     rounds        IN INTEGER DEFAULT 0,
     tbs           IN VARCHAR2 DEFAULT NULL,
     options       IN VARCHAR2 DEFAULT NULL);

説明

プロパティ・グラフの接続されているコンポーネントを検出します。接続されているすべてのコンポーネントは wt_clusters表に格納されます。元のグラフは方向性がないものとして扱われます。

パラメータ

edge_tab_name

プロパティ・グラフ・エッジ表の名前。

wt_clusters

最終的な頂点クラスタ・マッピングを保持する作業表。この表には列が2つあります(VID NUMBER、CLUSTER_ID NUMBER)。列VIDには頂点ID値が格納され、列CLUSTER_IDには対応するクラスタID値が格納されます。クラスタID値は長整数で、間にギャップがあってもかまいません。

空白の名前を指定すると、新しい表が生成され、その名前が戻されます。

wt_undir

グラフの方向付けのないバージョンを保持する作業表。

wt_cluas

現在のクラスタ割当てを保持する作業表。

wt_newas

更新されたクラスタ割当てを保持する作業表。

wt_delta

クラスタ割当ての変更(差分)を保持する作業表。

dop

操作の並列度。デフォルトは4。

rounds

接続されたコンポーネントの検索で実行する反復の最大数。デフォルト値の0 (ゼロ)は接続されたコンポーネントがすべて検出されるまで計算が継続することを意味します。

tbs

作業表に格納されたデータを保持する表領域の名前。

options

操作に対する追加の設定。

  • 'PDML=T'はパラレルDMLを使用可能にします。

使用上のノート

プロパティ・グラフ・エッジ表はデータベースに存在している必要があり、OPG_APIS.FIND_CLUSTERS_PREPプロシージャは実行済である必要があります。

次の例は、mypgという名前のプロパティ・グラフの接続されたコンポーネントを検索します。

DECLARE
  wtClusters   varchar2(200) := 'mypg_clusters';
  wtUnDir      varchar2(200);
  wtCluas      varchar2(200);
  wtNewas      varchar2(200);
  wtDelta      varchar2(200);
BEGIN
  opg_apis.find_clusters_prep('mypgGE$', wtClusters, wtUnDir,
      wtCluas, wtNewas, wtDelta, '');
  dbms_output.put_line('working tables names ' || wtClusters || ' '
|| wtUnDir || ' ' || wtCluas || ' '  || wtNewas    || ' '
|| wtDelta );

opg_apis.find_cc_mapping_based(''mypgGE$', wtClusters, wtUnDir,
      wtCluas, wtNewas, wtDelta, 8, 0, 'MYTBS', 'PDML=T');

--
-- logic to consume results in wtClusters
-- e.g.: 
-- select /*+ parallel(8) */ count(distinct cluster_id) 
--   from mypg_clusters;

-- cleanup all the working tables
  opg_apis.find_clusters_cleanup('mypgGE$', wtClusters, wtUnDir,
      wtCluas, wtNewas, wtDelta, '');

END;
/

9.27 OPG_APIS.FIND_CLUSTERS_CLEANUP

構文

OPG_APIS.FIND_CLUSTERS_CLEANUP(
     edge_tab_name  IN VARCHAR2,
     wt_clusters    IN OUT VARCHAR2,
     wt_undir       IN OUT VARCHAR2,
     wt_cluas       IN OUT VARCHAR2,
     wt_newas       IN OUT VARCHAR2,
     wt_delta       IN OUT VARCHAR2,
     options        IN VARCHAR2 DEFAULT NULL);

説明

毎週の接続されたコンポーネント(WCC)のクラスタの検出を実行した後にクリーンアップします。

パラメータ

edge_tab_name

プロパティ・グラフ・エッジ表の名前。

wt_clusters

最終的な頂点クラスタ・マッピングを保持する作業表。この表には列が2つあります(VID NUMBER、CLUSTER_ID NUMBER)。列VIDには頂点ID値が格納され、列CLUSTER_IDには対応するクラスタID値が格納されます。クラスタID値は長整数で、間にギャップがあってもかまいません。

空白の名前を指定すると、新しい表が生成され、その名前が戻されます。

wt_undir

グラフの方向付けのないバージョンを保持する作業表。

wt_cluas

現在のクラスタ割当てを保持する作業表。

wt_newas

更新されたクラスタ割当てを保持する作業表。

wt_delta

クラスタ割当ての変更(差分)を保持する作業表。

options

(将来使用するために予約済)

使用上のノート

プロパティ・グラフ・エッジ表はデータベース内に存在する必要があります。

次の例は、mypgという名前のプロパティ・グラフでのクラスタの検出の実行後にクリーンアップします。

EXECUTE OPG_APIS.FIND_CLUSTERS_CLEANUP('mypgGE$', wtClusters, wtUnDir, wtCluas, wtNewas, wtDelta, null);

9.28 OPG_APIS.FIND_CLUSTERS_PREP

構文

OPG_APIS.FIND_CLUSTERS_PREP(
     edge_tab_name  IN VARCHAR2,
     wt_clusters    IN OUT VARCHAR2,
     wt_undir       IN OUT VARCHAR2,
     wt_cluas       IN OUT VARCHAR2,
     wt_newas       IN OUT VARCHAR2,
     wt_delta       IN OUT VARCHAR2,
     options        IN VARCHAR2 DEFAULT NULL);

説明

毎週の接続されたコンポーネント(WCC)のクラスタの検出の実行を準備します。

パラメータ

edge_tab_name

プロパティ・グラフ・エッジ表の名前。

wt_clusters

最終的な頂点クラスタ・マッピングを保持する作業表。この表には列が2つあります(VID NUMBER、CLUSTER_ID NUMBER)。列VIDには頂点ID値が格納され、列CLUSTER_IDには対応するクラスタID値が格納されます。クラスタID値は長整数で、間にギャップがあってもかまいません。

空白の名前を指定すると、新しい表が生成され、その名前が戻されます。

wt_undir

グラフの方向付けのないバージョンを保持する作業表。

wt_cluas

現在のクラスタ割当てを保持する作業表。

wt_newas

更新されたクラスタ割当てを保持する作業表。

wt_delta

クラスタ割当ての変更(差分)を保持する作業表。

options

索引の作成に対する追加の設定。

使用上のノート

プロパティ・グラフ・エッジ表はデータベース内に存在する必要があります。

次の例は、mypgという名前のプロパティ・グラフでのクラスタの検出の実行の準備をします。

DECLARE
  wtClusters   varchar2(200);
  wtUnDir      varchar2(200);
  wtCluas      varchar2(200);
  wtNewas      varchar2(200);
  wtDelta      varchar2(200);
BEGIN
  opg_apis.find_clusters_prep('mypgGE$', wtClusters, wtUnDir,
      wtCluas, wtNewas, wtDelta, '');
  dbms_output.put_line('working tables names ' || wtClusters || ' '
|| wtUnDir || ' ' || wtCluas || ' '  || wtNewas    || ' '
|| wtDelta );
END;
/

9.29 OPG_APIS.FIND_SP

構文

OPG_APIS.FIND_SP(
     edge_tab_name  IN VARCHAR2,
     source         IN NUMBER,
     dest           IN NUMBER,
     exp_tab        IN OUT VARCHAR2,
     dop            IN INTEGER,
     stats_freq     IN INTEGER DEFAULT 20000,
     path_output    OUT VARCHAR2,
     weights_output OUT VARCHAR2,
     edge_tab_name  IN VARCHAR2,
     options        IN VARCHAR2 DEFAULT NULL,
     scn            IN NUMBER DEFAULT NULL);

説明

プロパティ・グラフで指定した出力頂点と入力頂点の間の最短パスを検索します。各エッジに数値の重みプロパティがあると想定します。(実際のエッジ・プロパティ名は重要ではありません)

パラメータ

edge_tab_name

プロパティ・グラフ・エッジ表の名前。

source

出力(開始)頂点ID。

dest

入力(終了)頂点ID。

exp_tab

最短パスの計算に使用される拡張表の名前。

dop

操作の並列度。

stats_freq

表に関する統計の収集の頻度。

path_output

出力の最短パス。最短パスでの頂点のIDからなり、空白文字で区切られます。

weights_output

出力の最短パスの重み。最短パスでのエッジの重みからなり、空白文字で区切られます。

options

操作に対する追加の設定。次の値が1つ以上含まれる(カンマ区切り)オプションの文字列。

  • CREATE_UNDIRECTED=T

  • REUSE_UNDIRECTED_TAB=T

scn

エッジ表のSCN。nullの可能性があります。

使用上のノート

プロパティ・グラフ・エッジ表はデータベースに存在している必要があり、OPG_APIS.FIND_SP_PREPプロシージャはコール済である必要があります。

次の例は、最短パスの計算の準備をしてから、mypgという名前のプロパティ・グラフで頂点1から頂点35への最短パスを検索します。

set serveroutput on
DECLARE
    w     varchar2(2000);
    wtExp varchar2(2000);
    vPath varchar2(2000);
BEGIN
    opg_apis.find_sp_prep('mypgGE$', wtExp, null);
    opg_apis.find_sp('mypgGE$', 1, 35,  wtExp, 1, 200000,  vPath, w, null, null);
    dbms_output.put_line('Shortest path ' || vPath);
    dbms_output.put_line('Path weights '  || w);
END;
/

出力は、次のようになります。頂点1から開始して、頂点2へ、最後は入力頂点(35)への1つの最短パスを示します。

Shortest path 1    2 35
Path weights 3 2   1 1

9.30 OPG_APIS.FIND_SP_CLEANUP

構文

OPG_APIS.FIND_SP_CLEANUP(
     edge_tab_name  IN VARCHAR2,
     exp_tab        IN OUT VARCHAR2,
     options        IN VARCHAR2 DEFAULT NULL);

説明

1つ以上の最短パスの計算を実行した後にクリーンアップします。

パラメータ

edge_tab_name

プロパティ・グラフ・エッジ表の名前。

exp_tab

最短パスの計算に使用される拡張表の名前。

options

(将来使用するために予約済)

使用上のノート

OPG_APIS.FIND_SPコールの後に、このプロシージャをコールする必要はありません。OPG_APIS.FIND_SP_CLEANUPをコールする前に、複数の最短パスの計算を実行することができます。

次の例は、mypgという名前のプロパティ・グラフでの最短パスの計算の実行後にクリーンアップします。

EXECUTE OPG_APIS.FIND_SP_CLEANUP('mypgGE$', wtExpTab, null);

9.31 OPG_APIS.FIND_SP_PREP

構文

OPG_APIS.FIND_SP_PREP(
     edge_tab_name  IN VARCHAR2,
     exp_tab        IN OUT VARCHAR2,
     options        IN VARCHAR2 DEFAULT NULL);

説明

最短パスの計算の準備を行います。

パラメータ

edge_tab_name

プロパティ・グラフ・エッジ表の名前。

exp_tab

最短パスの計算に使用される拡張表の名前。空白の場合、中間作業表が作成され、表の名前がexp_tabで戻されます。

options

操作に対する追加の設定。次の値が1つ以上含まれる(カンマ区切り)オプションの文字列。

  • CREATE_UNDIRECTED=T

  • REUSE_UNDIRECTED_TAB=T

使用上のノート

プロパティ・グラフ・エッジ表はデータベース内に存在する必要があります。

次の例は、mypgという名前のプロパティ・グラフでの最短パスの計算の実行前に準備作業を行います

set serveroutput on
DECLARE
    wtExp  varchar2(2000); -- name of working table for shortest path calculation
BEGIN
    opg_apis.find_sp_prep('mypgGE$', wtExp, null);
    dbms_output.put_line('Working table name ' || wtExp);
END;
/

出力は、次のようになります。(出力はSQLセッションIDによって異なります)

Working table name "MYPGGE$$TWFS277"

9.32 OPG_APIS.GET_BUILD_ID

構文

OPG_APIS.GET_BUILD_ID() RETURN VARCHAR2;

説明

Oracle Spatial and Graphプロパティ・グラフ・サポートの現在のビルドIDをYYYYMMDDの書式で戻します。

パラメータ

(なし。)

使用上のノート

(なし。)

次の例は、Oracle Spatial and Graphプロパティ・グラフ・サポートの現在のビルドIDを戻します。

SQL> SELECT OPG_APIS.GET_BUILD_ID() FROM DUAL;

OPG_APIS.GET_BUILD_ID()
--------------------------------------------------------------------------------
20160606

9.33 OPG_APIS.GET_GEOMETRY_FROM_V_COL

構文

OPG_APIS.GET_GEOMETRY_FROM_V_COL(
     v     IN NVARCHAR2,
     srid  IN NUMBER DEFAULT 8307
) RETURN SDO_GEOMETRY;

説明

空間データおよびオプションでSRID値を使用して構成されたSDO_GEOMETRYオブジェクトを戻します。

パラメータ

v

直列化された形式で空間データを含む文字列。

srid

結果のSDO_GEOMETRYオブジェクトで使用されるSRID (座標系識別子)。デフォルト値は8307で、WGS 84 経度/緯度座標系のOracle Spatial SRID値です。

使用上のノート

誤った構文や解析エラーがある場合、このファンクションは例外を生成するのではなくNULLを戻します。

次の例では、点、線、およびポリゴン・ジオメトリを示します。

SQL> select opg_apis.get_geometry_from_v_col('10.0 5.0',8307) from dual;

OPG_APIS.GET_GEOMETRY_FROM_V_COL('10.05.0',8307)(SDO_GTYPE, SDO_SRID, SDO_POINT(
--------------------------------------------------------------------------------
SDO_GEOMETRY(2001, 8307, SDO_POINT_TYPE(10, 5, NULL), NULL, NULL)


SQL>   select opg_apis.get_geometry_from_v_col('LINESTRING(30 10, 10 30, 40 40)',8307) from dual;

OPG_APIS.GET_GEOMETRY_FROM_V_COL('LINESTRING(3010,1030,4040)',8307)(SDO_GTYPE, S
--------------------------------------------------------------------------------
SDO_GEOMETRY(2002, 8307, NULL, SDO_ELEM_INFO_ARRAY(1, 2, 1), SDO_ORDINATE_ARRAY(
30, 10, 10, 30, 40, 40))


SQL>  select opg_apis.get_geometry_from_v_col('POLYGON((-83.6  34.1, -83.6 34.3, -83.4 34.3, -83.4 34.1, -83.6 34.1))', 8307) from dual;

OPG_APIS.GET_GEOMETRY_FROM_V_COL('POLYGON((-83.634.1,-83.634.3,-83.434.3,-83.434
--------------------------------------------------------------------------------
SDO_GEOMETRY(2003, 8307, NULL, SDO_ELEM_INFO_ARRAY(1, 1003, 1), SDO_ORDINATE_ARR
AY(-83.6, 34.1, -83.6, 34.3, -83.4, 34.3, -83.4, 34.1, -83.6, 34.1))

9.34 OPG_APIS.GET_GEOMETRY_FROM_V_T_COLS

構文

OPG_APIS.GET_GEOMETRY_FROM_V_T_COLS(
     v     IN NVARCHAR2,
     t     IN INTEGER,
     srid  IN NUMBER DEFAULT 8307
) RETURN SDO_GEOMETRY;

説明

空間データ、タイプ値、およびオプションでSRID値を使用して構成されたSDO_GEOMETRYオブジェクトを戻します。

パラメータ

v

直列化された形式で空間データを含む文字列。

t

vパラメータで表される値のタイプを示す値。20である必要があります。(null値または20以外の値では、null SDO_GEOMETRYオブジェクトを戻します)。

srid

結果のSDO_GEOMETRYオブジェクトで使用されるSRID (座標系識別子)。デフォルト値は8307で、WGS 84 経度/緯度座標系のOracle Spatial SRID値です。

使用上のノート

誤った構文や解析エラーがある場合、このファンクションは例外を生成するのではなくNULLを戻します。

次の例では、点、線、およびポリゴン・ジオメトリを示します。

SQL> select opg_apis.get_geometry_from_v_t_cols('10.0 5.0', 20, 8307) from dual;

OPG_APIS.GET_GEOMETRY_FROM_V_T_COLS('10.05.0',20,8307)(SDO_GTYPE, SDO_SRID, SDO_
--------------------------------------------------------------------------------
SDO_GEOMETRY(2001, 8307, SDO_POINT_TYPE(10, 5, NULL), NULL, NULL)


SQL> select opg_apis.get_geometry_from_v_t_cols('LINESTRING(30 10, 10 30, 40 40)', 20, 8307) from dual;

OPG_APIS.GET_GEOMETRY_FROM_V_T_COLS('LINESTRING(3010,1030,4040)',20,8307)(SDO_GT
--------------------------------------------------------------------------------
SDO_GEOMETRY(2002, 8307, NULL, SDO_ELEM_INFO_ARRAY(1, 2, 1), SDO_ORDINATE_ARRAY(
30, 10, 10, 30, 40, 40))


SQL>  select opg_apis.get_geometry_from_v_t_cols('POLYGON((-83.6  34.1, -83.6 34.3, -83.4 34.3, -83.4 34.1, -83.6 34.1))', 20, 8307) from dual;

OPG_APIS.GET_GEOMETRY_FROM_V_T_COLS('POLYGON((-83.634.1,-83.634.3,-83.434.3,-83.
--------------------------------------------------------------------------------
SDO_GEOMETRY(2003, 8307, NULL, SDO_ELEM_INFO_ARRAY(1, 1003, 1), SDO_ORDINATE_ARR
AY(-83.6, 34.1, -83.6, 34.3, -83.4, 34.3, -83.4, 34.1, -83.6, 34.1))

9.35 OPG_APIS.GET_LATLONG_FROM_V_COL

構文

OPG_APIS.GET_LATLONG_FROM_V_COL(
     v     IN NVARCHAR2,
     srid  IN NUMBER DEFAULT 8307
) RETURN SDO_GEOMETRY;

説明

空間データおよびオプションでSRID値を使用して構成されたSDO_GEOMETRYオブジェクトを戻します。

パラメータ

v

直列化された形式で空間データを含む文字列。

srid

結果のSDO_GEOMETRYオブジェクトで使用されるSRID (座標系識別子)。デフォルト値は8307で、WGS 84 経度/緯度座標系のOracle Spatial SRID値です。

使用上のノート

このファンクションでは、vパラメータのジオメトリの各頂点に対し、最初の数字が緯度の値で2番目の数字が経度の値であるとみなします(これは経度が最初で緯度が2番目である、SDO_GEOMETRYオブジェクトの定義での順番とは逆です)。

誤った構文や解析エラーがある場合、このファンクションは例外を生成するのではなくNULLを戻します。

次の例では、点SDO_GEOMETRYオブジェクトを戻します。入力点の座標の値は、戻されたSDO_GEOMETRYオブジェクトでは“スワップ”されていることに注意してください。

SQL> select opg_apis.get_latlong_from_v_col('5.1 10.0', 8307) from dual;

OPG_APIS.GET_LATLONG_FROM_V_COL('5.110.0',8307)(SDO_GTYPE, SDO_SRID, SDO_POINT(X
--------------------------------------------------------------------------------
SDO_GEOMETRY(2001, 8307, SDO_POINT_TYPE(10, 5.1, NULL), NULL, NULL)

9.36 OPG_APIS.GET_LATLONG_FROM_V_T_COLS

構文

OPG_APIS.GET_LATLONG_FROM_V_T_COLS(
     v     IN NVARCHAR2,
     t     IN INTEGER,
     srid  IN NUMBER DEFAULT 8307
) RETURN SDO_GEOMETRY;

説明

空間データ、タイプ値、およびオプションでSRID値を使用して構成されたSDO_GEOMETRYオブジェクトを戻します。

パラメータ

v

直列化された形式で空間データを含む文字列。

t

vパラメータで表される値のタイプを示す値。20である必要があります。(null値または20以外の値では、null SDO_GEOMETRYオブジェクトを戻します)。

srid

結果のSDO_GEOMETRYオブジェクトで使用されるSRID (座標系識別子)。デフォルト値は8307で、WGS 84 経度/緯度座標系のOracle Spatial SRID値です。

使用上のノート

このファンクションでは、vパラメータのジオメトリの各頂点に対し、最初の数字が緯度の値で2番目の数字が経度の値であるとみなします(これは経度が最初で緯度が2番目である、SDO_GEOMETRYオブジェクトの定義での順番とは逆です)。

誤った構文や解析エラーがある場合、このファンクションは例外を生成するのではなくNULLを戻します。

次の例では、点SDO_GEOMETRYオブジェクトを戻します。入力点の座標の値は、戻されたSDO_GEOMETRYオブジェクトでは“スワップ”されていることに注意してください。

SQL> select opg_apis.get_latlong_from_v_t_cols('5.1 10.0',20,8307) from dual;

OPG_APIS.GET_LATLONG_FROM_V_T_COLS('5.110.0',20,8307)(SDO_GTYPE, SDO_SRID, SDO_P
--------------------------------------------------------------------------------
SDO_GEOMETRY(2001, 8307, SDO_POINT_TYPE(10, 5.1, NULL), NULL, NULL)

9.37 OPG_APIS.GET_LONG_LAT_GEOMETRY

構文

OPG_APIS.GET_LONG_LAT_GEOMETRY(
     x     IN NUMBER,
     y     IN NUMBER,
     srid  IN NUMBER DEFAULT 8307
) RETURN SDO_GEOMETRY;

説明

XおよびY点の座標値、およびオプションでSRID値を使用して構成されたSDO_GEOMETRYオブジェクトを戻します。

パラメータ

x

ジオメトリ定義のSDO_POINT_TYPE要素のX (最初の座標)値。

y

ジオメトリ定義のSDO_POINT_TYPE要素のY (2番目の座標)値。

srid

結果のSDO_GEOMETRYオブジェクトで使用されるSRID (座標系識別子)。デフォルト値は8307で、WGS 84 経度/緯度座標系のOracle Spatial SRID値です。

使用上のノート

誤った構文や解析エラーがある場合、このファンクションは例外を生成するのではなくNULLを戻します。

次の例では、X、Y座標が10.5、5.0の点のジオメトリ・オブジェクトを戻し、結果のジオメトリ・オブジェクトのSRIDとして8307を使用します。

SQL> select opg_apis.get_long_lat_geometry(10.0, 5.0, 8307) from dual;

OPG_APIS.GET_LONG_LAT_GEOMETRY(10.0,5.0,8307)(SDO_GTYPE, SDO_SRID, SDO_POINT(X,
--------------------------------------------------------------------------------
SDO_GEOMETRY(2001, 8307, SDO_POINT_TYPE(10, 5, NULL), NULL, NULL)

9.38 OPG_APIS.GET_LATLONG_FROM_V_COL

構文

OPG_APIS.GET_LATLONG_FROM_V_COL(
     v     IN NVARCHAR2,
     srid  IN NUMBER DEFAULT 8307
) RETURN SDO_GEOMETRY;

説明

空間データおよびオプションでSRID値を使用して構成されたSDO_GEOMETRYオブジェクトを戻します。

パラメータ

v

直列化された形式で空間データを含む文字列。

srid

結果のSDO_GEOMETRYオブジェクトで使用されるSRID (座標系識別子)。デフォルト値は8307で、WGS 84 経度/緯度座標系のOracle Spatial SRID値です。

使用上のノート

このファンクションでは、vパラメータのジオメトリの各頂点に対し、最初の数字が緯度の値で2番目の数字が経度の値であるとみなします(これは経度が最初で緯度が2番目である、SDO_GEOMETRYオブジェクトの定義での順番とは逆です)。

誤った構文や解析エラーがある場合、このファンクションは例外を生成するのではなくNULLを戻します。

次の例では、点SDO_GEOMETRYオブジェクトを戻します。入力点の座標の値は、戻されたSDO_GEOMETRYオブジェクトでは“スワップ”されていることに注意してください。

SQL> select opg_apis.get_latlong_from_v_col('5.1 10.0', 8307) from dual;

OPG_APIS.GET_LATLONG_FROM_V_COL('5.110.0',8307)(SDO_GTYPE, SDO_SRID, SDO_POINT(X
--------------------------------------------------------------------------------
SDO_GEOMETRY(2001, 8307, SDO_POINT_TYPE(10, 5.1, NULL), NULL, NULL)

9.39 OPG_APIS.GET_LONGLAT_FROM_V_T_COLS

構文

OPG_APIS.GET_LONGLAT_FROM_V_T_COLS(
     v     IN NVARCHAR2,
     t     IN INTEGER,
     srid  IN NUMBER DEFAULT 8307
) RETURN SDO_GEOMETRY;

説明

空間データ、タイプ値、およびオプションでSRID値を使用して構成されたSDO_GEOMETRYオブジェクトを戻します。

パラメータ

v

直列化された形式で空間データを含む文字列。

t

vパラメータで表される値のタイプを示す値。20である必要があります。(null値または20以外の値では、null SDO_GEOMETRYオブジェクトを戻します)。

srid

結果のSDO_GEOMETRYオブジェクトで使用されるSRID (座標系識別子)。デフォルト値は8307で、WGS 84 経度/緯度座標系のOracle Spatial SRID値です。

使用上のノート

誤った構文や解析エラーがある場合、このファンクションは例外を生成するのではなくNULLを戻します。

このファンクションでは、vパラメータのジオメトリの各頂点に対し、最初の数字が経度の値で2番目の数字が緯度の値であるとみなします(これはSDO_GEOMETRYオブジェクト定義の順序です)。

次の例では、点SDO_GEOMETRYオブジェクトを戻します。

SQL> select opg_apis.get_longlat_from_v_t_cols('5.1 10.0',20,8307) from dual;

OPG_APIS.GET_LATLONG_FROM_V_T_COLS('5.110.0',20,8307)(SDO_GTYPE, SDO_SRID, SDO_P
--------------------------------------------------------------------------------
SDO_GEOMETRY(2001, 8307, SDO_POINT_TYPE(5.1, 10, NULL), NULL, NULL)

9.40 OPG_APIS.GET_SCN

構文

OPG_APIS.GET_SCN() RETURN NUMBER;

説明

Oracle Spatial and Graphプロパティ・グラフ・サポートのSCN(システム変更番号)をYYYYMMDDの書式で戻します。

ノート:

リリース20.3では、OPG_APIS.GET_SCNファンクションは非推奨となりました。かわりに、現在のSCN (システム変更番号)を取得するには、DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBERファンクションを使用します。
SELECT dbms_flashback.get_system_change_number FROM DUAL;

パラメータ

(なし。)

使用上のノート

SCN値はコミットのたびに増分されます。

次の例は、Oracle Spatial and Graphプロパティ・グラフ・サポートの現在のビルドIDを戻します。

SQL> SELECT OPG_APIS.GET_SCN() FROM DUAL;

OPG_APIS.GET_SCN()
------------------
           1478701

9.41 OPG_APIS.GET_VERSION

構文

OPG_APIS.GET_VERSION() RETURN VARCHAR2;

説明

Oracle Spatial and Graphプロパティ・グラフ・サポートの現在のバージョンを戻します。

パラメータ

(なし。)

使用上のノート

(なし。)

次の例は、Oracle Spatial and Graphプロパティ・グラフ・サポートの現在のバージョンを戻します。

SQL> SELECT OPG_APIS.GET_VERSION() FROM DUAL;

OPG_APIS.GET_VERSION()
--------------------------------------------------------------------------------
12.2.0.1 P1

9.42 OPG_APIS.GET_WKTGEOMETRY_FROM_V_COL

構文

OPG_APIS.GET_WKTGEOMETRY_FROM_V_COL(
     v     IN NVARCHAR2,
     srid  IN NUMBER DEFAULT NULL
) RETURN SDO_GEOMETRY;

説明

WKT (well known text)形式のジオメトリ、およびオプションでSRIDに基づくSDO_GEOMETRYオブジェクトを戻します。

パラメータ

v

直列化された形式で空間データを含む文字列。

srid

結果のSDO_GEOMETRYオブジェクトで使用されるSRID (座標系識別子)。デフォルト値は8307で、WGS 84 経度/緯度座標系のOracle Spatial SRID値です。

使用上のノート

誤った構文や解析エラーがある場合、このファンクションは例外を生成するのではなくNULLを戻します。

次の文では、点ジオメトリおよび線ストリング・ジオメトリを戻します

SQL> select opg_apis.get_wktgeometry_from_v_col('POINT(10.0 5.1)', 8307) from dual;

OPG_APIS.GET_WKTGEOMETRY_FROM_V_COL('POINT(10.05.1)',8307)(SDO_GTYPE, SDO_SRID,
--------------------------------------------------------------------------------
SDO_GEOMETRY(2001, 8307, SDO_POINT_TYPE(10, 5.1, NULL), NULL, NULL)


SQL> select opg_apis.get_wktgeometry_from_v_col('LINESTRING(30 10, 10 30, 40 40)',8307) from dual;

OPG_APIS.GET_WKTGEOMETRY_FROM_V_COL('LINESTRING(3010,1030,4040)',8307)(SDO_GTYPE
--------------------------------------------------------------------------------
SDO_GEOMETRY(2002, 8307, NULL, SDO_ELEM_INFO_ARRAY(1, 2, 1), SDO_ORDINATE_ARRAY(
30, 10, 10, 30, 40, 40))

9.43 OPG_APIS.GET_WKTGEOMETRY_FROM_V_T_COLS

構文

OPG_APIS.GET_WKTGEOMETRY_FROM_V_T_COLS(
     v     IN NVARCHAR2,
     t     IN INTEGER,
     srid  IN NUMBER DEFAULT NULL
) RETURN SDO_GEOMETRY;

説明

WKT (well known text)形式のジオメトリ、タイプ値、およびオプションでSRIDに基づくSDO_GEOMETRYオブジェクトを戻します。

パラメータ

v

直列化された形式で空間データを含む文字列。

t

vパラメータで表される値のタイプを示す値。20である必要があります。(null値または20以外の値では、null SDO_GEOMETRYオブジェクトを戻します)。

srid

結果のSDO_GEOMETRYオブジェクトで使用されるSRID (座標系識別子)。デフォルト値は8307で、WGS 84 経度/緯度座標系のOracle Spatial SRID値です。

使用上のノート

誤った構文や解析エラーがある場合、このファンクションは例外を生成するのではなくNULLを戻します。

次の文では、点ジオメトリおよびポリゴン・ジオメトリを戻します

SQL> select opg_apis.get_wktgeometry_from_v_t_cols('POINT(10.0 5.1)',20,8307) from dual;

OPG_APIS.GET_WKTGEOMETRY_FROM_V_T_COLS('POINT(10.05.1)',20,8307)(SDO_GTYPE, SDO_
--------------------------------------------------------------------------------
SDO_GEOMETRY(2001, 8307, SDO_POINT_TYPE(10, 5.1, NULL), NULL, NULL)


SQL> select opg_apis.get_wktgeometry_from_v_t_cols('POLYGON((-83.6  34.1, -83.6 34.3, -83.4 34.3, -83.4 34.1, -83.6 34.1))',20,8307) from dual;

OPG_APIS.GET_WKTGEOMETRY_FROM_V_T_COLS('POLYGON((-83.634.1,-83.634.3,-83.434.3,-
--------------------------------------------------------------------------------
SDO_GEOMETRY(2003, 8307, NULL, SDO_ELEM_INFO_ARRAY(1, 1003, 1), SDO_ORDINATE_ARR
AY(-83.6, 34.1, -83.6, 34.3, -83.4, 34.3, -83.4, 34.1, -83.6, 34.1))

9.44 OPG_APIS.GRANT_ACCESS

構文

OPG_APIS.GRANT_ACCESS(
     graph_owner IN VARCHAR2,
     graph_name  IN VARCHAR2,
     other_user  IN VARCHAR2,
     privilege   IN VARCHAR2);

説明

プロパティ・グラフのアクセス権限を別のデータベース・ユーザーに付与します。

パラメータ

graph_owner

プロパティ・グラフの所有者。

graph_name

プロパティ・グラフの名前。

other_user

1つ以上のアクセス権限が付与されるデータベース・ユーザーの名前。

privilege

権限を示す文字列: Rは読取り、Sは選択、Uは更新、Dは削除、Iは挿入、Aはすべてです。カンマやその他の区切り文字を使用しないでください。

Aを指定する場合、Aはすべてのアクセス権限を含むため、他の値は指定しないでください。

使用上のノート

(なし。)

次の例では、データベース・ユーザーSCOTTが所有するmypgプロパティ・グラフに対する読取りおよび選択(RS)権限をデータベース・ユーザーPGUSRに付与します。次にPGUSRとして接続し、SCOTTスキーマのmypg頂点表を問合せます。

CONNECT scott/<password>

EXECUTE OPG_APIS.GRANT_ACCESS('scott', 'mypg', 'pgusr', 'RS');

CONNECT pgusr/<password>

SELECT count(1) from scott.mypgVT$;

    17

9.45 OPG_APIS.IMP_EDGE_TAB_STATS

構文

OPG_APIS.IMP_EDGE_TAB_STATS(
     graph_name    IN VARCHAR2,
     stattab       IN VARCHAR2,
     statid        IN VARCHAR2 DEFAULT NULL,
     cascade       IN BOOLEAN DEFAULT TRUE,
     statown       IN VARCHAR2 DEFAULT NULL,
     no_invalidate  BOOLEAN DEFAULT FALSE,  
     force              BOOLEAN DEFAULT FALSE,
     stat_category IN VARCHAR2 DEFAULT 'OBJECT_STATS');

説明

stattabで識別されるユーザー統計表から指定したプロパティ・グラフ・エッジ表(GE$)に関する統計情報を取り出し、ディクショナリに格納します。cascadeTRUEの場合、指定した表に関連付けられているすべての索引統計情報もインポートされます。

パラメータ

graph_name

プロパティ・グラフの名前。

stattab

統計表の名前。

statid

stattab内の統計情報を関連付けるオプションの識別子。

cascade

TRUEの場合は、列と索引の統計情報がエクスポートされます。

statown

stattabを含むスキーマ。

no_invalidate

TRUEの場合、依存カーソルが無効化されることはありません。FALSEの場合、依存カーソルがすぐに無効化されます。DBMS_STATS.AUTO_INVALIDATE(通常のデフォルト)が有効な場合、Oracle Databaseによって依存カーソルを無効化するタイミングが決定されます。

force

TRUEの場合、統計情報がロックされていても操作が行われます。

stat_category

値を区切るのにカンマを使用して、インポートする統計情報を指定します。サポートされる値は、'OBJECT_STATS'(デフォルト: 表統計、列統計および索引統計)と'SYNOPSES'(統計が増分的に保持されるときに作成される補助統計)です。

使用上のノート

(なし。)

次の例では、統計表を作成し、この表にエッジ表統計をエクスポートし、新しく作成された統計情報に対して関連する行をカウントする問合せを発行し、最後に統計情報をインポートします。

EXECUTE OPG_APIS.CREATE_STAT_TABLE('mystat',null);

EXECUTE OPG_APIS.EXP_EDGE_TAB_STATS('mypg', 'mystat', 'edge_stats_id_1', true, null, 'OBJECT_STATS');

SELECT count(1) FROM mystat WHERE statid='EDGE_STATS_ID_1';

       153

EXECUTE OPG_APIS.IMP_EDGE_TAB_STATS('mypg', 'mystat', 'edge_stats_id_1', true, null, false, true, 'OBJECT_STATS');

9.46 OPG_APIS.IMP_VERTEX_TAB_STATS

構文

OPG_APIS.IMP_VERTEX_TAB_STATS(
     graph_name    IN VARCHAR2,
     stattab       IN VARCHAR2,
     statid        IN VARCHAR2 DEFAULT NULL,
     cascade       IN BOOLEAN DEFAULT TRUE,
     statown       IN VARCHAR2 DEFAULT NULL,
     no_invalidate  BOOLEAN DEFAULT FALSE,  
     force              BOOLEAN DEFAULT FALSE,
     stat_category IN VARCHAR2 DEFAULT 'OBJECT_STATS');

説明

stattabで識別されるユーザー統計表から指定したプロパティ・グラフ頂点表(VT$)に関する統計情報を取り出し、ディクショナリに格納します。cascadeTRUEの場合、指定した表に関連付けられているすべての索引統計情報もインポートされます。

パラメータ

graph_name

プロパティ・グラフの名前。

stattab

統計表の名前。

statid

stattab内の統計情報を関連付けるオプションの識別子。

cascade

TRUEの場合は、列と索引の統計情報がエクスポートされます。

statown

stattabを含むスキーマ。

no_invalidate

TRUEの場合、依存カーソルが無効化されることはありません。FALSEの場合、依存カーソルがすぐに無効化されます。DBMS_STATS.AUTO_INVALIDATE(通常のデフォルト)が有効な場合、Oracle Databaseによって依存カーソルを無効化するタイミングが決定されます。

force

TRUEの場合、統計情報がロックされていても操作が行われます。

stat_category

値を区切るのにカンマを使用して、インポートする統計情報を指定します。サポートされる値は、'OBJECT_STATS'(デフォルト: 表統計、列統計および索引統計)と'SYNOPSES'(統計が増分的に保持されるときに作成される補助統計)です。

使用上のノート

(なし。)

次の例では、統計表を作成し、この表に頂点表統計をエクスポートし、新しく作成された統計情報に対して関連する行をカウントする問合せを発行し、最後に統計情報をインポートします。

EXECUTE OPG_APIS.CREATE_STAT_TABLE('mystat',null);

EXECUTE OPG_APIS.EXP_VERTEX_TAB_STATS('mypg', 'mystat', 'vertex_stats_id_1', true, null, 'OBJECT_STATS');

SELECT count(1) FROM mystat WHERE statid='VERTEX_STATS_ID_1';

       108

EXECUTE OPG_APIS.IMP_VERTEX_TAB_STATS('mypg', 'mystat', 'vertex_stats_id_1', true, null, false, true, 'OBJECT_STATS');

9.47 OPG_APIS.PR

構文

OPG_APIS.PR(
     edge_tab_name   IN VARCHAR2,
     d               IN NUMBER DEFAULT 0.85,
     num_iterations  IN NUMBER DEFAULT 10,
     convergence     IN NUMBER DEFAULT 0.1,
     dop             IN INTEGER DEFAULT 4,
     wt_node_pr      IN OUT VARCHAR2,
     wt_node_nextpr  IN OUT VARCHAR2,
     wt_edge_tab_deg IN OUT VARCHAR2,
     wt_delta        IN OUT VARCHAR2,
     tablespace      IN VARCHAR2 DEFAULT NULL,
     options         IN VARCHAR2 DEFAULT NULL,
     num_vertices    OUT NUMBER);

説明

ページ・ランクの計算の準備を行います。

パラメータ

edge_tab_name

プロパティ・グラフ・エッジ表の名前。

d

減衰係数。

num_iterations

ページ・ランク値の計算の反復回数。

convergence

しきい値。現在の反復のページ・ランク値と次の反復のページ・ランク値の違いがこのしきい値よりも小さい場合、計算は停止します。

dop

操作の並列度。

wt_node_pr

頂点のページ・ランク値を保持する作業表の名前。

wt_node_pr

頂点のページ・ランク値を保持する作業表の名前。

wt_node_next_pr

次の反復の頂点のページ・ランク値を保持する作業表の名前。

wt_edge_tab_deg

エッジとノードの並列度情報を保持する作業表の名前。

wt_delta

いくつかの特別な頂点に関する情報を保持する作業表の名前。

tablespace

すべてのグラフ・データおよび索引データを保持する表領域の名前。

options

操作に対する追加の設定。次の値が1つ以上含まれる(カンマ区切り)オプションの文字列。

  • CREATE_UNDIRECTED=T

  • REUSE_UNDIRECTED_TAB=T

num_vertices

ページ・ランクの計算により処理される頂点の数。

使用上のノート

プロパティ・グラフ・エッジ表はデータベースに存在している必要があり、OPG_APIS.PR_PREPプロシージャはコール済である必要があります。

次の例は、準備を実行してから、mypgという名前のプロパティ・グラフの頂点のページ・ランク値を計算します。

set serveroutput on
DECLARE
    wt_pr  varchar2(2000); -- name of the table to hold PR value of the current iteration
    wt_npr varchar2(2000); -- name of the table to hold PR value for the next iteration
    wt3    varchar2(2000); 
    wt4    varchar2(2000); 
    wt5    varchar2(2000); 
    n_vertices number;
BEGIN
    wt_pr := 'mypgPR';
    opg_apis.pr_prep('mypgGE$', wt_pr, wt_npr, wt3, wt4, null);
    dbms_output.put_line('Working table names  ' || wt_pr 
       || ', wt_npr ' || wt_npr || ', wt3 ' || wt3 || ', wt4 '|| wt4);
    opg_apis.pr('mypgGE$', 0.85, 10, 0.01, 4, wt_pr, wt_npr, wt3, wt4, 'SYSAUX', null, n_vertices)
;
END;
/

出力は、次のようになります。

Working table names  "MYPGPR", wt_npr "MYPGGE$$TWPRX277", wt3
"MYPGGE$$TWPRE277", wt4 "MYPGGE$$TWPRD277"

計算されたページ・ランク値は、次の定義およびデータを含むmypgpr表に格納されます。

SQL> desc mypgpr;
 Name					   Null?    Type
 ----------------------------------------- -------- ----------------------------
 NODE					   NOT NULL NUMBER
 PR						            NUMBER
 C						              NUMBER

SQL> select node, pr from mypgpr;

      NODE	   PR
---------- ----------
       101	.1925
       201	.2775
       102	.1925
       104  .74383125
       105  .313625
       103	.1925
       100	.15
       200	.15

9.48 OPG_APIS.PR_CLEANUP

構文

OPG_APIS.PR_CLEANUP(
     edge_tab_name   IN VARCHAR2,
     wt_node_pr      IN OUT VARCHAR2,
     wt_node_nextpr  IN OUT VARCHAR2,
     wt_edge_tab_deg IN OUT VARCHAR2,
     wt_delta        IN OUT VARCHAR2,
     options         IN VARCHAR2 DEFAULT NULL);

説明

ページ・ランクの計算の実行後にクリーンアップを実行します。

パラメータ

edge_tab_name

プロパティ・グラフ・エッジ表の名前。

wt_node_pr

頂点のページ・ランク値を保持する作業表の名前。

wt_node_next_pr

次の反復の頂点のページ・ランク値を保持する作業表の名前。

wt_edge_tab_deg

エッジとノードの並列度情報を保持する作業表の名前。

wt_delta

いくつかの特別な頂点に関する情報を保持する作業表の名前。

options

操作に対する追加の設定。次の値が1つ以上含まれる(カンマ区切り)オプションの文字列。

  • CREATE_UNDIRECTED=T

  • REUSE_UNDIRECTED_TAB=T

使用上のノート

OPG_APIS.PRプロシージャへの各コールの後はクリーンナップを実行する必要はありません。OPG_APIS.PR_CLEANUPプロシージャのコール前に、いくつかのページ・ランク計算を実行することができます。

次の例は、mypgという名前のプロパティ・グラフでのページ・ランクの計算の実行後にクリーンアップの作業を行います。

EXECUTE OPG_APIS.PR_CLEANUP('mypgGE$', wt_pr, wt_npr, wt3, wt4, null);

9.49 OPG_APIS.PR_PREP

構文

OPG_APIS.PR_PREP(
     edge_tab_name   IN VARCHAR2,
     wt_node_pr      IN OUT VARCHAR2,
     wt_node_nextpr  IN OUT VARCHAR2,
     wt_edge_tab_deg IN OUT VARCHAR2,
     wt_delta        IN OUT VARCHAR2,
     options         IN VARCHAR2 DEFAULT NULL);

説明

ページ・ランクの計算の準備を行います。

パラメータ

edge_tab_name

プロパティ・グラフ・エッジ表の名前。

wt_node_pr

頂点のページ・ランク値を保持する作業表の名前。

wt_node_next_pr

次の反復の頂点のページ・ランク値を保持する作業表の名前。

wt_edge_tab_deg

エッジとノードの並列度情報を保持する作業表の名前。

wt_delta

いくつかの特別な頂点に関する情報を保持する作業表の名前。

options

操作に対する追加の設定。次の値が1つ以上含まれる(カンマ区切り)オプションの文字列。

  • CREATE_UNDIRECTED=T

  • REUSE_UNDIRECTED_TAB=T

使用上のノート

プロパティ・グラフ・エッジ表はデータベース内に存在する必要があります。

次の例は、mypgという名前のプロパティ・グラフでのページ・ランクの計算の実行前に準備作業を行います。

set serveroutput on
DECLARE
    wt_pr  varchar2(2000); -- name of the table to hold PR value of the current iteration
    wt_npr varchar2(2000); -- name of the table to hold PR value for the next iteration
    wt3    varchar2(2000); 
    wt4    varchar2(2000);
    wt5    varchar2(2000);
BEGIN
    wt_pr := 'mypgPR';
    opg_apis.pr_prep('mypgGE$', wt_pr, wt_npr, wt3, wt4, null);
    dbms_output.put_line('Working table names  ' || wt_pr 
       || ', wt_npr ' || wt_npr || ', wt3 ' || wt3 || ', wt4 '|| wt4);
END;
/

出力は、次のようになります。

Working table names  "MYPGPR", wt_npr "MYPGGE$$TWPRX277", wt3
"MYPGGE$$TWPRE277", wt4 "MYPGGE$$TWPRD277"

9.50 OPG_APIS.PREPARE_TEXT_INDEX

構文

OPG_APIS.PREPARE_TEXT_INDEX();

説明

テキスト索引がNVARCHAR2列に作成される前に、必要な準備作業を行います。

パラメータ

なし。

使用上のノート

このプロシージャを実行するには、ALTER SESSIONが必要です。

次の例では、テキスト索引がNVARCHAR2列に作成される前に、必要な準備作業を行います。

EXECUTE OPG_APIS.PREPARE_TEXT_INDEX();

9.51 OPG_APIS.RENAME_PG

構文

OPG_APIS.RENAME_PG(
     graph_name    IN VARCHAR2,
     new_graph_name    IN VARCHAR2);

説明

プロパティ・グラフの名前を変更します。

パラメータ

graph_name

プロパティ・グラフの名前。

new_graph_name

プロパティ・グラフの新しい名前。

使用上のノート

graph_nameプロパティ・グラフはデータベースに存在する必要があります。

次の例は、mypgという名前のプロパティ・グラフの名前をmynewpgに変更します。

EXECUTE OPG_APIS.RENAME_PG('mypg', 'mynewpg');

9.52 OPG_APIS.SPARSIFY_GRAPH

構文

OPG_APIS.SPARSIFY_GRAPH(
     edge_tab_name IN VARCHAR2,
     threshold     IN NUMBER DEFAULT 0.5,
     min_keep      IN INTEGER DEFAULT 1,
     dop           IN INTEGER DEFAULT 4,
     wt_out_tab    IN OUT VARCHAR2,
     wt_und_tab    IN OUT VARCHAR2,
     wt_hsh_tab    IN OUT VARCHAR2,
     wt_mch_tab    IN OUT VARCHAR2,
     tbs           IN VARCHAR2 DEFAULT NULL,
     options       IN VARCHAR2 DEFAULT NULL);

説明

プロパティ・グラフ・エッジ表で疎化(エッジ・トリミング)を実行します。

パラメータ

edge_tab_name

プロパティ・グラフ・エッジ表(GE$)の名前。

threshold

実行する必要のある疎化の量を制御する数値。値が小さくなるほど、エッジは削除されます。一般的な値: 0.1、0.2、...0.5

min_keep

各頂点に対して保持する必要のある隣接エッジの最小数を示す正の整数。推奨値は1です。

dop

操作の並列度。

wt_out_tab

出力の疎化されたグラフを保持する作業表。

wt_und_tab

元のグラフの方向付けのないバージョンを保持する作業表。

wt_hsh_tab

グラフの最小ハッシュ値を保持する作業表。

wt_mch_tab

最小ハッシュ値の一致数を保持する作業表。

tbs

作業表データを保持する作業表。

options

操作に対する追加の設定。次の値が1つ以上含まれる(カンマ区切り)オプションの文字列。

  • 'INMEMORY=T'は'inmemory'句を使用してスキーマ表を作成するためのオプションです。

  • 'IMC_MC_B=T'はINMEMORY MEMCOMPRESS BASIC句を使用してスキーマ表を作成します。

使用上のノート

このプロシージャをコールするには、CREATE TABLE権限が必要です。

使用される疎化アルゴリズムはローカル疎化に基づく最小ハッシュです。データ管理に関する2011 ACM SIGMOD国際会議の議事録「Local graph sparsification for scalable clustering」を参照してください(https://cs.uwaterloo.ca/~tozsu/courses/CS848/W15/presentations/ElbagouryPresentation-2.pdf)。

疎化はグラフのトポロジにのみ関係します。プロパティ(K/V)は何も関係しません。

次の例では、mypgのエッジ表に対し、準備作業を行い、作業表の名前を出力し、疎化を実行します。出力の疎化されたグラフは、2つの列SVIDおよびDVIDのあるLEAN_PGという名前の表に格納されます。

SQL> set serveroutput on
DECLARE
  my_lean_pg  varchar2(100) := 'lean_pg'; -- output table
  wt2 varchar2(100);
  wt3 varchar2(100);
  wt4 varchar2(100);
BEGIN
  opg_apis.sparsify_graph_prep('mypgGE$', my_lean_pg, wt2, wt3, wt4, null);
  dbms_output.put_line('wt2 ' || wt2 || ', wt3 ' || wt3 || ', wt4 '|| wt4);

  opg_apis.sparsify_graph('mypgGE$', 0.5, 1, 4, my_lean_pg, wt2, wt3, wt4, 'SEMTS', null);
END;
/ 
  
wt2 "MYPGGE$$TWSPAU275", wt3 "MYPGGE$$TWSPAH275", wt4 "MYPGGE$$TWSPAM275"


SQL> describe lean_pg;
 Name					   Null?    Type
 ----------------------------------------- -------- ----------------------------
 SVID						    NUMBER
 DVID						    NUMBER

9.53 OPG_APIS.SPARSIFY_GRAPH_CLEANUP

構文

OPG_APIS.SPARSIFY_GRAPH_CLEANUP(
     edge_tab_name IN VARCHAR2,
     wt_out_tab    IN OUT VARCHAR2,
     wt_und_tab    IN OUT VARCHAR2,
     wt_hsh_tab    IN OUT VARCHAR2,
     wt_mch_tab    IN OUT VARCHAR2,
     options       IN VARCHAR2 DEFAULT NULL);

説明

プロパティ・グラフ・エッジ表を疎化(エッジ・トリミング)の後、クリーンアップします。

パラメータ

edge_tab_name

プロパティ・グラフ・エッジ表(GE$)の名前。

wt_out_tab

出力の疎化されたグラフを保持する作業表。

wt_und_tab

元のグラフの方向付けのないバージョンを保持する作業表。

wt_hsh_tab

グラフの最小ハッシュ値を保持する作業表。

wt_mch_tab

最小ハッシュ値の一致数を保持する作業表。

tbs

作業表データを保持する作業表

options

(将来使用するために予約済)

使用上のノート

作業表は、操作の完了後に削除されます。

次の例では、mypgのエッジ表に対し、準備作業を行い、作業表の名前を出力し、疎化を実行してから、クリーンアップを実行します。

SQL> set serveroutput on
DECLARE
  my_lean_pg  varchar2(100) := 'lean_pg';
  wt2 varchar2(100);
  wt3 varchar2(100);
  wt4 varchar2(100);
BEGIN
  opg_apis.sparsify_graph_prep('mypgGE$', my_lean_pg, wt2, wt3, wt4, null);
  dbms_output.put_line('wt2 ' || wt2 || ', wt3 ' || wt3 || ', wt4 '|| wt4);

  opg_apis.sparsify_graph('mypgGE$', 0.5, 1, 4, my_lean_pg, wt2, wt3, wt4, 'SEMTS', null);

  -- Add logic here to consume SVID, DVID in LEAN_PG table
  -- 

  -- cleanup 
  opg_apis.sparsify_graph_cleanup('mypgGE$', my_lean_pg, wt2, wt3, wt4, null);
END;
/ 

9.54 OPG_APIS.SPARSIFY_GRAPH_PREP

構文

OPG_APIS.SPARSIFY_GRAPH_PREP(
     edge_tab_name IN VARCHAR2,
     wt_out_tab    IN OUT VARCHAR2,
     wt_und_tab    IN OUT VARCHAR2,
     wt_hsh_tab    IN OUT VARCHAR2,
     wt_mch_tab    IN OUT VARCHAR2,
     options       IN VARCHAR2 DEFAULT NULL);

説明

プロパティ・グラフ・エッジ表の疎化の実行に必要な作業表の名前を準備します。

パラメータ

edge_tab_name

プロパティ・グラフ・エッジ表(GE$)の名前。

wt_out_tab

出力の疎化されたグラフを保持する作業表。

wt_und_tab

元のグラフの方向付けのないバージョンを保持する作業表。

wt_hsh_tab

グラフの最小ハッシュ値を保持する作業表。

wt_mch_tab

最小ハッシュ値の一致数を保持する作業表。

options

操作に対する追加の設定。次の値が1つ以上含まれる(カンマ区切り)オプションの文字列。

  • 'INMEMORY=T'は'inmemory'句を使用してスキーマ表を作成するためのオプションです。

  • 'IMC_MC_B=T'はINMEMORY MEMCOMPRESS BASIC句を使用してスキーマ表を作成します。

使用上のノート

使用される疎化アルゴリズムはローカル疎化に基づく最小ハッシュです。データ管理に関する2011 ACM SIGMOD国際会議の議事録「Local graph sparsification for scalable clustering」を参照してください(https://cs.uwaterloo.ca/~tozsu/courses/CS848/W15/presentations/ElbagouryPresentation-2.pdf)。

次の例では、mypgのエッジ表に対し、準備作業を行い、作業表の名前を出力します。

set serveroutput on

DECLARE
  my_lean_pg  varchar2(100) := 'lean_pg';
  wt2 varchar2(100);
  wt3 varchar2(100);
  wt4 varchar2(100);
BEGIN
  opg_apis.sparsify_graph_prep('mypgGE$', my_lean_pg, wt2, wt3, wt4, null);
  dbms_output.put_line('wt2 ' || wt2 || ', wt3 ' || wt3 || ', wt4 '|| wt4);
END;
/

出力は次のようになります。

wt2 "MYPGGE$$TWSPAU275", wt3 "MYPGGE$$TWSPAH275", wt4 "MYPGGE$$TWSPAM275"