Windows上のCytoscapeにOracle Pluginを追加する手順

# はじめに
OracleはCytoscape（OSSのgraph visualization tool）用のPluginを提供しており、それを利用することで様々なフォーマットのファイル（プロパティ・グラフフラットファイルフォーマットやGraphML、JsonML）をプロパティ・グラフ形式でOracle Databaseにロードしたり、Oracle Database上に格納してあるプロパティ・グラフ（Oracleのグラフ・データベース機能）を描画したりすることができます。とても便利な機能もGUIで備わっており、Pagerankの高いノードをハイライトしたり、コミュニティを検出して描画することも容易にできます。

#CytoscapeにOracle Pluginを追加する手順
### 動作環境
- Windwos7
- JDK8（JDK8以上必須）
- Cytoscape 3.5.1（3.2.1以上必須）
- Oracle Database 18.3
- PGX 2.5.1（Oracle Databaseにデフォルトで同梱）

### Windows環境にCytoscapeをインストール
Cytoscapeを以下よりダウンロードします。
https://cytoscape.org/download.html

![image.png](https://qiita-image-store.s3.amazonaws.com/0/120705/541b0ede-5b13-f30f-653e-bc7638a90a72.png)
ダウンロードしたインストーラをダブルクリックしてインストールを開始します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/120705/43ed7b1e-be7a-004a-6817-0062bd0eceae.png)
基本的にWizardは「Next」のみで完了するので、他Wizardは省略します。

インストールが完了すると"Program Files"配下にフォルダが作成されます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/120705/a1dbf4f1-14a0-628f-5cb8-b33b0f720f26.png)
初期化のため本フォルダ配下の"Cytoscape.exe"にて起動します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/120705/2472fe01-b89b-1464-f756-0bf6ca4353d7.png)

以下のように起動しますが、起動後は"×"ボタンで閉じて構いません。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/120705/13af0f9b-04ee-7cb7-c938-62afacb51b44.png)

ユーザーディレクトリ配下に"CytoscapeConfiguration"が作成されていることを確認します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/120705/2757d829-2e77-043a-dad4-e689acea3eee.png)

### Oracle Plugin追加
以下よりPluginをダウンロードします。
https://www.oracle.com/technetwork/database/options/spatialandgraph/downloads/index-156999.html
私は"for database version 18c only, no patches applied (May 2018)"版を利用しています。

ダウンロードしたらCytoscapeのインストールフォルダに解凍します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/120705/a19b78de-7183-f10a-a6f0-a6359bcb1658.png)
Cytoscapeのインストールフォルダ配下に以下のようにフォルダが作成されていることを確認します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/120705/b7656ead-d942-83c7-31e9-fc085a4ccfd8.png)
"oracle_property_graph_cytoscape\jar"フォルダ配下にある以下のjarファイルをコピーします。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/120705/04e6ad93-0203-e87a-5bfb-30c20af77281.png)
コピーしたjarファイルをユーザーディレクトリ配下の以下フォルダに配置します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/120705/1808b69b-498c-ada3-48fb-68e683b1bb9b.png)
"oracle_property_graph_cytoscape\jar"フォルダ配下にある以下のpropertiesファイルをコピーします。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/120705/58fc5087-2032-12e9-7c8a-55ea1434e473.png)
コピーしたpropertiesファイルをユーザーディレクトリ配下の"CytoscapeConfiguration"直下に配置します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/120705/517c18ae-8542-eded-2c6e-b397288e584e.png)

Cytoscapeインストールフォルダ配下の"startCytoscape.bat"より起動して以下のようにProperty Graphを操作する項目が表示されていれば完了です。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/120705/e319e092-d02f-edf6-4ff2-9c61c2f36665.png)

### その他
上記リストより"Connect to Oracle Database"を選択すると以下のようにダイアログが表示されます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/120705/653402b6-188c-3f96-4df5-055639223efd.png)
このようにデフォルトで表示したい文字列がある場合は、ユーザーディレクトリ配下の"CytoscapeConfiguration"にコピーした"propertyGraph.properties"を適宜編集します。
以下、抜粋です。

```
# These attributes are used for RDBMS property graph
oracle.rdbms.jdbc-url=jdbc:oracle:thin:@192.168.56.xxx:1521/pdb1.oracle.com
oracle.rdbms.username=yima
oracle.rdbms.graph-name=CONNECTIONS

```

また、Cytoscapeからプロパティ・グラフに対して、Pagerank導出やPGQLを発行するにはPGXをサーバーモードで立ち上げておく必要がありますが、Oracle Database 18cをインストールするとPGXも"$ORACLE_HOME/md/property_graph/pgx"に同梱されており、以下で起動ができます。

```
nohup sh ./bin/start-server &
```

Clientからの接続のため、PGXディレクトリの"conf"配下の設定ファイルは以下のように変更してます。

```ruby:server.conf
{
  "port": 7007,
  "enable_tls": false,
  "enable_client_authentication": false
}
```


プロパティ・グラフフラットファイル形式のサンプルもデフォルトで"$ORACLE_HOME/md/property_graph/data"に準備されているので、是非遊んでみてください。