Code for 選挙 wikidata メモ

[Code for 選挙](http://election.code4japan.org/) の成果物を wikidata に格納する際に、出てきた問題点のメモ。

# データソース
データ整備する際に気になるのは、やはり権利まわりということで、整理しておきたい。

- 官報
  - 「選挙やるよ」「中央選挙管理委員立ち上げるよ」とだけ書かれている。
  - 官報の内容自体は CC0 として転記できそう。「一般的に、官報には著作権が存在しないと解釈されています。しかし、「インターネット版官報」は、官報を基に国立印刷局が編集・作成したものであり、その範囲内において著作権が発生する余地があると考えられます。」([出典](http://kanpou.npb.go.jp/faq.html#publicData))
  - ここから先は[総務省の中央選挙管理会](http://www.soumu.go.jp/senkyo/senkyo_s/naruhodo/naruhodo06.html)と、そこからディスパッチされる都道府県の選挙管理委員会になる。
- 選挙公報
  - 都道府県の選挙管理委員が[発行](http://www.soumu.go.jp/senkyo/48ge/)している
  - 残念ながらほとんど PDF （＝ほとんど紙）
  - 事実情報それ自体には著作権は発生しないので、立候補情報などは転記して問題ないだろう。出典として利用可能。各種報道のソースも、これになっている。
- 政党の届出
  - 総務省で[登録](http://www.soumu.go.jp/senkyo/seiji_s/seitoujoseihou/seitoujoseihou03.html)されている
  - 比例区には、中央選挙管理委員会（総務省）に政党で[届出](http://shinsei.e-gov.go.jp/search/servlet/Procedure?CLASSNAME=GTAMSTDETAIL&id=1451305010000)を行う。
- 会派の届出
  - 会議体の中でのもの。政党と似ているが役割が異なり、届け先も異なる。登録されるメンバーは会議参加者のみ。
  - [衆議院](http://www.shugiin.go.jp/internet/itdb_annai.nsf/html/statics/shiryo/kaiha_m.htm)
  - [参議院](http://www.sangiin.go.jp/japanese/joho1/kousei/giin/kaiha/kaiha193.htm)
- 衆議院小選挙区の区域データ
  - 大変な労力をかけてオープンデータとして作成された shp ファイルが[公開](http://www.csis.u-tokyo.ac.jp/~nishizawa/senkyoku/)されている
  - geopandas などで処理可能


# データベース

Wikidata を使いたいという意見は、メンバーの中では比較的広くあった。一方でこれまで標準化が進んできていた Popolo 仕様も存在する。EveryPolitician では popolo 仕様のデータベースをメンテナンスする一方で、wikidata との連携にも力を入れ始めている。「No one size fits all」とは popolo 仕様でも[言われている](http://www.popoloproject.com/specs/membership.html)ように、完全な標準化はありえない。手元の全データを綺麗に整備するには専用のデータモデルを作るしかない。Wikidata や Popolo 仕様のファイルに格納する際には、どの部分を諦めるかが肝心。

結局、データは google docs のスプレッドシートで収集した後、各種データベースに入るところまで入れる、という流れで動いた。https://kouhosha.info のウェブサイトはスプレッドシートからデータベースに入れている。

以下は主にデータベースは wikidata を扱う。

# Term と Session

衆議院解散で議員は一度 0 になる。衆議院議員総選挙のタイミングが大まかに議会の構成員を把握するのに都合がよい。ところでこれはイギリスでは Term と呼ばれる区切りになるらしい。一方で衆議院の会期は常会、臨時会で[通番](http://www.shugiin.go.jp/internet/itdb_annai.nsf/html/statics/shiryo/kaiki.htm)で数えている。これは英語では Sessionと呼ぶらしい。

日本語では「47 回会期」と呼ぶと、通常は昭和39年の session を指してしまうだろう。いっぽうで Term のようなものがあったほうが、機械処理しやすい（＝計算量が少なくて済む）という面もある。

誤解のない名前を付けつつ、概念としてはプロパティを設定したい、ということから、日本語での名前は付けないけれども、プロパティは存在する、というのが良いんじゃないだろうか。

次の[クエリ](https://query.wikidata.org/#SELECT%20%2a%20WHERE%20%7B%0A%20%20%20%3Fs%20wdt%3AP31%20wd%3AQ15238777%20%3B%0A%20%20%20%20%20%20p%3AP31%2Fpq%3AP642%20wd%3AQ659587%20%3B%0A%20%20%20%20%20%20rdfs%3Alabel%20%3Fname%20.%0A%7D)で一覧が抜き出せる。

```
SELECT * WHERE {
   ?s wdt:P31 wd:Q15238777 ;
      p:P31/pq:P642 wd:Q659587 ;
      rdfs:label ?name .
}
```

日本での用語は混乱しているようで、衆議院で会期を使っているサイトもある。参議院は半数ずつ選出されるので会期という表現は、あまり適切ではないが、参議院で職歴に「N 会期」という場合は選挙での選出回数をあらわしていることもある。データモデルと法律が合わないことはあるのは仕方がないが、注意してみる必要がある。

# 立候補情報

立候補情報を中心にして、他の情報を削ぎ落した形だと次のような[クエリ](https://query.wikidata.org/#SELECT%20%2a%20WHERE%20%7B%0A%20%20%3Fperson%20p%3AP3602%20%3Fst%20.%0A%20%20%3Fst%20ps%3AP3602%20wd%3AQ20983100%20.%0A%20%20OPTIONAL%20%7B%20%3Fst%20pq%3AP768%20%3Farea%20.%20%7D%0A%20%20OPTIONAL%20%7B%20%3Fst%20pq%3AP1268%20%3Fparty%20.%20%7D%0A%7D)になるだろう。

```
SELECT * WHERE {
  ?person p:P3602 ?st .
  ?st ps:P3602 wd:Q20983100 .
  OPTIONAL { ?st pq:P768 ?area . }
  OPTIONAL { ?st pq:P1268 ?party . }
}
```

候補者自体の情報はこうやる。

```
SELECT * WHERE {
  ?person wdt:P3602 wd:Q20983100 .
  OPTIONAL { ?person wdt:P21 ?gender . }
  OPTIONAL { ?person wdt:P569 ?born . }
}
```
# `P31` は意外と重要

同姓同名のエントリかと思いきや、`Q4167410`「ウィキメディアの曖昧さ回避ページ」だったりするので、`P31` はチェックしたほうがいい。

その他 `Q4115189`「ウィキデータ・サンドボックス」や `Q17362920`「ウィキメディアの重複ページ」といったものが登録されている場合がある。

# 比例区の投票数
制度上は政党に投票する。しかし wikidata にズバリうまく入れる方法が見つかっていない。

- 得票数を数えているステートメントは基本的に `P3602`「立候補選挙」の[様子](https://query.wikidata.org/#SELECT%20%3Fp%20%28count%28%3Fst%29%20as%20%3Fct%29%20WHERE%20%7B%0A%20%20%3Fs%20%3Fp%20%3Fst%20.%0A%20%20%3Fst%20pq%3AP1111%20%3Fn%20.%0A%20%20SERVICE%20wikibase%3Alabel%20%7B%20bd%3AserviceParam%20wikibase%3Alanguage%20%22ja%22.%20%7D%0A%7D%0AGROUP%20BY%20%3Fp%0AORDER%20BY%20%3Fct%0A)。
- `P3602`「立候補選挙」の主語は基本的に「ヒト」の[様子](https://query.wikidata.org/#SELECT%20distinct%20%3Fcat%20%3FcatLabel%20WHERE%20%7B%0A%20%20%3Fs%20wdt%3AP31%20%3Fcat%20.%0A%20%20%3Fs%20wdt%3AP3602%20%3Fo%20.%0A%20%20SERVICE%20wikibase%3Alabel%20%7B%20bd%3AserviceParam%20wikibase%3Alanguage%20%22ja%22.%20%7D%0A%7D%0A)

選挙であるものから直接調べようと試みてみる：

- 得票数がついている選挙（のサブクラス）に、何か（出馬とか？）した何か（人とか？）の分類は？…なんかいろいろ[見つかる](
https://query.wikidata.org/#SELECT%20distinct%20%3Fcat%20%3FcatLabel%20WHERE%20%7B%0A%20%20%3Fs%20wdt%3AP31%20%3Fcat%20.%0A%20%20%3Fst%20pq%3AP1111%20%3Fn%20.%0A%20%20%3Fs%20%3Fp%20%3Fst%20.%0A%20%20%3Fs%20%3Fv%20%3Felection_inst%20.%0A%20%20%3Felection_inst%20wdt%3AP31%20%3Felection%20.%0A%20%20%7B%20%3Felection%20wdt%3AP279%2Fwdt%3AP279%2Fwdt%3AP279%2Fwdt%3AP279%2Fwdt%3AP279%20wd%3AQ40231%20.%20%7D%0A%20%20UNION%0A%20%20%7B%20%3Felection%20wdt%3AP279%2Fwdt%3AP279%2Fwdt%3AP279%2Fwdt%3AP279%20wd%3AQ40231%20.%20%7D%0A%20%20UNION%0A%20%20%7B%20%3Felection%20wdt%3AP279%2Fwdt%3AP279%2Fwdt%3AP279%20wd%3AQ40231%20.%20%7D%0A%20%20UNION%0A%20%20%7B%20%3Felection%20wdt%3AP279%2Fwdt%3AP279%20wd%3AQ40231%20.%20%7D%0A%20%20UNION%0A%20%20%7B%20%3Felection%20wdt%3AP279%20wd%3AQ40231%20.%20%7D%0A%20%20SERVICE%20wikibase%3Alabel%20%7B%20bd%3AserviceParam%20wikibase%3Alanguage%20%22ja%22.%20%7D%0A%7D)
- 得票数がついている選挙（のサブクラス）に出馬した政党は？…ごく少数[見つかる]
(https://query.wikidata.org/#SELECT%20distinct%20%3Felection_inst%20WHERE%20%7B%0A%20%20%3Fs%20wdt%3AP31%20wd%3AQ7278%20.%0A%20%20%3Fst%20pq%3AP1111%20%3Fn%20.%0A%20%20%3Fs%20%3Fp%20%3Fst%20.%0A%20%20%3Fs%20%3Fv%20%3Felection_inst%20.%0A%20%20%3Felection_inst%20wdt%3AP31%20%3Felection%20.%0A%20%20%7B%20%3Felection%20wdt%3AP279%2Fwdt%3AP279%2Fwdt%3AP279%2Fwdt%3AP279%2Fwdt%3AP279%20wd%3AQ40231%20.%20%7D%0A%20%20UNION%0A%20%20%7B%20%3Felection%20wdt%3AP279%2Fwdt%3AP279%2Fwdt%3AP279%2Fwdt%3AP279%20wd%3AQ40231%20.%20%7D%0A%20%20UNION%0A%20%20%7B%20%3Felection%20wdt%3AP279%2Fwdt%3AP279%2Fwdt%3AP279%20wd%3AQ40231%20.%20%7D%0A%20%20UNION%0A%20%20%7B%20%3Felection%20wdt%3AP279%2Fwdt%3AP279%20wd%3AQ40231%20.%20%7D%0A%20%20UNION%0A%20%20%7B%20%3Felection%20wdt%3AP279%20wd%3AQ40231%20.%20%7D%0A%20%20SERVICE%20wikibase%3Alabel%20%7B%20bd%3AserviceParam%20wikibase%3Alanguage%20%22ja%22.%20%7D%0A%7D)

`Q16061881`「Dutch general election, 2017」と`Q17012412`「第20回イスラエル議会総選挙」は政党選挙として該当するらしい。一般的な格納法には見えない。

しかし[説明](https://www.wikidata.org/wiki/Wikidata:Property_proposal/candidacy_in_election)を見れば、政党やグループでもいいらしい。

# 参議院議員一覧

現状 dbpedia でクエリしてみても、あまり芳しくない。http://ja.dbpedia.org/sparql

```
PREFIX dbp: <http://ja.dbpedia.org/resource/>
SELECT count(?name) WHERE {
 ?p <http://www.w3.org/2000/01/rdf-schema#label> ?name .
 ?p <http://dbpedia.org/ontology/occupation> dbp:参議院議員 .
}
```

wikidata での[クエリ](https://query.wikidata.org/#SELECT%20distinct%20%3Fp%20%3FpLabel%20WHERE%20%7B%0A%20%20%3Fp%20p%3AP39%20%3Fst%20.%0A%20%20%3Fst%20ps%3AP39%20wd%3AQ14552828%20.%0A%20%20FILTER%20NOT%20EXISTS%20%7B%20%3Fp%20wdt%3AP570%20%3Fdead%20.%20%7D%0A%20%20%0A%20%20%7B%20FILTER%20NOT%20EXISTS%20%7B%20%3Fst%20pq%3AP582%20%3Fend%20.%20%7D%20%7D%0A%20%20UNION%0A%20%20%7B%20%3Fst%20pq%3AP582%20%3Fend%20.%20FILTER%28%3Fend%20%3E%20now%28%29%29%20%7D%0A%20%20%0A%20%20OPTIONAL%20%7B%20%3Fp%20wdt%3AP1814%20%3Fyomi%20.%20%7D%0A%20%20SERVICE%20wikibase%3Alabel%20%7B%20bd%3AserviceParam%20wikibase%3Alanguage%20%22ja%22.%20%7D%20%0A%7D%20ORDER%20BY%20%3Fyomi) が期待する現在値になるように頑張って整備しよう…。

# ツール
基本的にはみんなが手で整備しているデータベースなので、迂闊に機械で書き換えると阿鼻叫喚の嵐になる。とはいえ手作業の限界をゆっくり超えてきてしまうこともある。そんなときは Quick Statements などのツールの支援を受けるとよい。

そういったツール類は Wikidata に [一覧ページ](https://www.wikidata.org/wiki/Wikidata:Tools/External_tools) があるので、それを参照すると適切なものが見つかるかもしれない。

ツール類は一度テストしてから使ったほうがよい。テストするときはサンドボックスアイテム `Q4115189` や、`P31`「分類」が `Q4115189` になっている[もの](https://query.wikidata.org/#SELECT%20%3Fs%20WHERE%20%7B%0A%20%20%3Fs%20wdt%3AP31%20wd%3AQ4115189%20.%0A%7D)を使うとよいだろう。


# その他リンク集

- http://www.shugiin.go.jp
- http://www.sangiin.go.jp
- http://www.soumu.go.jp/senkyo/48ge/
- http://www.soumu.go.jp/senkyo/senkyo_s/data/shugiin/ichiran.html
- http://kokkai.sugawarataku.net/
- 参議院議員任期 http://www.sangiin.go.jp/japanese/san60/s60_shiryou/senkyoichiran.htm
- 補欠選挙・繰り上がり http://www.soumu.go.jp/senkyo/senkyo_s/data/kuriagehoju/kuriagehoju_2.html