私はプログラミングの右も左も分からない超初心者ですが、今回クエリサービスを使ってみたので、その体験記を書いておきます。動機は、以下の記事の日本語訳を作りたいと考えたからです。
https://en.wikipedia.org/wiki/Wikipedia:WikiProject_LGBT_studies/Core_topics
このページには、英語版のウィキプロジェクト「LGBT studies」においてコアとされる120の記事がジャンル別に挙げられています。最近私は日本語版のウィキプロジェクト「LGBT」の整備を進めており、ひとまず重要記事の目安を示すために、このページを日本語に翻訳して、日本語版のプロジェクトにも掲載しておこうと思ったわけです。
さて、ここには全部で120の記事リンクがあり、一つ一つ手作業で日本語に置き換えるとするなら、以下の手順が必要になります。
- 英語版記事のリンクをクリックする。
- 記事上部の言語選択から日本語版があるか探す。
- 日本語版があるなら、その記事へのリンクに置き換える。
- 日本語版がない場合、記事名の日本語訳を考えた上で、{{Template:仮リンク}}を使って置き換える。
- これを120回繰り返す。
気合でできなくもない作業ではありますが、これはあまりにも面倒です。もう少し効率的な方法はないかと思って、クエリサービスを使ってみることにしました。クエリサービスの「例」を見ると、「Wikipediaの記事名からウィキデータ項目を取得する」例があったので、まずはこれを使ってみます。以下のクエリがそれです。
SELECT ?lemma ?item WHERE {
VALUES ?lemma {
"Aromanticism"@en
"Asexuality"@en
"Bisexuality"@en
"Gay"@en
"Homosexuality"@en
"Intersex"@en
"Intersex and LGBT"@en
"Lesbian"@en
"LGBT"@en
"Non-binary gender"@en
}
?sitelink schema:about ?item;
schema:isPartOf <https://en.wikipedia.org/>;
schema:name ?lemma.
}
真ん中の「”<記事名>”@en」の羅列の部分に英語版の記事名を入れます。上の例では最初の10記事を代表させていますが、もちろん一気に120記事を変換することもできます。
ご覧の通り、リストアップする際に「”<記事名>”@en」という形式にする必要がありますが(@enは言語コード)、これはもとの記事をコピペした後、正規表現が使えるエディタで一斉置換すれば一瞬で揃えることができます(私は「Visual Studio Code」を使っています。Wikipedia執筆支援の拡張機能もあるのでお勧めです)。もちろん、もともと英語版Wikipediaの記事名として一括で指定して、この手順をスキップする方法もあると思いますが、私はまだ分からないです。
さて、クエリの実行結果をCSV形式でダウンロードすると、以下の結果を得ることができます。
lemma,item
Intersex,http://www.wikidata.org/entity/Q1097630
Aromanticism,http://www.wikidata.org/entity/Q52746927
Homosexuality,http://www.wikidata.org/entity/Q6636
Asexuality,http://www.wikidata.org/entity/Q724351
Gay,http://www.wikidata.org/entity/Q592
Non-binary gender,http://www.wikidata.org/entity/Q48270
Bisexuality,http://www.wikidata.org/entity/Q43200
Intersex and LGBT,http://www.wikidata.org/entity/Q30314138
Lesbian,http://www.wikidata.org/entity/Q110271724
これをまたエディタで一括変換すれば、ウィキデータ項目だけのリストが手に入ります。
これでウィキデータ項目の一覧が取得できましたので、今度はこのウィキデータ項目から、「日本語版Wikipediaの記事名」と「Wikidataの日本語のラベル名」を取得します。後者があると、日本語版Wikipediaに記事がなく記事名の翻訳を考える必要がある場合に、参考になります(ただ、ウィキデータ項目の日本語ラベルは未整理の箇所も多く、参考にできない場合も多いですが)。かといって後者だけだと、Wikipediaの記事名とウィキデータのラベル名が異なる場合に、リンクが機能しなくなってしまいます。よって両方を取得しました。
このクエリを書く方法はよく分からなかったので、Chat-GBTにお尋ねして、コードを教えてもらいました。
SELECT ?item ?itemLabel ?jaWikipediaArticle WHERE {
VALUES ?item {
wd:Q1097630
wd:Q52746927
wd:Q6636
wd:Q724351
wd:Q592
wd:Q48270
wd:Q43200
wd:Q30314138
wd:Q110271724
}
OPTIONAL { ?item rdfs:label ?itemLabel . FILTER(LANG(?itemLabel) = "ja") }
OPTIONAL {
?wikipediaArticle schema:about ?item ;
schema:isPartOf <https://ja.wikipedia.org/> ;
schema:name ?jaWikipediaArticle .
}
}
「wd:<ウィキデータ項目>」のところに、先ほど作ったウィキデータ項目のリストをコピペすればよいわけです。上のクエリを実行すると、以下の結果が得られます。この場合、ウィキデータ項目、日本語ラベル、日本語版Wikipedia記事名の順序でデータが出力されています。
item,itemLabel,jaWikipediaArticle
http://www.wikidata.org/entity/Q6636,同性愛,同性愛
http://www.wikidata.org/entity/Q43200,両性愛,両性愛
http://www.wikidata.org/entity/Q48270,ノン=バイナリー,ノンバイナリー・ジェンダー
http://www.wikidata.org/entity/Q724351,無性愛,無性愛
http://www.wikidata.org/entity/Q1097630,インターセックス,インターセックス
http://www.wikidata.org/entity/Q52746927,アロマンティシズム,エイロマンティック
http://www.wikidata.org/entity/Q110271724,レズビアン,レズビアン
http://www.wikidata.org/entity/Q30314138,インターセックスとLGBT,
http://www.wikidata.org/entity/Q592,ゲイ,
最後の項目が空白になっているデータは、日本語版Wikipediaに記事がない項目です。
そして、またこれを一括変換すれば、すぐにWiki記法に則ったリストを生成できます。ただ、そのまま日本語版へのリンクに置き換えればよいものと、仮リンクに置き換えるものとでは手順が異なります。後者をより効率的にやるなら、上のクエリに「英語版Wikipediaの記事名」の結果も出るようにしたほうがよいでしょう。
まとめると、以下の手順で120の記事の一斉変換を実現したということになります。
- 英語版記事名のリストを作成する。
- ウィキデータ項目を取得してリスト化する。
- 日本語版記事名を取得する。
この一連の手順では、リスト形式でまとめて変換できるので、120の記事を一つ一つ探す必要がありません。ただ、明らかに②の手順が無駄になっていて、②を含めて①→③をいきなり実現するクエリが書けると思います。このあたりはおいおい上達できたらいいなと思っています。
最終的に、以下の記事を作成することができました。
Can you help us translate this article?
In order for this article to reach as many people as possible we would like your help. Can you translate this article to get the message out?
Start translation