g2cにANTLRを追加してApache AGEに対応させた

追記(2025.03.06):AGEFreighterに統合しました。

変換するとCypherにはなるんだけども、Apache AGEではこのまま使えない。

g2c -g 'g.V().has(“name”, “Alice”).as(“a”).V().has(“name”, “Bob”).as(“b”).select(“a”, “b”).by(“name”)'
Converted Cypher queries:

line 1, g.V().has("name", "Alice").as("a").V().has("name", "Bob").as("b").select("a", "b").by("name") ->
MATCH (a {name: "Alice"}), (b {name: "Bob"}) RETURN a.name AS a, b.name AS b

で、変換した結果のCypherクエリをANTLRで解析して、Cypherクエリ中に存在するItentifierを見つけ出して、Apache AGEが受け付けてくれる構文に書き換えるようにしてみた。つまり、AS句を追加する(実際の出力は改行されません)。

g2c -a -g 'g.V().has(“name”, “Alice”).as(“a”).V().has(“name”, “Bob”).as(“b”).select(“a”, “b”).by(“name”)'

Converted Cypher queries:

line 1, g.V().has("name", "Alice").as("a").V().has("name", "Bob").as("b").select("a", "b").by("name") ->
SELECT * 
  FROM cypher('GRAPH_NAME', 
  $$ MATCH (a {name: "Alice"}), (b {name: "Bob"}) 
  RETURN a.name AS a, b.name AS b 
  $$) 
  AS (a agtype, b agtype);

何でも変換できるというわけではないと思うが、まあ、ひとまず便利でしょ。

GitHub / PyPI

タイトルとURLをコピーしました