You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by kr...@apache.org on 2022/01/07 21:42:02 UTC
[tinkerpop] branch TINKERPOP-2652 updated (ace74cd -> 0141808)
This is an automated email from the ASF dual-hosted git repository.
krlawrence pushed a change to branch TINKERPOP-2652
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git.
discard ace74cd Add TextP.regex to the CHANGELOG
discard 4875795 Add documentation for TextP.regex
discard 5837a3d Add dotnet Gherkin test
discard c8a27ce More improvements to regex Gherkin tests
discard 46d1ece Initial work on regex Gherkin scenarios
discard 8dfc78b Add regex to .Net and Javascript GLVs
discard 5bd866a Merge branch 'TINKERPOP-2652' of github.com:apache/tinkerpop into TINKERPOP-2652
discard 754951a Continue adding regex predicates to Python client
discard a972308 Add regex predicates to Python client
discard db7a886 Add simple grammar tests
discard ba13a94 Additional tests
discard c6d5228 Initial set of regex tests
discard da810e2 Add actual mappings for regex when used via Antlr
discard de489eb Add base class visitor methods for regex via grammar
discard a1ec4ad Add redex predicates to the Antlr grammar
discard c1dcb22 Initial changes for regex support. More to follow
add 07004bd TINKERPOP-2649 use long's to construct dates and timestamps for java
add 3aecee4 Merge branch 'pr-1501' into 3.5-dev
add 387c1d5 Updated changelog CTR
add e98be33 Merge branch '3.5-dev'
add 26ca3a8 TINKERPOP-2640 Removed deprecated enableAuditLog setting
add 964f72f Merge pull request #1490 from apache/TINKERPOP-2640
add 3812447 TINKERPOP-2639 Remove GryoLiteMessageSerializerV1d0
add abd8813 Merge pull request #1493 from apache/TINKERPOP-2639
add c2b4f2f TINKERPOP-2524 Supported more explicit numeric literals in grammar
add e3def5c Merge pull request #1491 from apache/TINKERPOP-2524
add 4d83e15 TINKERPOP-2611 Prevented null T values to addV() and property()
add 05ad95a Merge pull request #1492 from apache/TINKERPOP-2611
add 57f1fa8 TINKERPOP-2613 Improved behavior of V(null)
add 849aa95 Merge pull request #1497 from apache/TINKERPOP-2613
add af271f5 Improved null property removal test semantics
add f53d077 Merge branch '3.5-dev'
add a785515 Fixed possible NPE for Property hashcode CTR
add fb0ac00 Merge branch '3.5-dev'
add 306f8e0 Minor formatting fix CTR
add bb1c9a2 Merge branch '3.5-dev'
add 96ccc21 TINKERPOP-2626 Prevent premature close of traversal
add 162c171 Merge branch '3.4-dev' into 3.5-dev
add c43a074 Merge branch '3.5-dev'
add 79cdfe7 Implemented some gherkin tests that were "unsupported" at one point CTR
add 237a8f6 Put the main header at the top so it appears as an HTML title
add 3add7d8 TINKERPOP-2650 Removed deprecated gremlin-python step names
add f6b9790 Merge pull request #1503 from apache/TINKERPOP-2650
add f996c8d Added G.V() to provider/index lists
add f5ca289 TINKERPOP-2635 Improved consistency of by() behaviors
add 931b5b4 TINKERPOP-2635 Fixed ProductiveByStrategy application problem with Spark/Gryo
add 0c43ce0 Merge branch 'TINKERPOP-2635' into 3.5-dev
add f4f4ffe Merge branch '3.5-dev'
add 3baa84f TINKERPOP-2656 update python translator
add b138c20 Merge branch 'pr-1506' into 3.5-dev
add 736d0c9 Merge branch '3.5-dev'
add 7d6a2b1 TINKERPOP-2657 Removed GroovyTranslator from gremlin-groovy
add 55e2340 Merge pull request #1505 from apache/TINKERPOP-2657
add 5d19808 TINKERPOP-2659 Bumped to node v16
add 1f1c537 Merge pull request #1508 from apache/TINKERPOP-2659
add 55cef8c Added ProductiveByStrategy grammar handling
add 30772d2 Merge branch '3.5-dev'
add f6fd6a2 Regenerated python Gremlin corpus CTR
add ddf1a50 Merge branch '3.5-dev'
add d410ce6 Bumped gremlint nodejs version to match gremlin-javascript at v16 CTR
add 8c7a1a5 Bump to maven 3.8.x in docker image CTR
add 65e70e3 Merge branch '3.4-dev' into 3.5-dev
add 7bd34f3 Merge branch '3.5-dev'
add 3beea00 Update translator.js
add 52b0a91 TINKERPOP-2658 Fixed bug in array arg translation for gremlin-javascript
add 0d074f4 Merge branch 'TINKERPOP-2658' into 3.5-dev
add 2bf06b0 Merge branch '3.5-dev'
add b558a09 ProductiveByStrategy is similar to SubgraphStrategy and therefore shouldn't trigger the SparkStarBarrierInteceptor CTR
add 6beb7a3 Merge branch '3.5-dev'
add 9341a43 TINKERPOP-2660 Added back close message to drivers
add cf11a4c Merge branch '3.5-dev'
add dd859b8 Handled the close message in UnifiedChannelizer
add 25a9b14 Merge branch '3.5-dev'
add 5a2a735 TINKERPOP-2645 Made hasId(null) consistent with V(null)
add 07baeb6 Merge pull request #1511 from apache/TINKERPOP-2645
add ebcfdf3 fix: add missing comma in python example
add d0124f0 Merge branch '3.5-dev'
add 5db8aad Bump to Netty 4.1.72 CTR
add 459067c Merge branch '3.4-dev' into 3.5-dev
add 36463d2 Merge branch '3.5-dev'
add 08fab39 TINKERPOP-2635 Add fail() step
add cf95caa TINKERPOP-2635 filtering for unproductive by()
add 7037b00 Merge pull request #1514 from apache/TINKERPOP-2635
add 18bdf7d change aiohttp requirements due to vulnerability issue at 3.7.4
add 11f2b6e Merge branch 'pr-1519' into 3.5-dev
add 6f45069 Source: [1] Added transaction profile to pom.xml [2] Made DriverRemoteConnection latch parameters so they can be reused to create a subsequent session [3] Added logging throughout the driver [4] Added commit and rollback to DriverRemoteConnection [5] Added some logging to receive message [6] Added transaction support to RemoteConnection [7] Added bytecode support to Session processor [8] Fixed bug in aiohttp transport layer that popped up when it was not shutdown properl [...]
add dd796be [1] Fixed TEST_TRANSACTION environment variable [2] Enabling transaction tests in GitHub actions
add 2594cf5 [1] Added session support to string messages. This was unintentionally removed.
add d1e3abd Added submitAsync in Client and DriverRemoteConnection with deprecated message Fixed missing session close in Client Switched info to debug log for heavy spam messages Added gremlin-variant remote transaction documentation for gremlin-python Added release documentation for remote transactions in gremlin-python
add 5a0a835 Changed logic for disabling transactions within tests.
add fee9056 Merge branch 'pr-1515' into 3.5-dev
add 0dd3c0b Merge branch '3.5-dev'
add 1ec8e76 Added 3.6.0 name/logo CTR
add 07d22b0 Added python to dependabot CTR
add a8f59f2 Fixed dependabot path CTR
add 48986b3 Bumped junit in archetypes to match project version CTR
add 285a6eb Bumped maven and plugin versions CTR
add 86343f2 Bump several python dependencies
add 61558a7 Added logo to Upgrade docs for 3.6.0 CTR
add 958a0bb Added clarifying text to upgrade docs CTR
add 456bedc Fixed formatting in asciidoc CTR
add fa8f255 Handle close message in UnifiedHandler
add d43dbca Needed to send back a ack to the driver even though the close message is a no-op to the UnifiedHandler CTR
add fb56106 Bumped dependabot versions for gremlin-python
add 4b6713b Fixed some feature test ignores to prevent random test failures
add d2835bb Harden testing around driver integration test CTR
add cae6a96 Merge branch '3.5-dev'
add b51c97e Added transaction testing to Gremlin Server for CI CTR
add f6f7ddc Merge branch '3.4-dev' into 3.5-dev
add 2b932c6 Merge branch '3.5-dev'
add 9ab9433 Changed seconds to minutes for timeout - oops CTR
add 5f239f8 Merge branch '3.4-dev' into 3.5-dev
add 0e4bf4f Merge branch '3.5-dev'
add 039fc15 Fixed minor nits in changelog CTR
add 31d2669 Merge branch '3.5-dev'
add 34ab339 TINKERPOP-2663 Allowed for Vertex/ReferenceVertex in grammar
add 64b1b30 Merge pull request #1516 from apache/TINKERPOP-2663
add a65c01b Added an `AnonymizingTypeTranslator` for use with `GroovyTranslator` which strips PII (anonymizes any String, Numeric, Date, Timestamp, or UUID data).
add 070e168 Test case cleanup.
add 922c6e1 Test case cleanup.
add e7e2fd2 PR feedback
add a2d020e Merge branch '3.5-dev' into TINKERPOP-2666
add 4bf0a3f Merge branch '3.5-dev'
add d8e2794 TINKERPOP-2667 Allowed fold()/addAll to merge Map objects
add 014ba55 Merge branch 'TINKERPOP-2667' into 3.5-dev
add db8eb63 Merge branch '3.5-dev'
add e0412a6 Reduced resources consumed by gremlin server integration tests
add 84cfe8f Merge branch '3.4-dev' into 3.5-dev
add 366d5e4 Merge branch '3.5-dev'
add c0605b3 Minor fix to session test CTR
add c683977 Merge branch '3.5-dev'
add 8b0d2d1 TINKERPOP-2626 Added explicit closed state to DefaultTraversal
add 579a65e Merge branch '3.4-dev' into 3.5-dev
add 539d971 Merge branch '3.5-dev'
add b773ca3 Quieted the cucumber logging output a bit CTR
add 5e48db8 TINKERPOP-2670 Fixed javadoc on jdk11.
add d4bd5cc Merge branch '3.5-dev'
add 053132a Updated Tinkerpop Future Roadmap document for 3.6/3.7
add c969444 Merge pull request #1537 from bechbd/master
add 511539b Added user-friendly console message and fixed possible console remote leak
add c76df03 Minor fix to test CTR
add befc7c2 Merge branch '3.4-dev' into 3.5-dev
add 6e43bdb Merge branch '3.5-dev'
add a191930 TINKERPOP-2671 Added tx() support in gremlin-language
add d263a3b Merge branch 'TINKERPOP-2671' into 3.5-dev
add c2b72c8 Merge branch '3.5-dev'
add e9b4749 Minor fixes to future docs CTR
add 4859617 After #1534 the exceptions seemed to shift on the merge to 3.5.x
add 53503bf Merge branch '3.5-dev'
add af57b3e Minor fix to code example to get docs generating CTR
add f34d8ec Merge branch '3.5-dev'
new eeb584a Initial changes for regex support. More to follow
new f920fcf Add redex predicates to the Antlr grammar
new 6832a6b Add base class visitor methods for regex via grammar
new 3790207 Add actual mappings for regex when used via Antlr
new 01bf2a9 Initial set of regex tests
new d4f3a44 Additional tests
new 48d8513 Add simple grammar tests
new 7ec6bd4 Add regex predicates to Python client
new 213a291 Continue adding regex predicates to Python client
new 9020c3b Add regex to .Net and Javascript GLVs
new 051e0c7 Initial work on regex Gherkin scenarios
new b63f44e More improvements to regex Gherkin tests
new 70fd97a Add dotnet Gherkin test
new a1522a8 Add documentation for TextP.regex
new 0141808 Add TextP.regex to the CHANGELOG
This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version. This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:
* -- * -- B -- O -- O -- O (ace74cd)
\
N -- N -- N refs/heads/TINKERPOP-2652 (0141808)
You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.
Any revisions marked "omit" are not gone; other references still
refer to them. Any revisions marked "discard" are gone forever.
The 15 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
.github/dependabot.yml | 8 +
.github/workflows/build-test.yml | 26 +-
CHANGELOG.asciidoc | 40 +-
bin/generate-home.sh | 1 +
docker/build/Dockerfile.template | 2 +-
.../gremlin-server-integration-krb5.yaml | 1 -
.../gremlin-server-integration-secure.yaml | 1 -
.../gremlin-server/gremlin-server-integration.yaml | 1 -
docs/gremlint/package-lock.json | 11104 ++++++++++++++-----
docs/site/home/img/logos/gdotv-logo.png | Bin 0 -> 10917 bytes
.../home/img/logos/ibm-compose-janusgraph-logo.png | Bin 19024 -> 0 bytes
docs/site/home/img/logos/titan-logo.png | Bin 76305 -> 0 bytes
docs/site/home/index.html | 1 +
docs/site/home/providers.html | 40 +-
.../dev/developer/development-environment.asciidoc | 4 +-
docs/src/dev/developer/for-committers.asciidoc | 28 +-
docs/src/dev/developer/release.asciidoc | 1 +
docs/src/dev/future/index.asciidoc | 40 +-
docs/src/dev/provider/index.asciidoc | 2 +-
docs/src/reference/gremlin-applications.asciidoc | 1 -
docs/src/reference/gremlin-variants.asciidoc | 33 +-
docs/src/reference/the-traversal.asciidoc | 132 +-
docs/src/upgrade/release-3.5.x.asciidoc | 99 +-
docs/src/upgrade/release-3.6.x.asciidoc | 451 +-
docs/static/images/gremlin-victorian.png | Bin 0 -> 4188937 bytes
gremlin-annotations/pom.xml | 2 +-
.../src/main/resources/archetype-resources/pom.xml | 2 +-
.../src/main/resources/archetype-resources/pom.xml | 2 +-
.../src/main/resources/archetype-resources/pom.xml | 2 +-
gremlin-console/pom.xml | 8 +-
.../tinkerpop/gremlin/console/Console.groovy | 124 +-
.../gremlin/console/commands/RemoteCommand.groovy | 3 +-
.../console/jsr223/DriverGremlinPlugin.java | 2 -
.../console/jsr223/DriverRemoteAcceptor.java | 9 +
.../console/jsr223/DriverRemoteAcceptorTest.java | 12 +-
gremlin-core/pom.xml | 2 +-
.../tinkerpop/gremlin/jsr223/CoreImports.java | 2 +
.../tinkerpop/gremlin/jsr223/JavaTranslator.java | 2 +-
.../language/grammar/GenericLiteralVisitor.java | 62 +-
.../language/grammar/GremlinAntlrToJava.java | 9 +-
.../language/grammar/GremlinBaseVisitor.java | 40 +-
.../grammar/GremlinStringConstantsVisitor.java | 9 +-
.../language/grammar/StructureElementVisitor.java | 43 +
.../language/grammar/TraversalFunctionVisitor.java | 10 +-
.../language/grammar/TraversalMethodVisitor.java | 81 +-
.../grammar/TraversalPredicateVisitor.java | 20 +-
.../grammar/TraversalSourceSelfMethodVisitor.java | 16 +-
.../language/grammar/TraversalSourceTxVisitor.java | 61 +
.../language/grammar/TraversalStrategyVisitor.java | 11 +
.../gremlin/process/traversal/Failure.java | 101 +
.../gremlin/process/traversal/Operator.java | 2 +
.../tinkerpop/gremlin/process/traversal/Path.java | 6 +-
.../tinkerpop/gremlin/process/traversal/Step.java | 2 +-
.../gremlin/process/traversal/Traversal.java | 14 +-
.../gremlin/process/traversal/Traverser.java | 9 +
.../traversal/dsl/graph/GraphTraversal.java | 94 +-
.../traversal/dsl/graph/GraphTraversalSource.java | 25 +-
.../gremlin/process/traversal/dsl/graph/__.java | 14 +
.../traversal/lambda/AbstractLambdaTraversal.java | 9 +
.../traversal/lambda/ConstantTraversal.java | 8 +-
.../process/traversal/lambda/ValueTraversal.java | 71 +-
.../process/traversal/step/ByModulating.java | 7 +-
.../gremlin/process/traversal/step/Grouping.java | 13 +-
.../traversal/step/filter/DedupGlobalStep.java | 72 +-
.../traversal/step/filter/PathFilterStep.java | 17 +-
.../traversal/step/filter/RangeGlobalStep.java | 3 -
.../traversal/step/filter/SampleGlobalStep.java | 20 +-
.../traversal/step/filter/WherePredicateStep.java | 34 +-
.../process/traversal/step/map/FoldStep.java | 3 +-
.../process/traversal/step/map/GroupCountStep.java | 2 +-
.../process/traversal/step/map/GroupStep.java | 14 +-
.../process/traversal/step/map/MathStep.java | 29 +-
.../traversal/step/map/OrderGlobalStep.java | 15 +-
.../process/traversal/step/map/OrderLocalStep.java | 104 +-
.../process/traversal/step/map/PathStep.java | 44 +-
.../process/traversal/step/map/ProjectStep.java | 2 +-
.../traversal/step/map/PropertyMapStep.java | 13 +-
.../process/traversal/step/map/SelectOneStep.java | 7 +-
.../process/traversal/step/map/SelectStep.java | 12 +-
.../process/traversal/step/map/TreeStep.java | 12 +-
.../step/sideEffect/AggregateGlobalStep.java | 8 +-
.../step/sideEffect/AggregateLocalStep.java | 2 +-
.../traversal/step/sideEffect/FailStep.java | 87 +
.../traversal/step/sideEffect/SackValueStep.java | 18 +-
.../process/traversal/step/util/HasContainer.java | 51 +-
.../strategy/decoration/SubgraphStrategy.java | 3 +-
.../optimization/PathProcessorStrategy.java | 28 +-
.../optimization/ProductiveByStrategy.java | 192 +
.../translator/AnonymizingTypeTranslator.java | 175 +
.../traversal/translator/GroovyTranslator.java | 38 +-
.../traversal/translator/PythonTranslator.java | 66 +-
.../traverser/B_LP_NL_O_S_SE_SL_Traverser.java | 5 +
.../traverser/B_LP_O_S_SE_SL_Traverser.java | 1 -
.../traverser/B_NL_O_S_SE_SL_Traverser.java | 1 -
.../traversal/traverser/B_O_S_SE_SL_Traverser.java | 7 +
.../traverser/LP_NL_O_OB_P_S_SE_SL_Traverser.java | 6 +
.../traverser/LP_NL_O_OB_S_SE_SL_Traverser.java | 6 +
.../traverser/LP_O_OB_S_SE_SL_Traverser.java | 1 -
.../traverser/NL_O_OB_S_SE_SL_Traverser.java | 6 +
.../traverser/O_OB_S_SE_SL_Traverser.java | 9 +-
.../process/traversal/util/DefaultTraversal.java | 42 +-
.../process/traversal/util/TraversalHelper.java | 5 +-
.../process/traversal/util/TraversalProduct.java | 55 +
.../process/traversal/util/TraversalUtil.java | 137 +-
.../structure/io/graphson/GraphSONModule.java | 4 +
.../gremlin/structure/io/gryo/GryoVersion.java | 7 +-
.../gremlin/structure/util/CloseableIterator.java | 3 +-
.../gremlin/structure/util/ElementHelper.java | 6 +-
.../gremlin/util/function/ChainedComparator.java | 2 +
.../grammar/GeneralLiteralVisitorTest.java | 88 +-
.../grammar/StructureElementVisitorTest.java | 48 +
.../grammar/TraversalPredicateVisitorTest.java | 2 +-
.../grammar/TraversalSourceTxVisitorTest.java | 64 +
.../grammar/TraversalStrategyVisitorTest.java | 10 +-
.../gremlin/process/traversal/PathTest.java | 20 +
.../dsl/graph/GraphTraversalSourceTest.java | 14 +
.../traversal/dsl/graph/GraphTraversalTest.java | 25 +
.../traversal/lambda/ConstantTraversalTest.java | 48 +
.../traversal/lambda/ValueTraversalTest.java | 59 +-
.../optimization/PathProcessorStrategyTest.java | 10 +
.../optimization/ProductiveByStrategyTest.java | 236 +
.../translator/AnonymizingTypeTranslatorTest.java | 136 +
.../traversal/translator/GroovyTranslatorTest.java | 17 +-
.../translator/JavascriptTranslatorTest.java | 8 +-
.../traversal/translator/PythonTranslatorTest.java | 18 +-
.../traversal/util/TraversalExplanationTest.java | 3 +-
.../gremlin/structure/util/ElementHelperTest.java | 6 +
gremlin-dotnet/build/generate.groovy | 4 +
.../src/Gremlin.Net/Driver/Connection.cs | 13 +
gremlin-dotnet/src/Gremlin.Net/Driver/Tokens.cs | 1 -
.../Process/Traversal/GraphTraversal.cs | 38 +-
.../Process/Traversal/GraphTraversalSource.cs | 22 +-
.../Strategy/Optimization/ProductiveByStrategy.cs | 53 +
.../src/Gremlin.Net/Process/Traversal/__.cs | 16 +
.../Gherkin/CommonSteps.cs | 75 +-
.../Gherkin/GherkinTestRunner.cs | 7 +-
.../Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs | 122 +-
.../tinkerpop/gremlin/driver/Connection.java | 31 +
.../apache/tinkerpop/gremlin/driver/Tokens.java | 15 +
.../gremlin/driver/message/ResponseStatusCode.java | 11 +
.../driver/ser/GryoLiteMessageSerializerV1d0.java | 167 -
.../tinkerpop/gremlin/driver/ser/Serializers.java | 2 -
.../ser/GryoLiteMessageSerializerV1d0Test.java | 151 -
.../driver/ser/GryoMessageSerializerV1d0Test.java | 112 +-
gremlin-groovy/pom.xml | 4 +-
.../ast/VarAsBindingASTTransformation.groovy | 3 +
.../gremlin/groovy/loaders/StrategyLoader.groovy | 2 +
.../groovy/jsr223/GremlinGroovyScriptEngine.java | 5 +-
.../gremlin/groovy/jsr223/GroovyTranslator.java | 376 -
.../jsr223/GremlinGroovyScriptEngineTest.java | 2 +-
.../groovy/jsr223/GroovyTranslatorTest.java | 429 -
.../ParameterizedGroovyTranslatorProvider.java | 1 +
.../jsr223/ParameterizedGroovyTranslatorTest.java | 664 --
gremlin-javascript/build/generate.groovy | 7 +-
gremlin-javascript/pom.xml | 6 +-
.../gremlin-javascript/lib/driver/client.js | 4 +
.../lib/process/graph-traversal.js | 11 +
.../gremlin-javascript/lib/process/translator.js | 73 +-
.../lib/process/traversal-strategy.js | 11 +
.../gremlin-javascript/package-lock.json | 3240 +++++-
.../test/cucumber/feature-steps.js | 24 +-
.../gremlin-javascript/test/cucumber/gremlin.js | 123 +-
.../test/integration/traversal-test.js | 17 +-
.../gremlin-javascript/test/unit/client-test.js | 6 +-
.../test/unit/translator-test.js | 7 +
gremlin-language/pom.xml | 4 -
gremlin-language/src/main/antlr4/Gremlin.g4 | 39 +-
gremlin-python/build/generate.groovy | 3 +
gremlin-python/pom.xml | 126 +-
.../gremlin_python/driver/aiohttp/transport.py | 15 +-
.../main/python/gremlin_python/driver/client.py | 63 +-
.../driver/driver_remote_connection.py | 70 +-
.../main/python/gremlin_python/driver/protocol.py | 18 +-
.../gremlin_python/driver/remote_connection.py | 23 +-
.../python/gremlin_python/driver/serializer.py | 13 +-
.../gremlin_python/process/graph_traversal.py | 199 +-
.../python/gremlin_python/process/strategies.py | 5 +
.../python/gremlin_python/process/traversal.py | 18 +-
.../src/main/python/radish/feature_steps.py | 26 +-
gremlin-python/src/main/python/radish/gremlin.py | 297 +-
gremlin-python/src/main/python/setup.py | 16 +-
gremlin-python/src/main/python/tests/conftest.py | 35 +-
.../src/main/python/tests/driver/test_client.py | 10 +-
.../tests/driver/test_driver_remote_connection.py | 12 +-
.../src/main/python/tests/process/test_dsl.py | 4 +-
.../main/python/tests/process/test_translator.py | 16 +-
.../main/python/tests/process/test_traversal.py | 237 +-
gremlin-server/conf/neo4j-empty.properties | 6 +
.../tinkerpop/gremlin/server/GremlinServer.java | 35 +-
.../apache/tinkerpop/gremlin/server/Settings.java | 18 +-
.../gremlin/server/handler/AbstractSession.java | 39 +-
.../handler/HttpBasicAuthenticationHandler.java | 2 +-
.../server/handler/HttpGremlinEndpointHandler.java | 5 -
.../server/handler/SaslAuthenticationHandler.java | 5 +-
.../gremlin/server/handler/UnifiedHandler.java | 15 +-
.../gremlin/server/op/AbstractEvalOpProcessor.java | 30 +-
.../gremlin/server/op/AbstractOpProcessor.java | 9 +-
.../server/op/session/SessionOpProcessor.java | 78 +-
.../server/op/traversal/TraversalOpProcessor.java | 52 +-
.../driver/ClientConnectionIntegrateTest.java | 5 +-
.../driver/remote/AbstractRemoteGraphProvider.java | 8 +-
...emoteGraphGroovyTranslatorComputerProvider.java | 156 -
.../GryoRemoteGraphGroovyTranslatorProvider.java | 45 -
...teGraphGroovyTranslatorProcessComputerTest.java | 33 -
...teGraphGroovyTranslatorProcessStandardTest.java | 33 -
.../AbstractGremlinServerIntegrationTest.java | 25 +-
.../gremlin/server/GremlinDriverIntegrateTest.java | 96 +-
.../server/GremlinResultSetIntegrateTest.java | 7 -
...emlinServerAuditLogDeprecatedIntegrateTest.java | 371 -
.../server/GremlinServerHttpIntegrateTest.java | 6 +-
.../gremlin/server/GremlinServerIntegrateTest.java | 38 +-
.../server/GremlinServerSessionIntegrateTest.java | 25 +-
.../server/GremlinSessionTxIntegrateTest.java | 44 +
.../gremlin/server/gremlin-server-integration.yaml | 1 -
gremlin-test/features/filter/CyclicPath.feature | 14 +
gremlin-test/features/filter/Dedup.feature | 53 +-
gremlin-test/features/filter/Has.feature | 275 -
gremlin-test/features/filter/HasId.feature | 215 +
.../{map/Max.feature => filter/HasLabel.feature} | 149 +-
gremlin-test/features/filter/Sample.feature | 15 +
gremlin-test/features/filter/SimplePath.feature | 17 +
gremlin-test/features/filter/Where.feature | 13 +-
gremlin-test/features/map/AddVertex.feature | 10 -
gremlin-test/features/map/Fold.feature | 21 +
gremlin-test/features/map/Match.feature | 4 +
gremlin-test/features/map/Math.feature | 28 +
gremlin-test/features/map/Max.feature | 40 +
gremlin-test/features/map/Mean.feature | 44 +
gremlin-test/features/map/Min.feature | 40 +
gremlin-test/features/map/Order.feature | 248 +-
gremlin-test/features/map/Path.feature | 14 +
gremlin-test/features/map/Project.feature | 18 +
gremlin-test/features/map/Select.feature | 36 +
gremlin-test/features/map/Sum.feature | 45 +-
gremlin-test/features/map/ValueMap.feature | 18 +-
gremlin-test/features/map/Vertex.feature | 85 +
gremlin-test/features/semantics/Equality.feature | 156 +-
gremlin-test/features/sideEffect/Aggregate.feature | 105 +-
.../{map/Fold.feature => sideEffect/Fail.feature} | 41 +-
gremlin-test/features/sideEffect/Group.feature | 24 +-
.../features/sideEffect/GroupCount.feature | 24 +-
gremlin-test/features/sideEffect/Sack.feature | 14 +
gremlin-test/pom.xml | 10 +-
.../tinkerpop/gremlin/features/StepDefinition.java | 50 +-
.../process/traversal/step/filter/DedupTest.java | 3 +-
.../process/traversal/step/filter/SampleTest.java | 3 +-
.../process/traversal/step/filter/WhereTest.java | 4 +-
.../process/traversal/step/map/AddVertexTest.java | 29 +-
.../process/traversal/step/map/MaxTest.java | 2 -
.../process/traversal/step/map/MeanTest.java | 2 -
.../process/traversal/step/map/MinTest.java | 2 -
.../process/traversal/step/map/OrderTest.java | 2 +-
.../process/traversal/step/map/PathTest.java | 4 +-
.../process/traversal/step/map/ProjectTest.java | 37 +-
.../process/traversal/step/map/SelectTest.java | 2 +-
.../process/traversal/step/map/SumTest.java | 4 +-
.../traversal/step/sideEffect/AggregateTest.java | 37 +
.../traversal/step/sideEffect/GroupTest.java | 2 +-
.../traversal/step/sideEffect/TreeTest.java | 25 +
gremlint/package-lock.json | 6120 +++++++++-
gremlint/pom.xml | 4 +-
.../hadoop/HadoopGraphFeatureIntegrateTest.java | 2 +-
.../gremlin/neo4j/structure/Neo4jGraph.java | 16 +-
.../gremlin/neo4j/Neo4jGraphFeatureTest.java | 2 +-
pom.xml | 391 +-
.../interceptor/SparkStarBarrierInterceptor.java | 5 +-
.../spark/SparkGraphFeatureIntegrateTest.java | 4 +-
.../optimization/SparkInterceptorStrategyTest.java | 9 +-
.../gremlin/tinkergraph/structure/TinkerGraph.java | 2 +
.../TinkerGraphAllowNullFeatureTest.java | 2 +-
.../TinkerGraphComputerFeatureTest.java | 2 +-
.../tinkergraph/TinkerGraphFeatureTest.java | 2 +-
.../gremlin/tinkergraph/TinkerGraphWorld.java | 2 +-
.../TinkerGraphNoStrategyComputerProvider.java | 2 +
.../process/TinkerGraphNoStrategyProvider.java | 2 +
275 files changed, 25078 insertions(+), 6875 deletions(-)
create mode 100644 docs/site/home/img/logos/gdotv-logo.png
delete mode 100644 docs/site/home/img/logos/ibm-compose-janusgraph-logo.png
delete mode 100644 docs/site/home/img/logos/titan-logo.png
create mode 100644 docs/static/images/gremlin-victorian.png
create mode 100644 gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/StructureElementVisitor.java
create mode 100644 gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/TraversalSourceTxVisitor.java
create mode 100644 gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Failure.java
create mode 100644 gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/FailStep.java
create mode 100644 gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/ProductiveByStrategy.java
create mode 100644 gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/translator/AnonymizingTypeTranslator.java
create mode 100644 gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalProduct.java
create mode 100644 gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/language/grammar/StructureElementVisitorTest.java
create mode 100644 gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/language/grammar/TraversalSourceTxVisitorTest.java
create mode 100644 gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/lambda/ConstantTraversalTest.java
create mode 100644 gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/ProductiveByStrategyTest.java
create mode 100644 gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/translator/AnonymizingTypeTranslatorTest.java
create mode 100644 gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Optimization/ProductiveByStrategy.cs
delete mode 100644 gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/GryoLiteMessageSerializerV1d0.java
delete mode 100644 gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/GryoLiteMessageSerializerV1d0Test.java
delete mode 100644 gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GroovyTranslator.java
delete mode 100644 gremlin-groovy/src/test/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GroovyTranslatorTest.java
delete mode 100644 gremlin-groovy/src/test/java/org/apache/tinkerpop/gremlin/groovy/jsr223/ParameterizedGroovyTranslatorTest.java
delete mode 100644 gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GryoRemoteGraphGroovyTranslatorComputerProvider.java
delete mode 100644 gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GryoRemoteGraphGroovyTranslatorProvider.java
delete mode 100644 gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/groovy/jsr223/RemoteGraphGroovyTranslatorProcessComputerTest.java
delete mode 100644 gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/groovy/jsr223/RemoteGraphGroovyTranslatorProcessStandardTest.java
delete mode 100644 gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerAuditLogDeprecatedIntegrateTest.java
create mode 100644 gremlin-test/features/filter/HasId.feature
copy gremlin-test/features/{map/Max.feature => filter/HasLabel.feature} (51%)
copy gremlin-test/features/{map/Fold.feature => sideEffect/Fail.feature} (61%)
[tinkerpop] 08/15: Add regex predicates to Python client
Posted by kr...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
krlawrence pushed a commit to branch TINKERPOP-2652
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git
commit 7ec6bd48cc8cffdd85a61967e70441fb56e8d430
Author: Kelvin Lawrence <gf...@yahoo.com>
AuthorDate: Thu Nov 18 19:32:40 2021 -0600
Add regex predicates to Python client
---
.../src/main/python/gremlin_python/process/traversal.py | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/gremlin-python/src/main/python/gremlin_python/process/traversal.py b/gremlin-python/src/main/python/gremlin_python/process/traversal.py
index f7bd31d..f8bb83c 100644
--- a/gremlin-python/src/main/python/gremlin_python/process/traversal.py
+++ b/gremlin-python/src/main/python/gremlin_python/process/traversal.py
@@ -384,6 +384,14 @@ class TextP(P):
def startingWith(*args):
return TextP("startingWith", *args)
+ @staticmethod
+ def regex(*args):
+ return TextP("regex", *args)
+
+ @staticmethod
+ def notRegex(*args):
+ return TextP("notRegex", *args)
+
def __eq__(self, other):
return isinstance(other, self.__class__) and self.operator == other.operator and self.value == other.value and self.other == other.other
[tinkerpop] 06/15: Additional tests
Posted by kr...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
krlawrence pushed a commit to branch TINKERPOP-2652
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git
commit d4f3a4444b5b89d2a52cca9a1753b456515c3401
Author: Kelvin Lawrence <gf...@yahoo.com>
AuthorDate: Thu Nov 18 17:08:12 2021 -0600
Additional tests
---
.../test/java/org/apache/tinkerpop/gremlin/process/traversal/PTest.java | 2 ++
1 file changed, 2 insertions(+)
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/PTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/PTest.java
index 401c230..d29e666 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/PTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/PTest.java
@@ -165,11 +165,13 @@ public class PTest {
{TextP.regex("^x"), "Dallas Fort Worth", false},
{TextP.regex("Dal[l|x]as"), "Dallas Fort Worth", true},
{TextP.regex("Dal[f|x]as"), "Dallas Fort Worth", false},
+ {TextP.regex("[a-zA-Z]+ Fort"), "Dallas Fort Worth", true},
{TextP.regex("[1-9]{3}"), "123-ABC-456", true},
{TextP.regex("[1-9]{3}-[A-Z]{3}-[1-9]{3}"), "123-ABC-456", true},
{TextP.regex("[1-9]{3}-[a-z]{3}-[1-9]{3}"), "123-ABC-456", false},
{TextP.regex("(?i)[1-9]{3}-[a-z]{3}-[1-9]{3}"), "123-ABC-456", true},
{TextP.regex("(?i)abc"), "123-ABC-456", true},
+ {TextP.regex("(?i)[a-b]{3}-[1-9]{3}-[a-z]{3}"), "123-ABC-456", false},
}));
}
[tinkerpop] 12/15: More improvements to regex Gherkin tests
Posted by kr...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
krlawrence pushed a commit to branch TINKERPOP-2652
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git
commit b63f44e64b4ca6d05c20af75a84771cdc13ae27e
Author: Ubuntu <ub...@ip-172-31-7-87.ec2.internal>
AuthorDate: Fri Dec 10 23:52:22 2021 +0000
More improvements to regex Gherkin tests
---
.../src/main/javascript/gremlin-javascript/test/cucumber/gremlin.js | 4 ++--
gremlin-python/src/main/python/radish/gremlin.py | 4 ++--
gremlin-test/features/filter/Has.feature | 4 ++--
3 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/gremlin.js b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/gremlin.js
index 60f8c1a..3c73a4e 100644
--- a/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/gremlin.js
+++ b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/gremlin.js
@@ -203,8 +203,8 @@ const gremlins = {
g_V_hasXname_not_containingXarkXX: [function({g}) { return g.V().has("name",TextP.notContaining("ark")) }],
g_V_hasXname_not_startingWithXmarXX: [function({g}) { return g.V().has("name",TextP.notStartingWith("mar")) }],
g_V_hasXname_not_endingWithXasXX: [function({g}) { return g.V().has("name",TextP.notEndingWith("as")) }],
- g_V_hasXname_regexX^MarXX: [function({g}) { return g.V().has("name",TextP.regex("^mar")) }],
- g_V_hasXname_notRegexX^MarXX: [function({g}) { return g.V().has("name",TextP.notRegex("^mar")) }],
+ g_V_hasXname_regexXrMarXX: [function({g}) { return g.V().has("name",TextP.regex("^mar")) }],
+ g_V_hasXname_notRegexXrMarXX: [function({g}) { return g.V().has("name",TextP.notRegex("^mar")) }],
g_V_hasXp_neqXvXX: [function({g}) { return g.V().has("p",P.neq("v")) }],
g_V_hasXage_gtX18X_andXltX30XXorXgtx35XXX: [function({g}) { return g.V().has("age",P.gt(18).and(P.lt(30)).or(P.gt(35))) }],
g_V_hasXage_gtX18X_andXltX30XXorXltx35XXX: [function({g}) { return g.V().has("age",P.gt(18).and(P.lt(30)).and(P.lt(35))) }],
diff --git a/gremlin-python/src/main/python/radish/gremlin.py b/gremlin-python/src/main/python/radish/gremlin.py
index 79e08c9..0dcd3e4 100644
--- a/gremlin-python/src/main/python/radish/gremlin.py
+++ b/gremlin-python/src/main/python/radish/gremlin.py
@@ -188,8 +188,8 @@ world.gremlins = {
'g_V_hasXname_not_containingXarkXX': [(lambda g:g.V().has('name',TextP.notContaining('ark')))],
'g_V_hasXname_not_startingWithXmarXX': [(lambda g:g.V().has('name',TextP.notStartingWith('mar')))],
'g_V_hasXname_not_endingWithXasXX': [(lambda g:g.V().has('name',TextP.notEndingWith('as')))],
- 'g_V_hasXname_regexX^MarXX': [(lambda g:g.V().has('name',TextP.regex('^mar')))],
- 'g_V_hasXname_notRegexX^MarXX': [(lambda g:g.V().has('name',TextP.notRegex('^mar')))],
+ 'g_V_hasXname_regexXrMarXX': [(lambda g:g.V().has('name',TextP.regex('^mar')))],
+ 'g_V_hasXname_notRegexXrMarXX': [(lambda g:g.V().has('name',TextP.notRegex('^mar')))],
'g_V_hasXp_neqXvXX': [(lambda g:g.V().has('p',P.neq('v')))],
'g_V_hasXage_gtX18X_andXltX30XXorXgtx35XXX': [(lambda g:g.V().has('age',P.gt(18).and_(P.lt(30)).or_(P.gt(35))))],
'g_V_hasXage_gtX18X_andXltX30XXorXltx35XXX': [(lambda g:g.V().has('age',P.gt(18).and_(P.lt(30)).and_(P.lt(35))))],
diff --git a/gremlin-test/features/filter/Has.feature b/gremlin-test/features/filter/Has.feature
index 85163fb..8739556 100644
--- a/gremlin-test/features/filter/Has.feature
+++ b/gremlin-test/features/filter/Has.feature
@@ -514,7 +514,7 @@ Feature: Step - has()
| v[ripple] |
| v[peter] |
- Scenario: g_V_hasXname_regexX^MarXX
+ Scenario: g_V_hasXname_regexXrMarXX
Given the modern graph
And the traversal of
"""
@@ -525,7 +525,7 @@ Feature: Step - has()
| result |
| v[marko] |
- Scenario: g_V_hasXname_notRegexX^MarXX
+ Scenario: g_V_hasXname_notRegexXrMarXX
Given the modern graph
And the traversal of
"""
[tinkerpop] 10/15: Add regex to .Net and Javascript GLVs
Posted by kr...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
krlawrence pushed a commit to branch TINKERPOP-2652
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git
commit 9020c3b2989b3f08078efbc8eb787a9cbce763c5
Author: Kelvin Lawrence <gf...@yahoo.com>
AuthorDate: Fri Nov 19 10:47:54 2021 -0600
Add regex to .Net and Javascript GLVs
---
gremlin-dotnet/src/Gremlin.Net/Process/Traversal/TextP.cs | 9 +++++++++
.../main/javascript/gremlin-javascript/lib/process/traversal.js | 9 +++++++++
2 files changed, 18 insertions(+)
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/TextP.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/TextP.cs
index a77f206..a106fb0 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/TextP.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/TextP.cs
@@ -75,6 +75,15 @@ namespace Gremlin.Net.Process.Traversal
return new TextP("startingWith", value);
}
+ public static TextP Regex(string value)
+ {
+ return new TextP("regex", value);
+ }
+
+ public static TextP NotRegex(string value)
+ {
+ return new TextP("notRegex", value);
+ }
private static T[] ToGenericArray<T>(ICollection<T> collection)
{
diff --git a/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/process/traversal.js b/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/process/traversal.js
index f72c3f9..a7fb9ac 100644
--- a/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/process/traversal.js
+++ b/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/process/traversal.js
@@ -427,6 +427,15 @@ class TextP {
return createTextP('startingWith', args);
}
+ /** @param {...Object} args */
+ static regex(...args) {
+ return createTextP('regex', args);
+ }
+
+ /** @param {...Object} args */
+ static notRegex(...args) {
+ return createTextP('notRegex', args);
+ }
}
function createTextP(operator, args) {
[tinkerpop] 07/15: Add simple grammar tests
Posted by kr...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
krlawrence pushed a commit to branch TINKERPOP-2652
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git
commit 48d8513becbdfacc7fb725e38a16c150ea355c0d
Author: Kelvin Lawrence <gf...@yahoo.com>
AuthorDate: Thu Nov 18 17:35:45 2021 -0600
Add simple grammar tests
---
.../gremlin/language/grammar/TraversalPredicateVisitorTest.java | 3 +++
1 file changed, 3 insertions(+)
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/language/grammar/TraversalPredicateVisitorTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/language/grammar/TraversalPredicateVisitorTest.java
index 7254388..4bb7f30 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/language/grammar/TraversalPredicateVisitorTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/language/grammar/TraversalPredicateVisitorTest.java
@@ -90,6 +90,9 @@ public class TraversalPredicateVisitorTest {
{"TextP.endingWith('hakuna')", TextP.endingWith("hakuna")},
{"TextP.notEndingWith('hakuna')", TextP.notEndingWith("hakuna")},
{"TextP.notStartingWith('hakuna')", TextP.notStartingWith("hakuna")},
+ {"TextP.regex('^h')", TextP.regex("^h")},
+ {"TextP.notRegex('^h')", TextP.notRegex("^h")},
+ {"TextP.regex('^h').negate()", TextP.regex("^h").negate()},
});
}
[tinkerpop] 04/15: Add actual mappings for regex when used via Antlr
Posted by kr...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
krlawrence pushed a commit to branch TINKERPOP-2652
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git
commit 3790207febeba0c0a7b50c956d09ca41e6fe3e9e
Author: Kelvin Lawrence <gf...@yahoo.com>
AuthorDate: Thu Nov 18 14:48:38 2021 -0600
Add actual mappings for regex when used via Antlr
---
.../gremlin/language/grammar/TraversalPredicateVisitor.java | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/TraversalPredicateVisitor.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/TraversalPredicateVisitor.java
index 608c20d..d46fc49 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/TraversalPredicateVisitor.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/TraversalPredicateVisitor.java
@@ -264,4 +264,14 @@ public class TraversalPredicateVisitor extends GremlinBaseVisitor<P> {
public P visitTraversalPredicate_notStartingWith(final GremlinParser.TraversalPredicate_notStartingWithContext ctx) {
return TextP.notStartingWith(GenericLiteralVisitor.getStringLiteral(ctx.stringLiteral()));
}
+
+ @Override
+ public P visitTraversalPredicate_regex(final GremlinParser.TraversalPredicate_regexContext ctx) {
+ return TextP.regex(GenericLiteralVisitor.getStringLiteral(ctx.stringLiteral()));
+ }
+
+ @Override
+ public P visitTraversalPredicate_notRegex(final GremlinParser.TraversalPredicate_notRegexContext ctx) {
+ return TextP.notRegex(GenericLiteralVisitor.getStringLiteral(ctx.stringLiteral()));
+ }
}
[tinkerpop] 13/15: Add dotnet Gherkin test
Posted by kr...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
krlawrence pushed a commit to branch TINKERPOP-2652
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git
commit 70fd97ac367f1b71adf368aa9836195c7dcb0ab3
Author: Kelvin Lawrence <gf...@yahoo.com>
AuthorDate: Mon Dec 13 19:35:47 2021 +0000
Add dotnet Gherkin test
---
gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs | 2 ++
1 file changed, 2 insertions(+)
diff --git a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs
index ea6bf4d..504f786 100644
--- a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs
+++ b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs
@@ -215,6 +215,8 @@ namespace Gremlin.Net.IntegrationTest.Gherkin
{"g_V_hasXname_not_containingXarkXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has("name",TextP.NotContaining("ark"))}},
{"g_V_hasXname_not_startingWithXmarXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has("name",TextP.NotStartingWith("mar"))}},
{"g_V_hasXname_not_endingWithXasXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has("name",TextP.NotEndingWith("as"))}},
+ {"g_V_hasXname_regexXrMarXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has("name",TextP.Regex("^mar"))}},
+ {"g_V_hasXname_notRegexXrMarXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has("name",TextP.NotRegex("^mar"))}},
{"g_V_hasXp_neqXvXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has("p",P.Neq("v"))}},
{"g_V_hasXage_gtX18X_andXltX30XXorXgtx35XXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has("age",P.Gt(18).And(P.Lt(30)).Or(P.Gt(35)))}},
{"g_V_hasXage_gtX18X_andXltX30XXorXltx35XXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has("age",P.Gt(18).And(P.Lt(30)).And(P.Lt(35)))}},
[tinkerpop] 05/15: Initial set of regex tests
Posted by kr...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
krlawrence pushed a commit to branch TINKERPOP-2652
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git
commit 01bf2a937c9a343265468cc88dcaf72cda2564a6
Author: Kelvin Lawrence <gf...@yahoo.com>
AuthorDate: Thu Nov 18 16:20:48 2021 -0600
Initial set of regex tests
---
.../org/apache/tinkerpop/gremlin/process/traversal/Text.java | 4 ++--
.../apache/tinkerpop/gremlin/process/traversal/PTest.java | 12 ++++++++++++
2 files changed, 14 insertions(+), 2 deletions(-)
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Text.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Text.java
index 5d443ff..91fcd7d 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Text.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Text.java
@@ -39,7 +39,7 @@ public enum Text implements BiPredicate<String, String> {
regex {
@Override
public boolean test(final String value, final String regex) {
- Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
+ Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(value);
return matcher.find();
}
@@ -60,7 +60,7 @@ public enum Text implements BiPredicate<String, String> {
notRegex {
@Override
public boolean test(final String value, final String regex) {
- Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
+ Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(value);
return !matcher.find();
}
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/PTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/PTest.java
index e58e8be..401c230 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/PTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/PTest.java
@@ -158,6 +158,18 @@ public class PTest {
{TextP.containing("o").and(P.gte("j")).and(TextP.endingWith("ko")), "josh", false},
{TextP.containing("o").and(P.gte("j").and(TextP.endingWith("ko"))), "marko", true},
{TextP.containing("o").and(P.gte("j").and(TextP.endingWith("ko"))), "josh", false},
+ {TextP.regex("^D"), "Dallas Fort Worth", true},
+ {TextP.regex("^d"), "Dallas Fort Worth", false},
+ {TextP.regex("^Da"), "Dallas Forth Worth", true},
+ {TextP.regex("^da"), "Dallas Forth Worth", false},
+ {TextP.regex("^x"), "Dallas Fort Worth", false},
+ {TextP.regex("Dal[l|x]as"), "Dallas Fort Worth", true},
+ {TextP.regex("Dal[f|x]as"), "Dallas Fort Worth", false},
+ {TextP.regex("[1-9]{3}"), "123-ABC-456", true},
+ {TextP.regex("[1-9]{3}-[A-Z]{3}-[1-9]{3}"), "123-ABC-456", true},
+ {TextP.regex("[1-9]{3}-[a-z]{3}-[1-9]{3}"), "123-ABC-456", false},
+ {TextP.regex("(?i)[1-9]{3}-[a-z]{3}-[1-9]{3}"), "123-ABC-456", true},
+ {TextP.regex("(?i)abc"), "123-ABC-456", true},
}));
}
[tinkerpop] 14/15: Add documentation for TextP.regex
Posted by kr...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
krlawrence pushed a commit to branch TINKERPOP-2652
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git
commit a1522a811db7cb2442a49daab0a9d9e0afc30590
Author: Kelvin Lawrence <gf...@yahoo.com>
AuthorDate: Wed Dec 15 12:35:20 2021 -0600
Add documentation for TextP.regex
---
docs/src/reference/the-traversal.asciidoc | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/docs/src/reference/the-traversal.asciidoc b/docs/src/reference/the-traversal.asciidoc
index 98f2e8d..7dd001b 100644
--- a/docs/src/reference/the-traversal.asciidoc
+++ b/docs/src/reference/the-traversal.asciidoc
@@ -4077,7 +4077,8 @@ A `P` is a predicate of the form `Function<Object,Boolean>`. That is, given some
the release of TinkerPop 3.4.0, Gremlin also supports simple text predicates, which only work on `String` values. The `TextP`
text predicates extend the `P` predicates, but are specialized in that they are of the form `Function<String,Boolean>`.
The provided predicates are outlined in the table below and are used in various steps such as <<has-step,`has()`>>-step,
-<<where-step,`where()`>>-step, <<is-step,`is()`>>-step, etc.
+<<where-step,`where()`>>-step, <<is-step,`is()`>>-step, etc. Two new additional `TextP` predicate members were added in the
+TinkerPop 3.6.0 release that allow working with regular expressions. These are `TextP.regex` and `TextP.notRegex`
[width="100%",cols="3,15",options="header"]
|=========================================================
@@ -4099,8 +4100,12 @@ The provided predicates are outlined in the table below and are used in various
| `TextP.notStartingWith(string)` | Does the incoming `String` not start with the provided `String`?
| `TextP.notEndingWith(string)` | Does the incoming `String` not end with the provided `String`?
| `TextP.notContaining(string)` | Does the incoming `String` not contain the provided `String`?
+| `TextP.regex(string)` | Does the incoming `String` match the regular expression in the provided `String`?
+| `TextP.notRegex(string)` | Does the incoming `String` fail to match the regular expression in the provided `String`?
|=========================================================
-
+Note that the TinkerPop reference implementation uses the Java `Pattern` and `Matcher` classes for it regular expression
+engine. Other implementations may decide to use a different regular expression engine. It's a good idea to check
+the documentation for the implementation you are using to verify the allowed regular expression syntax.
[gremlin-groovy]
----
eq(2)
[tinkerpop] 03/15: Add base class visitor methods for regex via grammar
Posted by kr...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
krlawrence pushed a commit to branch TINKERPOP-2652
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git
commit 6832a6bf003228b90d9dd5c5001bef51e1b9d3a8
Author: Kelvin Lawrence <gf...@yahoo.com>
AuthorDate: Thu Nov 18 14:36:21 2021 -0600
Add base class visitor methods for regex via grammar
---
.../tinkerpop/gremlin/language/grammar/GremlinBaseVisitor.java | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/GremlinBaseVisitor.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/GremlinBaseVisitor.java
index fd48b79..b25418b 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/GremlinBaseVisitor.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/GremlinBaseVisitor.java
@@ -1050,6 +1050,16 @@ public class GremlinBaseVisitor<T> extends AbstractParseTreeVisitor<T> implement
public T visitTraversalPredicate_notEndingWith(final GremlinParser.TraversalPredicate_notEndingWithContext ctx) {
notImplemented(ctx); return null;
}
+
+ @Override
+ public T visitTraversalPredicate_regex(final GremlinParser.TraversalPredicate_regexContext ctx) {
+ notImplemented(ctx); return null;
+ }
+
+ @Override
+ public T visitTraversalPredicate_notRegex(final GremlinParser.TraversalPredicate_notRegexContext ctx) {
+ notImplemented(ctx); return null;
+ }
/**
* {@inheritDoc}
*/
[tinkerpop] 09/15: Continue adding regex predicates to Python client
Posted by kr...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
krlawrence pushed a commit to branch TINKERPOP-2652
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git
commit 213a2913e6d3f5bf649fca9fff57223a74dd031e
Author: Kelvin Lawrence <gf...@yahoo.com>
AuthorDate: Thu Nov 18 19:47:05 2021 -0600
Continue adding regex predicates to Python client
---
.../src/main/python/gremlin_python/process/traversal.py | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/gremlin-python/src/main/python/gremlin_python/process/traversal.py b/gremlin-python/src/main/python/gremlin_python/process/traversal.py
index f8bb83c..67ea377 100644
--- a/gremlin-python/src/main/python/gremlin_python/process/traversal.py
+++ b/gremlin-python/src/main/python/gremlin_python/process/traversal.py
@@ -422,6 +422,11 @@ def notStartingWith(*args):
def startingWith(*args):
return TextP.startingWith(*args)
+def regex(*args):
+ return TextP.regex(*args)
+
+def notRegex(*args):
+ return TextP.notRegex(*args)
statics.add_static('containing', containing)
@@ -435,6 +440,10 @@ statics.add_static('notStartingWith', notStartingWith)
statics.add_static('startingWith', startingWith)
+statics.add_static('regex', regex)
+
+statics.add_static('notRegex', notRegex)
+
[tinkerpop] 11/15: Initial work on regex Gherkin scenarios
Posted by kr...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
krlawrence pushed a commit to branch TINKERPOP-2652
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git
commit 051e0c73f97699829a2e824f50653402de7edfdf
Author: Ubuntu <ub...@ip-172-31-7-87.ec2.internal>
AuthorDate: Fri Dec 10 21:46:47 2021 +0000
Initial work on regex Gherkin scenarios
---
.../gremlin-javascript/test/cucumber/gremlin.js | 2 ++
gremlin-python/src/main/python/radish/gremlin.py | 2 ++
gremlin-test/features/filter/Has.feature | 30 +++++++++++++++++++++-
3 files changed, 33 insertions(+), 1 deletion(-)
diff --git a/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/gremlin.js b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/gremlin.js
index 52bb2c7..60f8c1a 100644
--- a/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/gremlin.js
+++ b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/gremlin.js
@@ -203,6 +203,8 @@ const gremlins = {
g_V_hasXname_not_containingXarkXX: [function({g}) { return g.V().has("name",TextP.notContaining("ark")) }],
g_V_hasXname_not_startingWithXmarXX: [function({g}) { return g.V().has("name",TextP.notStartingWith("mar")) }],
g_V_hasXname_not_endingWithXasXX: [function({g}) { return g.V().has("name",TextP.notEndingWith("as")) }],
+ g_V_hasXname_regexX^MarXX: [function({g}) { return g.V().has("name",TextP.regex("^mar")) }],
+ g_V_hasXname_notRegexX^MarXX: [function({g}) { return g.V().has("name",TextP.notRegex("^mar")) }],
g_V_hasXp_neqXvXX: [function({g}) { return g.V().has("p",P.neq("v")) }],
g_V_hasXage_gtX18X_andXltX30XXorXgtx35XXX: [function({g}) { return g.V().has("age",P.gt(18).and(P.lt(30)).or(P.gt(35))) }],
g_V_hasXage_gtX18X_andXltX30XXorXltx35XXX: [function({g}) { return g.V().has("age",P.gt(18).and(P.lt(30)).and(P.lt(35))) }],
diff --git a/gremlin-python/src/main/python/radish/gremlin.py b/gremlin-python/src/main/python/radish/gremlin.py
index 850ee7e..79e08c9 100644
--- a/gremlin-python/src/main/python/radish/gremlin.py
+++ b/gremlin-python/src/main/python/radish/gremlin.py
@@ -188,6 +188,8 @@ world.gremlins = {
'g_V_hasXname_not_containingXarkXX': [(lambda g:g.V().has('name',TextP.notContaining('ark')))],
'g_V_hasXname_not_startingWithXmarXX': [(lambda g:g.V().has('name',TextP.notStartingWith('mar')))],
'g_V_hasXname_not_endingWithXasXX': [(lambda g:g.V().has('name',TextP.notEndingWith('as')))],
+ 'g_V_hasXname_regexX^MarXX': [(lambda g:g.V().has('name',TextP.regex('^mar')))],
+ 'g_V_hasXname_notRegexX^MarXX': [(lambda g:g.V().has('name',TextP.notRegex('^mar')))],
'g_V_hasXp_neqXvXX': [(lambda g:g.V().has('p',P.neq('v')))],
'g_V_hasXage_gtX18X_andXltX30XXorXgtx35XXX': [(lambda g:g.V().has('age',P.gt(18).and_(P.lt(30)).or_(P.gt(35))))],
'g_V_hasXage_gtX18X_andXltX30XXorXltx35XXX': [(lambda g:g.V().has('age',P.gt(18).and_(P.lt(30)).and_(P.lt(35))))],
diff --git a/gremlin-test/features/filter/Has.feature b/gremlin-test/features/filter/Has.feature
index bbb9ed4..85163fb 100644
--- a/gremlin-test/features/filter/Has.feature
+++ b/gremlin-test/features/filter/Has.feature
@@ -514,6 +514,33 @@ Feature: Step - has()
| v[ripple] |
| v[peter] |
+ Scenario: g_V_hasXname_regexX^MarXX
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().has("name", TextP.regex("^mar"))
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | v[marko] |
+
+ Scenario: g_V_hasXname_notRegexX^MarXX
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().has("name", TextP.notRegex("^mar"))
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | v[josh] |
+ | v[vadas] |
+ | v[lop] |
+ | v[ripple] |
+ | v[peter] |
+
+
Scenario: g_V_hasXp_neqXvXX
Given the modern graph
And the traversal of
@@ -675,4 +702,5 @@ Feature: Step - has()
When iterated to list
Then the result should be unordered
| result |
- | josh |
\ No newline at end of file
+ | josh |
+
[tinkerpop] 15/15: Add TextP.regex to the CHANGELOG
Posted by kr...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
krlawrence pushed a commit to branch TINKERPOP-2652
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git
commit 0141808f59f3714c1b632452f469db2cdbf51b75
Author: Kelvin Lawrence <gf...@yahoo.com>
AuthorDate: Wed Dec 15 12:42:11 2021 -0600
Add TextP.regex to the CHANGELOG
---
CHANGELOG.asciidoc | 1 +
1 file changed, 1 insertion(+)
diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index d919c0d..9aee9d8 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -23,6 +23,7 @@ image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/ima
[[release-3-6-0]]
=== TinkerPop 3.6.0 (Release Date: NOT OFFICIALLY RELEASED YET)
+* Added `TextP.regex` and `TextP.notRegex`.
* Changed TinkerGraph to allow identifiers to be heterogeneous when filtering.
* Prevented values of `T` to `property()` from being `null`.
* Added `fail()` step.
[tinkerpop] 01/15: Initial changes for regex support. More to follow
Posted by kr...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
krlawrence pushed a commit to branch TINKERPOP-2652
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git
commit eeb584a642ae7db7b9e95029890a45ae71dcf5d5
Author: Kelvin Lawrence <gf...@yahoo.com>
AuthorDate: Thu Nov 18 13:47:40 2021 -0600
Initial changes for regex support. More to follow
---
.../tinkerpop/gremlin/process/traversal/Text.java | 44 ++++++++++++++++++++++
.../tinkerpop/gremlin/process/traversal/TextP.java | 18 +++++++++
2 files changed, 62 insertions(+)
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Text.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Text.java
index 9c25825..5d443ff 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Text.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Text.java
@@ -19,6 +19,8 @@
package org.apache.tinkerpop.gremlin.process.traversal;
import java.util.function.BiPredicate;
+import java.util.regex.Pattern;
+import java.util.regex.Matcher;
/**
* {@link Text} is a {@link java.util.function.BiPredicate} that determines whether the first string starts with, starts
@@ -30,6 +32,48 @@ import java.util.function.BiPredicate;
public enum Text implements BiPredicate<String, String> {
/**
+ * Evaluates if the first string has a regex match with the second (pattern).
+ *
+ * @since 3.6.0
+ */
+ regex {
+ @Override
+ public boolean test(final String value, final String regex) {
+ Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
+ Matcher matcher = pattern.matcher(value);
+ return matcher.find();
+ }
+
+ /**
+ * The negative of {@code regex} is {@link #notRegex}.
+ */
+ @Override
+ public Text negate() {
+ return notRegex;
+ }
+ },
+ /**
+ * Evaluates if the first string does not have a regex match with the second (pattern).
+ *
+ * @since 3.6.0
+ */
+ notRegex {
+ @Override
+ public boolean test(final String value, final String regex) {
+ Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
+ Matcher matcher = pattern.matcher(value);
+ return !matcher.find();
+ }
+
+ /**
+ * The negative of {@code notRegex} is {@link #regex}.
+ */
+ @Override
+ public Text negate() {
+ return regex;
+ }
+ },
+ /**
* Evaluates if the first string starts with the second.
*
* @since 3.4.0
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/TextP.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/TextP.java
index 2c28853..5b72521 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/TextP.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/TextP.java
@@ -106,4 +106,22 @@ public class TextP extends P<String> {
public static TextP notContaining(final String value) {
return new TextP(Text.notContaining, value);
}
+
+ /**
+ * Determines if String has a match with the given REGEX pattern.
+ *
+ * @since 3.6.0
+ */
+ public static TextP regex(final String value) {
+ return new TextP(Text.regex, value);
+ }
+
+ /**
+ * Determines if String has no match with the given REGEX pattern.
+ *
+ * @since 3.6.0
+ */
+ public static TextP notRegex(final String value) {
+ return new TextP(Text.notRegex, value);
+ }
}
[tinkerpop] 02/15: Add redex predicates to the Antlr grammar
Posted by kr...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
krlawrence pushed a commit to branch TINKERPOP-2652
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git
commit f920fcf6d508e0929858bec2884a053e31d2e7e0
Author: Kelvin Lawrence <gf...@yahoo.com>
AuthorDate: Thu Nov 18 14:02:26 2021 -0600
Add redex predicates to the Antlr grammar
---
gremlin-language/src/main/antlr4/Gremlin.g4 | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/gremlin-language/src/main/antlr4/Gremlin.g4 b/gremlin-language/src/main/antlr4/Gremlin.g4
index e285634..941cdd1 100644
--- a/gremlin-language/src/main/antlr4/Gremlin.g4
+++ b/gremlin-language/src/main/antlr4/Gremlin.g4
@@ -905,6 +905,8 @@ traversalPredicate
| traversalPredicate_notEndingWith
| traversalPredicate_containing
| traversalPredicate_notContaining
+ | traversalPredicate_regex
+ | traversalPredicate_notRegex
| traversalPredicate DOT 'and' LPAREN traversalPredicate RPAREN
| traversalPredicate DOT 'or' LPAREN traversalPredicate RPAREN
| traversalPredicate DOT 'negate' LPAREN RPAREN
@@ -1019,6 +1021,14 @@ traversalPredicate_notEndingWith
: ('TextP.notEndingWith' | 'notEndingWith') LPAREN stringLiteral RPAREN
;
+traversalPredicate_regex
+ : ('TextP.regex' | 'regex') LPAREN stringLiteral RPAREN
+ ;
+
+traversalPredicate_notRegex
+ : ('TextP.notRegex' | 'notRegex') LPAREN stringLiteral RPAREN
+ ;
+
traversalTerminalMethod_explain
: 'explain' LPAREN RPAREN
;