FusekiというSPARQLサーバを、Heroku上で運用する手順を示します。ReadOnlyのデータセットのみを対象とします。Fusekihttps://jena.apache.org/documentation/fuseki2/ここで示す手順は、次のような運用を想定しています。SPARQLで公開するデータをGitHub上で管理し、データ追加・編集をPullRequestで受け付けて、masterブランチにmergeされたら、HerokuのDeployのGitHub連携で自動的にサービスを更新する。このエントリでは、以下のリポジトリのサンプルコードを使用します。README.mdにも手順の説明を記載しています。GitHubhttps://github.com/takemikami/jena-fuseki-heroku-sample仕組みの概要Fusekiは、Javaで実装されたSPARQLサーバです。永続化が必要な場合は、TDBという仕組みでディスク上に保持します。Herokuの場合は、Dynoがシャットダウンすると、メモリ・ディスクともに破棄されてしまうので、永続化されません。そこで、Dynoのイメージをビルドする際に、ホストしたいデータセットをTDB形式にして、イメージに含めてしまうことにします。まとめると、以下のような処理の流れになります。masterブランチにmergeされた時に実行されます。以上で説明した仕組みでデータセットをホストするため、Fusekiの機能について、次のような点に注意が必要です。GitHubのREADME.mdに書いている通りなのですが、以下に記載しておきます。本リポジトリをcloneする。git@github.com:takemikami/jena-fuseki-heroku-sample.gitGitHubのGUIでデータセットを運用するリポジトリを作成する。作成したGitHubのリポジトリに、本リポジトリのコピーをpushする。masterHerokuのGUIで、新しいappを作成する。新しいappのDeployタブから、データセットを運用するリポジトリを指定して、GitHub連携を設定する。※この時、ブランチはmasterを指定します。appでページクエリを実行出来ることを確認する。データセットの名称を変更する。actionのパスでsampleとなっている箇所dataset配下のデータセットの定義を編集する。以降は、datasetの変更をmasterブランチにpushする度に、自動的に反映されるようになります。この仕組みでFusekiを運用すれば、次のメリットがあると考えられます。サーバへのデータロードのオペレーションが不要になるデータ量・アクセスが少なければ、Heroku無料の範囲内で運用できる趣味レベルで整理したデータなどがあれば、この方法で、気軽にホストしてみてはいかがでしょうか。