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のアーキテクチャを示しています。
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を操作する際の主な概念について説明します。
- データ・ソース
データ・ソースはRDFオブジェクトのリポジトリです。 - RDFデータセット
各RDFデータ・ソースには、使用可能なRDFオブジェクトを記述するメタデータ情報が含まれています。 - RESTサービス
RDF REST APIにより、クライアントとバックエンドのRDFデータ・ストア間の通信が可能になります。
親トピック: 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の場合:
次の例は、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 |
データ・ソース・プロパティの値を持つ特定のマッピング・パラメータ:
|
次の例は、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 {}またはデフォルト名を使用できます。
親トピック: RDFグラフ・サーバーおよび問合せUIの概要
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です。
ノート:
この項およびこの章の例では、ホスト・マシンを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にあります。このファイルは、アプリケーションのドキュメント・ディレクトリにパッケージ化されています。
親トピック: RDFグラフ・サーバーおよび問合せUIの概要
