背景
SPARQL 動かない
研究で先行研究に合わせてwikidataを使うことになった。
https://query.wikidata.org/ にあるwebapiで sparqlっていうSQLっぽい言語で情報取得できるらしい。
全ての人名を取得するには...どうやらこれで取得できそう...
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX wd: <http://www.wikidata.org/entity/>
select DISTINCT ?item
where {
?item wdt:P31/wdt:P279* wd:Q215627 .
?item rdfs:label ?itemlabel .
}
じゃ、もうちょっとクエリを分けて飛ばしてみるにしても概算で71日かかる...
でも人様のサーバーだし、処理並列化できないしどうしよう...
wikidata dump
そこでwikidata dump (https://dumps.wikimedia.org/wikidatawiki/entities/) 使う
ダウンロードに10時間ぐらいかかってる...よく見たら約100GBもある...
これ、単純に cat & grep
しても、一周5時間かかる...え?
こんなのどうすればいいんだ...
wiki-base-dump-filterを使う
Node.js を インストール
研究室サーバーのため sudo 権限がないので、 linux brew 経由で、Node.js を インストール
https://qiita.com/jigengineer/items/a7da86e8b4d4e3471656#%E8%A3%9C%E8%B6%B3linux%E5%90%91%E3%81%91
brew install nodenv
https://nodejs.org/ja/download/releases/ をみると Node.js 15 系のリリースは最近らしいし、一つ昔の14 の Node.js 14.15.1 をインストールする
nodenv install 14.15.1
echo "export PATH=~/.nodenv/shims:\$PATH" >> ~/.profile
nodenv global 14.15.1
install先から shims フォルダの位置がわかったので、環境変数を通しておく。
wikibase-dump-filter のインストール
wikibase-dump-filter の README.md に従い
npm install -g wikibase-dump-filter
PATH=~/.nodenv/versions/14.15.1/bin:$PATH
でインストール
(~/.nodenv/shims
にはなぜかwiki-base-dump-filter
が置かれないので、
~/.nodenv/versions/14.15.1/bin
にパスを通しておく (Node.jsと違ってこっちは一時的な使用にしておく))
wikibase-dump-filter を使ってみる
cat wikidata-20201130-all.json | wikibase-dump-filter --claim 'P31:Q571&P50' --languages ja | head > books_with_an_author.ndjson
次回
VirtuosoというSPARQLサーバーを使って、
DBPedia読み込んだ方が上手くできることが判明
(そのうち書く)