cayley v0.6.1 Release Notes

Release Date: 2017-04-12 // about 3 years ago
  • 🚀 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