RedisGraphの気になったのをもうちょい試す

はじめに

crssnky.hatenablog.jp

前回やり残したことをやります。
というのも、エッジに任意の属性が付けられるというもの。
RDFでは、許可されたものしか付けられないため試してみました。

本編

準備

RedisGraphのQuickStart通り、

docker run -p 6379:6379 -it --rm redislabs/redisgraph

を立ち上げておきます。

グラフ構築

GRAPH.QUERY imasparql "CREATE (:Idol {name:'如月千早'})-[:callTable {called:'風花さん'}]->(:Idol {name:'豊川風花'})"
GRAPH.QUERY imasparql "CREATE (:Idol {name:'如月千早'})-[:callTable {called:'春香'}]->(:Idol {name:'天海春香'})"

f:id:crssnky:20200812154945p:plain

千早さんの呼称表から"豊川風花""天海春香"を登録しています。それぞれのエッジには"どう呼んでいるか"をcalledで登録しています。

検索

GRAPH.QUERY imasparql "MATCH (caller:Idol)-[c:callTable]->(callee:Idol) WHERE caller.name='如月千早' RETURN caller.name,callee.name, c.called"

呼称表の中から千早さんのものを検索し、呼ぶ側・呼ばれる側・どう呼んでいるかを表示します。

caller.name
callee.name
c.called
如月千早
豊川風花
風花さん
如月千早
天海春香
春香

エッジの属性が取れました。

おわりに

ノードだろうがエッジだろうが好き勝手に属性を付けて良いみたいですね。
im@sparqlは全てをノードで表しているので、ある程度属性として持たせられればグラフは簡素にできそうです。(するかどうかは別)