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.