WikibaseSyncを試す
概要
以下のWikibaseSyncを試す機会がありましたので、その備忘録です。
以下の論文で、上記のツールを知りました。
インストール
ソースコードや関連ライブラリをインストールします。
!get clone https://github.com/the-qa-company/WikibaseSync
cd WikibaseSync
!pip install -r requirements.txt
Bot Accountの作成
事前に用意したWikibaseにアクセスし、「Special pages」から、「Bot passwords」をクリックします。
以下の画面で、「Bot name」を入力します。
次の画面で、以下の3つにチェックを入れます。
Give him the follwing rights: "High-volume editing", "Edit existing pages" and "Create, edit, and move pages"
結果、以下のようなメッセージが表示され、パスワードを取得することができます。
The bot password for bot name "WikidataUpdater" of user "Nakamura" was created.
The new password to log in with Nakamura@WikidataUpdater is xxxxxxxxxxxxxx. Please record this for future reference.
(For old bots which require the login name to be the same as the eventual username, you can also use Nakamura as username and WikidataUpdater@xxxxxxxxxxxxxx as password.)
Return to Special:BotPasswords.
そして、以下の説明にしたがって、インストールしたソースコードの設定ファイルに、上記のBotに関する情報を入力します。
例: user-config.py
(u'Nakamura', BotPassword(u'WikidataUpdater', u'xxxxxxxxxxxxxx'))
例: config/application.config.ini
wikibase.cloudの利用例です。
[DEFAULT]
ServerAliveInterval = 45
[wikibase]
user = admin
sparqlEndPoint = https://nakamura196.wikibase.cloud/query/sparql
domain = nakamura196.wikibase.cloud
protocol = https
apiUrl= https://nakamura196.wikibase.cloud/w/api.php
entityUri=https://nakamura196.wikibase.cloud/entity
propertyUri=https://nakamura196.wikibase.cloud/prop
overwriteLocalChanges = false
使用例
以下を実行してみます。
python import_one.py Q107095935
結果、以下のようにデータが登録されました。
https://nakamura196.wikibase.cloud/wiki/Item:Q42
WikibaseSyncが以下のプロパティを自動的に追加するようでした。
https://nakamura196.wikibase.cloud/wiki/Property:P14
上記のプロパティを介して、今回作成したwikibaseのインスタンスとwikidataのIDの対応を取るようでした。
ただし、上記で登録されている情報は不十分だと思われます。実行後、以下のようなエラーが発生して、プログラムが完了していないと思われます。
CRITICAL: Exiting due to uncaught exception <class 'pywikibot.exceptions.NoPageError'>
CRITICAL: Exiting due to uncaught exception <class 'KeyError'>
同様のIssueが見つかりましたが、解決には至りませんでした。
まとめ
WikibaseSyncを試してみました。途中までしか動かすことができなかったため、引き続き調査したいと思います。
Discussion