Database for AI - Grakn.aiことはじめ part 2 .1 - Oracle Virtual Boxで学ぶGrakn Academy

##はじめに
[Database for AI - Grakn.aiことはじめ part 2 - AzureにGrakn.aiをインストールしてグラフを愛でる](https://qiita.com/ShinHashitani/items/f98de1bec9dd657fc782)ではがっつり「Windowsでは動かない」と書いてしまったが、VMDKフォーマットで提供されているVMイメージが存在した。これでVMDKでフォーマットをサポートしているプラットフォームではWindowsであってもGraknを使うことができる。

今回はOracleのVirtual Boxを使って試してみる。

####**注意
このイメージはGrakn Academyと呼ばれるセルフチュートリアルシリーズ用に用意されており、その為チュートリアル用のスキーマやルール、データ等全て入った形で提供されている。プロダクション用とではなくあくまで触ってみるという目的での使用出来る。Dockerイメージ（こちらもベータ）は[ここから](https://hub.docker.com/r/graknlabs/grakn/)で取得可能。

##Oracle Virtual Boxにおけるセットアップ
#### Oracle Virtual Box
はWindows上でも動かす事の出来る[Linux仮想エンジン](http://www.oracle.com/technetwork/jp/server-storage/virtualbox/overview/index.html)で、[ここから](http://www.oracle.com/technetwork/server-storage/virtualbox/downloads/index.html)入手が可能。特に悩む要素は無いのでインストールについては割愛する。
#### Grakn Academy VM image
[Grakn Academy](https://grakn.ai/pages/academy/index.html)はGrakn Labs力作のチュートリアルシリーズで、このシリーズ専用にデータまで入ったVMイメージを元に進める形式となっている。内容としてはまだ少ないが、主要機能を一通り、かつ効率よく学ぶことが出来るのでお勧めしたい。（といいつつ私も先程終了）

Grakn Academy様のVMイメージは[ここ](http://grakn.ai/download-academy)から入手出来る。
####イメージのロード
Grakn Academyのサイトで提供されているパッケージはVMDKファイルとOVFファイルがセットになっている。ダウンロードし展開後、Virrtual Boxの**ファイル>仮想アプライアンスのインポート**から*GRAKN.ovf*を選択し実行。
![loading.PNG](https://qiita-image-store.s3.amazonaws.com/0/213933/8441409c-e13e-235e-6b2f-35e5bedec555.png)
インポート後、イメージが仮想マシンとして登録される。
####Graknの起動
イメージにはgraknというユーザー（パスワードも同じ）にて環境が構築されており、*/home/grakn*配下に全て入っている。特に機能制約が設けられている訳ではないので、VMが動いている限りは変更を加えたり、通常パッケージにもサンプルをインポートする事も可能。ログイン後、graknフォルダに移動後に

```
./grakn server start
```

で起動させることが出来る。

ただ、（問題がある訳では無いんだが）いつものGRAKN.AIアスキーアートが何故か表示されない。理由は不明。
![server_start.PNG](https://qiita-image-store.s3.amazonaws.com/0/213933/f39dcc90-454b-844b-52fa-a17dce3db14c.png)
##Grakn Academry VMパッケージ
####シナリオ
>Imagine you are company that gathers information about financial products issued by oil companies. You have your knowledge graph stored with GRAKN and you have employees who browse the internet for interesting articles and add them to the knowledge base.
>
>In 2016, a referendum in Italy has been held about the renovation of concessions on oil platforms within 18 kilometers from the coast. Had the referendum succeeded, this would have potentially affected the companies owning those platforms, and, indirectly, the financial products issued by those companies. So your employees start adding articles related to the referendum into the knowledge base.

ざっくり纏めると
>石油プラットフォーム及びこれら設備の海岸からの距離と、法令に関する資料と、これらプラットフォーム関連の金融商品の関連性を調べる。

うーん、まぁいいか…
#### エンティティ定義
VMの中に入っていたエンティティ定義は以下の通り：

```
define

bond sub entity
  has name
  has risk
  plays issued
  plays affected;

article sub entity
  has subject
  has uri
  has title
  plays information;

company sub entity
  has name
  plays issuer
  plays owner
  plays located;

oil-platform sub entity
  has distance-from-coast
  has platform-id
  plays owned
  plays located
  plays affected;

country sub entity
  has name
  plays location
  plays located;

region sub entity
  has name
  plays location;
```

####データ件数
Visualizerを立ち上げて実行した各エンティティならびにリレーション事のレコード件数は以下の通り：

```
match $x isa entity; aggregate count;
>> 311
match $x isa company; aggregate count;
>> 12
match $x isa oil-platform; aggregate count;
>> 100
match $x isa country; aggregate count;
>> 144
match $x isa region; aggregate count;
>> 8
match $x isa bond; aggregate count;
>> 45
match $x isa article; aggregate count;
>> 2

match $x isa owns; aggregate count;
>> 98
match $x isa issues; aggregate count;
>> 45
match $x isa located-in; aggregate count;
>> 242
```

###おわりに
Grakn Academyをやってみると、データまで投入された形で環境まで提供されているので非常に分かりやすい。自分で追加データ投入してさらに試したり、また通常パッケージのサンプルも同じように読み込めるので、ぱっと触ってみるにはAzureよりは随分気楽にスタートできる。おすすめ。