SPARQL LIKE演算子や列名の全出力のやり方
会社情報を調査するバイトをしているのだが、当然、会社が倒産や破産をしていたらバイト代はでない。そこで、法人インフォのサイトで会社が閉鎖されていないか、あらかじめチェックを行っている。毎回、手動でチェックをするのも面倒くさいので3ヶ月ほど前にバッチ処理で洗い出している。
最近、気が付いたのだが、ごくたまに資本金や設立日が出力されるのに気が付いた。で、ちょっと検索方法がカスタマイズできないか、調査してみた。
まずは、簡単にSPARQL(スパークル)言語を説明すると、RDFクエリ言語の1つで、SQLのSELECT演算子みたいなものだと認識している。
SPARQLは、SELECT~FROM~WHEREと構文的にはSQLと一緒だが、変数の頭に?をつけるのとWHERE句の行の連結には末尾にピリオドをつけるような感じ。
試したいのは、SQLでよくあるSELECT *、つまり列名の全項目ができるかとLIKE演算子相当なものがあるかということ。
LIKE演算子はそのまま使用できず、
FILTER regex(変数名,"抽出したい文字列")
と記述する。
一般的な正規表現と同様に検索したい文字列の文頭に'^'を付加すれば前方一致検索、末尾に'$'を付加すれば後方検索。
上記の画像は、法人インフォのサイトで、一度検索した後、最下段の「SPARQLクエリ」ボタンを押した画像で、クエリを編集できるようになっており、実行ボタンを押すと、クエリに従って再抽出できる。
また、検索したい文字列の囲みは、シングルクォートでもダブルクォートでも使用可能。
列名の全出力は、SELECT *~のままだが、WHERE句で定義されている全変数という意味合いなので、定義されていない項目は残念ながら出力されない。
下記は、件名を神奈川県で絞ったうえで、SELECT *~。
定義するのが、面倒くさいのでアスタリスクを使用したかったのですが、少し残念な結果でした。
調査にあたり、以下の「RDF用クエリ言語SPQRQL」の和訳サイトを参照しました。
参考リンク