10.1 RDFグラフ・サーバーおよび問合せUIの概要

RDFグラフ・サーバーおよび問合せUIは、RDF RESTfulサービスとRDFグラフ問合せUIと呼ばれるJava EEクライアント・アプリケーションで構成されます。このクライアントは、Oracle RDFの管理コンソールとして機能し、Java EEコンテナにデプロイできます。

RDFグラフ・サーバーおよびRDF RESTfulサービスを使用して、Oracle AI DatabaseでRDFグラフのSPARQLエンドポイントを作成できます。

次の図は、RDFグラフ・サーバーおよび問合せUIのアーキテクチャを示しています。

図10-1 RDFグラフ・サーバーおよび問合せUI

図10-1の説明が続きます
「図10-1 RDFグラフ・サーバーおよび問合せUI」の説明

Oracle RDFグラフ問合せUIは、異なるデータ・ソースのRDFオブジェクトを管理し、SPARQL問合せおよび更新を実行するために使用できるOracle JETベースのクライアントです。このJava EEアプリケーションは、RDFグラフを問い合せて表示するアプリケーションWebページの構築に役立ちます。複数のデータ・ソースにわたる問合せをサポートします。RDFグラフ問合せUIの主な機能は次のとおりです。

  • RDF RESTfulサービスを使用してRDFデータ・ストア(Oracle RDFデータ・ソースまたは外部RDFデータ・ソース)と通信します。
  • プライベート・ネットワーク、モデル、ルール・ベース、伴意、ネットワーク索引、Oracleデータ・ソースのデータ型など、様々なRDFオブジェクトに対してCRUD操作を実行できます。
  • SPARQL問合せを実行し、RDFデータを更新できます。
  • SPARQL問合せ結果のグラフ・ビューを提供します。
  • ユーザー・アプリケーションWebページにOracle JETを使用します。

次の各トピックでは、RDFグラフ・サーバーおよび問合せUIを操作する際の主な概念について説明します。

10.1.1 データ・ソース

データ・ソースはRDFオブジェクトのリポジトリです。

データ・ソースは、Oracle AI Database、またはDbpediaやJena Apache FusekiなどのエンドポイントURLからアクセスできる外部RDFサービスを参照できます。データ・ソースは、汎用および特定のパラメータで定義できます。汎用パラメータには、名前、タイプおよび説明があります。特定のパラメータは、JDBCプロパティ(データベース・データ・ソースの場合)およびエンドポイント・ベースURL (外部データ・ソースの場合)です。

10.1.1.1 Oracleデータ・ソース

Oracleデータ・ソースはJDBC接続を使用して定義されます。次の3つのタイプのOracle JDBCデータ・ソースを定義できます:

  • SIDまたはサービス名、ホスト、ポートおよびユーザー資格証明を含む標準のOracle JDBCパラメータを含むJDBC URLデータ・ソース。
  • アプリケーション・サーバー(WebLogic、Tomcatなど).内で定義できるコンテナJDBCデータ・ソース
  • データベース接続の確立に必要なファイルを含むOracleウォレット・データ・ソース

Oracle AI Databaseデータ・ソースを定義するパラメータは次のとおりです:

  • name: データ・ソースの汎用名。
  • type: データ・ソースのタイプ。データベースの場合はDATABASEである必要があります。
  • description (オプション): データ・ソースの一般的な説明。
  • properties: データ・ソース・プロパティの値を持つ特定のマッピング・パラメータ:
    • JDBC URLの場合:
      • データベースSIDまたはサービス名
      • ホスト・マシン
      • データベース・リスニング・ポート
      • ユーザー名およびパスワード資格証明
    • コンテナ・データ・ソースの場合:
      • JNDI名 - Java naming and directory interface (JNDI)名
    • ウォレット・データ・ソースの場合:
      • ウォレット・サービスを説明する文字列
      • ユーザー名およびパスワード資格証明(ユーザー資格証明がウォレットに格納されていない場合は必須)
      • オプションのプロキシ詳細

      クラウド・ウォレットの場合、通常は tnsnames.oraファイルに格納される名ですが、単純なウォレットの場合は、ホストポートおよびサービス名の情報が含まれます。

次の例は、JDBC URLデータ・ソースのJSON表現を示しています。

{
    "name" : "rdfuser_jdbc_sid",
    "type" : "DATABASE",
    "description" : "",
    "properties" : {
	"host" : "127.0.0.1"	 
	"sid" : "orcl193"
	"port" : "1524",
	"user" : "rdfuser",
        "password" : "<password>"      
    }
}

次の例は、コンテナ・データ・ソースのJSON表現を示しています。


{
   "name": "rdfuser_ds_ct",
   "type": "DATABASE",
   "description": "Database Container connection",
   "properties": {
       "jndiName": "jdbc/RDFUSER193c"
   }
}

次の例は、資格証明がウォレットに格納されているウォレット・データ・ソースのJSON表現を示しています:


{
   "name": "rdfuser_ds_wallet",
   "type": "DATABASE",
   "description": "Database wallet connection",
   "properties": {
       "walletService": "db202002041627_medium"
   }
}

10.1.1.2 エンドポイントURLデータ・ソース

外部RDFデータ・ソースは、エンドポイントURLを使用して定義されます。通常、各RDFストアには、SPARQL問合せおよびSPARQL更新を受け入れる汎用URLがあります。RDFストア・サービスによっては、使用可能なデータセットを取得する機能リクエストも提供される場合があります。

表10-1 外部データ・ソースのパラメータ

パラメータ 説明

name

データ・ソースの汎用名。

type

データ・ソースのタイプ。外部データ・ソースの場合、タイプはENDPOINTである必要があります。

description

データ・ソースの一般的な説明。

properties

データ・ソース・プロパティの値を持つ特定のマッピング・パラメータ:

  • ベースURL: RDFストアにSPARQL問合せを発行するベースURL。これはデフォルトのURLです。
  • クエリーURL (オプション): SPARQL問合せを実行するURL。定義されている場合は、ベースURL値が上書きされます。
  • 更新URL (オプション): SPARQL更新を実行するURL。定義されている場合は、ベースURL値が上書きされます。
  • 機能(オプション): 一部のRDFストア(Apache Jena Fusekiなど)では、サービスで使用可能なデータセットを返す機能URLが提供される場合があります。この場合、JSONレスポンスが必要です。
  • 取得URL: 機能URLの取得。
  • データセット・パラメータ: RDFデータセット情報を含むJSONパラメータを定義します。
  • データセット・パラメータ名: RDFデータセット名を含むJSONパラメータを定義します。

次の例は、Dbpedia外部データ・ソースのJSON表現を示しています。

{
  "name": "dbpedia",
  "type": "ENDPOINT",
  "description": "Dbpedia RDF data - Dbpedia.org",
  "properties": {
      "baseUrl": "http://dbpedia.org/sparql",
      "provider": "Dbpedia"
   }
}

次の例に、Apache Jena Fuseki外部データ・ソースのJSON表現を示します。${DATASET}は、実行時にFusekiデータセット名に置き換えられるパラメータです。

{
    "name": "Fuseki",
    "type": "ENDPOINT",
    "description": "Jena Fuseki server",
    "properties": {
      "queryUrl": "http://localhost:8080/fuseki/${DATASET}/query",
      "baseUrl": "http://localhost:8080/fuseki",
      "capabilities": {
        "getUrl": "http://localhost:8080/fuseki/$/server",
        "datasetsParam": "datasets",
        "datasetNameParam": "ds.name"
      },
      "provider": "Apache",
      "updateUrl": "http://localhost:8080/fuseki/${DATASET}/update"
    }
}

10.1.2 RDFデータセット

各RDFデータ・ソースには、使用可能なRDFオブジェクトを記述するメタデータ情報が含まれます。

次に、各プロバイダによって定義されるメタデータ情報について説明します。

  • Oracle RDFデータ・ソース: RDFメタデータには、プライベート・ネットワーク、モデル(実、仮想、ビュー)、ルールベース、伴意、ネットワーク索引、データ型などのRDFオブジェクトに関する情報が含まれます。

  • 外部RDFプロバイダ: Apache Jena Fusekiの場合、メタデータにはデータセット名が含まれます。他の外部プロバイダにはメタデータ概念がない場合があります。その場合、ベースURLは汎用(デフォルト)メタデータを指します。

RDFデータセットは、RDFデータ・ソースで使用可能な1つ以上のRDFオブジェクトを指します。データセット定義はSPARQL問合せリクエストで使用されます。各プロバイダには、RDFデータセットを記述する独自のプロパティ・セットがあります。

次に、データセットのJSON表現の例をいくつか示します。

Oracle RDFデータセット定義:

[ 
   {
     "networkOwner": "RDFUSER",
     "networkName": "MYNET",
     "models": ["M1"]
   }
]

Apache RDF Jena Fusekiデータセット定義:

[  
   {
     "name": "dataset1"
   }
]

特定のデータセットを持たないRDFストアでは、前述の例のApache Jena Fusekiに示されているように、単純なJSON {}またはデフォルト名を使用できます。

10.1.3 RESTサービス

RDF REST APIにより、クライアントとバックエンドのRDFデータ・ストア間の通信が可能になります。

RESTサービスは次のグループに分けることができます。

  • サーバー汎用サービス: 使用可能なデータ・ソースと、一般、プロキシおよびロギング・パラメータの構成設定へのアクセスを許可します。

  • Oracle RDFサービス: Oracle RDFオブジェクトに対するCRUD操作を許可します。

  • SPARQLサービス: データ・ソースに対するSPARQL問合せおよび更新を実行できます。

context-rootがorardfに設定されたlocalhostマシンおよびポート番号7101のRDF Webアプリケーションのデプロイメントを想定した場合、RESTリクエストのベースURLはhttp://localhost:7101/orardf/api/v1です。

ほとんどのRESTサービスは、フォームベース認証で保護されています。管理者ユーザーはRDF Graph ServerとQuery UI Webアプリケーションを使用して、パブリックRDFデータ・ソースを定義できます。パブリックRESTエンドポイントは、公開されたデータセットに対してSPARQL問合せを実行するために使用できます。

ノート:

この項およびこの章の例では、ホスト・マシンをlocalhostとして、ポート番号を7101として参照しています。これらの値は、アプリケーションのデプロイメントによって異なる場合があります。

RDF RESTの例を次に示します。

  • サーバー情報を取得します。

    パブリック・エンドポイントURLは次のとおりです。サーバーが起動して実行中かどうかをテストするために使用できます。

    http://localhost:7101/orardf/api/v1/utils/version

  • データ・ソースのリストの取得:

    http://localhost:7101/orardf/api/v1/datasources

  • 一般構成パラメータの取得:

    http://localhost:7101/orardf/api/v1/configurations/general

  • Oracle RDFのRDFセマンティク・ネットワークのリストの取得:

    http://localhost:7101/orardf/api/v1/networks?datasource=rdfuser_ds_193c

  • プライベート・セマンティク・ネットワークの全Oracle RDF実モデル・リストの取得(19cデータベースから適用):

    http://localhost:7101/orardf/api/v1/models?datasource=rdfuser_ds_193c&networkOwner=RDFUSER&networkName=LOCALNET&type=real

  • SPARQL問合せのPOSTリクエスト:

    http://localhost:7101/orardf/api/v1/datasets/query?datasource=rdfuser_ds_193c&datasetDef={"metadata":[ {"networkOwner":"RDFUSER", "networkName":"LOCALNET","models":["UNIV_BENCH"]} ] }

    問合せペイロード: select ?s ?p ?o where { ?s ?p ?o} limit 10

  • SPARQL問合せのGETリクエスト:

    http://localhost:7101/orardf/api/v1/datasets/query?datasource=rdfuser_ds_193c&query=select ?s ?p ?o where { ?s ?p ?o} limit 10&datasetDef={"metadata":[ {"networkOwner":"RDFUSER", "networkName":"LOCALNET","models":["UNIV_BENCH"]} ] }

  • RDFモデルの公開をリクエストします。

    http://localhost:7101/orardf/api/v1/datasets/publish/DSETNAME?datasetDef={"metadata":[ {"networkOwner":"RDFUSER", "networkName":"LOCALNET" "models":["UNIV_BENCH"]} ]}

    デフォルトのSPARQL問合せペイロード: select ?s ?p ?o where { ?s ?p ?o} limit 10

    このデフォルトのSPARQLは、公開されたデータセットの内容をリクエストするときに上書きできます。前述のリクエストのdatasourceパラメータはオプションです。ただし、このパラメータをURLで定義する場合は、現在の公開データソース名と一致する必要があります。これは、このAPIバージョンが1つの公開データ・ソースのみをサポートするためです。それ以外の場合は、公開されたデータ・ソース名が自動的に使用されます。

  • 公開されたデータセットのリクエストを取得します。

    パブリック・エンドポイントURLは次のとおりです。データセット定義に格納されているデフォルト・パラメータ(SPARQL問合せ、出力形式など)を使用しています。ただし、これらのデフォルト・パラメータは、新しいパラメータ値を渡すことによってRESTリクエストで上書きできます。

    http://localhost:7101/orardf/api/v1/datasets/query/published/DSETNAME

使用可能なRESTサービスの詳細なリストは、Swagger jsonファイルorardf_swagger.jsonにあります。このファイルは、アプリケーションのドキュメント・ディレクトリにパッケージ化されています。