org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.StartStep Java Examples
The following examples show how to use
org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.StartStep.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: JanusGraphVertexStep.java From grakn with GNU Affero General Public License v3.0 | 5 votes |
/** * Many parent traversals drip feed their start vertices in one at a time. To best exploit * the multiQuery we need to load all possible starts in one go so this method will attempt * to find a JanusGraphMultiQueryStep with the starts of the parent, and if found cache it. */ private void setParentMultiQueryStep() { Step firstStep = traversal.getStartStep(); while (firstStep instanceof StartStep || firstStep instanceof SideEffectStep) { // Want the next step if this is a side effect firstStep = firstStep.getNextStep(); } if (this.equals(firstStep)) { Step<?, ?> parentStep = traversal.getParent().asStep(); if (JanusGraphTraversalUtil.isMultiQueryCompatibleStep(parentStep)) { Step<?, ?> parentPreviousStep = parentStep.getPreviousStep(); if (parentStep instanceof RepeatStep) { RepeatStep repeatStep = (RepeatStep) parentStep; List<RepeatEndStep> repeatEndSteps = TraversalHelper.getStepsOfClass(RepeatEndStep.class, repeatStep.getRepeatTraversal()); if (repeatEndSteps.size() == 1) { parentPreviousStep = repeatEndSteps.get(0).getPreviousStep(); } } if (parentPreviousStep instanceof ProfileStep) { parentPreviousStep = parentPreviousStep.getPreviousStep(); } if (parentPreviousStep instanceof JanusGraphMultiQueryStep) { parentMultiQueryStep = (JanusGraphMultiQueryStep) parentPreviousStep; } } } }
Example #2
Source File: JanusGraphTraversalUtil.java From grakn with GNU Affero General Public License v3.0 | 5 votes |
private static void getMultiQueryCompatibleStepsFromChildTraversal(Traversal.Admin<?, ?> childTraversal, Step parentStep, Set<Step> multiQueryCompatibleSteps) { Step firstStep = childTraversal.getStartStep(); while (firstStep instanceof StartStep || firstStep instanceof SideEffectStep) { // Want the next step if this is a side effect firstStep = firstStep.getNextStep(); } if (firstStep.getClass().isAssignableFrom(VertexStep.class)) { multiQueryCompatibleSteps.add(parentStep); } }
Example #3
Source File: GraphTraversal.java From tinkerpop with Apache License 2.0 | 5 votes |
/** * A step modulator that provides a label to the step that can be accessed later in the traversal by other steps. * * @param stepLabel the name of the step * @param stepLabels additional names for the label * @return the traversal with the modified end step * @see <a href="http://tinkerpop.apache.org/docs/${project.version}/reference/#as-step" target="_blank">Reference Documentation - As Step</a> * @since 3.0.0-incubating */ public default GraphTraversal<S, E> as(final String stepLabel, final String... stepLabels) { this.asAdmin().getBytecode().addStep(Symbols.as, stepLabel, stepLabels); if (this.asAdmin().getSteps().size() == 0) this.asAdmin().addStep(new StartStep<>(this.asAdmin())); final Step<?, E> endStep = this.asAdmin().getEndStep(); endStep.addLabel(stepLabel); for (final String label : stepLabels) { endStep.addLabel(label); } return this; }
Example #4
Source File: TraversalHelper.java From tinkerpop with Apache License 2.0 | 5 votes |
private static Set<Scoping.Variable> getVariableLocations(final Set<Scoping.Variable> variables, final Traversal.Admin<?, ?> traversal) { if (variables.size() == 2) return variables; // has both START and END so no need to compute further final Step<?, ?> startStep = traversal.getStartStep(); if (StartStep.isVariableStartStep(startStep)) variables.add(Scoping.Variable.START); else if (startStep instanceof WherePredicateStep) { if (((WherePredicateStep) startStep).getStartKey().isPresent()) variables.add(Scoping.Variable.START); } else if (startStep instanceof WhereTraversalStep.WhereStartStep) { if (!((WhereTraversalStep.WhereStartStep) startStep).getScopeKeys().isEmpty()) variables.add(Scoping.Variable.START); } else if (startStep instanceof MatchStep.MatchStartStep) { if (((MatchStep.MatchStartStep) startStep).getSelectKey().isPresent()) variables.add(Scoping.Variable.START); } else if (startStep instanceof MatchStep) { for (final Traversal.Admin<?, ?> global : ((MatchStep<?, ?>) startStep).getGlobalChildren()) { TraversalHelper.getVariableLocations(variables, global); } } else if (startStep instanceof ConnectiveStep || startStep instanceof NotStep || startStep instanceof WhereTraversalStep) { for (final Traversal.Admin<?, ?> local : ((TraversalParent) startStep).getLocalChildren()) { TraversalHelper.getVariableLocations(variables, local); } } /// final Step<?, ?> endStep = traversal.getEndStep(); if (endStep instanceof WherePredicateStep) { if (((WherePredicateStep) endStep).getStartKey().isPresent()) variables.add(Scoping.Variable.END); } else if (endStep instanceof WhereTraversalStep.WhereEndStep) { if (!((WhereTraversalStep.WhereEndStep) endStep).getScopeKeys().isEmpty()) variables.add(Scoping.Variable.END); } else if (endStep instanceof MatchStep.MatchEndStep) { if (((MatchStep.MatchEndStep) endStep).getMatchKey().isPresent()) variables.add(Scoping.Variable.END); } else if (!endStep.getLabels().isEmpty()) variables.add(Scoping.Variable.END); /// return variables; }
Example #5
Source File: SqlgStartStepStrategy.java From sqlg with MIT License | 5 votes |
@Override public void apply(final Traversal.Admin<?, ?> traversal) { //Only optimize SqlgGraph. StarGraph also passes through here. if (!(traversal.getGraph().orElseThrow(IllegalStateException::new) instanceof SqlgGraph)) { return; } if (!SqlgTraversalUtil.mayOptimize(traversal)) { return; } while (true) { Optional<StartStep> startStepOptional = TraversalHelper.getLastStepOfAssignableClass(StartStep.class, traversal); if (startStepOptional.isPresent()) { StartStep<?> startStep = startStepOptional.get(); SqlgStartStepBarrier<?> sqlgStartStepBarrier = new SqlgStartStepBarrier<>(traversal, startStep); for (String label : startStep.getLabels()) { sqlgStartStepBarrier.addLabel(label); } //noinspection unchecked TraversalHelper.replaceStep((Step) startStep, sqlgStartStepBarrier, traversal); } else { break; } } }
Example #6
Source File: ConnectiveStrategy.java From tinkerpop with Apache License 2.0 | 4 votes |
private static boolean legalCurrentStep(final Step<?, ?> step) { return !(step instanceof EmptyStep || step instanceof ProfileSideEffectStep || step instanceof HasNextStep || step instanceof ComputerAwareStep.EndStep || (step instanceof StartStep && !StartStep.isVariableStartStep(step)) || GraphStep.isStartStep(step)); }
Example #7
Source File: SqlgStartStepBarrier.java From sqlg with MIT License | 4 votes |
public SqlgStartStepBarrier(final Traversal.Admin traversal, StartStep<S> startStep) { super(traversal); this.start = startStep.getStart(); }