-
Notifications
You must be signed in to change notification settings - Fork 45
Gremlin implementations
Cypher for Gremlin is tested on following Gremlin implementations:
- With Gremlin Extensions for Cypher Support
- Without extensions
Click to view data
Each Gremlin implementation has its own specifics, supported features and limitations. Refer to excluded categories in test suites and SpecificsTest to get overview what is supported for each implementation. Each category has subcategories with description and examples.
Instructions for running integration tests are described in testware package.
⚠ Note that for cloud databases Neptune and CosmosDB test results may differ (and were previously found to differ) depending on the time of the execution. This might be related to internal database changes.
For some implementations, flavor needs to be configured to adapt the query for system specifics and apply workarounds for target system limitations. See flavor configuration for client and console.
Most frequently used flavors are:
-
TranslatorFlavor.gremlinServer
(default) -
TranslatorFlavor.gremlinServer33x
for TinkerPop <3.4.0 without steps introduced in TinkerPop 3.4.0 TranslatorFlavor.cosmosDb
TranslatorFlavor.neptune
- see all
Tests are executed on TinkerGraph with Extensions to Gremlin to enable full support for Cypher functionality
- Integration tests
- In addition to integration tests, openCypher TCK is executed for this implementation. See Language Support for details
Tests are executed on TinkerGraph
- Integration tests
- In addition to integration tests, openCypher TCK is executed for this implementation. See Language Support for details
⚠ Note that compatible version of Cypher for Gremlin required for different JanusGraph releases.
JanusGraph 0.4.0 uses Scala 2.11, however since 1.0.1 Cypher for Gremlin uses Scala 2.12. To address this:
- Use Cypher for Gremlin
1.0.0
- Use Cypher for Gremlin latest version, and remove Scala 2.11 from JanusGraph
rm /path/to/janusgraph/lib/*scala*
. This will break JanusGraph Spark capabilities, use this approach only if you don't use Spark.
Tests are executed on JanusGraph 0.4.0, with BerkeleyJE Storage.
- Gremlin Server Cypher Plugin installed
- TCK modified to avoid issues with schema restricting data type variations between properties of the same name
- TCK modified to avoid usage of reserved words like
Label
andkey
- ArrayListSerializer enabled to support collections if properties.
- TCK Predefined Procedures Plugin installed to test support of User-defined procedures
- See specifics description
- Integration tests
Although using Cypher for Gremlin on Neo4j does not make much sense from user perspective (Neo4j supports Cypher natively), Neo4j-Gremlin is TinkerPop reference implementation so it makes sense for executing integration tests.
- Gremlin Server Cypher Plugin installed
- TCK Predefined Procedures Plugin installed to test support of User-defined procedures
Tests are executed on Amazon Neptune
- Gremlin Extensions for Cypher are not supported
- See specifics description
- Gremlin query is adapted to database specifics with NeptuneFlavor
- Integration tests
Tests are executed on Cosmos DB using Gremlin API.
- Cypher support was requested by users, but according to official statements there are no plans to support Cypher
- Gremlin Extensions for Cypher are not supported
- Not all Gremlin steps are supported, some of supported steps have behavior different from reference implementation
- Gremlin query is adapted to database specifics with CosmosDbFlavor
- Integration tests