Giter VIP home page Giter VIP logo

front-end's Introduction

The Cypher Property Graph Query Language

This repository holds the specification of Cypher, a declarative property graph query language. Its purpose is to be central to the process of evolving the specification and standardisation of Cypher as a graph query language.

Overview of the process

Changes to openCypher are made through consensus in the openCypher Implementers Group (oCIG). The process for proposing changes, voting on proposals and measuring consensus is described in this set of slides.

Refer to the Cypher Improvement Process document for more details on CIPs, CIRs, their structure and lifecycle.

The structure of this repository

  • Cypher Improvement Proposals (CIP), /cip

    • Contains a list of accepted CIP documents.

  • Cypher grammar, /grammar

    • Contains the Cypher grammar specification, in XML source format.

    • A more readily consumable form of the grammar is generated as output from the build and can be found here:

      • Railroad diagrams

      • EBNF

      • ANTLR4 Grammar

  • Cypher Technology Compatibility Kit (TCK), /tck

    • Contains a set of Cucumber features that define Cypher behaviour, and documentation on how to use it.

  • openCypher developer tools, /tools

    • Contains code that tests the integrity of the repository, generates release artifacts, and aids implementers of openCypher.

Building

This repository uses a Maven build and supports cross building for Scala 2.12 and Scala 2.13:

  • For Scala 2.12, use mvn -U clean install -P scala-212

  • For Scala 2.13 use mvn -U clean install -P scala-213

Contact us

There are several ways to get in touch with the openCypher project and its participants:

  • Are you interested in implementing openCypher for your platform, but you have general questions and want to reach out to other community members with similar interests? Post to our Google Groups mailing list: https://groups.google.com/forum/#!forum/opencypher

  • For specific feature requests or bug reports, please open an issue on this repository.

  • Do you have a particular contribution in mind, and concrete ideas on how to implement them? Open a pull request.

© Copyright 2015-2017 Neo Technology, Inc.

Feedback

Any feedback you provide to Neo Technology, Inc. through this repository shall be deemed to be non-confidential. You grant Neo Technology, Inc. a perpetual, irrevocable, worldwide, royalty-free license to use, reproduce, modify, publicly perform, publicly display and distribute such feedback on an unrestricted basis.

License

The openCypher project is licensed under the Apache license 2.0.

front-end's People

Contributors

arnefischereit avatar asashour avatar blouerat avatar chrisvest avatar craigtaverner avatar darthmax avatar dunfluff avatar fickludd avatar gem-neo4j avatar glindroth avatar hannessandberg avatar hedengran avatar henriknyman avatar hunterness avatar inmost-light avatar linneaandersson avatar lojjs avatar loveleif avatar mats-sx avatar mnd999 avatar nadja-muller avatar oliviaytterbrink avatar petrjanouch avatar pontusmelke avatar pstutz avatar s1ck avatar saschapeukert avatar sherfert avatar systay avatar tobias-johansson avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

front-end's Issues

is CypherParser object thread safe?

Hi!,
I'm using the latest release of the front end (9.0.20190305) to parse cypher queries in a server
I would like to create a single CypherParser object at the beginning of the application and then parse queries requests using this single / shared parser object. Is this doable? or should I have to create a Parser every time I have to parse a new query?
Thanks.

Marcelo

Support sbt

I'll appreciate very much if there is an official support for sbt.

Tomcat warn about leaked thread-locals

Tomcat check some vars for leaks when undeploy app and warn some info about opencypher

24-Jun-2019 16:53:12.027 SEVERE [https-jsse-nio-8443-exec-10] org.apache.catalina.loader.WebappClassLoaderBase.checkThreadLocalMapForLeaks The web application [Octopus2] created a ThreadLocal with key of type [org.opencypher.v9_0.util.Rewritable$$anon$1] (value [org.opencypher.v9_0.util.Rewritable$$anon$1@3d748832]) and a value of type [scala.collection.mutable.HashMap] (value [Map(class org.opencypher.v9_0.expressions.And -> public org.opencypher.v9_0.expressions.And org.opencypher.v9_0.expressions.And.copy(org.opencypher.v9_0.expressions.Expression,org.opencypher.v9_0.expressions.Expression,org.opencypher.v9_0.util.InputPosition), class scala.collection.immutable.$colon$colon -> public scala.collection.immutable.$colon$colon scala.collection.immutable.$colon$colon.copy(java.lang.Object,scala.collection.immutable.List), class org.opencypher.v9_0.expressions.Pattern -> public org.opencypher.v9_0.expressions.Pattern org.opencypher.v9_0.expressions.Pattern.copy(scala.collection.Seq,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.ast.SingleQuery -> public org.opencypher.v9_0.ast.SingleQuery org.opencypher.v9_0.ast.SingleQuery.copy(scala.collection.Seq,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.expressions.RelationshipChain -> public org.opencypher.v9_0.expressions.RelationshipChain org.opencypher.v9_0.expressions.RelationshipChain.copy(org.opencypher.v9_0.expressions.PatternElement,org.opencypher.v9_0.expressions.RelationshipPattern,org.opencypher.v9_0.expressions.NodePattern,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.expressions.Property -> public org.opencypher.v9_0.expressions.Property org.opencypher.v9_0.expressions.Property.copy(org.opencypher.v9_0.expressions.Expression,org.opencypher.v9_0.expressions.PropertyKeyName,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.ast.Match -> public org.opencypher.v9_0.ast.Match org.opencypher.v9_0.ast.Match.copy(boolean,org.opencypher.v9_0.expressions.Pattern,scala.collection.Seq,scala.Option,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.ast.Where -> public org.opencypher.v9_0.ast.Where org.opencypher.v9_0.ast.Where.copy(org.opencypher.v9_0.expressions.Expression,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.ast.Query -> public org.opencypher.v9_0.ast.Query org.opencypher.v9_0.ast.Query.copy(scala.Option,org.opencypher.v9_0.ast.QueryPart,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.expressions.Ands -> public org.opencypher.v9_0.expressions.Ands org.opencypher.v9_0.expressions.Ands.copy(scala.collection.immutable.Set,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.expressions.Not -> public org.opencypher.v9_0.expressions.Not org.opencypher.v9_0.expressions.Not.copy(org.opencypher.v9_0.expressions.Expression,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.expressions.EveryPath -> public org.opencypher.v9_0.expressions.EveryPath org.opencypher.v9_0.expressions.EveryPath.copy(org.opencypher.v9_0.expressions.PatternElement), class scala.Some -> public scala.Some scala.Some.copy(java.lang.Object))]) but failed to remove it when the web application was stopped. Threads are going to be renewed over time to try and avoid a probable memory leak.
25-Jun-2019 12:58:36.291 SEVERE [http-nio-8080-exec-103] org.apache.catalina.loader.WebappClassLoaderBase.checkThreadLocalMapForLeaks The web application [Octopus2] created a ThreadLocal with key of type [org.opencypher.v9_0.util.Rewritable$$anon$1] (value [org.opencypher.v9_0.util.Rewritable$$anon$1@2e460cff]) and a value of type [scala.collection.mutable.HashMap] (value [Map(class org.opencypher.v9_0.expressions.EveryPath -> public org.opencypher.v9_0.expressions.EveryPath org.opencypher.v9_0.expressions.EveryPath.copy(org.opencypher.v9_0.expressions.PatternElement), class org.opencypher.v9_0.expressions.Ands -> public org.opencypher.v9_0.expressions.Ands org.opencypher.v9_0.expressions.Ands.copy(scala.collection.immutable.Set,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.expressions.Or -> public org.opencypher.v9_0.expressions.Or org.opencypher.v9_0.expressions.Or.copy(org.opencypher.v9_0.expressions.Expression,org.opencypher.v9_0.expressions.Expression,org.opencypher.v9_0.util.InputPosition), class scala.Tuple2 -> public scala.Tuple2 scala.Tuple2.copy(java.lang.Object,java.lang.Object), class org.opencypher.v9_0.expressions.Pattern -> public org.opencypher.v9_0.expressions.Pattern org.opencypher.v9_0.expressions.Pattern.copy(scala.collection.Seq,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.ast.Return -> public org.opencypher.v9_0.ast.Return org.opencypher.v9_0.ast.Return.copy(boolean,org.opencypher.v9_0.ast.ReturnItemsDef,scala.Option,scala.Option,scala.Option,scala.collection.immutable.Set,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.ast.SingleQuery -> public org.opencypher.v9_0.ast.SingleQuery org.opencypher.v9_0.ast.SingleQuery.copy(scala.collection.Seq,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.expressions.RelationshipChain -> public org.opencypher.v9_0.expressions.RelationshipChain org.opencypher.v9_0.expressions.RelationshipChain.copy(org.opencypher.v9_0.expressions.PatternElement,org.opencypher.v9_0.expressions.RelationshipPattern,org.opencypher.v9_0.expressions.NodePattern,org.opencypher.v9_0.util.InputPosition), class scala.Some -> public scala.Some scala.Some.copy(java.lang.Object), class org.opencypher.v9_0.ast.Match -> public org.opencypher.v9_0.ast.Match org.opencypher.v9_0.ast.Match.copy(boolean,org.opencypher.v9_0.expressions.Pattern,scala.collection.Seq,scala.Option,org.opencypher.v9_0.util.InputPosition), class scala.collection.immutable.$colon$colon -> public scala.collection.immutable.$colon$colon scala.collection.immutable.$colon$colon.copy(java.lang.Object,scala.collection.immutable.List), class org.opencypher.v9_0.ast.ReturnItems -> public org.opencypher.v9_0.ast.ReturnItems org.opencypher.v9_0.ast.ReturnItems.copy(boolean,scala.collection.Seq,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.ast.With -> public org.opencypher.v9_0.ast.With org.opencypher.v9_0.ast.With.copy(boolean,org.opencypher.v9_0.ast.ReturnItemsDef,scala.Option,scala.Option,scala.Option,scala.Option,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.expressions.CaseExpression -> public org.opencypher.v9_0.expressions.CaseExpression org.opencypher.v9_0.expressions.CaseExpression.copy(scala.Option,scala.collection.IndexedSeq,scala.Option,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.expressions.FunctionInvocation -> public org.opencypher.v9_0.expressions.FunctionInvocation org.opencypher.v9_0.expressions.FunctionInvocation.copy(org.opencypher.v9_0.expressions.Namespace,org.opencypher.v9_0.expressions.FunctionName,boolean,scala.collection.IndexedSeq,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.ast.Query -> public org.opencypher.v9_0.ast.Query org.opencypher.v9_0.ast.Query.copy(scala.Option,org.opencypher.v9_0.ast.QueryPart,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.ast.AliasedReturnItem -> public org.opencypher.v9_0.ast.AliasedReturnItem org.opencypher.v9_0.ast.AliasedReturnItem.copy(org.opencypher.v9_0.expressions.Expression,org.opencypher.v9_0.expressions.LogicalVariable,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.ast.Where -> public org.opencypher.v9_0.ast.Where org.opencypher.v9_0.ast.Where.copy(org.opencypher.v9_0.expressions.Expression,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.expressions.Not -> public org.opencypher.v9_0.expressions.Not org.opencypher.v9_0.expressions.Not.copy(org.opencypher.v9_0.expressions.Expression,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.expressions.Property -> public org.opencypher.v9_0.expressions.Property org.opencypher.v9_0.expressions.Property.copy(org.opencypher.v9_0.expressions.Expression,org.opencypher.v9_0.expressions.PropertyKeyName,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.expressions.And -> public org.opencypher.v9_0.expressions.And org.opencypher.v9_0.expressions.And.copy(org.opencypher.v9_0.expressions.Expression,org.opencypher.v9_0.expressions.Expression,org.opencypher.v9_0.util.InputPosition))]) but failed to remove it when the web application was stopped. Threads are going to be renewed over time to try and avoid a probable memory leak.
26-Jun-2019 10:58:46.544 SEVERE [http-nio-8080-exec-16] org.apache.catalina.loader.WebappClassLoaderBase.checkThreadLocalMapForLeaks The web application [Octopus2] created a ThreadLocal with key of type [org.opencypher.v9_0.util.Rewritable$$anon$1] (value [org.opencypher.v9_0.util.Rewritable$$anon$1@522894e1]) and a value of type [scala.collection.mutable.HashMap] (value [Map(class org.opencypher.v9_0.ast.SingleQuery -> public org.opencypher.v9_0.ast.SingleQuery org.opencypher.v9_0.ast.SingleQuery.copy(scala.collection.Seq,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.expressions.Ands -> public org.opencypher.v9_0.expressions.Ands org.opencypher.v9_0.expressions.Ands.copy(scala.collection.immutable.Set,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.ast.AliasedReturnItem -> public org.opencypher.v9_0.ast.AliasedReturnItem org.opencypher.v9_0.ast.AliasedReturnItem.copy(org.opencypher.v9_0.expressions.Expression,org.opencypher.v9_0.expressions.LogicalVariable,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.expressions.Not -> public org.opencypher.v9_0.expressions.Not org.opencypher.v9_0.expressions.Not.copy(org.opencypher.v9_0.expressions.Expression,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.expressions.EveryPath -> public org.opencypher.v9_0.expressions.EveryPath org.opencypher.v9_0.expressions.EveryPath.copy(org.opencypher.v9_0.expressions.PatternElement), class org.opencypher.v9_0.ast.Where -> public org.opencypher.v9_0.ast.Where org.opencypher.v9_0.ast.Where.copy(org.opencypher.v9_0.expressions.Expression,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.ast.ReturnItems -> public org.opencypher.v9_0.ast.ReturnItems org.opencypher.v9_0.ast.ReturnItems.copy(boolean,scala.collection.Seq,org.opencypher.v9_0.util.InputPosition), class scala.collection.immutable.$colon$colon -> public scala.collection.immutable.$colon$colon scala.collection.immutable.$colon$colon.copy(java.lang.Object,scala.collection.immutable.List), class org.opencypher.v9_0.expressions.CaseExpression -> public org.opencypher.v9_0.expressions.CaseExpression org.opencypher.v9_0.expressions.CaseExpression.copy(scala.Option,scala.collection.IndexedSeq,scala.Option,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.expressions.Property -> public org.opencypher.v9_0.expressions.Property org.opencypher.v9_0.expressions.Property.copy(org.opencypher.v9_0.expressions.Expression,org.opencypher.v9_0.expressions.PropertyKeyName,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.expressions.FunctionInvocation -> public org.opencypher.v9_0.expressions.FunctionInvocation org.opencypher.v9_0.expressions.FunctionInvocation.copy(org.opencypher.v9_0.expressions.Namespace,org.opencypher.v9_0.expressions.FunctionName,boolean,scala.collection.IndexedSeq,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.expressions.Pattern -> public org.opencypher.v9_0.expressions.Pattern org.opencypher.v9_0.expressions.Pattern.copy(scala.collection.Seq,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.ast.Match -> public org.opencypher.v9_0.ast.Match org.opencypher.v9_0.ast.Match.copy(boolean,org.opencypher.v9_0.expressions.Pattern,scala.collection.Seq,scala.Option,org.opencypher.v9_0.util.InputPosition), class scala.Tuple2 -> public scala.Tuple2 scala.Tuple2.copy(java.lang.Object,java.lang.Object), class org.opencypher.v9_0.ast.With -> public org.opencypher.v9_0.ast.With org.opencypher.v9_0.ast.With.copy(boolean,org.opencypher.v9_0.ast.ReturnItemsDef,scala.Option,scala.Option,scala.Option,scala.Option,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.ast.Return -> public org.opencypher.v9_0.ast.Return org.opencypher.v9_0.ast.Return.copy(boolean,org.opencypher.v9_0.ast.ReturnItemsDef,scala.Option,scala.Option,scala.Option,scala.collection.immutable.Set,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.expressions.RelationshipChain -> public org.opencypher.v9_0.expressions.RelationshipChain org.opencypher.v9_0.expressions.RelationshipChain.copy(org.opencypher.v9_0.expressions.PatternElement,org.opencypher.v9_0.expressions.RelationshipPattern,org.opencypher.v9_0.expressions.NodePattern,org.opencypher.v9_0.util.InputPosition), class scala.Some -> public scala.Some scala.Some.copy(java.lang.Object), class org.opencypher.v9_0.ast.Query -> public org.opencypher.v9_0.ast.Query org.opencypher.v9_0.ast.Query.copy(scala.Option,org.opencypher.v9_0.ast.QueryPart,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.expressions.And -> public org.opencypher.v9_0.expressions.And org.opencypher.v9_0.expressions.And.copy(org.opencypher.v9_0.expressions.Expression,org.opencypher.v9_0.expressions.Expression,org.opencypher.v9_0.util.InputPosition))]) but failed to remove it when the web application was stopped. Threads are going to be renewed over time to try and avoid a probable memory leak.
26-Jun-2019 10:58:46.550 SEVERE [http-nio-8080-exec-16] org.apache.catalina.loader.WebappClassLoaderBase.checkThreadLocalMapForLeaks The web application [Octopus2] created a ThreadLocal with key of type [org.opencypher.v9_0.util.Rewritable$$anon$1] (value [org.opencypher.v9_0.util.Rewritable$$anon$1@522894e1]) and a value of type [scala.collection.mutable.HashMap] (value [Map(class org.opencypher.v9_0.ast.SingleQuery -> public org.opencypher.v9_0.ast.SingleQuery org.opencypher.v9_0.ast.SingleQuery.copy(scala.collection.Seq,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.expressions.Ands -> public org.opencypher.v9_0.expressions.Ands org.opencypher.v9_0.expressions.Ands.copy(scala.collection.immutable.Set,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.ast.AliasedReturnItem -> public org.opencypher.v9_0.ast.AliasedReturnItem org.opencypher.v9_0.ast.AliasedReturnItem.copy(org.opencypher.v9_0.expressions.Expression,org.opencypher.v9_0.expressions.LogicalVariable,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.expressions.Not -> public org.opencypher.v9_0.expressions.Not org.opencypher.v9_0.expressions.Not.copy(org.opencypher.v9_0.expressions.Expression,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.expressions.EveryPath -> public org.opencypher.v9_0.expressions.EveryPath org.opencypher.v9_0.expressions.EveryPath.copy(org.opencypher.v9_0.expressions.PatternElement), class org.opencypher.v9_0.ast.Where -> public org.opencypher.v9_0.ast.Where org.opencypher.v9_0.ast.Where.copy(org.opencypher.v9_0.expressions.Expression,org.opencypher.v9_0.util.InputPosition), class scala.collection.immutable.$colon$colon -> public scala.collection.immutable.$colon$colon scala.collection.immutable.$colon$colon.copy(java.lang.Object,scala.collection.immutable.List), class org.opencypher.v9_0.ast.ReturnItems -> public org.opencypher.v9_0.ast.ReturnItems org.opencypher.v9_0.ast.ReturnItems.copy(boolean,scala.collection.Seq,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.expressions.CaseExpression -> public org.opencypher.v9_0.expressions.CaseExpression org.opencypher.v9_0.expressions.CaseExpression.copy(scala.Option,scala.collection.IndexedSeq,scala.Option,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.expressions.Property -> public org.opencypher.v9_0.expressions.Property org.opencypher.v9_0.expressions.Property.copy(org.opencypher.v9_0.expressions.Expression,org.opencypher.v9_0.expressions.PropertyKeyName,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.expressions.FunctionInvocation -> public org.opencypher.v9_0.expressions.FunctionInvocation org.opencypher.v9_0.expressions.FunctionInvocation.copy(org.opencypher.v9_0.expressions.Namespace,org.opencypher.v9_0.expressions.FunctionName,boolean,scala.collection.IndexedSeq,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.expressions.Pattern -> public org.opencypher.v9_0.expressions.Pattern org.opencypher.v9_0.expressions.Pattern.copy(scala.collection.Seq,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.ast.Match -> public org.opencypher.v9_0.ast.Match org.opencypher.v9_0.ast.Match.copy(boolean,org.opencypher.v9_0.expressions.Pattern,scala.collection.Seq,scala.Option,org.opencypher.v9_0.util.InputPosition), class scala.Tuple2 -> public scala.Tuple2 scala.Tuple2.copy(java.lang.Object,java.lang.Object), class org.opencypher.v9_0.ast.With -> public org.opencypher.v9_0.ast.With org.opencypher.v9_0.ast.With.copy(boolean,org.opencypher.v9_0.ast.ReturnItemsDef,scala.Option,scala.Option,scala.Option,scala.Option,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.ast.Return -> public org.opencypher.v9_0.ast.Return org.opencypher.v9_0.ast.Return.copy(boolean,org.opencypher.v9_0.ast.ReturnItemsDef,scala.Option,scala.Option,scala.Option,scala.collection.immutable.Set,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.expressions.RelationshipChain -> public org.opencypher.v9_0.expressions.RelationshipChain org.opencypher.v9_0.expressions.RelationshipChain.copy(org.opencypher.v9_0.expressions.PatternElement,org.opencypher.v9_0.expressions.RelationshipPattern,org.opencypher.v9_0.expressions.NodePattern,org.opencypher.v9_0.util.InputPosition), class scala.Some -> public scala.Some scala.Some.copy(java.lang.Object), class org.opencypher.v9_0.ast.Query -> public org.opencypher.v9_0.ast.Query org.opencypher.v9_0.ast.Query.copy(scala.Option,org.opencypher.v9_0.ast.QueryPart,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.expressions.And -> public org.opencypher.v9_0.expressions.And org.opencypher.v9_0.expressions.And.copy(org.opencypher.v9_0.expressions.Expression,org.opencypher.v9_0.expressions.Expression,org.opencypher.v9_0.util.InputPosition))]) but failed to remove it when the web application was stopped. Threads are going to be renewed over time to try and avoid a probable memory leak.

Sample of code that works in application

CypherAst ast = CypherAst.parse(rewrittenCypher, normalizedParameters);

        Translator<String, GroovyPredicate> groovyTranslator =
            Translator.builder().gremlinGroovy()
                      .inlineParameters()
                      .enableCypherExtensions()
                      .enableMultipleLabels()
                      .build();

        String asGremlin = ast.buildTranslation(groovyTranslator);

        ReturnNormalizer returnNormalizer = ReturnNormalizer.create(ast.getReturnTypes());
        DefaultGraphTraversal g = new DefaultGraphTraversal(traversal.clone());
        Translator<GraphTraversal, P> translator =
            Translator.builder()
                      .traversal(g)
                      .enableCypherExtensions()
                      .enableMultipleLabels()
                      .build();

        try (Transaction tx = traversal.tx()) {
                final List<Result> collect = translatedTraversal.toStream()
                                                                .map(returnNormalizer::normalize)
                                                                .map(Result::new)
                                                                .collect(toList());
                tx.commit();
            }

about dependencies

When I run this project, there is no CharStream, token. And then I add a org.opencypher:cypher-javacc-parser-9.0.jar to the project. And still, there is some symbol that cannot be found. I do not know if I should add an extra dependency.
image

Prettifier does not support UNION clause

Any query with union clause can't be prettified

MATCH (n:Actor)
RETURN n.name AS name
UNION ALL MATCH (n:Movie)
RETURN n.title AS name
scala.MatchError: Query(None,UnionDistinct(SingleQuery(List(Match(... (of class org.opencypher.v9_0.ast.Query)

	at org.opencypher.v9_0.ast.prettifier.Prettifier.asString(Prettifier.scala:22)

Possible solutions

case class Prettifier(mkStringOf: ExpressionStringifier) {
  def asString(statement: Statement): String = statement match {
    case Query(_, SingleQuery(clauses)) =>
      clauses.map(dispatch).mkString(NL)
    case Query(_, union : UnionDistinct) =>
      union.unionedQueries.map(q => q.clauses.map(dispatch).mkString(NL)).mkString(NL + "UNION" + NL)
    case Query(_, union : UnionAll) =>
      union.unionedQueries.map(q => q.clauses.map(dispatch).mkString(NL)).mkString(NL + "UNION ALL" + NL)
  }

get error: Expected none but found UnaliasedReturnItem

val pipeline = Parsing andThen SemanticAnalysis(warn = false)
val query = "match (n)-[knows]->(m) where m.age>35 return n.name"
val startState = InitialState(query, None, NoPlannerName, Map())

val context = new ErrorCollectingContext()
val r = pipeline.transform(startState, context)

transform() will report an error: Expected none but found UnaliasedReturnItem
does it mean that I should write return n.name as name1?

do you provide any well-readable test cases of handling a Cypher query?

Document versioning scheme

There's a section in the README that talks about versioning, but omits version compatibility. Please document what versioning scheme are you following (SEMVER?), and compatibility guarantees that you're willing to make. Is 9.1 going to be binary compatible with 9.0 (drop-in replacement?)

any example to implement a Cypher execution engine?

hello, does front-end provide any example to implement a very simple Cypher execution engine?
i want to use front-end to enable my graphdb using Cypher as query language
but i have no idea how to start it
need your kind suggestions!

Cross published artifacts?

Assuming that org.opencypher on Maven really is the place to fetch artifacts, it is a bit frustrating that the artifacts are not cross-published. Artifacts appear to be built with Scala 2.12.7, but no JARS are published with the _2.12 suffix. Here's a quick visual way to spot this on Maven: notice how shapeless has a column for "Scala" but util-9.0 doesn't.

This is doubly problematic for Scala projects that want to use front-end:

  1. If possible, it would be nice to have artifacts cross-published for multiple Scala versions (I don't expect support for 2.10, 2.11, 2.12, 2.13, Scala.js, and Scala Native like Shapeless has, but perhaps 2.12 and 2.13?).

  2. At the very least, there should be artifacts published with the right _2.12 suffix. Without that, any Scala project using another Scala version depending on front-end will encounter confusing run time crashes.

Thanks!

Use official JavaCC parser plugin

ph-javacc-maven-plugin depends on ParserGeneratorCC which says:

This fork is not really actively maintained, except some severe problems arise

OOTB, ph-javacc-maven-plugin generates code differently than JavaCC 7.0.10. For example:

  1. The methods in the parser are generated with the static keyword, but they reference generic parameters from the class definition. This causes hundreds of compilation errors similar to the one below:
non-static type variable POS cannot be referenced from a static context
static final public List<StringPos<POS>> LabelOrRelTypes() throws ParseException {List<StringPos<POS>> labels = new ArrayList<>();

This is fixed by passing STATIC=false during code generation.

  1. Class CypherCharStream implements generated interface CharStream, but some of the methods differ in case. For example, Done is implemented in CypherCharStream as done, so, compilation fails. There are other differences where deprecated (but not removed) methods are not implemented.

CypherCharStream is manually modified to fix these errors.

Why use a plugin that depends on one person and a unmaintained codebase?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.