Current Limitations

What Graphersal 0.1.0 does not do, in one place. Each item links to the page with the details; the deliberate differences from Apache TinkerPop are listed one by one in TinkerPop Deviations, and the steps and scenarios that are not implemented yet in TinkerPop Compliance.

Data model

  • No date or time values. They come with a date type in 0.2.0. A GraphSON import skips dates and reports them (GraphSON); a schema refuses "format": "date-time" (Schemas).
  • One value per property key. Only Cardinality.single is written; store several values as one array (Upserts). There are no meta-properties: a GraphSON import folds them into the _meta property.
  • Ids are strings. A numeric id becomes its text, and ids order as strings ("10" before "9"; see Id Arguments and Predicates).
  • Edges have one label; vertices have a label set (Multi-Label Vertices).
  • No property index. has(key, value) is checked while the start step scans; only ids and labels are looked up through an index (Query Optimizer).
  • The graph lives in memory. A Store makes it durable, but the whole graph is loaded into memory when the store is opened.

Query language

  • The DSL is Rhai, not Groovy. Queries read like Gremlin in either spelling (hasLabel or has_label), but maps are written #{..}, child traversals need __. (where(__.out())) and tokens need their class (Order.desc, Scope.local). A Gremlin text query is not parsed as it is.
  • No withStrategies() / withoutStrategies(). Execution options are set with g.with(key, value) (Execution Options Reference).
  • No g.tx(). Every traversal is one unit of work; a host can run a whole script as one unit (Transactions).
  • No Cypher or GQL front end yet; the multi-label storage is the groundwork for one.
  • Saved queries only read and are called at the start of a traversal (g.query(..)), not on incoming traversers (Saved Queries).

Schema

  • No map type (additionalProperties with a schema), no oneOf/allOf/not, no tuples, and no format other than uuid (Schemas).
  • default is an annotation only: it is never written or substituted (default is not applied).

Security and serving

  • Read security per element or label does not exist yet; an authorizer decides per request kind and label as the plan states it (Permissions).
  • The dev server (graphersal --server, also MCP and AI Chat) is a local development tool: unstable, bound to the loopback, without authentication (Dev Server and MCP).

Other