%endpoint http://data.e-stat.go.jp/lod/sparql/query
%display raw
# 新宿区の日本人の人口を求める(プロパティパス)
PREFIX rdfs:<http://www.w3.org/2000/01/rdf-schema#>
PREFIX cd-dimension:<http://data.e-stat.go.jp/lod/ontology/crossDomain/dimension/>
PREFIX cd-code:<http://data.e-stat.go.jp/lod/ontology/crossDomain/code/>
PREFIX cd-attribute:<http://data.e-stat.go.jp/lod/ontology/crossDomain/attribute/>
PREFIX cd-dimension-2016:<http://data.e-stat.go.jp/lod/ontology/crossDomain/dimension/2016/>
PREFIX cd-code-2016:<http://data.e-stat.go.jp/lod/ontology/crossDomain/code/2016/>
PREFIX pc-measure-2010:<http://data.e-stat.go.jp/lod/ontology/populationCensus/measure/2010/>
PREFIX pc-dimension-2010:<http://data.e-stat.go.jp/lod/ontology/populationCensus/dimension/2010/>
PREFIX pc-code-2010:<http://data.e-stat.go.jp/lod/ontology/populationCensus/code/2010/>
PREFIX sac:<http://data.e-stat.go.jp/lod/sac/>
PREFIX ic:<http://imi.ipa.go.jp/ns/core/rdf#>
select ?o
where {
?s pc-measure-2010:population ?o ;
cd-dimension:standardAreaCode / ic:市区町村 "新宿区"@ja ;
cd-dimension-2016:sex cd-code-2016:sex-total ;
cd-dimension-2016:nationality cd-code-2016:nationality-japanese ;
pc-dimension-2010:area pc-code-2010:area-all ;
cd-dimension-2016:age cd-code-2016:age-total .
}
{'head': {'vars': ['o']}, 'results': {'bindings': [{'o': {'datatype': 'http://www.w3.org/2001/XMLSchema#decimal', 'type': 'typed-literal', 'value': '286398'}}]}}
%endpoint http://data.e-stat.go.jp/lod/sparql/query
%display raw
# プロパティパスを使わないで書いてみる
PREFIX rdfs:<http://www.w3.org/2000/01/rdf-schema#>
PREFIX cd-dimension:<http://data.e-stat.go.jp/lod/ontology/crossDomain/dimension/>
PREFIX cd-code:<http://data.e-stat.go.jp/lod/ontology/crossDomain/code/>
PREFIX cd-attribute:<http://data.e-stat.go.jp/lod/ontology/crossDomain/attribute/>
PREFIX cd-dimension-2016:<http://data.e-stat.go.jp/lod/ontology/crossDomain/dimension/2016/>
PREFIX cd-code-2016:<http://data.e-stat.go.jp/lod/ontology/crossDomain/code/2016/>
PREFIX pc-measure-2010:<http://data.e-stat.go.jp/lod/ontology/populationCensus/measure/2010/>
PREFIX pc-dimension-2010:<http://data.e-stat.go.jp/lod/ontology/populationCensus/dimension/2010/>
PREFIX pc-code-2010:<http://data.e-stat.go.jp/lod/ontology/populationCensus/code/2010/>
PREFIX sac:<http://data.e-stat.go.jp/lod/sac/>
PREFIX ic:<http://imi.ipa.go.jp/ns/core/rdf#>
select ?o
where {
?s pc-measure-2010:population ?o ;
cd-dimension:standardAreaCode ?areacode.
?areacode ic:市区町村 "新宿区"@ja.
?s cd-dimension-2016:nationality cd-code-2016:nationality-japanese ;
cd-dimension-2016:sex cd-code-2016:sex-total ;
pc-dimension-2010:area pc-code-2010:area-all ;
cd-dimension-2016:age cd-code-2016:age-total .
}
{'head': {'vars': ['o']}, 'results': {'bindings': [{'o': {'datatype': 'http://www.w3.org/2001/XMLSchema#decimal', 'type': 'typed-literal', 'value': '286398'}}]}}
%endpoint http://data.e-stat.go.jp/lod/sparql/query
#新宿区の待機児童数
PREFIX ssds-measure-2016:<http://data.e-stat.go.jp/lod/ontology/systemOfSocialAndDemographicStatistics/measure/2016/>
PREFIX cd-dimension:<http://data.e-stat.go.jp/lod/ontology/crossDomain/dimension/>
PREFIX ic:<http://imi.ipa.go.jp/ns/core/rdf#>
select ?taikijido
where{
?s ssds-measure-2016:J250502 ?taikijido;
cd-dimension:standardAreaCode ?areacode.
?areacode ic:市区町村 "新宿区"@ja.
}
{'head': {'vars': ['taikijido']}, 'results': {'bindings': [{'taikijido': {'datatype': 'http://www.w3.org/2001/XMLSchema#decimal', 'type': 'typed-literal', 'value': '176'}}]}}
%endpoint http://data.e-stat.go.jp/lod/sparql/query
%display raw
PREFIX ssds-measure-2016:<http://data.e-stat.go.jp/lod/ontology/systemOfSocialAndDemographicStatistics/measure/2016/>
PREFIX cd-dimension:<http://data.e-stat.go.jp/lod/ontology/crossDomain/dimension/>
PREFIX ic:<http://imi.ipa.go.jp/ns/core/rdf#>
select ?保育所数
where{
{
?s ssds-measure-2016:J2503 ?保育所数;
cd-dimension:standardAreaCode / ic:市区町村 "新宿区"@ja.
} union {
?s ssds-measure-2016:J2503 ?保育所数;
cd-dimension:standardAreaCode / ic:市区町村 "文京区"@ja.
}
}
{'head': {'vars': ['保育所数']}, 'results': {'bindings': [{'保育所数': {'datatype': 'http://www.w3.org/2001/XMLSchema#decimal', 'type': 'typed-literal', 'value': '36'}}, {'保育所数': {'datatype': 'http://www.w3.org/2001/XMLSchema#decimal', 'type': 'typed-literal', 'value': '28'}}]}}
%endpoint http://data.e-stat.go.jp/lod/sparql/query
%display table
PREFIX ssds-measure-2016:<http://data.e-stat.go.jp/lod/ontology/systemOfSocialAndDemographicStatistics/measure/2016/>
PREFIX cd-dimension:<http://data.e-stat.go.jp/lod/ontology/crossDomain/dimension/>
PREFIX ic:<http://imi.ipa.go.jp/ns/core/rdf#>
select ?待機児童数 ?市区町村
where{
?s ssds-measure-2016:J250502 ?待機児童数;
cd-dimension:standardAreaCode ?areacode.
?areacode ic:都道府県 "東京都"@ja;
ic:市区町村 ?市区町村.
}
ORDER BY DESC(?待機児童数)
LIMIT 10
待機児童数 | 市区町村 |
---|---|
5279 | 特別区部 |
884 | 世田谷区 |
578 | 練馬区 |
438 | 大田区 |
417 | 板橋区 |
416 | 江東区 |
294 | 足立区 |
285 | 杉並区 |
270 | 豊島区 |
257 | 町田市 |
プロパティパスで逆パス等を使うとまとめて記述できそうだけど、、、、自分は書けないのでとりあえずシンプルに書いてみます。
%endpoint http://data.e-stat.go.jp/lod/sparql/query
%display table
PREFIX ssds-measure-2016:<http://data.e-stat.go.jp/lod/ontology/systemOfSocialAndDemographicStatistics/measure/2016/>
PREFIX cd-dimension:<http://data.e-stat.go.jp/lod/ontology/crossDomain/dimension/>
PREFIX ic:<http://imi.ipa.go.jp/ns/core/rdf#>
select ?市区町村 ?保育所数 ?在所児童 ?待機児童
where{
?s1 ssds-measure-2016:J250502 ?待機児童;
cd-dimension:standardAreaCode ?areacode.
?areacode ic:都道府県 "東京都"@ja;
ic:市区町村 ?市区町村.
?s2 ssds-measure-2016:J2503 ?保育所数;
cd-dimension:standardAreaCode ?areacode.
?s3 ssds-measure-2016:J2506 ?在所児童;
cd-dimension:standardAreaCode ?areacode.
}
ORDER BY DESC(?待機児童)
LIMIT 10
市区町村 | 保育所数 | 在所児童 | 待機児童 |
---|---|---|---|
特別区部 | 1158 | 115921 | 5279 |
世田谷区 | 82 | 8912 | 884 |
練馬区 | 89 | 8814 | 578 |
大田区 | 84 | 8756 | 438 |
板橋区 | 93 | 8477 | 417 |
江東区 | 72 | 7002 | 416 |
足立区 | 88 | 8847 | 294 |
杉並区 | 55 | 5390 | 285 |
豊島区 | 31 | 3041 | 270 |
町田市 | 56 | 5257 | 257 |
さらに関係ありそうなデータをエリアコードをキーに追加していきたいと思います。 統計LODサポートで今度は「病院」を検索します。「一般病院数」のプロパティがあるのでこれをSPARQLに追加します。 また最初のサンプルで取得しているような、区毎の人口もざっくり(全年齢、全盛別の値で)追加してみます。
%endpoint http://data.e-stat.go.jp/lod/sparql/query
%display table
PREFIX ssds-measure-2016:<http://data.e-stat.go.jp/lod/ontology/systemOfSocialAndDemographicStatistics/measure/2016/>
PREFIX cd-dimension:<http://data.e-stat.go.jp/lod/ontology/crossDomain/dimension/>
PREFIX pc-measure-2010:<http://data.e-stat.go.jp/lod/ontology/populationCensus/measure/2010/>
PREFIX pc-dimension-2010:<http://data.e-stat.go.jp/lod/ontology/populationCensus/dimension/2010/>
PREFIX cd-dimension-2016:<http://data.e-stat.go.jp/lod/ontology/crossDomain/dimension/2016/>
PREFIX pc-code-2010:<http://data.e-stat.go.jp/lod/ontology/populationCensus/code/2010/>
PREFIX cd-code-2016:<http://data.e-stat.go.jp/lod/ontology/crossDomain/code/2016/>
PREFIX ic:<http://imi.ipa.go.jp/ns/core/rdf#>
select ?siku ?hoikusyo ?zaisyo ?taiki ?hospital ?jinko
where{
?s1 ssds-measure-2016:J250502 ?taiki;
cd-dimension:standardAreaCode ?areacode.
?areacode ic:都道府県 "東京都"@ja;
ic:市区町村 ?siku.
?s2 ssds-measure-2016:J2503 ?hoikusyo;
cd-dimension:standardAreaCode ?areacode.
?s3 ssds-measure-2016:J2506 ?zaisyo;
cd-dimension:standardAreaCode ?areacode.
?s4 ssds-measure-2016:I510120 ?hospital;
cd-dimension:standardAreaCode ?areacode.
?s5 pc-measure-2010:population ?jinko;
cd-dimension:standardAreaCode ?areacode;
cd-dimension-2016:sex cd-code-2016:sex-total;
cd-dimension-2016:nationality cd-code-2016:nationality-japanese;
pc-dimension-2010:area pc-code-2010:area-all;
cd-dimension-2016:age cd-code-2016:age-total .
}
ORDER BY DESC(?taiki)
LIMIT 10
siku | hoikusyo | zaisyo | taiki | hospital | jinko |
---|---|---|---|---|---|
特別区部 | 1158 | 115921 | 5279 | 407 | 8500358 |
世田谷区 | 82 | 8912 | 884 | 25 | 860559 |
練馬区 | 89 | 8814 | 578 | 17 | 694121 |
大田区 | 84 | 8756 | 438 | 27 | 666330 |
板橋区 | 93 | 8477 | 417 | 41 | 495700 |
江東区 | 72 | 7002 | 416 | 17 | 444062 |
足立区 | 88 | 8847 | 294 | 47 | 656755 |
杉並区 | 55 | 5390 | 285 | 17 | 506982 |
豊島区 | 31 | 3041 | 270 | 15 | 261282 |
町田市 | 56 | 5257 | 257 | 14 | 419062 |
保育所待機児童数でソートして表示してみました。市区町村の特別区部とは一般的には23区を指すようですが、市区町村とは別にデータが有るのがちょっと気になります。
現状(2016-12-30)だと、エンドポイントのレスポンスがこのぐらいのクエリになるとかなり時間がかかります。
本来データを取得してから、別のプロセスで集計を行うべきだと思うのですが、SPARQLで簡単な四則演算を反映した値を取得することもできます。試しに市区町村の人口に対する保育所数の比率を変数として取得してみます。
%endpoint http://data.e-stat.go.jp/lod/sparql/query
%display table
PREFIX ssds-measure-2016:<http://data.e-stat.go.jp/lod/ontology/systemOfSocialAndDemographicStatistics/measure/2016/>
PREFIX cd-dimension:<http://data.e-stat.go.jp/lod/ontology/crossDomain/dimension/>
PREFIX pc-measure-2010:<http://data.e-stat.go.jp/lod/ontology/populationCensus/measure/2010/>
PREFIX pc-dimension-2010:<http://data.e-stat.go.jp/lod/ontology/populationCensus/dimension/2010/>
PREFIX cd-dimension-2016:<http://data.e-stat.go.jp/lod/ontology/crossDomain/dimension/2016/>
PREFIX pc-code-2010:<http://data.e-stat.go.jp/lod/ontology/populationCensus/code/2010/>
PREFIX cd-code-2016:<http://data.e-stat.go.jp/lod/ontology/crossDomain/code/2016/>
PREFIX ic:<http://imi.ipa.go.jp/ns/core/rdf#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
select ?siku ?hoikusyo ?zaisyo ?taiki ?hospital ?jinko ?rate
where{
?s1 ssds-measure-2016:J250502 ?taiki;
cd-dimension:standardAreaCode ?areacode.
?areacode ic:都道府県 "東京都"@ja;
ic:市区町村 ?siku.
?s2 ssds-measure-2016:J2503 ?hoikusyo;
cd-dimension:standardAreaCode ?areacode.
?s3 ssds-measure-2016:J2506 ?zaisyo;
cd-dimension:standardAreaCode ?areacode.
?s4 ssds-measure-2016:I510120 ?hospital;
cd-dimension:standardAreaCode ?areacode.
?s5 pc-measure-2010:population ?jinko;
cd-dimension:standardAreaCode ?areacode;
cd-dimension-2016:sex cd-code-2016:sex-total;
cd-dimension-2016:nationality cd-code-2016:nationality-japanese;
pc-dimension-2010:area pc-code-2010:area-all;
cd-dimension-2016:age cd-code-2016:age-total .
BIND (xsd:int(?hoikusyo)/xsd:int(?jinko) as ?rate)
}
ORDER BY DESC(?taiki)
LIMIT 20
siku | hoikusyo | zaisyo | taiki | hospital | jinko | rate |
---|---|---|---|---|---|---|
特別区部 | 1158 | 115921 | 5279 | 407 | 8500358 | .000136229556449269548411961002113087472316 |
世田谷区 | 82 | 8912 | 884 | 25 | 860559 | .00009528690072383183488871768234368590648637 |
練馬区 | 89 | 8814 | 578 | 17 | 694121 | .000128219719616608631636270909538826803972 |
大田区 | 84 | 8756 | 438 | 27 | 666330 | .000126063662149385439647021745981720768988 |
板橋区 | 93 | 8477 | 417 | 41 | 495700 | .000187613475892677022392576154932418801695 |
江東区 | 72 | 7002 | 416 | 17 | 444062 | .000162139521057870297390904873643770464485 |
足立区 | 88 | 8847 | 294 | 47 | 656755 | .000133992127962482204170504982832258604807 |
杉並区 | 55 | 5390 | 285 | 17 | 506982 | .00010848511386992043110011795290562584076 |
豊島区 | 31 | 3041 | 270 | 15 | 261282 | .000118645754395633836238240674826432743166 |
町田市 | 56 | 5257 | 257 | 14 | 419062 | .000133631777636722012494571209033508168242 |
八王子市 | 82 | 9172 | 253 | 33 | 568293 | .000144291764987427260233717466166220593954 |
調布市 | 28 | 2702 | 249 | 6 | 215461 | .000129953912773077262242354764899448159992 |
港区 | 21 | 2111 | 195 | 15 | 191967 | .000109393802059729015924612042694838175311 |
中央区 | 20 | 1920 | 193 | 4 | 118767 | .000168396945279412631454865408741485429454 |
江戸川区 | 83 | 9544 | 192 | 21 | 641937 | .000129296177039179857213402561310533588187 |
小金井市 | 13 | 1404 | 188 | 4 | 114970 | .000113072975558841436896581716969644255023 |
西東京市 | 25 | 2522 | 184 | 4 | 192817 | .00012965661741443959816821130916879735708 |
墨田区 | 42 | 4106 | 181 | 14 | 237617 | .000176755030153566453578658092644886519062 |
武蔵野市 | 15 | 1437 | 181 | 10 | 134890 | .000111201719919934761657646971606494180443 |
府中市 | 40 | 4176 | 181 | 13 | 247986 | .000161299428193527053946593759325123192438 |
統計LODのスキーマ情報/測度で関係しそうなプロパティをピックアップし、データを取得してみることにします。
共通語彙基盤を見るとエリアコードは市区町村にも対応しているようです。 id:市区町村とic:都道府県で文字列情報を取得しつつ、エリアコードをキーに色々データを最終的に結合してみることにします。
%endpoint http://data.e-stat.go.jp/lod/sparql/query
%display table
PREFIX rdfs:<http://www.w3.org/2000/01/rdf-schema#>
PREFIX cd-dimension:<http://data.e-stat.go.jp/lod/ontology/crossDomain/dimension/>
PREFIX cd-dimension-2016:<http://data.e-stat.go.jp/lod/ontology/crossDomain/dimension/2016/>
PREFIX cd-code-2016:<http://data.e-stat.go.jp/lod/ontology/crossDomain/code/2016/>
PREFIX pc-measure-2010:<http://data.e-stat.go.jp/lod/ontology/populationCensus/measure/2010/>
PREFIX pc-dimension-2010:<http://data.e-stat.go.jp/lod/ontology/populationCensus/dimension/2010/>
PREFIX pc-code-2010:<http://data.e-stat.go.jp/lod/ontology/populationCensus/code/2010/>
PREFIX ic:<http://imi.ipa.go.jp/ns/core/rdf#>
select ?o ?ken ?siku ?areacode
where {
?s pc-measure-2010:population ?o ;
cd-dimension:standardAreaCode ?areacode.
?areacode ic:都道府県 ?ken;
ic:市区町村 ?siku.
?s cd-dimension-2016:nationality cd-code-2016:nationality-japanese ;
cd-dimension-2016:sex cd-code-2016:sex-total ;
pc-dimension-2010:area pc-code-2010:area-all ;
cd-dimension-2016:age cd-code-2016:age-total .
}
少し数分時間がかかるかもしれません。場合によってはタイムアウトするかも。
同様に男女別など、少し細かく市町村区の人口を取得してみます。男女別、年齢別、、の目的語が色々有りそうなのでSPARQLでどんな次元があるか取得してみます。
%endpoint http://data.e-stat.go.jp/lod/sparql/query
%display table
PREFIX rdfs:<http://www.w3.org/2000/01/rdf-schema#>
PREFIX cd-dimension:<http://data.e-stat.go.jp/lod/ontology/crossDomain/dimension/>
PREFIX cd-dimension-2016:<http://data.e-stat.go.jp/lod/ontology/crossDomain/dimension/2016/>
PREFIX cd-code-2016:<http://data.e-stat.go.jp/lod/ontology/crossDomain/code/2016/>
PREFIX pc-measure-2010:<http://data.e-stat.go.jp/lod/ontology/populationCensus/measure/2010/>
PREFIX pc-dimension-2010:<http://data.e-stat.go.jp/lod/ontology/populationCensus/dimension/2010/>
PREFIX pc-code-2010:<http://data.e-stat.go.jp/lod/ontology/populationCensus/code/2010/>
PREFIX sac:<http://data.e-stat.go.jp/lod/sac/>
PREFIX ic:<http://imi.ipa.go.jp/ns/core/rdf#>
select distinct ?sex ?age
where {
?s pc-measure-2010:population ?o ;
cd-dimension:standardAreaCode / ic:市区町村 "静岡市"@ja ;
cd-dimension-2016:sex ?sex;
cd-dimension-2016:age ?age .
}
cd-dimension-2016:ageの次元が思ったよりも細かい! とりあえず、ある市町村区の男女別の人口を取得するSPARQLを書くと、、男女一度に取得しようとするとタイムアウト?するようなので別々に取得してみます。女性の市区町村レベルの人口を取得するには……
%endpoint http://data.e-stat.go.jp/lod/sparql/query
%display table
PREFIX rdfs:<http://www.w3.org/2000/01/rdf-schema#>
PREFIX cd-dimension:<http://data.e-stat.go.jp/lod/ontology/crossDomain/dimension/>
PREFIX cd-dimension-2016:<http://data.e-stat.go.jp/lod/ontology/crossDomain/dimension/2016/>
PREFIX cd-code-2016:<http://data.e-stat.go.jp/lod/ontology/crossDomain/code/2016/>
PREFIX pc-measure-2010:<http://data.e-stat.go.jp/lod/ontology/populationCensus/measure/2010/>
PREFIX pc-dimension-2010:<http://data.e-stat.go.jp/lod/ontology/populationCensus/dimension/2010/>
PREFIX pc-code-2010:<http://data.e-stat.go.jp/lod/ontology/populationCensus/code/2010/>
PREFIX sac:<http://data.e-stat.go.jp/lod/sac/>
PREFIX ic:<http://imi.ipa.go.jp/ns/core/rdf#>
select ?ken ?siku ?areacode ?fjinko
where {
?s pc-measure-2010:population ?fjinko ;
cd-dimension:standardAreaCode ?areacode .
?areacode ic:都道府県 ?ken ;
ic:市区町村 ?siku .
?s cd-dimension-2016:nationality cd-code-2016:nationality-japanese ;
cd-dimension-2016:sex cd-code-2016:sex-female ;
pc-dimension-2010:area pc-code-2010:area-all ;
cd-dimension-2016:age cd-code-2016:age-total .
}
次はsex-maleを取得。あとでarecodeをキーにデータをマージするコトにし、その他の情報は省略します。
%endpoint http://data.e-stat.go.jp/lod/sparql/query
%display table
PREFIX rdfs:<http://www.w3.org/2000/01/rdf-schema#>
PREFIX cd-dimension:<http://data.e-stat.go.jp/lod/ontology/crossDomain/dimension/>
PREFIX cd-dimension-2016:<http://data.e-stat.go.jp/lod/ontology/crossDomain/dimension/2016/>
PREFIX cd-code-2016:<http://data.e-stat.go.jp/lod/ontology/crossDomain/code/2016/>
PREFIX pc-measure-2010:<http://data.e-stat.go.jp/lod/ontology/populationCensus/measure/2010/>
PREFIX pc-dimension-2010:<http://data.e-stat.go.jp/lod/ontology/populationCensus/dimension/2010/>
PREFIX pc-code-2010:<http://data.e-stat.go.jp/lod/ontology/populationCensus/code/2010/>
PREFIX sac:<http://data.e-stat.go.jp/lod/sac/>
PREFIX ic:<http://imi.ipa.go.jp/ns/core/rdf#>
select ?areacode ?mjinko
where {
?s pc-measure-2010:population ?mjinko ;
cd-dimension:standardAreaCode ?areacode ;
cd-dimension-2016:nationality cd-code-2016:nationality-japanese ;
cd-dimension-2016:sex cd-code-2016:sex-male ;
pc-dimension-2010:area pc-code-2010:area-all ;
cd-dimension-2016:age cd-code-2016:age-total .
}