gaggitのブログ

コーディング、ガジェット、TIPS関連、FX

SPARQL LIKE演算子や列名の全出力のやり方

 会社情報を調査するバイトをしているのだが、当然、会社が倒産や破産をしていたらバイト代はでない。そこで、法人インフォのサイトで会社が閉鎖されていないか、あらかじめチェックを行っている。毎回、手動でチェックをするのも面倒くさいので3ヶ月ほど前にバッチ処理で洗い出している。

 最近、気が付いたのだが、ごくたまに資本金や設立日が出力されるのに気が付いた。で、ちょっと検索方法がカスタマイズできないか、調査してみた。

 まずは、簡単にSPARQL(スパークル)言語を説明すると、RDFクエリ言語の1つで、SQLのSELECT演算子みたいなものだと認識している。

SPARQLは、SELECT~FROM~WHEREと構文的にはSQLと一緒だが、変数の頭に?をつけるのとWHERE句の行の連結には末尾にピリオドをつけるような感じ。

 試したいのは、SQLでよくあるSELECT *、つまり列名の全項目ができるかとLIKE演算子相当なものがあるかということ。

LIKE演算子はそのまま使用できず、

FILTER regex(変数名,"抽出したい文字列")

と記述する。

f:id:gaggit:20190314163231p:plain

SPARQL1

一般的な正規表現と同様に検索したい文字列の文頭に'^'を付加すれば前方一致検索、末尾に'$'を付加すれば後方検索。

上記の画像は、法人インフォのサイトで、一度検索した後、最下段の「SPARQLクエリ」ボタンを押した画像で、クエリを編集できるようになっており、実行ボタンを押すと、クエリに従って再抽出できる。

また、検索したい文字列の囲みは、シングルクォートでもダブルクォートでも使用可能。

 列名の全出力は、SELECT *~のままだが、WHERE句で定義されている全変数という意味合いなので、定義されていない項目は残念ながら出力されない。

下記は、件名を神奈川県で絞ったうえで、SELECT *~。

f:id:gaggit:20190314172329p:plain

SPQRQL2

 

定義するのが、面倒くさいのでアスタリスクを使用したかったのですが、少し残念な結果でした。

調査にあたり、以下の「RDF用クエリ言語SPQRQL」の和訳サイトを参照しました。

 

参考リンク

RDF用クエリ言語SPARQL