(2014-05-19追記) 5/16に無事本家サイトが復活したようです.また関連ニュース記事を追加しています.

4/9に datago.jpというサイトを立ち上げました.おかげ様で色々反響がありました.データカタログサイトの問題やdatago.jpについてはdatago.jpについてや下記のメディア等の記事を読んでいただくとして,ここには事の顛末を記録として書いておきます.

私がデータカタログサイト(試行版)(以下,本家サイト)が動いていないことを知ったのは4/2のことでした.その後twitterで植原先生が本家サイトで公開されていたメタデータのCSVを再公開してくださっていることを知ったので,それを使ってデータカタログ部分だけでもクローンサイトを作れないかと考えました.本家サイトのデータカタログ部分が使用しているのはCKANというFLOSSであり,適切なダンプデータがあれば簡単にクローンを作れるからです.データのライセンスもCC BYなので問題ありません.

ところが,ここで公開されているCSVは,私が知る限りCKANが直接吐くことができるファイルではありませんでした.今は植原先生がデータの出処について追記してくださっていますが,このファイルがどう生成されていたのか知りたいところです.この時点で少しやる気がなくなったのですが,翌日4/3にLODI内とOKFJ側双方から,”このデータを使ってサイトを作れないか”という話が出てきました.そこで,その時点で検討していたこと,標準のデータではないので一件ずつ処理してAPI経由で入れないといけないのですぐできるわけではないという旨を説明をした上で,サイトの準備を始めました.

API経由でインポートできるように処理を書いてデータ投入をしましたが,データとしては以下の問題がありました.

  1. 不足部分: 組織データ,リソースのID
  2. CKAN標準でない項目名: publisher, frequency_of_update, release_day, language, copyright, supplementation
  3. タグ: 空のタグや,API経由でインポートできない文字(具体的には%)
  4. 謎文字: ^\-

1の不足部分について,組織データはInternet Archiveに保存されていたページからデータを作りました.また,リソースのIDは知る方法がなかったので諦めました.このためリソースのURIも異なるものになるので,今後本家サイトが復活したときに,例えばリダイレクトして本家サイトに流すという対処はできません.

2のCKAN標準でない項目名について,publisherはmaintainerと解釈しました.また,frequency_of_updateとrelease_dayはextrasに入れてあります.language, copyright, supplementationは入れていません.これらもextrasにいれればよかったのかもしれません.

3のタグと4の謎文字はインポート時に発生していた問題ですが,単純に問題文字を削除しました.具体的には2020年30%というタグがあったのですが,これは2020年30として入れてあります.タグの文字列として記号を受け付けないのはもしかしたらAPI側のバグかもしれません.

知ったのが4/2で公開日が4/9なので,1週間作業していたことになりますが,殆どはデータインポートに費やした時間です.実際には公開した時点では処理が終わっておらず,一旦処理が終了したのは4/10でした.その後うまくデータインポートできていなかった分を追加するなど,まだデータ作業は行っています.

クローンサイトを作るにあたって,我々が有志で行っているData for Japanに入れるという案もありました.Data for Japanは日本のオープンデータのハブという名目で行っているので,本家サイトのデータを入れることは検討すべきことでした.しかし,ここまで述べたようにもとにしたデータが不完全だったことで,今後本家サイトが復活したときにそちらのデータを入れるのにまた苦労をすることが容易に想像できたので,別の一時的なサイトを立ち上げるという判断をしました.

そもそもの話をするとData for Japanに本家サイトのデータを予め取り込んでおけば良かったのですが,旧サイト(http://data.linkedopendata.jp)からData for Japanへの移行を行ったのがそもそも3月末でしたので,そこまでできなかったというのが現状でした.CKANには他のCKANからカタログデータを取り込む仕組みがいくつかあるため,取り込む事自体はそんなに難しくないはずですので,本家サイトが復活したらその方向も考えたいと思っています.

サイト作り自体にはそんなに時間を掛けていません.ソースコードはhttps://github.com/fumi/ckanext-fake-datagojpに置いてあります.少し悲しいのはソース見て何か言ってくる人がいないことですね.こういうところで協働できる人が増えてきて欲しいなとおもいます.

なお,今回の件を受けて,データカタログサイトは行政側がやるのではなく,民間側がやるべきという意見を受けるときがありますが,行政側がデータカタログサイトを運営することには明確な意味があります.それはそのサイトが一次ソースになるということです.当然,民間側でもそのミラーサイト等を作ることはできますが,それは二次ソースでしかありません.

追記: 4/8は裏でHeartbleed対応というイベントもありました.

これはCivic Tech Advent Calendar 2013 22日目の記事です.

12月20日に日本政府のデータカタログサイト試行版(data.go.jp)が公開されました.日本では経済産業省が先行して今年1月にOpen DATA METIを公開しており,CKANをベースに作成されていました.data.go.jpにおいてもデータ以下の部分にCKANが採用されている (図1) とのことなので,data.go.jpを例にCKANについて書こうとおもいます.

図1: data.go.jpのCKAN部分
図1: data.go.jpのCKAN部分

CKANOpen Knowledge Foundationが開発している,オープンソースのデータポータルソフトウェアで,世界中の国や自治体,コミュニティ等に採用されています.データをWeb上に公開するだけならば,Web上にファイル置いてデータの紹介ページを作れば良いのですが,データポータルソフトウェアを使うことで,公開者側はデータの公開や管理をより容易にすることができます.また,利用者側は目的のデータを検索・発見しやすくなりますし,可視化等の汎用的な利活用手段を得ることもできます.

データポータルソフトウェアとして重要な機能はいくつかありますが,最も重要なのはデータカタログです.カタログというとまず図書館のOPAC (Online Public Access Catalogの略です!)を思い浮かべるかもしれません.OPACにはその図書館の蔵書について,書籍名,著者名,出版社,分類番号,所蔵場所等,様々な項目が記述されています.利用者はこれらを検索・閲覧することで興味のある本を発見して,請求番号で請求するなり,所蔵場所に行って実際に本を手にとる等ができます.著者名がわかっている場合は著者名で検索しますし,分類から眺めて本を探すといったこともできます.カタログのシステムというのは,物を説明するのにある程度決まった項目があって,それに応じて検索や絞り込みをすることができ,最終的に対象物のがどこにあるか等,物についての情報が得られるシステムと言えます.

データカタログの項目にはデータの名前,作成者,作成日,ファイル形式,ファイルの場所,ライセンス,分類,といったものが挙げられます.データに関するそれらの項目を予め整備しておくことによって,例えば交通関係でファイル形式がxlsのデータ (図2) といった検索を可能にできるわけです.

図2: 交通関係でxlsファイルのデータ
図2: 交通関係でxlsファイルのデータ

CKANでは,データセットというのが単位となります.データセットが何を表すかは使用者に依存しています.図3は”交通事故の発生状況について_平成24年度”というデータセットです.図3のように,データセットは複数のリソースを持つことができます.リソースとは実際のデータファイルやAPIといったものを指します (Webでいうリソースとは別概念).これはあるデータセットの提供方法がxlsとcsvとAPI提供のように複数ある可能性があるからです.また,データセットは組織に関連付けることができ,組織毎にアクセスコントロール等を設定することが可能です.データセットを分類するために,グループやタグを付与することもできます.

図3: データセット例
図3: データセット例

データセット内の各リソースをクリックすると,リソースの詳細(ファイルサイズ,ライセンス等)を知ることが可能です.特定のファイル形式の場合,リソースのページで汎用の可視化を用いることもできます.残念ながらこの機能はdata.go.jpでは動いていないので,我々が動かしている日本のデータを集めているサイトdata.linkedopendata.jpから,秋田県横手市の避難場所CSVを例として使います.CSVファイルであれば,それをテーブルとして表示してくれますし,データを使ってチャートを描画したり,緯度経度の列を指定することで地図に表示するといった汎用的な可視化が可能です.

図4: 横手市避難場所CSV
図4: 横手市避難場所CSV
図5: 横手市避難場所CSV - Map
図5: 横手市避難場所CSV – Map

データカタログに対してプログラムからアクセスするために,Linked Dataによるアクセスが用意されています.あるデータセットについてのデータをRDF/XMLで欲しい場合は,”Accept: application/rdf+xml”を送るか,URIの最後に.rdfを付けることで取得できます.text/n3でのアクセスもサポートされていますが,現在返ってくるデータには問題があります.以下はcurlでRDF/XMLを取得する例です.

% curl -L -H "Accept: application/rdf+xml" http://www.data.go.jp/data/dataset/npa_07_ds_131126_00000025
<rdf:RDF xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dcat="http://www.w3.org/ns/dcat#" xmlns:dct="http://purl.org/dc/terms/">
  <dcat:Dataset rdf:about="http://www.data.go.jp/data/dataset/npa_07_ds_131126_00000025">
    <owl:sameAs rdf:resource="urn:uuid:fe6c67a1-e990-4346-8324-b7b1d3fc71e8"></owl:sameAs>
    <dct:description></dct:description>
        <dcat:keyword>交通</dcat:keyword>
        <dcat:keyword>交通事故</dcat:keyword>
        <dcat:keyword>統計</dcat:keyword>
    <foaf:homepage rdf:resource="http://www.data.go.jp/data/dataset/npa_07_ds_131126_00000025"></foaf:homepage>
    <rdfs:label>npa_07_ds_131126_00000025</rdfs:label>
    <dct:identifier>npa_07_ds_131126_00000025</dct:identifier>
    <dct:title>交通事故の発生状況について_平成24年度</dct:title>
        <dcat:distribution>
            <dcat:Distribution>
                <dcat:accessURL rdf:resource="http://www.e-stat.go.jp/SG1/estat/Xlsdl.do?sinfid=000019681521"></dcat:accessURL>
                    <dct:format>
                        <dct:IMT>
                            <rdf:value>XLS</rdf:value>
                            <rdfs:label>XLS</rdfs:label>
                        </dct:IMT>
                    </dct:format>
               <dct:title>平成24年中の交通事故の発生状況</dct:title>
            </dcat:Distribution>
        </dcat:distribution>
......

ここでは他のデータカタログと交換できるように,様々な共通語彙が用いられていますが,一つ大きな役割を果たしているのがData Catalog Vocabulary (DCAT)です.これはその名の通りデータカタログソフトウェア間での相互運用性のために設計されている語彙で,W3Cにて策定中です (2013年12月22日現在 Proposed Recommendation).すでに様々な実装があります.

一方で,カタログの検索やデータ管理を行う等の用途のために,APIも用意されています.結果はJSON(あるいはJSONP)で取得できます.以下はコードで検索する例です.[“result”][“results”]の中に検索でヒットしたデータセットが入ってきます.

% curl 'http://www.data.go.jp/data/api/3/action/package_search?q=コード'
{"help": "
........
  "success": true, 
  "result": {"count": 198, "sort": "score desc, metadata_modified desc", "facets": {}, 
    "results": [
       {"owner_org": "c34d69d9-f213-49eb-90de-f1e7ffc8639d",
        "maintainer": null,
        "relationships_as_object": [],
        "private": false,
        "maintainer_email": null,
        "num_tags": 2,
        "id": "132c3f2e-ec18-425f-b605-554aa02d57a9",
        "metadata_created": "2013-12-16T15:35:55.794289",
        "metadata_modified": "2013-12-16T15:35:55.794289",
        "author": "\u9632\u885b\u7701",
        "author_email": null,
        "state": "active",
        "version": null,
        "license_id": "notspecified",
        "type": "dataset",
        "resources": [
          {"resource_group_id": "373299af-7f32-46f3-9edb-96e786c99c24",
           "cache_last_updated": null,
           "revision_timestamp": "2013-12-16T15:35:55.794289",
           "webstore_last_updated": null,
           "file_size": "974K",
           "id": "dfe58d2a-4b38-4c84-b146-755c5eaec5ef",
           "size": null,
           "copyright": "",
           "state": "active",
           "resource_license_id": "CC-BY",
           "hash": "",
           "description": "\uff1c\u5f53\u8a72\u30b3\u30fc\u30c9\u306e\u30b3\u30fc\u30c9\u4f53\u7cfb\uff1e\n\u6841\u6570\uff1a\uff18\u6841\u3000\u2460-\u2461\u2462-\u2463\u2464\u2465\u2466\u2467\u3000\u3000\u3000\u3000\u3000\u3000\u3000\n\u610f\u5473\uff1a\u2460\u767b\u9332\u7a2e\u985e\u5225\u3000\u2461\u2462\u767b\u9332\u90e8\u5c40\u3000\u2463\u304b\u3089\u2467\u9023\u756a\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\n\u4ed6\u306e\u30b3\u30fc\u30c9\u306e\u5229\u7528\uff1a\u7121\u3057", 
           "format": "XLS",
           "tracking_summary": {"total": 0, "recent": 0},
           "mimetype_inner": null,
           "mimetype": null,
           "cache_url": null,
           "name": "\u6709\u8cc7\u683c\u8005\u540d\u7c3f\uff0f\u5317\u6d77\u9053\u9632\u885b\u5c40\uff0f\u5de5\u4e8b",
           "language": "\u65e5\u672c\u8a9e",
           "created": "2013-12-17T00:35:55.865272",
           "url": "http://www.mod.go.jp/epco/dfaa/news/kensetsu/kouji/01_hokkaidou_kouji.xls",
           "webstore_url": null,
           "last_modified": "2013-04-01T00:00:00",
           "position": 0,
           "revision_id": "db0d2755-bfa3-47cc-abe2-3e470b599c6b",
           "resource_type": null,
           "supplementation": ""},
........

APIについてはThe CKAN APIを参照して下さい.また,各言語毎にCKAN API用のライブラリが用意されていることが多いですが,更新されずに古いAPIを使っていることもあるので注意してください.CKAN2.xは様々な機能が追加されているため,APIのバージョンが3になっています.バージョン1及び2は互換性のために残してありますが,CKAN2.xの新しい機能に対応していません.

今回はカタログの機能を中心に書きましたが,CKANには他にデータストアの機能や様々な拡張があります.よりCKANについて知りたい場合は,CKAN’s Documentationgithubのwikiを参照してください (英語).また,CKANについて日本語で情報共有するためにFacebookグループを用意しています.ここではCKANの日本語訳等の活動をしているので,ご興味のある方は参加して頂ければとおもいます.

今年は全然ブログ書く気力がなかったので最後に軽くまとめを書いておこうとおもいます.まだ書いていないことも色々ありますが,総じて今年はオープンデータ・オープンガバメントが日本でも花開きそうな一年でした.

LODチャレンジJapan

オープンデータのコンテストとして,昨年度LODチャレンジ Japan 2011を開催しました.一委員として,主にチャレンジデーの運営等を担当していました.震災後から活動のお手伝いをしているsaveMLAKについて,オープンデータとして整備したので応募したところデータセット部門 最優秀賞を頂きました.これは私個人というよりsaveMLAKコミュニティ全体が評価されたということだとおもいます.

LODチャレンジは今年度も絶賛募集中です.応募〆切は2013年1月31日なので興味のある方は是非応募をご検討下さい.

DBpedia Japanese

長年日本のLinked Data業界的に懸念だった”日本語のハブがない”問題を解決するために,DBpediaの日本語版であるDBpedia Japaneseを立ち上げました.DBpediaはWikipediaのダンプデータを変換してLODとして再公開するコミュニティプロジェクトです.それの日本語Wikipedia分を担当しています.

DBpedia Japaneseまだ発展途上で,WikipediaのテンプレートやテーブルをDBpedia の語彙 (DBpedia OntologyやFOAF等)に対応付ける作業を進める必要があります.現時点でのマッピング状況はMapping Statistics for jaで見ることができます.
もしこの作業に興味のある方は http://lod.ac/wiki/DBpedia_Mappings を読んでいただければとおもいます.

特定非営利活動法人リンクト・オープンデータ・イニシアティブ

Linked Data / Open Dataの普及,利活用を推進していくためにNPO法人
今年4月に申請,8月に設立しました.社会的貢献として,主に技術面から日本のオープンデータ,オープンガバメント推進の手助けをしていく予定です.

すでに福井県鯖江市と技術面での共同作業をしていますし,関係者が省庁や地方自治体のオープンデータ・オープンガバメント関連委員会の委員を勤めたりしているなど,様々な活動を開始しています.今まで福井に行ったことなかったのに今年鯖江に4回も行く事になるとは去年の段階では想像していませんでした...

CKAN

GLOCOM主催のオープンデータ活用アイデアソンがきっかけで,CKANの日本語化プロジェクトをスタートしました.CKANはデータポータルサイトのFLOSSで,データカタログやデータストア,API等の機能を持っています.大分本家にフィードバックされているのですがまだまだ足りない作業もありますし,今後は日本語化だけではなくてCKAN自体にコミットして行くことが望まれるかなと.

この手のソフトウェアでは,他にOGPLがFLOSSになりました.SocrataもFLOSSになる予定らしいです.そんな中CKANを個人的に推している理由は,これがいくつかの意味でLinked Dataのプラットフォームでもあるからです.

CKANで入力されたカタログデータは実はLinked Dataとして公開されています.例えばブルガリア政府の支出についてのデータ.また,LOD Cloudに載せてもらうための手続きは,CKANで構築されたサイトthe Data Hub決められた情報を追加することです.

CKANについてはいずれまとまった文章を書くつもりです.

生物学関係

昨年から生物種名のLinked Dataについてあれこれやってきました.LODチャレンジ2011にLODAC BDLSを出し,それをベースにLODAC Speciesという種名のLinked Dataを構築しました.生物種に関するデータのハブになることを目指しています.また,これを利用した検索拡張のデモ (1, 2)とかも作りました.

生物学は分散データの統合プラットフォームとしてLinked DataやSPARQLの採用が進んでいる分野です.私もBiohackathon等様々なイベントに参加させて頂いて大変刺激になりました.

mmmap: Yet Another 学会支援システム

奈良で開催されたACM Multimedia 2012JIST2012用のスケジュール等をLinked Dataのアプリケーションとして作成しました.

Evernote APIの連載

技術評論社で昨年からEvernote APIについての不定期連載を書いていました.しかし,上記のOpen Data/Linked Data関連の仕事が今年一気に来たので執筆時間が取れず,途中で連載終了にさせて頂きました.Evernoteはユーザとしては今後も使い続けていきます.

ニコニコ学会β

深く運営に関わっているわけではないですが,ニコニコ学会βは手伝える範囲でお手伝いしています.今年はマッドネスの投票サイト(第2回,第3回を作ったりニコニコ超会議でスタッフやったりしていました.

EPUB3仕様書翻訳手伝い

とあるきっかけによりEPUB3仕様書の翻訳の手伝い(主に校正)をしています.電子書籍関係は元々興味対象なので,EPUBが広まるきっかけになればと.