Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

簡単にグラフデータを作ってPGXにロードする方法

74 views

Published on

Oracle PGXユーザ勉強会#9
https://pgx.connpass.com/event/85074/

Published in: Technology
  • Be the first to comment

  • Be the first to like this

簡単にグラフデータを作ってPGXにロードする方法

  1. 1. 簡単にグラフデータを作って PGX に ロードする方法 2018/08/02 PGXユーザ勉強会#9 ライフマティックス株式会社 松本翔太
  2. 2. グラフをパッとPGXにロードしたい! 例えばプログラミング言語の好みを表す二部グラフ 人 の 集 合 言 語 の 集 合
  3. 3. Taro,age,2,,50, Taro,name,1,TaroYamada,, Taro,gender,1,male,, Taro,weight,2,,65, Taro,type,1,person,, Hanako,name,1,HanakoSuzuki,, ... 通常のPGXへのデータのロード方法 JSON (プロパティの列挙) { "vertex_uri_list": [ "language.pgx.nodes" ], "edge_uri_list": [ "language.pgx.edges" ], "format": "flat_file", ... Edge & Vertex Files Taro,age,2,,50, Taro,name,1,TaroYamada,, Taro,gender,1,male,, Taro,weight,2,,65, Taro,type,1,person,, Hanako,name,1,HanakoSuzuki,, ... ロードしたいグラフ 高速!記述
  4. 4. Taro,age,2,,50, Taro,name,1,TaroYamada,, Taro,gender,1,male,, Taro,weight,2,,65, Taro,type,1,person,, Hanako,name,1,HanakoSuzuki,, ... 通常のPGXへのデータのロード方法 JSON (プロパティの列挙) { "vertex_uri_list": [ "language.pgx.nodes" ], "edge_uri_list": [ "language.pgx.edges" ], "format": "flat_file", ... Edge & Vertex Files Taro,age,2,,50, Taro,name,1,TaroYamada,, Taro,gender,1,male,, Taro,weight,2,,65, Taro,type,1,person,, Hanako,name,1,HanakoSuzuki,, ... ロードしたいグラフ 高速!変換 高速!だけど 記述がちょっと大変・・・
  5. 5. Taro,age,2,,50, Taro,name,1,TaroYamada,, Taro,gender,1,male,, Taro,weight,2,,65, Taro,type,1,person,, Hanako,name,1,HanakoSuzuki,, ... PGを経由したデータのロード方法 Json { "vertex_uri_list": [ "language.pgx.nodes" ], "edge_uri_list": [ "language.pgx.edges" ], "format": "flat_file", ... Edge & Vertex Files Taro,age,2,,50, Taro,name,1,TaroYamada,, Taro,gender,1,male,, Taro,weight,2,,65, Taro,type,1,person,, Hanako,name,1,HanakoSuzuki,, ... ロードしたいグラフ 高速!変換 #NODES Taro :person name:"TaroYamada"... Hanako :person name:"HanakoSuzuki" ... gender:"female" Shota :person name:"ShotaMatsumoto" ... C :language since:1972 LISP :language since:1958 JavaScript :language since:1995 ... PG 記述の楽な PGフォーマット pg2pgx
  6. 6. PGフォーマット <src_node_id> <dst_node_id> :<label> <prop1>:<value1> <prop2>:<value2> ... 書きやすさと読みやすさを重視したグラフ記述フォーマット  ノードもエッジもプロパティもすべて1つのファイルに統一  各ノードやエッジの定義はすべて1行ずつで完結 <node_id> :<label> <prop1>:<value1> <prop2>:<value2> ... ノードの定義 エッジの定義
  7. 7. PGの例 # NODES Taro :person name:"TaroYamada" age:50 gender:"male" weight:65 Hanako :person name:"HanakoSuzuki" age:20 gender:"female" Shota :person name:"ShotaMatsumoto" age:29 gender:"male" weight:"70" C :language since:1972 LISP :language since:1958 JavaScript :language since:1995 # EDGES Taro C :likes score:10 Taro LISP :likes score:20 Taro JavaScript :likes score:0 Hanako C :likes score:10 Hanako JavaScript :likes score:20 Shota C :likes score:10 Shota LISP :likes score:10 Shota JavaScript :likes score:10
  8. 8. インストール方法(要 Git & Node.js) $ git clone https://github.com/g2gml/pg.git $ npm install $ npm link まずはGithubからクローン npmで使用準備 これでpg2pgxコマンドが使用可能に! $ pg2pgx <input_pg> <output_prefix>
  9. 9. 実際に使ってみる $ pg2pgx examples/likes_languages.pg likes_languages "likes_languages.pgx.nodes" has been created. "likes_languages.pgx.edges" has been created. "likes_languages.pgx.json" has been created. pg2pgx コマンドでPGXにロードするファイルを生成 $ pgx ... pgx> G = session.readGraphWithProperties("likes_languages.pgx.json") ==> PgxGraph[name=likes_languages.pgx,N=6,E=8,created=1533196847074 PGXシェルを立ち上げてロード! ロード成功!
  10. 10. 他にも $ pg2aws examples/likes_languages.pg likes_languages $ pg2neo examples/likes_languages.pg likes_languages PG を Amazon Neptune や Neo4J用 のフォーマットに変換 Graphviz 用のフォーマットに変換して簡単に画像化 どうぞお試しあれ $ pg2dot examples/likes_languages.pg likes_languages $ dot -Tpng likes_languages.dot > like_languages.png $ open like_languages.png

×