D'ownLOD で何ができるのか?

LOD を使った Web アプリケーションが作れます!

SPARQL エンドポイントに対して、SPARQLで検索した結果を HTML で表示する Web アプリケーションです。

主な特徴

  • 開発コストを大幅に低減
  • 必須スキルは HTML と SPARQL のみ
  • 動作条件は Java とブラウザのみ
  • DBキャッシュによる高速な動作

lod cloud

例えば、以下のような Web アプリが作れます。

巨人選手一覧(簡易版)
このアプリは、読売ジャイアンツの選手一覧を取得するSPARQLをDBpediaのエンドポイントから検索し、その結果をHTMLで表示しています。HTTPのGETクエリを変更すると読売ジャイアンツ以外の球団の選手一覧を表示することもできます。
巨人選手一覧
このアプリは、読売ジャイアンツの選手一覧を取得するSPARQLをDBpediaのエンドポイントから検索し、その結果をHTMLで表示しています。表示の内容は選手一覧選手個人です。HTTPのGETクエリを変更すると読売ジャイアンツ以外の球団の選手一覧を表示することもできます。
ジュビロ磐田選手一覧
このアプリは、ジュビロ磐田の選手一覧を取得するSPARQLをDBpediaのエンドポイントから検索し、その結果をHTMLで表示しています。HTTPのGETクエリを変更するとジュビロ磐田以外のクラブの選手一覧を表示することもできます。
大阪市周辺の空港一覧
このアプリは、大阪市周辺の空港一覧を取得するSPARQLをFactForge(http://factforge.net/)のエンドポイントから検索し、その結果をHTMLで表示しています。HTTPのGETクエリを変更すると地名(ex. 大阪市)や種類(ex. 空港)や検索範囲(ex. 50マイル)の違う一覧を表示することもできます。

D'ownLOD を使うと開発コストを低減できる

不要な開発コスト

D'ownLOD を使わないで、普通にWebアプリを作る場合と何が違う?

アプリを作るには、本来であれば、Web サーバのインストールや設定、開発フレームワークの導入、実装環境の整備などが必須です。 また、場合によっては、データベースのインストールや設定、ライブラリの導入なども行なわれます。 さらに、それらに関する知識が無ければ、調査しながら、開発しなければなりません。

D'ownLOD を使うと、それらの手間は一切かかりません。

D'ownLOD は誰でも使える!?

必須スキルは SPARQL と HTML です。
SQL と JavaScript を使えば、さらに複雑なこともできます。

SPARQL

SPARQL

LOD を取得するために、SPARQL エンドポイントに対し、SPARQL で検索します。 任意のエンドポイントに対し、任意のSPARQLを発行できます。

HTML

HTML

取得したデータを流し込むための HTML テンプレートを定義します。 HTML テンプレートは JsViews で実装しており、HTML 構文を知っていれば、利用できます。

SQL

SQL

SPARQLで取得したデータは、ローカルの関係データベースに蓄積されます。 そのデータベースに対し、SQLで必要なデータの抽出・加工を行うことができます。

JavaScript

JavaScript

取得したデータは JSON 形式で渡されるため、JavaScript で容易に扱うことができます。 HTML テンプレートの実装である JsViews も JavaScript ライブラリです。

D'ownLOD アプリはどこでも動く!

コマンドライン

D'ownLOD で作ったアプリの動作条件は?

作成したアプリは Java さえあれば、どこでもすぐ実行できます。 開発と動作確認はWebブラウザが必要です。

アプリを定義した後は、jar 形式のファイルがビルドされ、すぐにダウンロードできます。 そのファイル内には、Web サーバや関係データベース、Java ライブラリなど、全部入っていますので、 ダウンロードした後、すぐ実行できます。

実行方法は次の通りです。

ダブルクリック
拡張子 jar に java が割り当てられている環境であれば、ダブルクリックでも動作します。
コマンドライン
コマンド java -jar <D'ownLODアプリ>.jar を実行すると、log が標準出力に表示されます。

D'ownLOD には他にもこんな特徴もあります

  • 高速な動作:SPARQL の結果は、ローカル関係データベースに蓄積するので、2回目以降は高速
  • 手軽に実行:作成したアプリは、ダウンロードして、そのまま実行できる
  • 動的ページ:GETパラメタで SPARQL や SQL の一部を置換できるので、動的なWebページが作れる
  • データとビューが分離: JSON (データ) が渡され、 HTML テンプレート (ビュー) に適用される
  • ソースコードの利用:Webアプリだけでなく、同時にソースコードもダウンロードできるので、独自拡張ができる
  • Web APIの利用:自動生成する JSON は Web API として公開されるため、外部アプリからの利用も可能

D'ownLOD アプリの作り方

D'ownLOD アプリの作成手順は?

D'ownLOD アプリを作るには、以下の5つを定義します。

一般定義

アプリ全般に関する定義を記述します。 headタグに定義した記述は、すべてのHTML ページに適用されます。 また、稼動時に利用するポート番号も定義できます。

データ定義

SPARQL と SQL を定義します。 SPARQL は外部エンドポイントから LOD を取得します。 SQL は LOD を格納するローカルDBに対して、データの抽出・加工を行ないます。

ビュー定義

パーツとページを定義します。 パーツは、HTML の div タグに挿入される、部分HTMLです。 ページは、複数のパーツから構成される HTML ページです。

マッピング定義

データとビューの間のマッピングを定義します。 SQL と パーツの対応関係を定義することで、パーツが利用するデータを定義します。

URL 別名定義

アプリケーションが持つ URL の別名を定義します。 URL定義は必須ではありませんが、短かい URL や トップページなどを定義できます。

D'ownLOD アプリのアークテクチャ

D'ownLOD アプリのアークテクチャを以下に示します。

architecture

ブラウザから D'ownLOD アプリのあるURLにアクセスがあると、次のような処理が実行されます。

  1. URL 解釈
    • URLのフォワード:URL が別名定義されていれば、正しいURLにフォワード
    • GETパラメタの解釈:SPARQL生成とSQL生成で利用するために、URL の GET パラメタを取得
  2. SPARQL 生成・実行
    • SPARQL の生成:GET パラメタの文字列で定義済みの SPARQL の一部を文字列置換して、発行する SPARQL を生成
    • キャッシュの確認:作成した SPARQL の結果がすでにローカルの関係データベースに格納されていれば、SPARQLは実行しない
    • SPARQL の実行:生成した SPARQL を定義済みのエンドポイントに対して実行し、LOD を取得
  3. SPARQL 結果保存
    • 関係テーブルの作成:実行された SPARQL の結果を保存するために、ローカルの関係データベースにテーブルを動的に作成
    • SPARQL 結果格納:SPARQL の結果を作成した関係テーブルに格納
  4. SQL 生成・実行
    • SQL の生成:GET パラメタの文字列で定義済みの SQL の一部を文字列置換して、発行する SQL を生成
    • SQL の実行:生成した SQL をローカルの関係データベースに対して実行し、保存済みの SPARQL の結果を抽出・加工
  5. SQL 結果の JSON 変換
    • JSON変換:実行した SQL の結果を JSON に変換
    • Web API 化:SPARQL あるいは SQL の結果を JSON として返す Web API を提供
  6. HTML 生成
    • データとビューのマッピング:データとビューの間のマッピング定義に従って、SQLの結果をパーツに適用
    • HTML 生成:SQL 結果の JSON をパーツの HTML テンプレートに流し込み、HTML を生成

秘話 其の一
D'ownLOD の目的はラピッドプロトタイピング

実は、LOD にしかできないアプリケーションはありません。 なぜなら、LOD にできるなら、元データを使って同じことができるはずです。

では、LOD は何のためにあるのか?

LOD の特徴(フォーマット統一、公開、外部リンク)を考えると、LOD はラピッドプロトタイピングのために存在すると考えました。

そこで、ラピッドプロトタイピングのためのプラットフォームとして、D'ownLOD を開発しました。

秘話 其の二
D'ownLOD の名前の由来

D'ownLOD の名前の由来は次の通り、駄洒落です。

  • 作ったアプリをダウンロード(download)できること
  • 自分(own)のLODアプリを定義(Define)・開発(Develop)し、すぐデプロイ(Deploy)できること

ちなみに、D'ownLOD の読みはダウンロッドです。