An implementation of the Blueprints API over JPA
JavaScript Java Shell Other
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
gremlin
rexster
src
.gitignore
README.md
build.xml
pom-eclipselink.xml
pom-hibernate-ogm.xml
pom-hibernate.xml
pom-objectdb.xml
pom.xml

README.md

Blueprints JPA Graph

An implementation of the Blueprints API over JPA(1).

The reason I implemented blueprints-jpa-graph is that I was attracted to the ObjectDB(2)'s performance(3).

Support Features

Support JPAs

Which one you need depends on what you want to use with it:

Weak points

  • IndexableGraph and KeyIndexableGraph have poorer performance than native GraphDBs.
  • In case of using EclipseLink and Hibernate, adding massive data at one commit is very slow, then we should divide massive data into a plurality of sub-blocks.

Micro benchmark only as a guide

OrientDB JPA:ObjectDB(*1) JPA:EclipseLink+Derby JPA:Hibernate+Derby DEX
2.5.0-SNAPSHOT(*2) 2.5.0-SNAPSHOT(*3) 2.5.0-SNAPSHOT(*4) 2.5.0-SNAPSHOT(*5) 2.4.0(*6)
VertexTestSuite 8212.51 3662.94 4001.32 7233.31 5051.43
VertexQueryTestSuite 3808.78 804.28 762.79 1943.51 1482.64
EdgeTestSuite 9863.45 2282.13 2386.27 5482.16 4416.40
GraphTestSuite 11141.28 10893.83 8591.78 15962.46 5631.75
GraphQueryTestSuite 1456.90 336.30 357.44 1585.12 633.13
GraphMLReaderTestSuite 3096.25 1526.83 1581.42 3710.91 2771.08
IndexableGraphTestSuite 5669.64 1307.18 1176.68 3099.10 -
IndexTestSuite 2255.25 541.50 526.15 1345.00 -
KeyIndexableGraphTestSuite 3027.29 1780.79 2209.91 5404.79 -
TransactionGraphTestSuite 17533.41 14936.44 22549.49 36736.34 -

(msec)

 *1: ObjectDB 2.5.4
 *2: mvn test -Dtest=OrientGraphLightweightEdgesTest
 *3: mvn -f pom-objectdb.xml test -Dtest=JpaGraphTest
 *4: mvn -f pom-eclipselink.xml test -Dtest=JpaGraphTest
 *5: mvn -f pom-hibernate.xml test -Dtest=JpaGraphTest
 *6: mvn test -Dtest=DexGraphTest

Testing and Installing

Installing into the Maven local repository manually

 % mvn install -DskipTests=true

Running Property Graph Model Test Suite

 % ant test-all

Samples

These will probably be good references for that you integrate into your system with JpaGraph.

Running Gremlin with JpaGraph

Running Rexster with JpaGraph

Using SPARQL+Rexster with JpaGraph

Integration

Constracting a JpaGraph in Java code

Sample Maven Dependencies

Integrating with Vert.x Tinkerpop Persistor Module and JpaGraph

Using GraphFactory

If using GraphFactory to instantiate a JpaGraph, the following properties will apply:

Key Description
blueprints.jpagraph.unit-name set a persistance unit name: 'EclipseLinkUnit', 'HibernateUnit', or 'ObjectDbUnit'
blueprints.jpagraph.persistence-unit-properties set persistence unit properties if it is necessary

Maven Repository

 <dependency>
     <groupId>com.wingnest.blueprints</groupId>
     <artifactId>blueprints-jpa-graph</artifactId>
     <version>2.5.0_01</version>
 </dependency>
 Repository: http://www.wingnest.com/mvn-repo/ 

Licence

Blueprints JPA Graph is distributed under the Apache 2 licence.