C SQL DeveloperでのRDFのサポート

Oracle SQL Developerを使用して、Oracle Spatial and GraphのRDFナレッジ・グラフ機能に関連する操作を実行できます。

C.1 SQL DeveloperでのRDFのサポートについて

SQL DeveloperでのRDFのサポートは、「接続」ナビゲータから使用できます。

SQL Developerを使用して、Oracle Database内のRDF関連オブジェクトを作成および管理できます。セマンティク・テクノロジに対するOracle Spatial and Graphのサポートは、主にResource Description Framework (RDF)およびWeb Ontology Language (OWL)のサブセットで構成されています。これらの機能は、Oracle Spatial and GraphのRDFナレッジ・グラフ機能と呼ばれます。

SQL Developerのサポートは、次の条件が満たされた場合にRDFに組み込まれます。
  • 接続先のデータベースがOracle Databaseリリース12.1以降である。
  • データベースでRDFセマンティク・グラフのサポートが有効になっている。このサポートを有効にした後、SDO_RDF_TRIPLE_S型が使用可能になる。

これらの条件を満たすOracle Database接続を展開すると、接続の子ノードの下部に「RDFセマンティック・グラフ」が表示されます。

C.2 SQL DeveloperでのRDFセマンティク・グラフ・サポートの設定

この項は、Oracle Database 19c以降を使用している場合にのみ適用されます。スキーマプライベート・ネットワークに対してのみ、SQL Developerで設定手順を実行してRDFセマンティク・グラフ・サポートを有効にする必要があります。

ノート:

この設定は、MDSYSスキーマのセマンティク・ネットワークには必要ありません。Oracle Database 19c以降、必ずデータベース・ユーザー・スキーマにセマンティク・ネットワークを作成することをお薦めします。

この設定を実行すると、SQL DeveloperでRDFネットワーク・ディクショナリ情報を移入するために必要なヘルパー関数が作成されます。

ノート:

この1回かぎりの設定手順を実行しない場合、SQL DeveloperでRDFネットワーク・メタデータ・ノード(REGULAR_MODELSRDF_VIEWSRULEBASESなど)を展開しようとするとエラーが発生することがあります。

この設定の実行手順:

  1. SQL Developerを開きます。
  2. 「RDFセマンティック・グラフ」・ノードを右クリックし、「RDFセマンティク・グラフの設定」を選択して1回かぎりの設定手順を実行します。

    図C-1 RDFセマンティク・グラフの設定

    図C-1の説明が続きます
    「図C-1 RDFセマンティク・グラフの設定」の説明

    次の表は、このオプションを使用可能にするためにDBA権限が必要かどうかを判断するのに役立ちます。

    表C-1 SQL DeveloperおよびOracle DBのバージョンに固有のRDFセマンティク・グラフの設定

    Oracle DBのバージョン SQL Developerのバージョン ユーザーのタイプ 予想される結果
    19c以降 20.3より前 DBA権限を持つユーザーによって1回実行 必要な型およびファンクションは、MDSYSスキーマにインストールされます。
    19c以降 20.3以降 各ユーザーが個々に1回実行 必要な型およびファンクションは、ユーザーのスキーマにインストールされます。

    ノート:

    20.3よりのSQL Developerバージョンを使用してOracle Databaseリリース19c以降でRDFセマンティク・グラフ・サポートをすでに設定しているが、SQL Developerリリース20.3以降の使用を開始した場合は、メタデータ関数がMDSYSスキーマにインストールされた以前のものと異なるため、設定を再度実行する必要があります。

  3. 「適用」をクリックします。

    必要に応じて、「SQL」タブをクリックしてプロシージャを表示することもできます。

    図C-2 RDFセマンティク・グラフの設定の適用

    図C-2の説明が続きます。
    「図C-2 RDFセマンティク・グラフの設定の適用」の説明

    必要な型およびファンクションは、適切なスキーマにインストールされます。この設定が実行されると、「RDFセマンティック・グラフ」オプションがグレー表示されます。

C.3 SQL Developerを使用したRDFセマンティク・ネットワークの操作

SQL Developerを使用して、RDFデータを操作するためのRDFセマンティック・ネットワークを作成できます。

接続に関連付けられたデータベース・スキーマで使用可能なネットワークを表示するには、「RDFセマンティック・グラフ」ツリーの「ネットワーク」ノードを展開します。

リリース19c以降、ユーザー・スキーマとMDSYSスキーマの両方で、RDFセマンティック・ネットワークがサポートされています。データベース・バージョンに応じて推奨されるセマンティク・ネットワーク・タイプを判断するには、次の表を参照してください。

表C-2 推奨されるセマンティク・ネットワーク・タイプ

データベースのリリース サポートされているネットワーク 推奨されるネットワーク
18c以前 すべてのRDFメタデータは、MDSYSネットワークにのみ属します。 MDSYSネットワーク
19c以降
  • MDSYSネットワーク
  • スキーマプライベート・ネットワーク
スキーマプライベート・ネットワーク

C.3.1 SQL Developerを使用したRDFセマンティク・ネットワークの作成

「ネットワーク」ノードで、1つ以上のRDFセマンティク・ネットワークを作成できます。

新しいセマンティク・ネットワークを作成するには:

  1. 「ネットワーク」を右クリックし、「セマンティック・ネットワークの作成」を選択します。

    この操作は、使用するOracle DatabaseのバージョンおよびSQL Developerのバージョンに応じてユーザーが使用できます。詳細は、次の表を参照してください。

    表C-3 セマンティク・ネットワークを作成するためのリリース固有の手順

    Oracle DBのリリース SQL Developerのバージョン ユーザー要件
    18c以前 任意 DBAロールを持つユーザーのみが、MDSYSネットワークを作成できます。
    リリース19c - 19.3より前 任意 DBAロールを持つユーザーのみが、スキーマプライベート・ネットワークを作成できます。
    19.3以降 20.3より前 DBAロールを持つユーザーのみが、スキーマプライベート・ネットワークを作成できます。
    19.3以降 20.3以降 すべてのデータベース・ユーザーがスキーマプライベート・ネットワークを直接作成できます。

    「セマンティック・ネットワークの作成」ウィンドウが次のように開きます。

    図C-3 セマンティック・ネットワークの作成

    図C-3の説明が続きます
    「図C-3 セマンティック・ネットワークの作成」の説明
  2. ネットワーク所有者、つまり、ネットワークの所有者になるデータベース・スキーマを選択します。
    • リリース18c以前の場合、所有者は常にMDSYSです。
    • 19.3より前のリリース19cの場合は、ネットワーク所有者を選択します。
    • リリース19.3以降の場合、ネットワーク所有者は常に接続ユーザー・スキーマです。
  3. ネットワーク名を入力します。

    ノート:

    リリース18c以前の場合、このフィールドは空白で、編集できません。
  4. ネットワークに関連付けられる表領域を選択します。(セマンティク・ネットワークに必要な表領域がまだ存在しない場合は、「SQL Developerを使用したセマンティク・ネットワーク用の表領域の作成」を参照してください。)
  5. 「適用」をクリックします。

    RDFセマンティク・ネットワークが作成されます。

    作成したネットワーク下に次の子ノードが表示されると、RDFセマンティク・ネットワークの作成を確認できます。

    • REGULAR_MODELS
    • VIRTUAL_MODELS
    • RDF_VIEWS
    • RULEBASES
    • ENTAILMENTS
    • NETWORK_INDEXES (RDF_LINK$)
    • DATATYPE_INDEXES (RDF_VALUE$)
    • BULK_LOAD_TRACES

これで、作成した各ネットワークで次の操作を実行できます。

  • 統計の収集
  • セマンティク・ネットワーク索引のリフレッシュ
  • 未使用値のパージ
  • セマンティク・ネットワークの削除
C.3.1.1 SQL Developerを使用したセマンティク・ネットワーク用の表領域の作成

セマンティク・ネットワークに必要な表領域がまだ存在しない場合は、作成できます。

セマンティク・ネットワークの設定操作の一部として自動的に作成された表領域を調整できます。

「RDFセマンティック・グラフ」には次の3つの表領域を使用することをお薦めします。

  • RDF記憶域の表領域(RDFTBSという名前の新しい表領域を作成)

  • 一時データの表領域(TEMPTBSという名前の新しい表領域を作成)

  • 他のユーザー・データの表領域(USERSという名前の既存の表領域を使用)

DBAナビゲータ(「接続」ナビゲータではない)で、システム接続について「記憶域」「表領域」の順にクリックします。新しい表領域の場合(右クリックして「新規作成」を選択)、目的の名前を選択します(ここにリストされているものは単なる例です)。デフォルト値を受け入れるか、目的のオプションを指定します。

  1. RDFデータの格納用にRDFTBSを作成します。

    名前(表領域名): RDFTBS

    表領域タイプ: 永続

    「ファイル仕様」では、名前: 'RDFTBS.DBF'

    ディレクトリ: 目的のファイル・システム・ディレクトリ。たとえば: /u01/app/oracle/oradata/orcl12c/orcl

    ファイル・サイズ: 目的の初期ファイル・サイズ。たとえば: 1 G

    「再使用」および「自動拡張オン」を選択します。

    次のサイズ: 拡張の各増分に必要なサイズ。たとえば: 512 M

    最大サイズ: 目的の最大ファイル・サイズ。たとえば: 10 G

    「OK」をクリックします。

  2. 一時作業領域用にTEMPTBSを作成します。

    右クリックして、「新規作成」を選択します。

    名前(表領域名): TEMPTBS

    表領域タイプ: 一時

    「ファイル仕様」では、名前: 'TEMPTBS.DBF'

    ディレクトリ: 目的のファイル・システム・ディレクトリ。たとえば: /u01/app/oracle/oradata/orcl12c/orcl

    ファイル・サイズ: 目的の初期ファイル・サイズ。たとえば: 1 G

    「再使用」および「自動拡張オン」を選択します。

    次のサイズ: 拡張の各増分に必要なサイズ。たとえば: 256 M

    最大サイズ: 目的の最大ファイル・サイズ。たとえば: 8 G

  3. システム接続のSQLワークシートを使用して次の文を実行することで、TEMPTBSをデータベースのデフォルト一時表領域にします。

    SQL> alter database default temporary tablespace TEMPTBS;

C.3.2 SQL Developerを使用したセマンティク・ネットワーク索引のリフレッシュ

RDFで使用されるセマンティク・ネットワーク索引(一部は自動的に作成される)をリフレッシュできます。

必要に応じて追加のセマンティク索引を作成したり、自動的に作成された索引を調整したりできます。

次の列に、複数列のBツリー・セマンティク索引を示します。

  • S - 主語

  • P - 述語

  • C - 正規オブジェクト

  • G - グラフ

  • M - モデル

デフォルトでは、PCSGMおよびPSCGMという2つの索引が作成されます。ただし、S、PおよびCの組合せをよりカバーするために、3索引設定(PSCGM、SPCGMおよびCSPGM)を使用できます。

「接続」ナビゲータ(DBAナビゲータではない)で、システム接続を展開し、「RDFセマンティック・グラフ」を展開してから、「ネットワーク索引(RDF_LINK$)」をクリックします。

  1. SPCGM索引を追加します。

    右クリックして、「セマンティック索引の作成」を選択します。推奨される索引コード: SPCGM

    「OK」をクリックします。

  2. CSPGM索引を追加します。

    右クリックして、「セマンティック索引の作成」を選択します。推奨される索引コード: CSPGM

    「OK」をクリックします。

  3. PSCGM索引を削除します。

    「RDF_LINK_PSCGM_IDX」を右クリックして、「セマンティック索引の削除」を選択します。

結果は、次の3つの索引になります。

  • RDF_LINK_PSCGM_IDX

  • RDF_LINK_SPCGM_IDX

  • RDF_LINK_CSPGM_IDX

C.3.3 SQL Developerを使用したRDF統計の収集

RDFおよびOWL表とその索引に関する統計を収集できます。

セマンティク・ネットワークに関する統計を収集するには、ネットワーク名を右クリックして「統計の収集」を選択します。

ダイアログ・ボックスで次のパラメータを定義できます。

ネットワーク所有者: 接続ユーザー(編集不可)。

ネットワーク名: ネットワークの名前(編集不可)。

値についてのみ: 有効化(選択)すると、トリプルの字句の値を含む表のみに関する統計を収集します。無効化(選択解除)すると、RDFおよびOWLデータの記憶域に関連したすべての主要な表に関する統計を収集します。

並列度: 操作に関連付けられるパラレル実行サーバーの数。

ネットワークの作成を完了するには、「適用」をクリックします。

C.3.4 SQL Developerを使用したネットワークからの未使用値のパージ

未使用の(無効な)ジオメトリ・リテラル値をセマンティク・ネットワークからパージできます。

時間の経過に伴うトリプルの削除によって、RDF_VALUE$表の値のサブセットは、現在セマンティク・ネットワークに含まれるどのRDFトリプルまたはルールでも使用されなくなる可能性があります。このような未使用値をRDF_VALUE$表から削除するには、ネットワーク名を右クリックして未使用値のパージを選択します。

ダイアログ・ボックスで次のパラメータを定義できます。

ネットワーク所有者: 接続ユーザー(編集不可)。

ネットワーク名: ネットワークの名前(編集不可)。

MBV_METHOD=SHADOW: 有効化(選択)すると、大量の値をパージする必要がある場合に、処理がより高速になる可能性があります。

並列度: 操作に関連付けられるパラレル実行サーバーの数。

PUV_COMPUTE_VIDS_USED: 有効化(選択)すると、ほとんどの値がパージされると予測される場合に、処理がより高速になる可能性があります。

追加フラグ: 実行されるSEM_APIS.PURGE_UNUSED_VALUESプロシージャのflagsパラメータに追加するキーワードと値を指定します(完全なSQL文を表示するには、「SQL」タブをクリックします)。

操作を実行するには、「適用」をクリックします。

C.3.5 SQL Developerを使用したセマンティク・ネットワークの削除

セマンティク・ネットワークを削除すると、セマンティク・データの永続的な記憶域に使用した構造が削除されます。

セマンティク・ネットワークを削除するには、ネットワーク名を右クリックしてセマンティック・ネットワークの削除を選択します。

ダイアログ・ボックスで次のパラメータを定義できます。

ネットワーク所有者: 接続ユーザー(編集不可)。

ネットワーク名: ネットワークの名前(編集不可)。

カスケード: 有効化(選択)すると、ネットワークの既存のセマンティク・テクノロジ・モデルとルールベースも削除して、ネットワークのセマンティク・データの永続的な記憶域に使用される構造を削除します。無効化(選択解除)すると、ネットワークにセマンティク・テクノロジ・モデルまたはルールベースが存在する場合に、操作が失敗します。

操作を実行するには、「適用」をクリックします。

C.4 SQL Developerを使用したRDFデータのバルク・ロード

RDFのバルク・ロードの操作は、SQL Developerから開始できます。

最初の準備の後で必要になる主なステップは次の2つです: (1)ファイル・システムからステージング表にデータをロードし、(2)ステージング表からセマンティク・モデルにデータをロードします。

実際のバルク・ロードを準備するには、次の手順を実行します。

  1. 1つまたは複数のRDFデータセットを準備します。

    • データは、クライアント・システム上ではなく、データベース・サーバーのファイル・システム上に存在する必要があります。

    • データは、N-triple形式またはN-quad形式である必要があります。(たとえば、Apache Jenaを使用して、他の形式をN-tripleまたはN-quadに変換できます)

    • UNIX名前付きパイプを使用すると、圧縮したファイルをいつでも解凍できます。

    たとえば、LinkedGeoDataからRDFデータセットをダウンロードできます。概要は、http://linkedgeodata.org/Datasetsおよびhttp://linkedgeodata.org/RDFMappingを参照してください。

    LinkedGeoDataからダウンロードするには、https://hobbitdata.informatik.uni-leipzig.de/LinkedGeoData/downloads.linkedgeodata.org/releases/に移動し、リストされたディレクトリを参照します。小規模なデータセットの場合は、https://hobbitdata.informatik.uni-leipzig.de/LinkedGeoData/downloads.linkedgeodata.org/releases/2014-09-09/2014-09-09-ontology.sorted.nt.bz2をダウンロードできます。

    各.bz2ファイルは、同じ名前の.ntファイルを含む圧縮アーカイブです。データ・ソースとして.ntファイルを指定するには、圧縮されていないデータを格納する必要がないようにUnix名前付きパイプを作成する場合を除き、対応する.bz2ファイルを抽出(解凍)する必要があります。

  2. ロードを実行する通常の非DBAユーザーを作成します。

    たとえば、DBAナビゲータ(「接続」ナビゲータではない)を使用して、システム接続を展開し、「セキュリティ」を展開して、「ユーザー」を右クリックし、「新規作成」を選択します。

    CONNECT、RESOURCEおよびUNLIMITED TABLESPACE権限があるユーザー(RDFUSERなど)を作成します。

  3. この通常の非DBAユーザー用の接続を追加します(RDFUSERという接続など)。

    デフォルト表領域: USERS

    一時表領域: TEMPTBS

  4. システム・ユーザーとして、自分のRDFデータ・ディレクトリを指す、データベース内のディレクトリを作成します。

    「接続」ナビゲータ(DBAナビゲータではない)を使用して、システム接続を展開し、「ディレクトリ」を右クリックして、「ディレクトリの作成」を選択します。

    ディレクトリ名: 目的のディレクトリ名。たとえば: RDFDIR

    データベース・サーバー・ディレクトリ: そのディレクトリ用の目的の場所。たとえば: /home/oracle/RDF/MyData

    「適用」をクリックします。

  5. そのディレクトリに対する権限を通常の非DBAユーザー(RDFUSERなど)に付与します。たとえば、次のようにシステム接続のSQLワークシートを使用します。

    SQL> grant read, write on directory RDFDIR to RDFUSER;

    ヒント: 圧縮されていないデータを格納する必要がないように、名前付きパイプを使用できます。たとえば、次のようにします。

    $ mkfifo named_pipe.nt
    $ bzcat myRdfFile.nt.bz2 > named_pipe.nt
  6. 通常の非DBAユーザー(RDFUSERなど)の接続を展開し、「RDFセマンティック・グラフ」をクリックします。

  7. RDFデータを保持するモデルを作成します。

    「モデル」「新規モデル」の順にクリックします。

    モデル名: モデル名を入力します(MY_ONTOLOGYなど)

    アプリケーション表: * Create new <Model_Name>_TPL table * (つまり、TRIPLEという名前のトリプル列があるアプリケーション表が自動的に作成されます)。

    モデル表領域: RDFデータを保持する表領域(RDFTBSなど)

    「適用」をクリックします。

    モデルを表示するには、オブジェクト階層で「モデル」を展開し、モデル名をクリックしてそのモデルのSPARQLエディタを起動します。

    問合せを実行して、モデルが空であることを確認できます。

「モデル」メニューを使用して、「モデル」メニューからバルク・ロードを実行します。バルク・ロードには次の2つのフェーズがあります。

  • ファイル・システムからデータベース内の単純なステージング表にデータをロードします。この際には、外部表を使用してファイル・システムから読み取ります。

  • ステージング表からセマンティク・ネットワークにデータをロードします。ステージング表からモデルにロードします(MY_ONTOLOGYなど)。

これら2つのフェーズを実行するには:

  1. ステージング表にデータをロードします。

    モデル名(「通常モデル」の下)を右クリックし、「外部表からステージング表へのRDFデータのロード」を選択します。

    「ソース外部表」の場合、ソース表: 目的の表名(MY_ONTOLOGY_EXTなど)。

    ログ・ファイル: 目的のファイル名(my_ontology.logなど)

    不良ファイル: 目的のファイル名(my_ontology.badなど)

    ソース表の所有者: RDFデータを含む表のスキーマ(RDFUSERなど)

    「入力ファイル」の場合、入力ファイル: 入力ファイル(named_pipe.ntなど)。

    「ステージング表」の場合、ステージング表: ステージング表の名前(MY_ONTOLOGY_STAGEなど)。

    表が存在しない場合は、「ステージング表の作成」を選択します。

    入力形式: 目的の形式(N-QUADなど)

    ステージング表の所有者: ステージング表のスキーマ(RDFUSERなど)

  2. ステージング表からモデルにロードします。

    ノート:

    ステージング表内のUnicodeデータは、WC3N-Triple形式で指定されているように(http://www.w3.org/TR/rdf-testcases/#ntriples)エスケープする必要があります。SEM_APIS.ESCAPE_RDF_TERM関数を使用すると、ステージング表内のUnicode値をエスケープできます。たとえば、次のようにします。

    create table esc_stage_tab(rdf$stc_sub, rdf$stc_pred, rdf$stc_obj);
    
    insert /*+ append nologging parallel */ into esc_stage_tab (rdf$stc_sub, rdf$stc_pred, rdf$stc_obj)
    select sem_apis.escape_rdf_term(rdf$stc_sub, options=>’ UNI_ONLY=T '), sem_apis.escape_rdf_term(rdf$stc_pred, options=>’ UNI_ONLY=T '), sem_apis.escape_rdf_term(rdf$stc_obj, options=>’ UNI_ONLY=T ')
    from stage_tab; 
    

    モデル名(「通常モデル」の下)を右クリックし、「ステージング表からモデルへのバルク・ロード」を選択します。

    モデル: モデルの名前(MY_ONTOLOGYなど)。

    (モデルが存在しない場合は、「モデルの作成」を選択します。ただし、この例では、モデルはすでに存在します)。

    ステージング表の所有者: ステージング表のスキーマ(RDFUSERなど)

    ステージング表名: ステージング表の名前(MY_ONTOLOGY_STAGEなど)

    並列: 並列度(2など)

    提案: 次のオプションを選択します: 「MBV_METHOD=SHADOW」アプリケーション表索引の再構築「イベント・トレース表の作成」

    「適用」をクリックします。

バルク・ロード操作の後に次の操作を実行します。

  1. セマンティク・ネットワーク全体の統計を収集します。

    DBAユーザーの「接続」ナビゲータで、接続の「RDFセマンティック・グラフ」ノードを展開し、「統計の収集... (DBA)」を選択します。

  2. モデルのSPARQL問合せをいくつか実行します。

    「接続」ナビゲータで、接続の「RDFセマンティック・グラフ」ノードを展開し、モデルを選択します。

    SPARQL問合せエディタを使用して、目的のSPARQL問合せを入力して実行します。

  3. オプションで、「一括ロード・トレース」を選択して各ステップに関する情報を取得します。

    「RDFセマンティック・グラフ」を展開してから、「一括ロード・トレース」を展開して一括ロード・トレースのリストを表示します。いずれかをクリックすると、ロードの実行時間、個別値とトリプルの数、重複トリプルの数、およびその他の詳細に関する有用な情報が表示されます。