Java String 到 Neo4J Create Graph 语句

标签 java parsing neo4j compiler-construction jsqlparser

我必须根据查询结果创建一个图表。根据检索到的字符串(代表 SQL 语句的列)获得结果后,我需要生成相应的图形创建语句,如下所示:

检索到的列:

_fn1(filed1, filed2, filed3, '', filed4, filed5) AS new_alias_field

在 Neo4j 上创建图形时要生成的句子:

CREATE (new_alias_field:fields_from {column:'new_alias_field'})
CREATE (filed1:fields_to{column:'filed1'})
CREATE (filed2:fields_to{column:'filed2'})
CREATE (filed3:fields_to{column:'filed3'})
CREATE (filed4:fields_to{column:'filed4'})
CREATE (filed5:fields_to{column:'filed5'})

CREATE (fn1:function {name:'_fn1'})

  CREATE
  (filed1)-[:used_by {roles:['param']}]->(fn1),
  (filed2)-[:used_by {roles:['param']}]->(fn1),
  (filed3)-[:used_by {roles:['param']}]->(fn1),
  (filed4)-[:used_by {roles:['param']}]->(fn1),
  (filed4)-[:used_by {roles:['param']}]->(fn1)

CREATE
  (fn1)-[:as ]->(new_alias_field)

实现这一点的最佳方法是创建一个解析器?或者我应该使用像 JSqlParser 这样的东西,因为原始字符串有一些 SQL 语句? 我应该创建自己的解析器吗?还有其他可用的工具吗?

我正在尝试使用 JSqlParser,获取对象然后转换它们。仍在进行中。

要尝试 Neo4J 中的代码,运行创建脚本后,您可以使用以下命令查询节点:

Match(new_alias_field{column:'new_alias_field'}) return new_alias_field

你必须得到:

Result Graph

最佳答案

JSqlParser 是一个很棒的解析器,它使用访问者模式。我曾经使用下一个表达式来解析这个语句

select <<statement>> from dual

我发现的唯一限制是:尚不支持 MSQL 中使用的 IF 语句。

一旦我解析了这个语句,我就使用了 Spring 注释

@NodeEnityty

要创建所有实体并进行插入,例如 FieldsFrom 节点将如下所示:

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@NodeEntity
public class FieldsFrom {
   @Id
   @GeneratedValue
   private Long id;

   private String name;


   @Relationship(type= "USED_BY", direction = Relationship.INCOMING)
   private Set<FieldsTo> fieldsTo;

}

经过所有处理以及我使用的所有插入https://github.com/neo4j-contrib/neovis.js

关于Java String 到 Neo4J Create Graph 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52461941/

相关文章:

Java画带边框的线

java - 性能:实用程序类与 CDI bean

parsing - 如何使用 NLP 解析食谱成分?

php - 从以空格分隔的文本文件创建 PHP 数组

database - 如何在两个节点之间的 neo4j 中创建关系?

java - 常量 MissingServletRequestParameterException

java - 如何使用 JSTL 启动静态函数?如何读取字符串?

json - Node.js body-parser 不会解析 json 中带有方括号的输入名称

neo4j - ArangoDB - 如何将 neo4j 数据库导出导入到 ArangoDB

java - Spring 数据neo4j : How to append dynamic @Query?