You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by sp...@apache.org on 2021/09/13 19:16:22 UTC
[tinkerpop] 12/17: TINKERPOP-2601 Added connectedComponent() to
grammar
This is an automated email from the ASF dual-hosted git repository.
spmallette pushed a commit to branch TINKERPOP-2601
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git
commit 480cf1604734a6bbf4f3a75ebe613e6185a95219
Author: Stephen Mallette <st...@amazon.com>
AuthorDate: Wed Sep 8 13:23:37 2021 -0400
TINKERPOP-2601 Added connectedComponent() to grammar
This probably needs to be backported to 3.5.x.
---
.../language/grammar/GremlinBaseVisitor.java | 25 +++++++++++++++++++++
.../grammar/GremlinStringConstantsVisitor.java | 21 +++++++++++++++++
.../language/grammar/TraversalMethodVisitor.java | 5 +++++
gremlin-language/src/main/antlr4/Gremlin.g4 | 26 +++++++++++++++++++---
.../gremlin/spark/SparkGraphFeatureTest.java | 1 -
.../gremlin/tinkergraph/TinkerGraphWorld.java | 1 -
6 files changed, 74 insertions(+), 5 deletions(-)
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 ac55b96..caa0a8a 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
@@ -1453,6 +1453,31 @@ public class GremlinBaseVisitor<T> extends AbstractParseTreeVisitor<T> implement
notImplemented(ctx); return null;
}
+ @Override
+ public T visitConnectedComponentConstants(final GremlinParser.ConnectedComponentConstantsContext ctx) {
+ notImplemented(ctx); return null;
+ }
+
+ @Override
+ public T visitGremlinStringConstants_connectedComponentStringConstants_component(final GremlinParser.GremlinStringConstants_connectedComponentStringConstants_componentContext ctx) {
+ notImplemented(ctx); return null;
+ }
+
+ @Override
+ public T visitGremlinStringConstants_connectedComponentStringConstants_edges(final GremlinParser.GremlinStringConstants_connectedComponentStringConstants_edgesContext ctx) {
+ notImplemented(ctx); return null;
+ }
+
+ @Override
+ public T visitGremlinStringConstants_connectedComponentStringConstants_propertyName(GremlinParser.GremlinStringConstants_connectedComponentStringConstants_propertyNameContext ctx) {
+ return null;
+ }
+
+ @Override
+ public T visitConnectedComponentStringConstant(final GremlinParser.ConnectedComponentStringConstantContext ctx) {
+ notImplemented(ctx); return null;
+ }
+
/**
* {@inheritDoc}
*/
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/GremlinStringConstantsVisitor.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/GremlinStringConstantsVisitor.java
index fee33d4..9b6b2a4 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/GremlinStringConstantsVisitor.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/GremlinStringConstantsVisitor.java
@@ -18,6 +18,7 @@
*/
package org.apache.tinkerpop.gremlin.language.grammar;
+import org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.ConnectedComponent;
import org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.PageRank;
import org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.PeerPressure;
import org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.ShortestPath;
@@ -47,6 +48,11 @@ public class GremlinStringConstantsVisitor extends GremlinBaseVisitor<Object> {
}
@Override
+ public Object visitConnectedComponentStringConstant(GremlinParser.ConnectedComponentStringConstantContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ @Override
public Object visitPageRankStringConstants(final GremlinParser.PageRankStringConstantsContext ctx) {
return visitChildren(ctx);
}
@@ -72,6 +78,21 @@ public class GremlinStringConstantsVisitor extends GremlinBaseVisitor<Object> {
}
@Override
+ public Object visitGremlinStringConstants_connectedComponentStringConstants_edges(final GremlinParser.GremlinStringConstants_connectedComponentStringConstants_edgesContext ctx) {
+ return ConnectedComponent.edges;
+ }
+
+ @Override
+ public Object visitGremlinStringConstants_connectedComponentStringConstants_component(final GremlinParser.GremlinStringConstants_connectedComponentStringConstants_componentContext ctx) {
+ return ConnectedComponent.component;
+ }
+
+ @Override
+ public Object visitGremlinStringConstants_connectedComponentStringConstants_propertyName(final GremlinParser.GremlinStringConstants_connectedComponentStringConstants_propertyNameContext ctx) {
+ return ConnectedComponent.propertyName;
+ }
+
+ @Override
public Object visitGremlinStringConstants_pageRankStringConstants_edges(final GremlinParser.GremlinStringConstants_pageRankStringConstants_edgesContext ctx) {
return PageRank.edges;
}
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/TraversalMethodVisitor.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/TraversalMethodVisitor.java
index 598dd45..1205d47 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/TraversalMethodVisitor.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/TraversalMethodVisitor.java
@@ -1017,6 +1017,11 @@ public class TraversalMethodVisitor extends TraversalRootVisitor<GraphTraversal>
return graphTraversal.outV();
}
+ @Override
+ public Traversal visitTraversalMethod_connectedComponent(final GremlinParser.TraversalMethod_connectedComponentContext ctx) {
+ return graphTraversal.connectedComponent();
+ }
+
/**
* {@inheritDoc}
*/
diff --git a/gremlin-language/src/main/antlr4/Gremlin.g4 b/gremlin-language/src/main/antlr4/Gremlin.g4
index 2d8d030..8274337 100644
--- a/gremlin-language/src/main/antlr4/Gremlin.g4
+++ b/gremlin-language/src/main/antlr4/Gremlin.g4
@@ -738,9 +738,6 @@ traversalMethod_write
: 'write' LPAREN RPAREN
;
-
-
-
/*********************************************
ARGUMENT AND TERMINAL RULES
**********************************************/
@@ -1042,12 +1039,19 @@ traversalSelfMethod_none
gremlinStringConstants
: withOptionsStringConstants
+ | connectedComponentConstants
| shortestPathStringConstants
| pageRankStringConstants
| peerPressureStringConstants
| ioOptionsStringConstants
;
+connectedComponentConstants
+ : gremlinStringConstants_connectedComponentStringConstants_component
+ | gremlinStringConstants_connectedComponentStringConstants_edges
+ | gremlinStringConstants_connectedComponentStringConstants_propertyName
+ ;
+
pageRankStringConstants
: gremlinStringConstants_pageRankStringConstants_edges
| gremlinStringConstants_pageRankStringConstants_times
@@ -1089,6 +1093,18 @@ ioOptionsStringConstants
| gremlinStringConstants_ioOptionsStringConstants_graphml
;
+gremlinStringConstants_connectedComponentStringConstants_component
+ : connectedComponentStringConstant DOT 'component'
+ ;
+
+gremlinStringConstants_connectedComponentStringConstants_edges
+ : connectedComponentStringConstant DOT 'edges'
+ ;
+
+gremlinStringConstants_connectedComponentStringConstants_propertyName
+ : connectedComponentStringConstant DOT 'propertyName'
+ ;
+
gremlinStringConstants_pageRankStringConstants_edges
: pageRankStringConstant DOT 'edges'
;
@@ -1193,6 +1209,10 @@ gremlinStringConstants_ioOptionsStringConstants_graphml
: ioOptionsStringConstant DOT 'graphml'
;
+connectedComponentStringConstant
+ : 'ConnectedComponent'
+ ;
+
pageRankStringConstant
: 'PageRank'
;
diff --git a/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/SparkGraphFeatureTest.java b/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/SparkGraphFeatureTest.java
index 21a11ff..911aa10 100644
--- a/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/SparkGraphFeatureTest.java
+++ b/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/SparkGraphFeatureTest.java
@@ -88,7 +88,6 @@ public class SparkGraphFeatureTest {
private static final List<String> TAGS_TO_IGNORE = Arrays.asList(
"@StepDrop",
"@StepV",
- "@StepConnectedComponent", // need to implement this in the grammar
"@StepIndex", // doesn't look like this works with Spark atm - doesn't serialize (IndexTest not in the ProcessComputerSuite)
"@GraphComputerVerificationOneBulk",
"@GraphComputerVerificationMidVNotSupported",
diff --git a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/TinkerGraphWorld.java b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/TinkerGraphWorld.java
index f37e5ac..f5992f4 100644
--- a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/TinkerGraphWorld.java
+++ b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/TinkerGraphWorld.java
@@ -91,7 +91,6 @@ public class TinkerGraphWorld implements World {
private static final List<String> TAGS_TO_IGNORE = Arrays.asList(
"@StepDrop",
"@StepV",
- "@StepConnectedComponent", // need to implement this in the grammar
"@GraphComputerVerificationOneBulk",
"@GraphComputerVerificationMidVNotSupported",
"@GraphComputerVerificationInjectionNotSupported",