Wikidataでの国会・都道府県議会・市区町村議会の構造や、国会議員・地方議員の構造について、それぞれ今ひとつ統一されていないところがあるのでなんとかしたいと考えています。
対応策(最後はごりごりデータを変更することになるはず)を検討するのに先立って、まずは現状をまとめてみました。
国会・都道府県議会・市区町村議会について
まずは日本の各種議会についてです。
DOT言語によるグラフ
Wikidataに登録されている情報は基本的にグラフになるため、DOTを使って書いてみました。
例として、衆参両院に加えて、神戸市会、練馬区議会、兵庫県議会、東京都議会からたどっていく形にしてみています。
なお、全ての情報は記載せず、主だったものに限定しています。
digraph G {
rankdir = BT
layout = dot
node [shape=box];
houseOfRepresentatives [label="衆議院(Q659587)"]
houseOfCouncillors [label="参議院(Q548911)"]
lowerHouse [label="下院(Q375928)"]
upperHouse [label="上院(Q637846)"]
prefecturalAssembly [label="都道府県議会(Q28362371)"]
cityCouncil [label="市町村議会(Q3154693)"]
legislativeHouse [label="legislative house, 議院(Q10553309)"]
legislature [label="立法府(Q11204)"]
assembly [label="本会議(Q1752346)"]
organization [label="組織(Q43229)"]
hyogo [label="兵庫県(Q130290)"]
kobe [label="神戸市(Q48320)"]
"東京都議会(Q7813951)" -> prefecturalAssembly [color="red",label="クラス(P31)"]
"兵庫県議会(Q11393166)" -> prefecturalAssembly [color="red",label="クラス(P31)"]
"兵庫県議会(Q11393166)" -> hyogo [color="darkgreen",label="管轄・適用区域(P1001)"]
prefecturalAssembly -> legislativeHouse [label="上位クラス(P279)"]
legislativeHouse -> assembly [label="上位クラス(P279)"]
assembly -> organization [label="上位クラス(P279)"]
"神戸市会(Q24861225)" -> cityCouncil [color="red",label="クラス(P31)"]
"神戸市会(Q24861225)" -> kobe [color="darkgreen",label="管轄・適用区域(P1001)"]
kobe -> hyogo [color="darkorange",label="位置する行政区画 (P131)"]
"練馬区議会(Q24862263)" -> cityCouncil [color="red",label="クラス(P31)"]
cityCouncil -> assembly [label="上位クラス(P279)"]
cityCouncil -> legislature [label="上位クラス(P279)"]
legislature -> assembly [label="上位クラス(P279)"]
houseOfRepresentatives -> lowerHouse [color="red",label="クラス(P31)"]
houseOfCouncillors -> upperHouse [color="red",label="クラス(P31)"]
lowerHouse -> legislativeHouse [label="上位クラス(P279)"]
upperHouse -> legislativeHouse [label="上位クラス(P279)"]
{rank = same; prefecturalAssembly; cityCouncil; lowerHouse; upperHouse; }
}
グラフ(図)
問題、というほどでもないけれど気になるところ
- 国会と都道府県議会は似ているが、市区町村議会は少し構造が異なっている
- 「都道府県議会(Q28362371)」は「legislative house, 議院(Q10553309)」のサブクラスになっているが、市区町村議会は「立法府(Q11204)」と「本会議(Q1752346)」のサブクラスになっている
参考URL
- 衆議院 https://www.wikidata.org/wiki/Q659587
- 参議院 https://www.wikidata.org/wiki/Q548911
- 東京都議会 https://www.wikidata.org/wiki/Q7813951
- 兵庫県議会 https://www.wikidata.org/wiki/Q11393166
- 神戸市会 https://www.wikidata.org/wiki/Q24861225
- 練馬区議会 https://www.wikidata.org/wiki/Q24862263
衆議院議員について
衆議院議員・参議院議員については統一されているようなので、特筆すべき課題はありません。
とりわけ国会については、他の国とも構造を共有しているように思われます。日本ではふつう使われない「国民議会議員(Q1055894)」とかがあるのはそのせいですね。
digraph G {
rankdir = BT
layout = dot
node [shape=box];
edge [penwidth=3.0];
houseOfRepresentatives [label="衆議院(Q659587)"]
memberOfTheHouseOfRepresentativesOfJapan [label="衆議院議員(Q17506823)"]
deputy [label="国民議会議員(Q1055894)"]
memberOfParliament [label="国会議員(Q486839)"]
legislator [label="議員(Q4175034)"]
parliament [label="議会(Q35749)"]
position [label="職位(Q4164871)"]
occupation [label="職業(Q12737077)"]
assembly [label="本会議(Q1752346)"]
memberOfTheHouseOfRepresentativesOfJapan -> houseOfRepresentatives [color="blue",label="以下の一部分(P361)"]
memberOfTheHouseOfRepresentativesOfJapan -> position [color="red",label="クラス(P31)"]
memberOfTheHouseOfRepresentativesOfJapan -> deputy [label="上位クラス(P279)"]
deputy -> memberOfParliament [label="上位クラス(P279)"]
memberOfParliament -> legislator [label="上位クラス(P279)"]
position -> occupation [label="上位クラス(P279)"]
memberOfParliament -> parliament [color="blue",label="以下の一部分(P361)"]
parliament -> assembly [label="上位クラス(P279)"]
"安倍晋三(Q132345)" -> memberOfTheHouseOfRepresentativesOfJapan [color="blue4",label="公職(P39)"]
}
市区町村議員について
各地区ごとに揺れが大きくなってしまっているのが、この市区町村議会の議員です。
ここでは修飾子(qualifiers)が使われているので、Edgeのラベルだったプロパティを独立したNodeとして記述するようにしてみました。
digraph G {
rankdir = BT
layout = dot
node [shape=box];
edge [penwidth=3.0];
memberOfKobeCityCouncil [label="神戸市会議員(Q50178404)"]
KobeCityCouncil [label="神戸市会(Q24861225)"]
kobe [label="神戸市(Q48320)"]
japaneseLocal [label="日本の地方議会議員(Q11505877)"]
publicOffice [label="公職(Q294414)"]
date [label="伊達市(Q858423)"]
positionHeld [shape=oval,label="公職(P39)"]
positionHeld2 [shape=oval,label="公職(P39)"]
positionHeld3 [shape=oval,label="公職(P39)"]
matsudo [label="松戸市(Q320943)"]
matsudoCityCouncil [label="松戸市議会(Q27640310)"]
cityCouncil [label="市町村議会(Q3154693)"]
appliesToJurisdiction [shape=oval,label="管轄・適用区域(P1001)"]
appliesToJurisdiction2 [shape=oval,label="管轄・適用区域(P1001)"]
appliesToJurisdiction3 [shape=oval,label="管轄・適用区域(P1001)"]
isLocatedIn [shape=oval,label="位置する行政区画(P131)"]
instanceOf [shape=oval,label="クラス(P31)"]
instanceOf2 [shape=oval,label="クラス(P31)"]
superclass [shape=oval,label="上位クラス(P279)"];
KobeCityCouncil -> appliesToJurisdiction3 -> kobe [color="darkgreen"]
"本郷谷健次(Q27296553)" -> positionHeld -> japaneseLocal [color="blue4"]
positionHeld -> matsudo [style="dashed",label="管轄・適用区域(P1001)"]
"金子恵美(Q5371065)" -> positionHeld2 -> japaneseLocal [color="blue4"]
positionHeld2 -> date [style="dashed",label="以下についての(P642)"]
"佐藤公彦(Q50318358)" -> positionHeld3 -> memberOfKobeCityCouncil [color="blue4"]
matsudoCityCouncil -> instanceOf -> cityCouncil [color="red"]
japaneseLocal -> superclass -> publicOffice
memberOfKobeCityCouncil -> appliesToJurisdiction -> KobeCityCouncil [color="darkgreen"]
KobeCityCouncil -> instanceOf2 -> cityCouncil [color="red"]
matsudoCityCouncil -> appliesToJurisdiction2 -> matsudo [color="darkgreen"]
matsudoCityCouncil -> isLocatedIn -> matsudo [color="darkorange"]
}
画像が小さくなってしまいましたが、一見して綺麗な構造になっていないことが分かります。
問題点
- 議員の記述方法が統一されていないので素朴なクエリでは対応できなさそう
- 「公職(P39)」プロパティを使っているのは共通しているが、その対象のエンティティが「日本の地方議会議員(Q11505877)」の場合と「神戸市会議員(Q50178404)」の場合がある
- 「日本の地方議会議員(Q11505877)」を使っている場合でも、qualifierに「管轄・適用区域(P1001)」を使っている場合と「以下についての(P642)」を使っている場合がある
都道府県知事について
※追記:Wikidataの都道府県知事はその後大幅に手を入れまして、現在のデータは大きく異なっています。
市区町村長については、まだあまりWikidataに載ってないような気がするので、ここでは参考として、都道府県知事の問題についても書いておきます。
digraph G {
rankdir = BT
layout = dot
node [shape=box,penwidth=2.0];
edge [penwidth=3.0];
positionHeld [shape=oval,color="blue4",label="公職(P39)"]
positionHeld2 [shape=oval,color="blue4",label="公職(P39)"]
positionHeld3 [shape=oval,color="blue4",label="公職(P39)"]
governor [label="都道府県知事(Q1623534)"]
fukushima [label="福島県(Q71707)"]
hokkaido [label="北海道(Q1037393)"]
aomori [label="青森県(Q71699)"]
superclass [shape=oval,label="上位クラス(P279)"]
governorOfHokkaidoPrefecture [label="北海道知事(Q33134383)"]
"高橋はるみ(Q459145)" -> positionHeld -> governorOfHokkaidoPrefecture [color="blue4"]
positionHeld -> hokkaido [style="dashed",label="管轄・適用区域(P1001)"]
governorOfHokkaidoPrefecture -> superclass -> governor
"三村申吾(Q174982)" -> positionHeld2 -> governor [color="blue4"]
positionHeld2 -> aomori [style="dashed",label="管轄・適用区域(P1001)"]
"内堀雅雄(Q17989197)" -> positionHeld3 -> governor [color="blue4"]
positionHeld3 -> fukushima [style="dashed",label="以下についての(P642)"]
{rank = same; positionHeld;positionHeld2;positionHeld3 }
}
問題点
- 知事の記述方法も統一されていないのでクエリが厳しい
- プロパティは「公職(P39)」を使うので統一されているが、その先が「都道府県知事(Q1623534)」になっている場合と、「北海道知事(Q33134383)」のような具体的なエンティティになっている場合がある。
- 「都道府県知事(Q1623534)」を使っている場合でも、修飾子として「管轄・適用区域(P1001)」を使っている場合と「以下についての(P642)」を使っている場合がある
全体を通しての雑感
- 単純に議員の数が多い分、首長よりも議会の方が悩ましい
- かといって首長についても統一されていないので何とかしたい
- それぞれについて、登録件数が増える前に統一した基準を作って共通化したい
- クエリで頑張るのは悪手
- 市区町村議会については、それぞれに議会のエンティティを作るべきかどうかは考えないといけなさそう
- 作らないで修飾子で頑張った方がいいような気もする……
- と思ったけど、Wikidata的な発想でいうと、各市区町村議会ごとの情報を集めるには各議会のエンティティが存在するべきでは、という気もしてきた
- ちなみに日本の地方公共団体は、「市が791、特別区が23、町が744、村が183で合計1,741」だそうな(wikipediaより)
- フィンランドは304件のmunicipal council in Finlandのエンティティを用意している http://tinyurl.com/yabzzt4t
なお、都道府県知事と市区町村長の実際のクエリについては別記事に書いてみました。合わせてどうぞ。