2018https://adventar.org/calendars/3046im@sparqlにContributeしやすくするためrdflintという、RDFファイルのチェックツールを作ったので、このエントリでは、その背景と使い方を紹介します。GitHubhttps://github.com/takemikami/rdflintツール作成の背景im@sparqlとは、SPARQLというクエリ言語を用いて、アイドルマスターのデータを検索・利用出来るWebサービスなのですが。誰でも、データを追加・編集して、PullRequestを送ることが出来ます。担当アイドルに関するちょっとした誤字の修正レベルでも。慣れていないとちょっと時間がかかってしまいそうです。Fusekiにロードしてエラーが出ないかの確認程度は、コマンド一発で確認出来るようにしたいと思い、このツールを作りました。コマンド一発ならCIでも実行出来るため。Jenaを調べてみると、割と簡単だったので、ついでに以下のようなチェック機能も作成しました。基本的な使い方それでは、実際の使い方を説明します。以下のようにim@sparqlをGitHubからcloneします。imasparql次に、rdflintを取得して、実行してみます。https://sparql.crssnky.xyz/imasrdf/この状態では、何もエラーは出ないはずです。エラーがある場合は、以下のように表示されます。箱崎星梨花を示すURIがhttps://sparql.crssnky.xyz/imasrdf/RDFs/detail/Hakozaki_Serikaにも関わらず、https://sparql.crssnky.xyz/imasrdf/RDFs/detail/Hakozaki_serikaで参照しているために、エラーとなっています。※「S」が大文字小文字の誤り。この誤りは、以下のPullRequestで修正済み。次にカスタムルールを定義して実行してみます。以下のような設定ファイルを作成します。}以下のコマンドでカスタムルールを実行します。.rdflint-config.ymlこの状態では、何もエラーは出ないはずです。RDFs/765AS.rdfファイルに、https://sparql.crssnky.xyz/imasrdf/URIs/imas-schema.ttl#Idol型以外の定義があるとエラーにしています。queryの部分に、問題のあるデータを抽出するSPARQLクエリを書き、validの部分で、クエリの結果行分エラーを出力しています(groovyスクリプトです)。試しに、Song.rdfから「魔法をかけて!」の定義をRDFs/765AS.rdfにコピーして見ると、以下のようなエラーになります。)このように基本的なルールが機械的にチェック出来ると、レビュアの手を煩わせなくて済むため、PullRequestを送る側も、心理的なハードルも下がると考えられます。