Blueprints: A Property Graph Model Interface
http://blueprints.tinkerpop.com
```xml
com.tinkerpop.blueprints
blueprints-core
2.4.0-SNAPSHOT
```
- Configurable storage for
TinkerGraph
: GraphML, GraphSON and GML GraphChangedListener
fromEventGraph
can mutate graph without concurrent modification exception- Scope of
EventGraph
base classes changed topublic
for those wanting to extend up on them. - Deprecated
Query.has(key,value,compare)
and addedQuery.has(key,compare,value)
- Bumped Dex to 4.8.0
- Support both
byte
andshort
data types in GraphSON. - Convert
Array
toArrayList
inNeo4jGraph
when retrieving such property values.
```xml
com.tinkerpop.blueprints
blueprints-core
2.3.2-SNAPSHOT
```
- Updated
KeyIndexableGraph
test suite to ensure no requirement on returnedIterable
type. RexsteGraph
properly supportingboolean
data types.
```xml
com.tinkerpop.blueprints
blueprints-core
2.3.0
```
- Generalized
IdGraph
to selectively enable custom vertex or edge IDs - Stricter testing of property keys/value to ensure legal Blueprints values (no id, label, empty string, null)
Element.getProperty()
API signature changed to support automatic typing to declared variable type- Moved
PropertyGraphSail
, which provides a dynamic RDF view of any Blueprints graph, from Tinkubator intoblueprints-graph-sail
- Bumped major versions of Ripple and SesameTools
Neo4jBatchGraph
project moved toNeo4jGraph
undercom.tinkerpop.blueprints.impls.neo4j.batch
OrientBatchGraph
moved tocom.tinkerpop.blueprints.impls.orient.batch
- Added
GraphQuery
in order to support intelligent indexing systems (Vertex.query()
andGraph.query()
) - Refactoring of wrappers to ensure proper propagation of
Graph
reference - Fixed a
ConcurrentModificationException
in TinkerGraph Element
API changed to supportElement.remove()
Vertex
API changed to supportVertex.addEdge(String,Vertex)
- Bumped to support Neo4j 1.9.M05
- Improved transaction concurrency in
DexGraph
- Deprecated
TransactionalGraph.stopTransaction()
in favor ofcommit()
androllback()
- Renamed
ThreadedTransactionalGraph.startTransaction()
toThreadedTransactionalGraph.newTransaction()
- Loosened restrictions on edge-indexing in
GraphSail
(though for some types of queries, exception thrown) RestHelper
inRexsterGraph
packages is no longer publicly available- Added
execute
methods toRexsterGraph
to allow execution of raw Gremlin scripts to the Gremlin Extension in Rexster - Include the original property value in property changed/removed events generated from
EventGraph
- Add the option for graph-specific index parameters on
createKeyIndex
method onKeyIndexableGraph
- Fix bug in
GraphMLReader
where the reader ignored data type casting when theattr.name
was different from theid
in thekey
element - Upgraded to Jackson 2 for JSON processing in GraphSON
```xml
com.tinkerpop.blueprints
blueprints-core
2.2.0
```
- Renamed
GraphSail
property default.namespace to default-namespace for compatibility with OrientDB - Removed the
SailGraph
constraint preventing traversal from literal vertices to non-literal resource vertices - Refactoring of
GraphSONUtility
and related reader/writer classes to improve performance and offer more control over how GraphSON is read and written - Added support for
Compare.opposite()
to get the inverse of a comparator - Added support for property inclusion and exclusion in the GraphMLReader/Writer
GMLWriter
ignores any property keys that are not allowable by GML standards when the “strict” flag on the writer is set totrue
- OrientDB graph implementation supports passing
class
as an argument to theaddVertex
method. - Removed a class type check in
KeyIndexableGraphTestSuite
that unnecessarily assumes a specific implementation - Fixed a state bug in
WrapperQuery
GraphJung
implements JUNG’sDirectedGraph
interface and did various small optimizations to implementation- Bumped to support Dex 4.7.0
- Bumped to support Neo4j 1.9.M02
- Bumped to support OrientDB 1.3.0
ExceptionFactory
support for_
metadata properties- Added more constructors to
Neo4jHaGraph
ReadOnlyGraph
supports the non-mutating methods ofKeyIndexableGraph
.
```xml
com.tinkerpop.blueprints
blueprints-core
2.1.0
```
- Enable tests for
KeyIndexableGraph
underRexsterGraph
. Issue with casting index values resolved. - Optimized the pom.xml for both the parent and child projects
- Added Travis continuous integration support
- Made
OrientGraph
andNeo4jGraph
Element constructors public - Provided a method to turn on/off
Neo4jGraph
transaction consistency checking. Default behavior being native Neo4j. - Removed
TransactionalGraph.startTransaction()
as transactions are auto-started - Bumped to support Dex 4.6.0
- Bumped to support Neo4j 1.8.M06
- An
Element
can not have a property key that is the empty string - Update
RexsterGraph
to utilize Vertex Query API of Rexster. - Renaming of GraphSONFactory to GraphSONUtility and various method renaming within that class.
- Fixed an iterable consistency issue in
Neo4jGraph
- Removed unneeded Exception catching in both
Neo4jGraph
andOrientGraph
- Bumped to support Orient 1.1.0
```xml
com.tinkerpop.blueprints
blueprints-core
2.0.0
```
- Added a var args based
ElementHelper.setProperties()
method - Added GML Reader/Writer utility
- Bumped to support Neo4j 1.8.M02
RexsterGraph
supports Rexster AuthenticationNeo4jElement
will accept aCollection
as a property (as long as all items within it are of the same data type), internally converting it to an array for storage in Neo4j- Fixed a couple of API naming convention errors in
PartitionGraph
- Updated core
Vertex
API to support the notion of ‘push down predicates’ (lower level element filtering) - Added internal support for Neo4j’s
Node
var args ofRelationshipTypes
- Speed improvements to the much used
MultiIterable
- Removed
CloseableSequence
and replaced withCloseableIterable
(now real JavaIterable
semantics respected) - Redesign to
IndexableGraph
whereAutomaticIndex
no longer exists as is default - Introduced new interface called
KeyIndexedGraph
for basic key/value property indexing - Reduce the number of vertices/edges created in various test suites to speed up testing
- Added
Features
so developers can learn about the various quirks of anyGraph
implementation - Support for Neo4j’s native automatic indices in
Neo4jGraph
- Support for Neo4j’s native automatic indices in
Neo4jBatchGraph
- Added
ExceptionFactory
so all exceptions have the same message and type amongst graph implementations - Removed superfluous
util
packages on allGraph
implementations EventGraph
wrapper set now includesEventTransactionalGraph
which will fire queued sets of events in conjunction with successful commits to the graph.- Added
IdGraph
to support the user defined ids for thoseGraphs
that ignore user supplied ids - Added
ThreadTransactionalGraph
to support multiple threads within a single transaction - Changed the
Vertex
API to only have three methods:getEdges()
,getVertices()
, andquery()
- Bumped to support OrientDB 1.0.1
- Added
BatchGraph
to support bulk loading of data
```xml
com.tinkerpop.blueprints
blueprints-core
1.2
```
- Fixed
Neo4jGraph
index object caching bug which was made salient with multiple threads - Fixed
SailGraph
to now commit transactions on shutdown - Updated
Neo4jGraph
to useGlobalGraphOperations
methods forgetAllNodes()
andgetAllRelationships()
- Bumped to support Neo4j 1.6.1
- Fixed “fresh”-constructor bug in
Neo4jGraph
- Added method support for named graphs in
SailGraph
- Fixed named graph bug in
SailGraph
Neo4jBatchGraph
now has nearly analogous behavior to anyIndexableGraph
except for the ability to delete- Fixed issue with Neo4j’s native automatic index and
Neo4jGraph.dropIndex()
- Added
PartitionGraph
utility to allow for graph partitions - Renamed packages where there is now
util.io
andutil.wrappers
for I/O and wrapper-based utilities - Added support for index parameters in
IndexableGraph
(provided as optional parameters, thus backwards compatible) - Optimized how
TinkerGraph
stores its vertices’ edges in memory (grouping on label)
```xml
com.tinkerpop.blueprints
blueprints-core
1.1
```
- Fixed index consistency issue in
OrientGraph
- Added
Neo4jHaGraph
allowing a more direct way to utilize Neo4j High Availability mode - General API consistency improvements
- Graphs attempt to create directories structures for graph persistence
- GetVertex/Edge throw
IllegalArgumentException
if passed a null identifier as a parameter - GetVertex/Edge return
null
if the element cannot be found, if the identifier does not match the expected format of the underlying graph database or if the underlying graph database throws exceptions during the lookup
RexsterGraph
utilizes theapplication/vnd.rexster.typed+json
custom mime type- The
EventGraph.addEdge()
method now properly fires theonEdgeAdded
event with improved test cases - Added
WrappedGraph
as a template for how to build stackable graph implementations - Added
SparqlRepositorySailGraph
to support aGraph
representation of any SPARQL endpoint - Renamed
GraphJSONxxx
toGraphSONxxx
to promote as standardized JSON graph format - Bumped to support OrientDB 1.0rc7
- Bumped to support Neo4j 1.5
```xml
com.tinkerpop.blueprints
blueprints-core
1.0
```
- Bumped to support Neo4j 1.5.M01
- Bumped to support OrientDB 1.0rc5
RexsterGraph
uses the actual count REST API instead of pulling back all results first and checking sizeGraphJSONReader
andGraphJSONWriter
utility classes- Updated
TransactionalGraph
API to support transaction buffers- Removed
TransactionalGraphHelper.CommitManager
as it is no longer relevant - Changed
TransactionalGraph.close()
toConclusion.SUCCESS
any open transactions
- Removed
- Fixed a
ConcurrentModificationException
inTinkerGraph
and added respective test cases for all graphs - Added
StringFactory.graphString()
for a unifiedString
representation of a Blueprints graph - Added
Neo4jBatchGraph
to support bulk inserting of graph data into a Neo4j instance
```xml
com.tinkerpop.blueprints
blueprints-core
0.9
```
- Updated Vertex API to have
getOutEdges(String...)
andgetInEdges(String...)
- Updated
TinkerGraph
to beConcurrentModificationException
safe - Bumped to support Neo4j 1.4
- Bumped to support OrientDB 1.0rc4
IndexableGraph.getIndex()
now returnnull
for non-existent indices instead ofRuntimeException
- Added support for statement deduplication (now the default) in
GraphSail
- Refactored
GraphMLReader
andGraphMLWriter
to use a more typical pattern for readers and writers (rather than continuing to overloadinputGraph()
andoutputGraph()
). Added normalizing functionality toGraphMLWriter
, enabling graph versioning - Changed the property graph schema of
GraphSail
to more closely resemble theSailGraph
schema - Extended
GraphSail
to support Sesame-style inferencing SailGraph
dangling connection issue fixed- Updated
Index.toString()
to make it more readable and compact - Updated
graph.getVertex/Edge(null)
to ensure thatnull
is returned
```xml
com.tinkerpop.blueprints
blueprints-core
0.8
```
- Added
EventGraph
implementation RexsterGraph
improvements- Use of POST for REST Service Requests
- Better implementation URL encoding
- Change JSON library from json-simple to jettison to be more in line with the rest of the TinkerPop stack.
- A more robust implementation of the
TransactionalGraph
implementation forNeo4jGraph
,OrientGraph
, andSailGraph
. - Bumped to Neo4j 1.4.M04
- Bumped to Orient 1.0rc2-SNAPSHOT
- Bumped to Sail 2.4.0
```xml
com.tinkerpop.blueprints
blueprints-core
0.7
```
- Updated
RexsterGraph
to work with latest Rexster REST API changes - Bumped to Neo4j 1.4.M01
- Bumped to OrientDB 1.0rc1
- Bumped to Sail 2.3.3
```xml
com.tinkerpop.blueprints
blueprints-core
0.6
```
- Refactored to create a Maven multiproject with one module per major Blueprints component
- Added
DexGraph
implementation (Sparsity Technologies) - Bumped to OrientDB 1.0rc1-SNAPSHOT
- Bumped to Neo4j 1.3M05
- Fixed equals() and hashCode() bug in
ReadOnlyGraph
- Bumped to supporting JUNG 2.0.1
- Added
Index.count()
method to Blueprints core API.
```xml
com.tinkerpop
blueprints
0.5
```
- Updated index model
- Changed the API and semantics of
AutomaticIndex
- Changed the API of
IndexableGraph
- Changed the API and semantics of
- Fixed index related bug in
RexsterGraph
- Added numerous utilities to
util
package- Added support for bulk processing with
CommitManager
- Added support for bulk processing with
- Added UTF-8 writer to
GraphMLWriter
- Updates to
OrientGraph
implementation - Fixed bug in
Neo4jGraph
index loader - Added
toString()
method to indices - Added experimental Lucene query syntax support for
Neo4jGraph
- Bumped version support to Neo4j 1.3.M03
- Added performance benchmark for Neo4j
GraphDatabaseService
vs. BlueprintsNeo4jGraph
- Added performance benchmark for OrientDB
OGraphDatabase
vs. BlueprintsOrientGraph
- Added
Vertex.getOutEdges(String label)
andVertex.getInEdges(String label)
- Rewrote OrientDB implementation from scratch (significant reduction in code) (Luca)
- Added
ReadOnlyGraph
andReadOnlyIndexableGraph
to prevent graph mutations
```xml
com.tinkerpop
blueprints
0.4
```
- Added support for Neo4j 1.2
- Added edge label indexing to
AutomaticIndex
- Added concept of “ouplementation”
- Repackaged JUNG ouplementation as
GraphJung
- Added Sail ouplementation as
GraphSail
- Repackaged JUNG ouplementation as
- Created
util
utility package- Repackaged GraphML library in
util.graphml
- Repackaged GraphML library in
```xml
com.tinkerpop
blueprints
0.3
```
- Moved to
graphdb-deps-*
database dependency management model- Neo4j 1.2.M05
- OrientDB 0.9.24.1
- Sail 2.3.1
- Rexster 0.1
- Removed object document model to focus Blueprints specifically on property graphs
- Removed support for TinkerDoc, MongoDB, and CouchDB
OrientGraph
now implementsTransactionalGraph
interface- Many updates to
TransactionalGraphTestSuite
- Large transactions now tested
- Added timing tests to all tests
- Updated
Index
semantics whereget()
no elements returns an empty iterator, notnull
- Updated the
toString()
method ofTinkerGraph
to display both vertex and edge counts - Added support for multiple indices
- Added
IndexableGraph
,Index
, andAutomaticIndex
interfaces - Added numerous test cases to the test suite
- Added
- Updated
GraphMLReader
- More efficient implementation
- Can specify ids and labels through
_id
and_label
data properties
- Added
GraphMigrator
to stream the data in one graph to another - Added
RexsterGraph
to connect to remote graphs over HTTP-REST - Added JavaDoc to all property graph model interfaces
```xml
com.tinkerpop
blueprints
0.2
```
- Removed Blueprints Pipes BETA and put it into a separate project
Neo4jGraph
constructor can be passed in a Neo4j properties mapNeo4jGraph
constructor can be passed in a liveGraphDatabaseService
- Updated
GraphMLWriter
to write all vertices and then all edges - Added RDF load functionality to
SailGraph
- Added SPARQL functionality to
SailGraph
- Fixed sever
GraphMLReader
bug - Added OrientDB (
OrientGraph
) as a property graph implementation - Added support for
Graph.getEdge(Object id)
- Added support for
kind
in the Sail implementation of Blueprints - Made iterating edges in
SailGraph
faster and more memory efficient - Support for transactions through
TransactionalGraph
```xml
com.tinkerpop
blueprints
0.1.1
```
- Added Blueprints Pipes BETA to the distribution
- Changed all the OpenRDF Sesame dependencies to version 2.3.1
- Added performance timing printouts to model test cases
- Neo4j dependency was changed for 1.0-rc to 1.0
- Added object document interfaces
- Added TinkerDoc implementation of the object document interfaces
- Added MongoDB implementation of the object document interfaces
```xml
com.tinkerpop
blueprints
0.1
```
- Initial release providing the property graph model
- Code originally packaged with Gremlin