/neo4j-framework

GraphAware Neo4j Framework

Primary LanguageJava

GraphAware Neo4j Framework ==========================

Build Status | Downloads | Javadoc | Latest Release: 3.0.6.43

GraphAware Framework speeds up development with Neo4j by providing a platform for building useful generic as well as domain-specific functionality, analytical capabilities, (iterative) graph algorithms, etc.

See the announcement on our blog.

Features Overview

On a high level, there are two key pieces of functionality:

  • GraphAware Server is a Neo4j server extension that allows developers to rapidly build (REST) APIs on top of Neo4j using Spring MVC, rather than JAX-RS
  • GraphAware Runtime is a runtime environment for both embedded and server deployments, which allows the use of pre-built as well as custom modules called GraphAware Runtime Modules. These modules typically extend the core functionality of the database by
    • transparently enriching/modifying/preventing ongoing transactions in real-time
    • performing continuous computations on the graph in the background

Whether or not you use the code in this repository as a framework or runtime as described above, you can always use it as a software library by adding it as a dependency to your project, and take advantage of its useful features. For Java developers only(1), the following functionality is provided:

(1) i.e., for embedded mode users, managed/unmanaged extensions developers, GraphAware Runtime Module developers and framework-powered Spring MVC controller developers

Please take a look at the provided examples.

Framework Usage

### Server Mode

When using Neo4j in the standalone server mode, deploying the GraphAware Framework (and any code using it) is a matter of :

  • downloading the appropriate .jar files
  • copying them into the plugins directory in your Neo4j installation (if you installed using .dmg installer, this will be in /Applications/Neo4j [Community|Enterprise] Edition.app/Contents/Resources/app/plugins/)
  • adding dbms.unmanaged_extension_classes=com.graphaware.server=/graphaware to neo4j.conf
  • restarting the server

The framework and modules are then used via calls to their REST APIs, if they provide any.

Embedded Mode / Java Development

Java developers that use Neo4j in embedded mode and those developing Neo4j server plugins, unmanaged extensions, GraphAware Runtime Modules, or Spring MVC controllers can include use the framework as a dependency for their Java project and use it as a library of useful tested code, in addition to the functionality provided for server mode.

Getting GraphAware Framework ----------------------------

Releases

To use the latest release, download the appropriate version and put it the plugins directory in your Neo4j server installation and restart the server (server mode), or on the classpath (embedded mode).

Releases are synced to Maven Central repository. When using Maven for dependency management, include one or more dependencies in your pom.xml. To find out which ones, read further by clicking on one of the sub-modules of this project.

Snapshots

To use the latest development version, just clone this repository and run mvn clean install. This will produce 3.0.6.44-SNAPSHOT jar files. If you need standalone .jar files with all dependencies, look into the target folders in the build directory.

Note on Versioning Scheme

The version number has two parts. The first three numbers indicate compatibility with a Neo4j version. The last number is the version of the framework. For example, version 2.2.0.28 is version 28 of the framework compatible with Neo4j 2.2.0

Data Collection

Note that framework sends a POST request to Google Analytics every 5 minutes after start just so we know how many people actually use it. The only data transmitted are module and controller class names, version and edition of the framework, and the database store ID.

If you wish to completely disable stats collection, please add the following to neo4j.conf:

com.graphaware.runtime.stats.disabled=true
com.graphaware.server.stats.disabled=true

License

Copyright (c) 2013-16 GraphAware

GraphAware is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.