Skip to content

v0.6.0 -- Types

Compare
Choose a tag to compare
@barakmich barakmich released this 07 Oct 21:23
· 893 commits to master since this release
v0.6.0

Current release marks community build number two, introducing major change to data layout and bringing new features to Gremlin.

Storage format changed slightly. We highly recommend to do a clean import of the database with a new binary.

Cayley now honors types of nquad values. IRIs (<name>) were converted to untyped strings (name), so it was possible for nodes with different types to be loaded as a single node. Now Cayley preserves type information, making these nodes separate. Queries that used IRIs without <> quotes will break because of this change. Gremlin now requires IRI it to be in "<follows>" form and the path lib expect these values to be of quad.IRI Go type. The same stands for Strings (aka RDF literals) and BNodes (aka blank nodes, _:name).

Data loader now recognizes few basic typed literals like "10"^^<http://schema.org/Integer> and converts them into corresponding native type (Int for this example). It may also affect existing queries. Gremlin will automatically convert basic types into corresponding RDF typed literals.

Highlights:

  • Typed values support for all backends. Includes types: String, IRI, BNode, Int, Float, Bool, Time.
  • New traversals in path lib and Gremlin: HasReverse, Skip, Limit, Count, Unique, Comparison/Filter, Regex.
  • More consistent backends behavior thanks to unified tests.
  • Updated docs and added examples.
  • Updated Docker image, and added example for it.
  • Many, many bugfixes and some optimizations.

Full changelog:

gabrys: Fix link to GremlinAPI.md (#477)
dennwc: expose Unique via path lib and gremlin; implement and expose Count iterator; resolve #240
dennwc: gremlin: add regex support, make it harder to abuse regexps; add docs explaining why
guycook: Implement regex filter as iterator (#474)
dennwc: bolt,leveldb: fix AllQuads iterator not skipping deleted quads, add test
dennwc: iterator: add variadic arguments to Add, Or and Fixed constructors
dennwc: query: Refactor interfaces (#471)
dennwc: fix lru panic
wayeast: Clone receiver paths (#466)
kenshaw: appengine: updating dependency paths and adding documentation (#464)
dennwc: gremlin: handle string slice in via parameter
kenshaw: appengine: add build constraint (#463)
dennwc: Glide migration (#460)
dwhitena: user/pass functionality for mongo backend
allanino: Fix Docker building (#456)
barakmich: gremlin: don't require a session to last as long as the timeout
kris-runzer: graph: fix Is*(err error) checkers to properly compare against *DeltaError, add tests
dennwc: optimize by default in Iterate helper
dennwc: gremlin: clone path objects
neonstalwart: simplify the signature of NextLogOut (manual merge of #264)
dennwc: graph: add iteration helpers, update examples; resolves #446
dennwc: http: fix json quads decoding
dennwc: gremlin: fix ToArray without arguments
dennwc: iterator: promote Next to main interface; make NoNext an optional interface
oren: Example of BoltDB, update examples/README.md
robertmeta: Just better quickstart + examples creation
dennwc: query: check type assertions, recover properly in gremlin; fixes #450
josephschorr: Add Clone() to Path for easier reuse of Path segments (#444)
dennwc: Wire Skip and Limit to Gremlin. Also fixed #254.
dennwc: postgres: store hashes as binary data instead of hex strings
dennwc: postgres: prepare each statement in ApplyDeltas
dennwc: postgres: generate distinct node insert statements only
dennwc: cquads: convert TypedString values to native types automatically on loading
dennwc: gremlin: allow to specify multiple conditions in Filter
dennwc: mongo: optimize comparison iterator
dennwc: Test for typed value comparison and optimization
dennwc: gremlin: expose value comparison iterator via path lib, add tests
dennwc: gremlin: support for typed values
dennwc: gremlin: replace JS-based graph object with reflect-based (rewritten, now it's easier extend)
dennwc: comparison: compare only values with the same type, add a test for mixed set
dennwc: mongo: use native value types where possible, fix indexing, remove recursion in LinksTo, remove unnecessary roundtrip
dennwc: postgres: new table structure, store typed values natively; fix iterators; separate LRU cache
dennwc: Update value comparison iterator. Stop graph.Value madness.
dennwc: cquads: recognize TypedString and LangString in parser
dennwc: Add a test for Raw-to-typed values exchange. Fix memstore not using hashes in map.
dennwc: GAE (untyped). More tests. Fixed handling of size and conflicts in postgres.
dennwc: quad: add support for few basic types (int, float, bool, time)
dennwc: Unify tests for QuadStore. Run Mongo/Postgres in Docker automatically.
dennwc: leveldb: use protobuf instead of json, migration code
dennwc: bolt: migration code
dennwc: add typed fields to protobufs
dennwc: graph,query,exporter,path: updated to use typed values
dennwc: quad: directions are typed
kortschak: graph: provide more meaningful errors for bad actions (#443)
josephschorr: Don't iterate over all quads unless necessary (#440)
kortschak: clog: fix comment typos and add package comment (#442)
dennwc: Implement Skip and Limit iterators (#369)
EntilZha: Delete node API (#158)
dennwc: Updated Dockerfile (fixed #357)
dennwc: fix Unique iterator for non-comparable tokens; fixes #437
kortschak: clog: make nil Logger safe (#436)
robertmeta: Sweep through docs update/cleanup
oren: remove duplicate in readme (#435)
dennwc: fix postgres error on import, fixes #429
dennwc: Added HasReverse function to path lib (#351)
drzippie: Added sync.RWMutex to mongo cache  (#380)
robertmeta: Update docs (README, Locations, Quickstart-As-Lib, Quickstart-As-Application, HACKING, FAQ, Container)
robertmeta Rerouting CONTRIBUTING to the discourse, updating CONTRIBUTORS to remove mention of CLA
robertmeta: Moving Hacking from wiki to project
dennwc: separate log package, resolves #221