Я пытаюсь найти конструктор запросов для языка запросов Neo4j Cypher, в идеале используя свободный API. Я многого не нашел и решил потратить некоторое время на создание одного.Neo4j Cypher Query Builder
Результат до сих пор является плавным построителем запросов API для спецификации Cypher 1.9.
Я хотел использовать StackOverflow, чтобы начать обсуждение и посмотреть, что представляют собой мысли, прежде чем я выпущу код.
Это демонстрационный запрос, который вы хотите отправить в Neo4j с помощью Cypher.
Показать все люди, которые знают Джон, кто знает инженеров-программистов в Google (код компании Google считается 12345). Сила отношений между Джоном и людьми, которые связывают его с сотрудниками Google, должна составлять не менее 3 (при диапазоне от 1 до 5). Верните все связи Джона и людей, которых они знают в Google, включая отношения между этими людьми. Сортируйте результаты по именам соединений Джона в порядке возрастания, а затем по силе отношения в порядке убывания.
Использование Fluent-Cypher:
Cypher
.on(Node.named("john").with(Index.named("PERSON_NAMES").match(Key.named("name").is("John"))))
.on(Node.named("google").with(Id.is(12345)))
.match(Connection.named("rel1").andType("KNOWS").between("john").and("middle"))
.match(Connection.named("rel2").andType("KNOWS").between("middle").and("googleEmployee"))
.match(Connection.withType("WORKS_AT").from("googleEmployee").to("google"))
.where(Are.allOfTheseTrue(Column.named("rel1.STRENGTH").isGreaterThanOrEqualTo(3)
.and(Column.named("googleEmployee.TITLE").isEqualTo("Software Engineer"))))
.returns(Columns.named("rel1", "middle", "rel2", "googleEmployee"))
.orderBy(Asc.column("middle.NAME"), Desc.column("rel1.STRENGTH"))
, который дает следующий запрос:
START john=node:PERSON_NAMES(name='John'),google=node(12345) MATCH john-[rel1:KNOWS]-middle,middle-[rel2:KNOWS]-googleEmployee,googleEmployee-[:WORKS_AT]->google WHERE ((rel1.STRENGTH >= '3' AND googleEmployee.TITLE = 'Software Engineer')) RETURN rel1,middle,rel2,googleEmployee ORDER BY middle.NAME ASC,rel1.STRENGTH DESC
В чем вопрос? –
Это скорее открытый вопрос, предназначенный для получения отзывов и предложений по свободному API-интерфейсу cypher. – sebastij
Вы видели (для java) https: // github.com/neo4j/cypher-dsl –