公開されているRDFファイルなどのグラフデータを読み込み、Apache Jena FusekiでSPARQLエンドポイント (Webアプリケーション) を作るソースコードである
- Gitがインストールされていること
- Docker (Docker Engine) がインストールされていること
- Docker Composeがインストールされていること
まずこのコードを git clone
で任意の場所に配置する
次のコマンドにより .env
を作る
cp .env.sample .env
生成された .env
を開き、環境変数を記述する。
docker compose config
で設定内容が正常にプロンプトに返ってくれば、設定成功である。
次のコマンドでイメージをビルドしておく。
docker compose build
- 読み込みたいRDFファイルなどグラフデータを
staging
ディレクトリに置く - ファイルは複数であっても構わない
- なお受け付けられるファイルの形式は次の通り
*.rdf
*.rdf.gz
*.ttl
*.ttl.gz
*.owl
*.owl.gz
*.nt
*.nt.gz
*.nquads
*.nquads.gz
まずこの手順を始める前に、次の点を認識し留意すること。
- この工程は所要時間が長い (日化辞RDFファイルを読み込ませる場合、コマンド実行後45分程度時間を要する)
- 多量のメモリを要する (日化辞RDFファイルを読み込ませる場合、コマンド実行後約30GBのメモリが消費される。また少ないメモリでこの工程を実行した場合、メモリ不足エラーによりコマンドが途中で強制的にkillされてしまう)
- 中程度量のディスクを使用する (日化辞RDFファイルを読み込ませた場合、20GB程度のディスク使用量増加がある)
fuseki
コンテナは停止した状態でコマンドを始めること (そうでない場合、エラーが出て止まる)
次のコマンドにより、データをDockerコンテナに読み込ませる。
docker compose run --rm fuseki ./load.sh <任意のデータセット名称> <stagingフォルダ内の読み込むファイル>
例えば staging
フォルダに配置したすべての .ttl.gz
拡張子ファイルを読み込み、結果として nikkaji
というデータセットをFuseki内に設けるなら、具体的には次のコマンドになる。
docker compose run --rm fuseki ./load.sh nikkaji *.ttl.gz
コマンド実行後、complete
を知らせる表示 (Finish quads load
) がプロンプトに現れれば成功である (その表示が現れれば、Ctrl + C
でプロンプトを戻しても構わない)。
まず次のコマンドでFusekiのサービスを立ち上げる
docker compose up -d
立ち上げたFusekiサービスにウェブブラウザ画面から入る。(立ち上げたFusekiサービスがあるサーバ・ポートへのアクセス許可設定 (ファイアーウォール設定など) は、あらかじめしておくこと。)
ユーザー名とパスワードが要求されるため、以下の要領でログインする
- ユーザー名:
admin
- パスワード:
.env
ファイルに記述したパスワード
次に、以下の要領でデータセットの設定をする
- 画面上部のメニューバーから
manage dataset
メニューをクリックして画面に入る Add new dataset
をクリックするdataset name
に、load.sh
に与えた "任意のデータセット名称" と正確に同じ文字列を入力する (例えば先の手順でnikkaji
というデータセット名称を与えたならば、それをここで入力する)Dataset type
はPersistent
を選択し、create dataset
ボタンを押す- 画面上部のメニューバーから
dataset
をクリックした後、画面上部のDataset:
ドロップダウンメニューで、先ほど入力したデータセットが選択されていることを確認する - 画面にはサンプルのSPARQLクエリが自動で入力されているので、画面右側の再生ボタンをクリックしてクエリ結果が表示されれば、一連のSPARQLエンドポイントの作成は成功である