All Posts

  • TinkerPop 3.8.0 Reflections

    Reflects on TinkerPop 3.8.0’s release strategy, bridging stable Gremlin semantics with future-focused upgrades.

  • Semantics of times(0)

    Unpacks subtle differences in Gremlin’s repeat step when `times(0)` is used

  • constant() is Not inject() – A Follow-Up

    Distills the core distinction between Gremlin’s `constant()` and `inject()`.

  • Unique Vertex Label Anti-pattern

    Warns against the anti-pattern of unique vertex labels in graph databases and advocates for categorical labeling.

  • Eager and Lazy tree()

    Differentiates eager and lazy `tree()` semantics in Gremlin.

  • dedup() on Path objects

    Details deduplication nuances for Path objects in Gremlin, stressing effects of path labeling on result sets.

  • tree() Node Equality

    Explains the behavior of `tree()` node equality in Gremlin and how unique nodes shape traversal output structure.

  • Use of local() Revisited

    Revisits the `local()` step in Gremlin, clarifying its use case amid common confusion with `Scope.local`.

  • If-Then Semantics

    Advocates for readable if-then patterns in Gremlin, comparing `coalesce()`, `choose()`, `sideEffect()` and `optional()`.

  • Thinking in VertexPrograms

    Discusses OLAP-style Gremlin and custom VertexProgram implementations for specialized graph analytics.

  • Subgraphing without subgraph()

    Reviews alternatives to Gremlin’s `subgraph()` step for non-JVM languages, focusing on edge list extraction.

  • Removing Backtracking

    Encourages Gremlin query refactoring by removing excessive backtracking for clarity and performance.

  • Use of local()

    Distinguishes Gremlin’s `local()` step from `map()` and `flatMap()`, highlighting its role in object-local processing.

  • Restricting simplePath()

    Examines Gremlin’s `simplePath()` for cycle filtering and advanced path control using `from` and `to` modulators.

  • profile() and Indices

    Shows how Gremlin’s `profile()` step exposes query optimization potential and performance issues around indices.

  • Inserting a Vertex Using a Map

    Explains efficient ways to insert vertex properties in Gremlin using Maps and advocates for simplifying with a DSL.

  • Grouping Edge Directions

    Demonstrates techniques for grouping and analyzing edge directions in Gremlin to understand message flows.

  • Maps as Keys

    Highlights language-specific issues of using Maps as keys in Gremlin and practical workarounds for compatibility.

  • Static and Dynamic Map Instances

    Compares static vs dynamic Map creation in Gremlin and how object equality impacts traversal results.

  • WTF - What the fold()

    Demystifies Gremlin’s `fold()` step and illustrates its importance in stream reduction and transformation.

  • constant() Is Not inject()

    Clarifies the practical differences between Gremlin’s `constant()` and `inject()` steps for value transformation.

  • A Nulled Union

    Explores Gremlin’s `choose()` step and new handling of nulls for flexible conditional logic in graph traversals.