福野泰介の一日一創 - create every day

データを磨こう! オープンデータの緯度経度チェッカー

2018/10/18
#opendata #codefor #SPARQL 

オープンデータという公共物、間違いを見つけたら、どんどん指摘して、キレイにしていきましょう。 いざ使ってみると、いろんなデータ間違いに出会います。

オープンデータ間違いの種類
1. 誤字・誤記(URL間違い)
2. 表記ゆれ(半角全角、空白の有無、略称などで発生しやすい)
3. 種別違い(数値のところが文字になってるなど)
4. 値がおかしい(緯度と経度を入れ間違っているなど)
5. 古い(リンク切れ、見つけ次第、新しくするか、IoTやCMSで自動更新化を検討)

越前ナビ」を作った際、なぜか地図が表示されないと思ったら、緯度と経度が逆になっているデータが混ざってました(間違い種:4)。応急措置として、変なデータは緯度経度を入れ替える形で対応しておきました。

今回は、緯度経度の間違いに絞って、それらを可視化するアプリ「緯度経度チェッカー」を作成。

緯度経度が範囲外にあるデータを取得する、SPARQLクエリーはこちら

prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> prefix xsd: <http://www.w3.org/2001/XMLSchema#> prefix geo: <http://www.w3.org/2003/01/geo/wgs84_pos#> select ?uri ?name ?lat ?lng ?graph { graph ?graph { ?uri rdfs:label ?name; geo:lat ?lat; geo:lng ?lng. filter( xsd:float(?lat) > 90 || xsd:float(?lng) < -180 || xsd:float(?lat) < -90 || xsd:float(?lng) > 180 ) }}

日本の端の一覧 - Wikipedia」のデータを使って、日本範囲外のデータを抽出して表示しています。

最北端 択捉島・カモイワッカ岬 45.557777,148.753888 最南端 沖ノ鳥島・北小島 20.425182,136.069771 最東端 南鳥島・坂本崎 24.286666,153.980555 最西端 与那国島・西崎 24.449444,122.933611

データがキレイになると、気持ちよくプログラミングできますね

京都市役所近くのラーメンオープンデータ活用アプリ「ラーメンを探す!」

2018/06/05
#opendata #SPARQL #gourmet 

IMI意見交換会にて出会った「共通語彙基盤ラーメンデータセット in Kyoto」。
opendata.ccへの登録して、SPARQLを使った検索アプリを作成。


ラーメンを探す共通語彙基盤ラーメンデータセット in Kyoto on opendata.cc

今回使った、SPARQLのクエリーはこちら

prefix xsd: <http://www.w3.org/2001/XMLSchema#> prefix ic: <https://imi.go.jp/ns/core/rdf#> select ?uri ?type ?name ?des ?startt ?endt ?dest ?lat ?lng { ?uri ic:種別 ?type. ?uri ic:名称 [ ic:表記 ?name ]. ?uri ic:利用可能時間 ?t. ?uri ic:説明 ?des. ?t ic:開始時間 ?startt. ?t ic:終了時間 ?endt. optional { ?t ic:説明 ?dest. } ?uri ic:地理座標/ic:緯度 ?lat. ?uri ic:地理座標/ic:経度 ?lng. }

アイコンとして使わせてもらった「いらすとや」のラーメンイラスト、たくさんあって迷う。イメージが近いアイコンをラーメン語彙に追加してもいいかも。喫煙可能かどうか、予約可能かどうか、現状の混み具合がわかるリアルタイムオープンデータなど、いろいろリンクしていきたい。


写真や、詳細データはリンク先で確認するように作成。写真を中心に選ぶアプリにする、スマホVRでラーメンに囲まれるVRや、ラーメンが透けて見えるWebMeganeなど、いろいろ活用範囲が広い、ステキなラーメンオープンデータ。ぜひ鯖江でも、みなさまの地元でも!

links
- 共通語彙基盤ラーメンデータセット in Kyoto

SPARQLマップアプリハンズオン - アジアとアフリカとの連携が熱い!W3C Exective Committie Meeting 2nd

2018/02/27
#opendata #web #SPARQL 

日本のW3Cメンバーは36団体。第二回、W3C Exective Committie Meeting が開催。
通信キャリア、メーカー、ゲーム業界、印刷業界など、さまざまな業界から集まり、webの未来を語る会。


日本のインターネットの父、村井純さんによるプレゼンからスタート。


W3Cは、webの発明者、ティム・バーナーズ・リー氏が創設。
インターネットの父、ヴィントン・サーフ氏も加えた、世界を変革した3名は教科書に載っているべきです!


インターネットの到達率は、ついに51.7%。
EU、アメリカはほぼ90%になる中、アジアはまだ46.7%と成長余地が大きい!(アフリカも!)


日本のIT戦略を支える、3つの法律。
高度情報通信ネットワーク社会形成基本法、サイバーセキュリティ基本法、官民データ活用推進基本法。
官民データ活用推進基本法は、世界でも珍しい、議員立法だからこそできた、民間のデータにも踏み込む大胆な法律とのこと。

日本、大いにチャンスありですね!


共通語彙基盤を使ったSPARQLとマップアプリを実際作ってみるハンズオン。
手元のPCを使うだけで、HTMLやJavaScript、SPARQLクエリーなどを編集して試せます。


(京都でのオープンデータテストベッド研修プログラムの試行にて使用)

GoogleマップのAPIKEYを取得し、設定することで、アプリとして公開も可能です!
APIKEYの取得方法や、GitHubを使った公開方法は、こちらを参考にどうぞ。
GitHubではじめるWebアプリづくり「GitHub & マップアプリハンズオン」と4アイデア - 福井県オープンデータ勉強会

続く福井の大雪警報、オープンデータ消火栓探しと警報取得Python3プログラム with SPARQL API

2018/02/06
#SPARQL #python #opendata 

消火栓がすっぽり埋まってしまうほどの大雪に見舞われた福井県。
大雪警報は継続中です。
大雪に伴う市民生活情報 – めがねのまちさばえ 鯖江市


左:完全に埋まった消火栓、右:消火栓救出成功!

火事から守る命綱、消火栓も合わせて除雪しておきましょう。

消火栓を探す - findhydrant
金沢では金属探知機で消火栓を探していたそうですが、緯度経度データ付きの消火栓オープンデータで市民の力で防災対策が可能です。 odp / オープンデータプラットフォームの消火栓テンプレートで登録すれば、すぐにこのアプリに反映されます!
金属探知機で消火栓探し除雪 金沢市消防局 | NHKニュース

警報チェックにオープンデータを活用します。
気象庁による配信されているオープンデータが、AITCによってSPARQL APIで取得できるようになっていました。
先端IT活用推進コンソーシアム - 公開API

福井県の警報・注意報のデータがあるURLを取得するSPARQLクエリーがこちら

select * { <urn:uuid:f57b5866-0c8c-3c92-9aff-10a715cdf48b> atom:entry ?o. ?o atom:updated ?updated. ?o atom:content ?content. ?o atom:link ?link. ?o atom:title ?title. FILTER(REGEX(?content, "福井")) FILTER(REGEX(?title, "気象特別警報・警報・注意報")) } order by desc(?updated) limit 1

これを使って、市町村毎の警報、注意報を取得するPython3のプログラムを作ってみました。

import urllib.request import urllib.parse import xml.etree.ElementTree as ET import dateutil.parser import sys if len(sys.argv) == 1: print("getalerm.py [pref] [city]") print("ex) python3 getalerm.py 福井 鯖江市") print() pref="福井" city="鯖江市" else: pref=sys.argv[1] city=sys.argv[2] query = ( 'PREFIX atom: <http://www.w3.org/2005/Atom#>\n' 'select * {\n' ' <urn:uuid:f57b5866-0c8c-3c92-9aff-10a715cdf48b> atom:entry ?o.\n' ' ?o atom:updated ?updated.\n' ' ?o atom:content ?content.\n' ' ?o atom:link ?link.\n' ' ?o atom:title ?title.\n' ' FILTER(REGEX(?content, "' + pref + '"))\n' ' FILTER(REGEX(?title, "気象特別警報・警報・注意報"))\n' '} order by desc(?updated) limit 1\n' ) print(query) url = "http://api.aitc.jp/ds/sparql?query=" + urllib.parse.quote(query) + "&output=xml" #print(url) resfn, headers = urllib.request.urlretrieve(url) #resfn = "/var/folders/0p/8n831_gn5j97jrlqmh5ddggc2s2n0c/T/tmpaqzg7_ib" print("sparql result file: " + resfn) tree = ET.parse(resfn) root = tree.getroot() xmlurl = tree.find(".//{http://www.w3.org/2005/sparql-results#}binding[@name='link']")[0].text updated = tree.find(".//{http://www.w3.org/2005/sparql-results#}binding[@name='updated']")[0].text supdated = dateutil.parser.parse(updated).astimezone().strftime("%Y/%m/%d %H:%M:%S") # xmlfn = "4848abcd-56a2-3170-8468-4fef8be3d405.xml" xmlfn, headers = urllib.request.urlretrieve(xmlurl) print("xml file: " + xmlfn) print("updated: " + supdated) tree = ET.parse(xmlfn) root = tree.getroot() warn = root.find(".//{http://xml.kishou.go.jp/jmaxml1/body/meteorology1/}Warning[@type='気象警報・注意報(市町村等)']") for item in warn: area = item.find(".//{http://xml.kishou.go.jp/jmaxml1/body/meteorology1/}Area") name = area.find(".//{http://xml.kishou.go.jp/jmaxml1/body/meteorology1/}Name").text # print(name) if name == city: for kind in item: if kind.tag == "{http://xml.kishou.go.jp/jmaxml1/body/meteorology1/}Kind": alert = kind.find(".//{http://xml.kishou.go.jp/jmaxml1/body/meteorology1/}Name").text print(alert)

SPARQLクエリーの渡し方、ネームスペース付きXMLのパース、日付の日本時間変更などやってます

備えあれば憂い無し。災害は忘れた頃にやってくる。
痛い目に遭った今こそ、次に向けた手を創っておきましょう!

links
- 気象庁防災情報XMLフォーマット | 技術資料
- 大雪に伴う市民生活情報 – めがねのまちさばえ 鯖江市
- odp / オープンデータプラットフォーム

国内4箇所の5つ星オープンデータをSPARQLで横断検索する「opendata.cc」リリース!

2017/07/14
#opendata #jig #SPARQL 

日本政府が推進する5つ星オープンデータの鍵、共通語彙基盤(imi.go.jp)
つながり始めた日本のオープンデータデータ!

Web標準のAPI「SPARQL(スパークル)」が使えるサイト(=エンドポイント)、odp、大阪、京都、神戸を、まとめてさくっと検索できるサービス「opendata.cc」を jig.jp グループ、B Inc. よりリリースしました!

最新の共通語彙基盤の語彙(=ボキャブラリー)を使って、シンプルなSPARQLクエリーで気軽に検索できます!

select * { ?uri <http://imi.go.jp/ns/core/rdf#説明> ?desc; <http://imi.go.jp/ns/core/rdf#名称> [ <http://imi.go.jp/ns/core/rdf#表記> ?name ]. optional { ?uri <http://imi.go.jp/ns/core/rdf#画像> ?image } optional { ?uri <http://imi.go.jp/ns/core/rdf#地理座標> [ <http://imi.go.jp/ns/core/rdf#緯度> ?lat; <http://imi.go.jp/ns/core/rdf#経度> ?lng; ]} filter(contains(str(?desc),'めがね') || contains(str(?name),'めがね')) } order by rand() limit 30

「めがね」と説明か名前に入っているデータをとってくる SPARQLクエリー、画像や緯度経度はもしあればとってくる(optional)
Let's try on opendata.cc!


5star opendatamapsrc on GitHub
同時リリースした5つ星オープンデータを使った、日本中の5つ星オープンデータを巡れる、オープンソースなサンプルアプリ


エリア毎に辿れる、イベント、観光、防災、施設のデータ


尾道市にある観光オープンデータ


神戸市にはイベントオープンデータが多数!


各オープンデータにリンクされる詳細情報にアクセスし、作成するアプリのイメージを膨らませましょう!


5つ星オープンデータ検索
以前odp版として作成した検索アプリを opendata.cc へつなぎなおしました!
こちらも オープンソース、サンプルとしてご活用ください!

links
- opendata.cc

オープンデータも活用、10年目の鯖江市活性化プランコンテストと5つ星オープンデータ検索

2017/07/11
#sabae #SPARQL #kosen #opendata 

日本初のオープンデータ公開も果たした、鯖江商工会議所
2017年度第二回常議員会にて、NPO法人エルコミュニティ代表理事、竹部さんの講演「協創による鯖江モデル」


「市長をやりませんか?」鯖江市地域活性化プランコンテストは今年10周年!
私と竹部さんの出会いは第一回コンテスト、審査委員、皆勤賞です!


高専生を含む、全国から熱い学生が鯖江に集結!
数々のプランが登場し、市役所全面協力の元、どんどん市民の手により実現されています!


鯖江プラコン検索アプリ
鯖江市地域活性化プランコンテスト歴代プランがキーワードで検索できる。プランデータとその採択結果は鯖江市によってオープンデータにされている。


日本の5つ星オープンデータ検索アプリ
鯖江から始まった日本のオープンデータ旋風、政府標準の共通語彙基盤とSPARQLによって、全国のデータがつながりはじめました。

鯖江プラコン検索アプリをベースに、日本のオープンデータを検索するアプリの作成。近未来、あらゆるデータがこうしたアプリですばやく辿ることができるようになります。 というか、なるようにしなければなりません。問題解決速度、もっともっとスピードアップさせていきましょう!

地方が変われば日本が変わる、世界が変わる!
全国の大学生&高専生のみなさん、鯖江で暴れてみませんか?

links
- 鯖江市地域活性化プランコンテスト | 市長をやりませんか? - エントリーは締め切り 2017/8/5(土)

IMI.go.jp でつなげる日本と世界 as One Web/W3C

2017/06/29
#opendata #SPARQL 

次世代web、RDFと相互運用に必要なボキャブラリー / 語彙 (W3C)
日本政府が推進するプラットフォーム「IMI.go.jp(情報共有基盤、共通語彙基盤と文字情報基盤)

共通語彙基盤がIPA所属の imi.ipa.go.jp から、政府所属の imi.go.jp へと変わってからの初イベント「つながるデータで築く未来」は大盛況。 その後の共通語彙基盤活用実践セミナーも満員!

国内5箇所目となる埼玉県による SPARQL Endpoint の公開もスタートしました!
クリックで5つ星オープンデータを辿るSPARQLKnockerを更新!

SPARQLKnocker ビジュアル版 / テキスト版 (src on GitHub)

この日は、W3C日本会議も開催、日本のオープンデータの標準化を進める村井純さん!

様々な仕様で誕生するIoTをWebがつないでいく、WoT Thing Descriptionなど、続々とwebにつながっている様子。

世界で一つのネットワークで叡智を結集する「One Web」を掲げる「W3C」少しずつ認知も広まっているようです!

links
- RDF語彙記述言語1.0: RDFスキーマ (W3C原文)
- IMI 情報共有基盤
- IMI 情報共有基盤 共通語彙基盤 公開ドラフト
- 埼玉県オープンデータ
- ビジュアル SPARQL Knocker
- SPARQL 1.1 Overview - W3C

Visual SPARQL Knocker - graph of types with Kyoto, Osaka and odp SPARQL Endpoint

2017/02/09
#opendata #SPARQL #english 

Let's dig the endpoint with Visual SPARQL Knocker!

"Visual SPARQL Knocker - graph of types"
Tap the endpoint to get types and structures of them types!

Facility Map with Kyoto, Osaka and odp SPARQL Endpoint

2017/02/08
#opendata #SPARQL #english 

Kyoto started SPARQL Endpoint with IMI (共通語彙基盤) as 5-star OPENDATA.
"odp" and Osaka Opendata also supported IMI but there is a difference in version.

http://imi.go.jp/ns/core/rdf# - Kyoto: IMI 2.3.2
http://imi.ipa.go.jp/ns/core/rdf# - odp / Osaka: IMI 2.3.1

I supported both IMIs on the web app "find facility".

"Find Facility" src on GitHub

links
- 大阪市Linked Open Data使用方法 - 大阪市オープンデータポータルサイト
- 共通語彙基盤
- 情報共有基盤

バスデータの5つ星オープンデータ化へトライ、データを見える化、活用へ

2016/12/28
#opendata #sabae #SPARQL #codefor 

福井県池田町に続き、バス停データが鯖江市より5つ星オープンデータ化!
シームレスにバス停データを取得できるAPI、SPARQLを使って、最寄りのバス停を表示するアプリ「findbusstop」をさっとフォークして見てみました。


バス停を探す odp 5つ星オープンデータバージョン
鯖江市内バス停、たくさんありますね!
福井駅前、武生駅前にバス停があるのは、池田町のバスオープンデータのデータです。
路線毎に同じバス停がたくさんでてしまうのは、改善の余地ありです。


バスルートや、時刻表も5つ星オープンデータ、SPARQL慣れにいろいろと遊んでみてください!
ソースコードは、Code for Fukui の GitHub にあります!

JavaScriptではじめる、かんたんコードフォー
GitHubとWebアプリ(JavaScript)はじめのいっぽ」から、地図を使ったアプリへとステップアップからどうぞ!1時間ほどで、だれでもWebアプリ作り、体験できます!コードを書くという地域貢献、冬休みにいかがでしょう?

Tweet
クリエイティブ・コモンズ・ライセンス
この作品は「Creative Commons — CC BY 4.0」の下に提供されています。
CC BY 福野泰介 - Taisuke Fukuno / @taisukef / アイコン画像 / プロフィール画像