SPARQL APIのご紹介

2014年3月20日
先端IT活用推進コンソーシアム
クラウド・テクノロジー活用部会
荒本 道隆
Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

SPARQLとはSPARQL（"スパークル"と発音[1]）はRDFクエリ言語の一種である。その名称は再帰的頭字語になっており、SPARQL Protocol and RDF Query Languageの略。RDF
クエリ言語とは、Resource Description Framework で記述されたデータを検索/操作するコンピュータ言語である。SPARQL は World Wide Web Consortium (W3C) のRDF Data Access Working Group (DAWG) による標準化作業が行われている。
W3C勧告に至る過程で、2006年4月に勧告候補としてリリースされたが、2つの問題により2006年10月に草案に戻された[2]。2007年6月、SPARQL は再び勧告候補となった[3]。2008年1月15日、SPARQLはW3C勧告となった[4]。
SPARQL はクエリのパターンとして、論理積、論理和、その他のパターンを指定可能である[5]。
ウィキペデアより• まとめると– RDBに対するSQLのようなもの– RDFというデータセットに対して検索、集計、フィルタリングなどが行える
Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

気象庁防災情報XMLとRDFの関係• 気象庁XML

これをRDF化するのは、とても大変– 気象庁は、これまで、気象警報、津波警報、地震情報等、それぞれの防災情報毎に情報の性質・利用形態などを考慮し、それぞれの情報で個別の、気象庁独自の 電文形式（フォーマット）を作成してきました。この方式は、防災情報の種類が少なく、情報の伝達がFAXや低速の通信回線の時代はそれぞれの情報に適して いましたが、高度にICT化された現在社会において、より詳細で高度化された防災情報をより効果的に活用していただくために、新たな防災情報の提供様式を 検討すべきと考え、「気象庁防災情報XMLフォーマット」を策定することとし、平成23年5月12日より運用を開始しました。
http://xml.kishou.go.jp/• feed

これをRDF化＋エリア情報＋気象台の位置情報– 気象庁→ Google PubSubHubbub経由でfeedを配信• 概要と気象庁防災情報XMLのURLが記述されている– そのURLにアクセスして、気象庁XML本体を取得– １つのfeedの中に、複数のentryが入っている
Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

RDFの構造http://www.kanzaki.com/works/2005/rap/graph-check でサンプルRDFを可視化

Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

配信数の詳細（2013/01/01〜2014/03/11）=================================================￨ "府県天気概況"￨ 94760 ￨￨ "府県天気予報"￨ 85292 ￨￨ "気象警報・注意報"￨ 54302 ￨￨ "府県週間天気予報"￨ 48426 ￨￨ "気象特別警報・警報・注意報"￨ 24312 ￨￨ "地方海上警報"￨ 14097 ￨￨ "地方海上予報"￨ 10454 ￨￨ "地方週間天気予報"￨ 9619 ￨￨ "府県気象情報"￨ 8431 ￨￨ "紫外線観測データ"￨ 7359 ￨￨ "震源・震度に関する情報"￨ 2686 ￨￨ "特殊気象報"￨ 2407 ￨￨ "噴火に関する火山観測報"￨ 2204 ￨￨ "地方気象情報"￨ 2163 ￨￨ "台風解析・予報情報（３日予報）"￨ 1811 ￨￨ "全般海上警報（定時）"￨ 1746 ￨￨ "生物季節観測"￨ 1668 ￨￨ "竜巻注意情報"￨ 1548 ￨￨ "府県高温注意情報"￨ 1412 ￨￨ "土砂災害警戒情報"￨ 1002 ￨￨ "指定河川洪水予報"￨ 833￨￨ "地方１か月予報"￨ 693￨￨ "全般台風情報（定型）"￨ 599￨￨ "全般週間天気予報"￨ 512￨￨ "府県海氷予報"￨ 403￨￨ "異常天候早期警戒情報"￨ 401￨￨ "震度速報"￨ 372￨￨ "台風解析・予報情報（５日予報）"￨ 320￨￨ "全般海上警報（臨時）"￨ 301￨

SPARQLの画面から参照可能￨ "震源に関する情報"￨ 266￨￨ "地方高温注意情報"￨ 259￨￨ "火山の状況に関する解説情報"￨ 240￨￨ "府県潮位情報"￨ 230￨￨ "全般気象情報"￨ 217￨￨ "季節観測"￨ 211￨￨ "スモッグ気象情報"￨ 193￨￨ "府県天候情報"￨ 186￨￨ "地方３か月予報"￨ 143￨￨ "全般台風情報"￨ 122￨￨ "全般台風情報（詳細）"￨ 98￨￨ "記録的短時間大雨情報"￨ 77￨￨ "地方天候情報"￨ 71￨￨ "地方潮位情報"￨ 68￨￨ "全般１か月予報"￨ 63￨￨ "地方暖・寒候期予報"￨ 33￨￨ "全般潮位情報"￨ 30￨￨ "津波情報"￨ 15￨￨ "全般天候情報"￨ 14￨￨ "東海地震観測情報"￨ 14￨￨ "全般３か月予報"￨ 13￨￨ "地震の活動状況等に関する情報"￨ 10￨￨ "津波警報・注意報・予報"￨ 9￨￨ "噴火警報・予報"￨ 8￨￨ "気象特別警報報知"￨ 7￨￨ "津波警報・注意報・予報a"￨ 7￨￨ "津波情報a"￨ 6￨￨ "全般スモッグ気象情報"￨ 5￨￨ "顕著な地震の震源要素更新のお知らせ" ￨ 5￨￨ "JMAXML publishing feed"@ja￨ 4￨￨ "全般暖・寒候期予報"￨ 3￨￨ "火山現象に関する海上警報・海上予報" ￨ 3￨‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑

Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

実際の配信数の概要• 2013/01/01〜2013/12/31（１年間）– feed• 572,595回（平均1,568回／日）、重複含む• 2,444MByte／年（平均6.69MByte／日）– 気象庁防災情報XML• 323,212件（平均885件／日）• 6,399MByte／年（平均17.53MByte／日）

Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

SPARQLでできること−１• 欲しい形で結果を取得– 結果のカラム名や形式を自分で指定できる– 利用できる集計関数• COUNT, SUM, MIN, MAX, AVG, GROUP_CONCAT, SAMPLE– サイトに掲載しているサンプル• Tripleの取得（元データのダンプ）• エリア名とコードのリスト• タイトルで集計← デフォルトでこの行が有効になっています• 特定のタイトルのものの中身を参照• 「雪」に関するコンテンツがどの気象台からいくつ出ているか？
• "全般週間天気予報"のうち、2014/01/01に配信されたもの• アプリへの組み込みが容易– HTTPでGETするだけ• エンドポイント： http://api.aitc.jp/ds/sparql?query=(SPARQL)• 更新系は別URLなので、勝手に更新される心配がない
Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

SPARQLでできること−１• 2014/02/14（関東で大雪だった日）に、– 「雪」に関するコンテンツが、– どのエリアに何回出たか？
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX atom: <http://www.w3.org/2005/Atom#>
PREFIX jma: <http://cloud.projectla.jp/jma/>
PREFIX area: <http://cloud.projectla.jp/jma/area#>
SELECT ?area ?areaname (COUNT(?id) as ?c) WHERE {?id atom:author ?author .
?id atom:content ?content .
?id atom:updated ?updated .
?id jma:area ?area .
?area area:name ?areaname .
FILTER(xsd:dateTime(?updated) >= "2014-02-14T00:00:00+09:00"^^xsd:dateTime &&xsd:dateTime(?updated) < "2014-02-15T00:00:00+09:00"^^xsd:dateTime &&REGEX(?content, "雪"))} GROUP BY ?area ?areaname ORDER BY DESC(?c)
Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

SPARQLでできること−２• オープンデータを使ったマッシュアップ– SPARQL 1.1 Federated Query– １つのSPARQLで、複数サイトのRDFデータを結合
気象庁XMLhttp://api.aitc.jp/ds/sparql

1つのSPARQL

WikipediaのRDF版
http://http://ja.dbpedia.org/sparql

経済産業省のオープンデータ
http://datameti.go.jp/sparqlCopyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

SPARQLでできること−２• やってみたら、こうなりました
某SPARQLサイト

気象庁XMLhttp://api.aitc.jp/ds/sparql

よくないSPARQL

被害者にも加害者にもなりえるので、注意

11111 …..
22222 …..
33333 …..
44444 …..
55555 …..
：

60秒間にわたり、110回／秒のアクセスが発生

気象庁XMLの配信が、自動的に解除
気象庁XMLの配信が、２時間に渡り受信不能に
Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

リソース不測でWebサーバがアクセス不能に

まとめ• LODでは、SPARQLが共通言語になる– LOD：Linked Open Data
– SPARQLが、今のSQLのようになるのは遠くない– フェデレーション機能で、より便利に• 可視化ツールとの組み合わせで、開発が不要に？

• 気象庁XMLをRDF化する時代が来るかも– XBRLをRDF化する研究なども行われている• XBRL：eXtensible Business Reporting Language• 企業の決算報告を１つの巨大なXMLにしたもの– 他のLODとの親和性が、より高まる• 今からSPARQLに慣れ親しんでおきましょう
Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

注意事項• サイトは、AITCの会費で運用しています– そのため、商用利用は遠慮してもらっています• 商用利用したい場合は、気象業務支援センターへ– CD-ROM, DVDによる販売– オンラインによるデータ配信– ２台のサーバで頑張ってます• RESTとSPARQLのデータは、受信モレがあります• 時々、高負荷になり、応答に時間がかかります• 時々、止まるかも知れません• 何かあれば、 staff@aitc.jp までCopyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.