5つ星オープンデータソン作業手順

2016年8月に自治体のオープンデータを[5つ星オープンデータ](http://5stardata.info/ja/)・[Linked Data4原則](https://www.w3.org/DesignIssues/LinkedData.html)に準拠したLinked Open Data、へ変換するデータソン「[オープンデータをLOD化するデータソン in 高槻](http://peatix.com/event/190138)」を開催しました。

ここでは、そのデータソンの手順をまとめました。

# 5つ星オープンデータとは

Linked Open Data(LOD)は、

> + あらゆるデータの識別子としてURIを使用する。
> + 識別子には（URNや他のスキームではなく）HTTP URIを使用し、参照やアクセスを可能にする。
> + URIにアクセスされた際には有用な情報を標準的なフォーマット（RDFなど）で提供する。
> + データには他の情報源における関連情報へのリンクを含め、ウェブ上の情報発見を支援する。  
([Wikipedia:Linked Open Data](http://ja.wikipedia.org/wiki/Linked_Open_Data)より引用)

の4つを満たしているものとされています。

この4つの原則([Linked Data4原則](https://www.w3.org/DesignIssues/LinkedData.html))を満たすデータは**[5つ星オープンデータ](http://5stardata.info/ja/)**とも呼ばれ、オープンデータの中でも最も良いオープンデータとされています。

![5つ星オープンデータ](http://5stardata.info/images/5-star-steps.png)

> ★：(どんな形式でも良いので) あなたのデータをオープンライセンスでWeb上に公開しましょう
> ★★：データを構造化データとして公開しましょう (例: 表のスキャン画像よりもExcel)
> ★★★：非独占の形式を使いましょう (例: ExcelよりもCSV)
> ★★★★：物事を示すのにURIを使いましょう，そうすることで他の人々があなたのデータにリンクすることができます
> ★★★★★：あなたのデータのコンテキストを提供するために他のデータへリンクしましょう

5つ星オープンデータソンでは、これらに準拠するため以下を満たすデータを作ります。

> 1. 既存のCSVデータをRDFデータに変換する
> 2. RDFデータ内のID(=URI)をWebブラウザで開くと、そのデータが閲覧できるようにする
> 3. RDFデータ内にWebブラウザでデータが閲覧可能な別のID(=URI)へのリンクを含める


# 利用ツール

「5つ星オープンデータソン」では、以下のツールを使いました。

<dl>
<dt>CSV形式のデータをRDFに変換する「CSV2LOD」</dt>
<dd>
<a href="http://lodosaka.jp/tool/CSV2LOD/" target="_blank">
http://lodosaka.jp/tool/CSV2LOD/
</a>
</dd>
</dl>

<dl>
<dt>
オープンデータに外部のLODへのリンクを追加する「なんでもリンク」
</dt>
<dd>
<a href="http://link.lodosaka.jp/" target="_blank">http://link.lodosaka.jp/</a>
</dd>
</dl>

<dl>
<dt>
DBpediaのようにLinked Open Data(LOD)を公開する「Simple LODI」
</dt>
<dd>
<a href="https://github.com/uedayou/simplelodi" target="_blank">https://github.com/uedayou/simplelodi</a>
</dd>
</dl>

※ CSV2LOD、なんでもリンクはGoogle Chromeで開くことをお勧めします。
※ CSV2LOD、なんでもリンクで作成したRDFデータは必ず文字エンコードを**UTF8**で保存してください。

# 5つ星オープンデータソンに必要な環境

5つ星オープンデータとして公開するには

+ PHP(5.4以上)が動くWebサーバ(PHPが利用可能なレンタルサーバで可)
+ 自分が管理するドメイン(レンタルサーバに既に割り当てられているサブドメインでも可)

が必要です。

高槻市で行ったデータソンでは、

+ data.lodosaka.jp ドメイン
+ [heteml](https://heteml.jp/)のレンタルサーバ

を準備しました。
[さくらインターネット](https://www.sakura.ad.jp/)のレンタルサーバでも動作確認をしています。

また、以下の説明では、data.lodosaka.jp の takatsuki ディレクトリから作成データを閲覧にするように設定します。

# データソン作業手順

高槻市データソンの具体的な作業手順です。
データソンでは、自治体(高槻市)が公開するCSVデータを5つ星オープンデータ(Linked Open Data)に変換する作業を行いました。

## CSVデータを確認

高槻市の公開するデータのサンプルとして、以下のデータを使いました。
<http://data.lodosaka.jp/takatsuki/takatsuki_sample.csv>
このCSVファイルをローカルに保存します。

次に、Google SheetsかExcelでCSVファイルを開きます。

※ Google Sheetsでは「File」->「Open」->「Upload」の手順で開くことができます。
※ Excelでは、「UTF-8」のファイルを開く際には，注意が必要です。

表として開いたら、形式に問題がないかを確認してください。

確認事項|
---
1行目が項目、2行目以降がデータ（値）になっているか？|
1行目の項目と2行目以降にずれがないか？|
不要な行がないか？|

## CSVデータを外のデータとリンク

5つ星オープンデータにするには

> ★★★★★：あなたのデータのコンテキストを提供するために他のデータへリンクしましょう

を満たす必要があります。これを簡単に満たすことができるツールが「[なんでもリンク](http://link.lodosaka.jp/)」です。**なんでもリンク**はDBpediaの同一データを簡単に探すことのできるWebサービスです。

なんでもリンクは以下のように使います。
(高槻市のサンプルデータの場合)

### 1. なんでもリンクを開く

<http://link.lodosaka.jp/> をWebブラウザで開いてください。

### 2. CSVデータ の「名称」に相当する列をコピー

Google Sheets やExcel等でCSVを開き、データの名称の列（サンプルデータでは「label」列）を項目名を**含めず**にコピーしてください。

![160822-03.jpg](https://qiita-image-store.s3.amazonaws.com/0/62575/1fe0aae3-3578-1216-1554-76e2a7be3920.jpeg)

### 3. なんでもリンクにデータをペースト  

コピーした内容を入力フォームに貼り付けてください。

![160822-04.jpg](https://qiita-image-store.s3.amazonaws.com/0/62575/5d0997ee-140f-5571-cab5-7facdb858e0a.jpeg)

### 4. DBpediaのデータを検索・ダウンロード

入力フォームにデータを貼り付けたら、「割当実行」ボタンを押します。検索結果が入力フォームの下にテーブルとして表示されます。「ダウンロード」ボタンを押すと、CSVファイルとして結果をダウンロードできます。

![160822-05.jpg](https://qiita-image-store.s3.amazonaws.com/0/62575/040efc76-3deb-1c27-1972-bb107cbe66ad.jpeg)


### 5. DBpediaへのリンクを元のCSVデータに反映

4でダウンロードした検索結果のCSVファイルをGoogle Sheets、Excel等で開き、最後の行をコピーします。

![160822-06.jpg](https://qiita-image-store.s3.amazonaws.com/0/62575/46c18e34-60c8-d798-2c2d-e93540a95b93.jpeg)

コピーした内容を、名称をコピーしたCSVデータの最後の列にコピーします。最後の列の項目名は「参照」としてください。

![160822-07.jpg](https://qiita-image-store.s3.amazonaws.com/0/62575/3fd1956e-4212-4158-af80-a87dd4ba5286.jpeg)

最後に、CSVデータを保存してください。
このデータをRDFへ変換します。

## CSVデータをRDFデータに変換

Linked Open Dataとして公開するには、CSVデータをRDFデータに変換する必要があります。
CSVをRDFに変換するツールはいくつかありますが、高槻市のデータソンでは**[CSV2LOD](http://lodosaka.jp/tool/CSV2LOD/)**を使いました。  
CSV2LODは以下の手順で使用します。

### 1. 元データ（CSV形式）を選択して読込

#### 1.1「ファイルを選択」ボタンを押してCSVファイルを選択

![160821-01.jpg](https://qiita-image-store.s3.amazonaws.com/0/62575/a22ad278-7a20-2254-5b74-3e0ecd28c51a.jpeg)

#### 1.2「CSVファイル読み込み・プレビュー」ボタンを押して正しく読み込めることを確認

![160821-02.jpg](https://qiita-image-store.s3.amazonaws.com/0/62575/89dd9d96-df31-f57f-47ab-d90a282137b1.jpeg)

### 2. 変換に必要な情報を入力  

#### 2.1.  URIに関する基本情報の入力

![160821-03.jpg](https://qiita-image-store.s3.amazonaws.com/0/62575/887be57c-b634-7540-c3ae-fe24e8675695.jpeg)

|設定|説明|
|---|---|
|ベースIRI|「`http://data.lodosaka.jp/takatsuki/ファイル名`」<br>とする（拡張子はつけない）<br>ファイル名は，練習では「作業者の名前（例：kozaki）」<br>例えば：「`http://data.lodosaka.jp/takatsuki/kozaki`」<br>オプションは「1つのファイルで公開(#)」を選択<br>※ **実際のベースIRIに使用するファイル名はデータを示す名前にしたほうが良いですが、<br>データソンでは複数の同じデータがアップロードされるので、作業者の名前としています。**|
|ライセンス|高槻市のオープンデータ(サンプルデータ)は，<br>すべてCC-BYで公開されているものなの，下記のように選択・入力する<br>クレジットで表示すべき名前：高槻市，作業者<br>ライセンスは，クリエイティブ・コモンズ（CC）の「CC-BY」|
 
#### 2.2. 利用するプロパティ（関係の名称）を指定

![160821-04.jpg](https://qiita-image-store.s3.amazonaws.com/0/62575/0e18ca86-bf17-f5ae-cb34-92fe16248e0c.jpeg)

|設定|説明|
|---|---|
|ID列|CSVファイル内で「一意のID」となる項目があれば，「ID列」として選択する。なければ「IDを自動付与」を選択する<br>|
|プロパティ|適切な語彙が推薦されていたら選択<br>サンプルデータを使っている場合は、下記の**サンプルデータでのプロパティ設定**に<br>従って選択・入力してください<br>それ以外の場合は、**プロパティの設定方法**を参照してください|

##### 2.2.1. サンプルデータでのプロパティ設定

|項目名|プロパティ名|
|---|---|
|名称 |rdfs:label |
|説明 |rdfs:comment |
|Webサイト |foaf:homepage |
|緯度 |geo:lat |
|経度 |geo:long |
|参照 |rdfs:seeAlso |

##### 2.2.2. プロパティの設定方法

「推薦に用いる語彙」に適切なものがあれば、選択します。なければ、語彙を利用する場合は「その他」の欄に入力します。

「推薦に用いる語彙」の一覧にあるprefix(rdfs:labelのような表記)が利用可能です。  
それ以外の場合は，語彙のURI(URL)として入力してください。

CSVの項目名を利用するときは「bp:項目名」を選択してください。
※ bp: は`{ベースIRI}/property#`を表すprefixで、URIは、`{ベースIRI}/property#{項目名}`になります。

データ型は，できれば適切なものを選択してください。

同じデータに複数のプロパティを選択することも可能です。複数の語彙に対応したいときに利用してください（例：共通語彙基盤＋Schema.org）

##### 2.2.3. よく使われる語彙の一覧

|サイト名|URL|
|---|---|
|Schema.org|http://schema.org/docs/schemas.html|
|Schema.org（日本語訳サイト）|http://schema-ja.appspot.com/|
|共通語彙基盤（IMI）|http://imi.ipa.go.jp/|
|Linked Open Vocabularies (LOV)|http://lov.okfn.org/dataset/lov/|
|DBPedia|http://mappings.dbpedia.org/index.php/Main_Page|
|Dublin Core|http://dublincore.org/documents/dcmi-terms/<br>解説： http://www.kanzaki.com/docs/sw/dublin-core.html|
|Friend of a Friend (FOAF)|http://xmlns.com/foaf/spec/<br>解説： http://www.kanzaki.com/docs/sw/foaf.html|

### 3. RDF変換用のテンプレートを生成

![160821-05.jpg](https://qiita-image-store.s3.amazonaws.com/0/62575/3b50fb50-f561-aae7-db6e-2d1ccc71a7bd.jpeg)

### 4. CSVをRDFに変換・RDFファイルをダウンロード

![160821-06.jpg](https://qiita-image-store.s3.amazonaws.com/0/62575/024976bb-50f8-ee6d-9671-2163aa111dd9.jpeg)

 変換結果は上記のように表示されます。  
「ファイル名」を入力し「RDFファイルのダウンロード」ボタンでRDFをダウンロードしてください。
※ 高槻市データソンでは、ファイル名は`{作業者名（練習時）}＋.ttl`としてもらいました。

Google Chrome以外はダウンロードできない場合があります。ダウンロードできないときは、コピー＆ペーストを利用してください。


## RDFデータをLinked DataとしてWebに公開

**重要**：Linked DataとしてWebに公開する前に、RDFファイルを文字エンコード**UTF8**で保存しなおしてください。

RDFデータをLinked Data化するために、[SimpleLODI](https://github.com/uedayou/simplelodi)を使います。このプログラムを使うと、作成したRDF(Turtle)データをHTMLやJSONなどさまざまなフォーマットでWeb上に公開することができます。

あらかじめ、SimpleLODIのページからZipファイルをダウンロードしておいてください。

![160823-01.jpg](https://qiita-image-store.s3.amazonaws.com/0/62575/ac3e7316-3d5d-f9b9-4c5a-7c9630260753.jpeg)

高槻市データソンでは，data.lodosaka.jp というドメインを用意しました。 
そのドメインでアクセスできるWebサーバの /takatsuki ディレクトリがSimpleLODIのルートディレクトリ(`index.php`や`SimpleLODI.php`がtakatsukiディレクトリにある)となるようにSimpleLODIのZipファイルを展開しました。

SimpleLODI では、dataディレクトリにRDFファイルを格納します。高槻市データソンの場合、/takatsuki/data ディレクトリにデータソンで作成したRDFファイルを入れます。

そうすると、

`http://data.lodosaka.jp/takatsuki/kozaki`
※ kozaki.ttl ファイルを/takatsuki/data ディレクトリにコピーした場合

でアクセスできます。

詳細は、SimpleLODIの[GitHub](https://github.com/uedayou/simplelodi)、または、Qiitaの[解説ページ](http://qiita.com/uedayou/items/d66b7c406f1f231347f5)を参照してください。

ここまでできれば、以下の5つ星オープンデータの要件を全て満たすことができます。

> ★：(どんな形式でも良いので) あなたのデータをオープンライセンスでWeb上に公開しましょう
> ★★：データを構造化データとして公開しましょう (例: 表のスキャン画像よりもExcel)
> ★★★：非独占の形式を使いましょう (例: ExcelよりもCSV)
> ★★★★：物事を示すのにURIを使いましょう，そうすることで他の人々があなたのデータにリンクすることができます
> ★★★★★：あなたのデータのコンテキストを提供するために他のデータへリンクしましょう

## 作成した5つ星オープンデータを閲覧

これまでの作業が完了すれば

`http://data.lodosaka.jp/takatsuki/拡張子なしファイル名`

※ kozaki.ttl をコピーした場合は`http://data.lodosaka.jp/takatsuki/kozaki`

をWebブラウザで閲覧可能です。
また、コンテントネゴシエーションでJSONやXMLなどさまざまなファイル形式でRDFデータがダウンロードも可能です。

作成したデータがLinked Dataとなっているかどうかは、Linked Data Browserを使えば確認できます。

<dl>
<dt>(Yet Another) Linked Data Browser</dt>
<dd>
<a href="http://www.kanzaki.com/works/2014/pub/ld-browser" target="_blank">http://www.kanzaki.com/works/2014/pub/ld-browser
</a>
</dd>
</dl>


![160822-02.jpg](https://qiita-image-store.s3.amazonaws.com/0/62575/7e1e5b0a-a911-c547-ee7b-6d8f044d9e0e.jpeg)

テキストフォームにURIを入力して送信ボタンを押してください。

![160822-01.jpg](https://qiita-image-store.s3.amazonaws.com/0/62575/7ef9458e-6a11-a340-42e8-1a8f687cf76d.jpeg)

このようなテーブルが表示され、作成したデータが閲覧できれば確認完了です。

## 注意

ここで扱うデータの文字コードは全て**UTF8**であることが前提です。
途中Shift_JIS等他の文字コードとなった場合は、必ず**UTF8**で再保存してください。

SimpleLODIでは、10KB以上のTurtleファイルを扱うと、表示に時間がかかることがあります。

Turtleファイルが10KBを超える場合は、1つのCSVファイルを複数に分割してからRDF変換をする(複数のRDFファイルを作成)か、RDF/XMLに変換して拡張子を.xml としてdataディレクトリにコピーしてください。

## 参考資料

当日の資料です。

<dl>
<dt>オープンデータをLOD化するデータソン in 高槻</dt>
<dd><a href="http://www.slideshare.net/KoujiKozaki/lod-in-65240942" target="_blank">http://www.slideshare.net/KoujiKozaki/lod-in-65240942</a><dd>
</dl>

高槻市ハッカソンは、LODチャレンジ関西支部の運営で開催しました。
また、アーバンデータチャレンジとの共催イベントでした。

LODチャレンジ関西支部のWebサイトです。

<dl>
<dt>LODハッカソン関西</dt>
<dd><a href="http://wp.lodosaka.jp/" target="_blank">http://wp.lodosaka.jp/</a></dd>
</dl>

LODチャレンジの公式サイトです。

<dl>
<dt>LODチャレンジ</dt>
<dd><a href="http://lodc.jp/" target="_blank">http://lodc.jp/</a></dd>
</dl>

アーバンデータチャレンジの公式サイト

<dl>
<dt>アーバンデータチャレンジ</dt>
<dd><a href="http://urbandata-challenge.jp/" target="_blank">http://urbandata-challenge.jp/</a></dd>
</dl>