Neo4j Drivers

Logo

These are the official pages of the Neo4j Drivers Team. Tools and components for driver authors can be found here, as well as specifications for the Bolt protocol and related technologies.

Copyright © 2002-2018 Neo4j Sweden AB.

Creative Commons Licence
These works are licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.

View My GitHub Profile

Overview of Driver Technology

The sections below contain links to current, historic, and proposed future specifications.

Unlinked entries in the lists below generally represent known future artifacts that have not yet been designed or current or historic artifacts that have no specification available. Such entries exist for completeness.

PackStream

PackStream is a binary presentation format for the exchange of richly-typed data. It provides a syntax layer for the Bolt messaging protocol.

Jolt

Jolt is a proposed PackStream spin-off that provides identical data exchange capabilities to PackStream within a pure JSON context. This introduces readability at the expense of a slightly higher byte count.

Jolt is intended primarily for use over an HTTP connection and can be useful within network environments that have a requirement for the automatic inspection of traffic.

Bolt

Bolt is an application protocol for the execution of database queries via a database query language, such as Cypher. It is generally carried over a regular TCP or WebSocket connection.

Bolt inherits its core type system from PackStream, over which its messages are generally carried. Each version of Bolt provides a number of type system extensions, via the PackStream type extension mechanism.

Bolt Handshake

All Bolt connections begin with a handshake to negotiate which version of the messaging protocol to use. Following a successful negotiation, the agreed messaging protocol then takes ownership of the connection for the remainder of its lifetime. The handshake itself is not versioned.

Bolt v1 (Neo4j 3.0 to 3.3)

Version 1 corresponds to the first releases of the messaging protocol and the type system.

Bolt v2 (Neo4j 3.4)

Version 2 incorporates an updated type system, but retains the messaging protocol from version 1. There is consequently no second version of the Bolt Messaging Protocol Specification.

Bolt v3 (Neo4j 3.5)

Version 3 incorporates both an updated type system and an updated messaging protocol.

Bolt v4 (Neo4j 4.0)

Version 4 incorporates both an updated type system and an updated messaging protocol.

Driver API:

The official Neo4j drivers export a uniform API. This allows driver concepts and naming to be shared across ecosystems, making transition between languages and multi-language support easier and more consistent.

Connectors

Connectors are low-level libraries that provide Bolt messaging and routing capabilities. They are primarily intended for use by drivers and other tooling. It is recommended that application developers choose a driver over a connector for general purpose integration with Neo4j.

Tools

The links below provide extra resources for driver authors.