RedisGraphの気になったのをもうちょい試す
はじめに
前回やり残したことをやります。
というのも、エッジに任意の属性が付けられるというもの。
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:'天海春香'})"
千早さんの呼称表から"豊川風花""天海春香"を登録しています。それぞれのエッジには"どう呼んでいるか"を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は全てをノードで表しているので、ある程度属性として持たせられればグラフは簡素にできそうです。(するかどうかは別)