🐷

WikibaseSyncを試す

2023/07/19に公開

概要

以下のWikibaseSyncを試す機会がありましたので、その備忘録です。

https://github.com/the-qa-company/WikibaseSync

以下の論文で、上記のツールを知りました。

https://doi.org/10.11517/jsaisigtwo.2022.SWO-056_04

インストール

ソースコードや関連ライブラリをインストールします。

!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に関する情報を入力します。

https://github.com/the-qa-company/WikibaseSync#setup

例: user-config.py

user-password.py
(u'Nakamura', BotPassword(u'WikidataUpdater', u'xxxxxxxxxxxxxx'))

例: config/application.config.ini

wikibase.cloudの利用例です。

config/application.config.ini
[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が見つかりましたが、解決には至りませんでした。

https://github.com/the-qa-company/WikibaseSync/issues/18

まとめ

WikibaseSyncを試してみました。途中までしか動かすことができなかったため、引き続き調査したいと思います。

Discussion