Skip to content

@dennwc dennwc released this Apr 12, 2017 · 322 commits to master since this release

This release marks community build number three. It includes all the pending features that can be merged before v0.7, which will be a major release to introduce Reification, and may cause breaking changes.

The storage format was not changed for this release. Existing databases should work properly without any migration needed.

Cayley now supports multiple SQL flavors, including MySQL and CockroachDB.

To avoid further confusion, our Gremlin-style query language was renamed to Gizmo to emphasize that it's not fully Gremlin-compliant. We also switched to the Goja JavaScript VM for better performance and ES5.1 support. Error handling was also improved for our query language.

This release introduces an experimental GraphQL implementation. Note that it only shares a similar syntax and does not support schema yet. It's a preview feature, so the implementation or API may change in following releases.

The import and export formatter system is now modular and can be easily extended. Cayley now supports JSON-LD, Graphviz (aka DOT; export only) and custom binary formats for better import speed. The HTTP API was updated (v2) to support the new formatter system and allows for the streaming of large amounts of data in single request.

The recursive iterator is finally available via the Go path library and Gizmo. It allows traversal of a path recursively to potentially unlimited depth.

A new Schema library was implemented to allow developers to save and load complex Go objects with a single method call.


  • Support for MySQL and CockroachDB.
  • Gizmo query language with faster ES5.1-complaint VM (supersedes Gremlin).
  • Experimental GraphQL-like query language.
  • Modular import/export formats system.
  • Support for JSON-LD, Graphviz (DOT) and Cayley-specific binary format.
  • HTTP API v2 with better import/export performance for large data files.
  • Recursive iterator support (FollowRecursive).
  • Schema lib (aka ORM or Object Persistence Layer).
  • IRI prefix registration.

Full changelog:

dennwc: gizmo: expose recursive traversal and update docs
dennwc: path: FollowRecursive traverses quad.Values
barakmich: add FollowRecursive to the path lib
barakmich: graph/iterator: Add Recursive iterator
dennwc: graphql: close iterator properly; fixes #545
dennwc: tests: require.NoError instead of Nil
dennwc: gae: fix nop iterator optimization
dennwc: sql: append WHERE only if constraints are present
dennwc: http: CORS, API to get supported formats and RO mode fix
dennwc: quads: add json stream format
dennwc: mql: fix NPE
dennwc: gephi: allow to filter quads in raw mode
dennwc: gephi: inline primitive values automatically; inline schema:url
dennwc: gephi: initial support for graph stream
jtorvald: Updated documentation based on Issue #349 (#541)
caosiyang: docs: fix a typo in (#542)
jtorvald: Issue #286 init db and config documentation (#538)
Yannic: graph: cleanup and more robust options handling (#536)
dennwc: initial graphql support
dennwc: cli: fix loading of data for non-persistent backend
jtorvald: docs: replace broken MQL link, add quick-start cli usage example (#535)
mikaelcabot: CockroachDB transaction retries (#534)
dennwc: bolt: make bolt concurrent-safe as it should be
dennwc: gizmo/gremlin: fix tags for Both traversal; fix #532
dennwc: fix #530 and write errors as plain json
dennwc: quad: support for graphviz format
dennwc: memstore: close iterator properly
dennwc: memstore: do not hash values in QuadDirection
dennwc: memstore: no recursion in Next
dennwc: http: use formats - implement write api v2; resolves #176
dennwc: mongo: allow to pass full urls; fix #526
dennwc: add missing build tags; find relative path of data files automatically
dennwc: sql: support flavors: mysql, cockroachdb
dennwc: mongo: remove nodes with no references; fix #517
dennwc: gizmo: allow to register custom IRI prefixes; resolves #505
barakmich: revert proto GetNativeValue and check for crashing nils on describe
barakmich: Fill literal strings in MQL the same way we do results in Gremlin
dennwc: gremlin: fix limit in ForEach; fixes #518
barakmich: Fix non-persistent load, modernize MQL test
barakmich: Fix -v option and debug error
barakmich: Tidy up Optional iterator, and allow MQL to support JS-like string syntax
dennwc: switch to goja (gizmo)
barakmich: Fix dependencies, make Docker an optional dependency, add build tags for docker and appengine tests
mzats: Updated examples so that they work in repl/http. (#499)
barakmich: Remove IsNode() from the graph.Value definition.
dennwc: schema: move well-known types package
dennwc: graph: refactor interfaces
dennwc: add example for schema library
dennwc: ported schema lib
dennwc: use vocabulary constants for value types, allow to shorten and expand IRIs
dennwc: register known rdf vocabularies, add constants
joostverdoorn: Add missing gojsonld dependency to glide (#502)
dennwc: bolt/leveldb: stop complaining about existing quads even if ignore is set
dennwc: http/repl: handle errors correctly
dennwc: nquads: remove duplicated code
dennwc: integrate quad formats, replace exporter, use quad helpers in tests
dennwc: quad: readers, writers and formats.
dennwc: Update minimal Go version
dwhitena: Ability to pass the Mongo Backend an externally managed session. (#486)
pbsladek: Update quickstart for 0.6.0 (#487)
dennwc: add github issue template
dennwc: sql: fix sqlNodeIterator size
dennwc: fix count iterator
dennwc: path: test both optimized and unoptimized case; few more test for gremlin
kaneshin: Fix minor typos (#483)
barakmich: Add arm64 support
Assets 11
You can’t perform that action at this time.