All Projects → graphaware → Neo4j Uuid

graphaware / Neo4j Uuid

GraphAware Runtime Module that assigns a UUID to all nodes (and relationships) in the graph transparently

Programming Languages

java
68154 projects - #9 most used programming language

Labels

Projects that are alternatives of or similar to Neo4j Uuid

Neo4j Symfony
Symfony Bundle for the Neo4j Graph Database
Stars: ✭ 69 (-31.68%)
Mutual labels:  neo4j
Neo4jupyter
A quick visualization tool for Jupyter and Neo4J
Stars: ✭ 85 (-15.84%)
Mutual labels:  neo4j
Bruteshark
Network Analysis Tool
Stars: ✭ 1,335 (+1221.78%)
Mutual labels:  neo4j
Neo4j Dotnet Ogm
Neo4j Object Graph Mapping Library for .NET
Stars: ✭ 69 (-31.68%)
Mutual labels:  neo4j
Neo4j Ios
Open Source Neo4j driver for iOS, Linux and macOS
Stars: ✭ 80 (-20.79%)
Mutual labels:  neo4j
Neo4j Apoc Procedures
Awesome Procedures On Cypher for Neo4j - codenamed "apoc"                     If you like it, please ★ above ⇧            
Stars: ✭ 1,291 (+1178.22%)
Mutual labels:  neo4j
Obsidian Neo4j Graph View
Neo4j Graph View is a more functional graph view to Obsidian. It connects to a Neo4j database, allowing useful querying and visualization options.
Stars: ✭ 65 (-35.64%)
Mutual labels:  neo4j
Pygraphistry
PyGraphistry is a Python library to quickly load, shape, embed, and explore big graphs with the GPU-accelerated Graphistry visual graph analyzer
Stars: ✭ 1,365 (+1251.49%)
Mutual labels:  neo4j
Neo4j
Graphs for Everyone
Stars: ✭ 9,582 (+9387.13%)
Mutual labels:  neo4j
Kglab
Graph-Based Data Science: an abstraction layer in Python for building knowledge graphs, integrated with popular graph libraries – atop Pandas, RDFlib, pySHACL, RAPIDS, NetworkX, iGraph, PyVis, pslpython, pyarrow, etc.
Stars: ✭ 98 (-2.97%)
Mutual labels:  neo4j
Stock Knowledge Graph
利用网络上公开的数据构建一个小型的证券知识图谱/知识库
Stars: ✭ 1,182 (+1070.3%)
Mutual labels:  neo4j
Neo4j sips
Elixir driver for the Neo4j graph database server
Stars: ✭ 78 (-22.77%)
Mutual labels:  neo4j
Clojure Graph Resources
A curated list of Clojure resources for dealing with graph-like data.
Stars: ✭ 94 (-6.93%)
Mutual labels:  neo4j
Neo4j Clj
Clojure bindings for Bolt / the Java Neo4j driver, complete with Joplin support for managing database migrations.
Stars: ✭ 70 (-30.69%)
Mutual labels:  neo4j
Economic audit knowledge graph
经济责任审计知识图谱:网络爬虫、关系抽取、领域词汇判定
Stars: ✭ 98 (-2.97%)
Mutual labels:  neo4j
Movies Java Bolt
Neo4j Movies Example application with SparkJava backend using the neo4j-java-driver
Stars: ✭ 66 (-34.65%)
Mutual labels:  neo4j
Beacongraph
Graph visualization of wireless client and access point relationships
Stars: ✭ 87 (-13.86%)
Mutual labels:  neo4j
Grest
Build REST APIs with Neo4j and Flask, as quickly as possible!
Stars: ✭ 102 (+0.99%)
Mutual labels:  neo4j
Neo4j Core
A simple unified API that can access both the server and embedded Neo4j database. Used by the neo4j gem
Stars: ✭ 99 (-1.98%)
Mutual labels:  neo4j
Activegraph
An active model wrapper for the Neo4j Graph Database for Ruby.
Stars: ✭ 1,329 (+1215.84%)
Mutual labels:  neo4j

GraphAware Neo4j UUID

Build Status | Downloads

GraphAware UUID is a simple library that transparently assigns a UUID to newly created nodes and relationships in the graph and makes sure nobody can (accidentally or intentionally) change or delete them.

Community vs Enterprise

This open-source (GPLv3) version of the library is compatible with Neo4j Community Edition only. It will not work with Neo4j Enterprise Edition, which is a proprietary and commercial software product of Neo4j, Inc.

GraphAware offers a paid Enterprise version of the GraphAware Framework to licensed users of Neo4j Enterprise Edition. Please get in touch to receive access.

Getting the Software

You will need the GraphAware Neo4j Framework and GraphAware Neo4j UUID .jar files (both of which you can download here) dropped into the plugins directory of your Neo4j installation. After adding a few lines of config (read on) and restarting Neo4j, the module will do its magic.

Releases

Releases are synced to Maven Central repository. When using Maven for dependency management, include the following dependency in your pom.xml and change version number to match the required version.

<dependencies>
    ...
    <dependency>
        <groupId>com.graphaware.neo4j</groupId>
        <artifactId>uuid</artifactId>
        <version>A.B.C.D.E</version>
    </dependency>
    ...
</dependencies>

Snapshots

To use the latest development version, just clone this repository, run mvn clean install and change the version in the dependency above to A.B.C.D.E-SNAPSHOT.

Note on Versioning Scheme

The version number has two parts. The first four numbers indicate compatibility with Neo4j GraphAware Framework. The last number is the version of the UUID library. For example, version 4.0.8.58.20 is version 20 of the UUID library compatible with GraphAware Neo4j Framework 4.0.8.58.

Setup and Configuration

Create or edit conf/graphaware.conf to register the UUID module:

#UIDM becomes the module ID:
com.graphaware.module.neo4j.UIDM.1=com.graphaware.module.uuid.UuidBootstrapper

#optional, default is uuid:
com.graphaware.module.neo4j.UIDM.uuidProperty=uuid

#optional, default is false:
com.graphaware.module.neo4j.UIDM.stripHyphens=false

#optional, default is all nodes:
com.graphaware.module.neo4j.UIDM.node=hasLabel('Label1') || hasLabel('Label2')

#optional, default is no relationships:
com.graphaware.module.neo4j.UIDM.relationship=isType('Type1')

Note that "UIDM" becomes the module ID.

com.graphaware.module.neo4j.UIDM.uuidProperty is the property name that will be used to store the assigned UUID on nodes and relationships. The default is "uuid".

com.graphaware.module.neo4j.UIDM.stripHyphens is the property name that controls hyphen existence. If its true created UUID will be free from hyphens.

com.graphaware.module.neo4j.UIDM.node specifies either a fully qualified class name of NodeInclusionPolicy implementation, or a Spring Expression Language expression determining, which nodes to assign a UUID to. The default is to assign the UUID property to every node which isn't internal to the framework.

com.graphaware.module.neo4j.UIDM.relationship specifies either a fully qualified class name of RelationshipInclusionPolicy implementation, or a Spring Expression Language expression determining, which relationships to assign a UUID to. The default is not to assign the UUID property to any relationship. If you want to assign UUID to all relationship, please use com.graphaware.module.neo4j.UIDM.relationship=com.graphaware.runtime.policy.all.IncludeAllBusinessRelationships

Using GraphAware UUID

Apart from the configuration described above, you must create unique constraints (or at least indices) in the database.

The module will assign a UUID to nodes and relationships configured, and will prevent modifications to the UUID or deletion of the UUID property from these nodes/relationships by not allowing the transaction to commit.

Note: If you create a node and return it immediately, its contents will not reflect changes performed by transaction event handlers such as this one -- thus the UUID will not be available. A separate call must be made to get the UUID, for example:

CREATE (n:User {name: "Alice"}) RETURN id(n)
---
// Later, using saved ID from above:
MATCH (n) WHERE id(n) = 123 RETURN n.uuid

Specifying the Generator Through Configuration

By default, the com.graphaware.common.uuid.EaioUuidGenerator is used to generate the underlying UUID. Any generator implementation can be used, be it out of the box or your own custom code, by modifying the conf/graphaware.conf. The following example configures the UUID module to make use of the JavaUtilUUIDGenerator:

com.graphaware.module.neo4j.UUID.1=com.graphaware.module.uuid.UuidBootstrapper
com.graphaware.module.UUID.neo4j.uuidGeneratorClass=com.graphaware.module.uuid.generator.JavaUtilUUIDGenerator

Please see the com.graphaware.common.uuid.UuidGenerator interface and the com.graphaware.module.uuid.generator package for more information and examples of how to implement your own generator.

Immutability

This module ensures that all assigned UUIDs on nodes and relationships are immutable, meaning they cannot be deleted nor changed. In some scenarios, developers might want to disable the immutability with the following configuration setting :

com.graphaware.module.neo4j.UUID.immutable=false

We only allow this setting for development purposes or developers having an specific need and we fully discourage the use of this setting.

License

Copyright (c) 2020 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/.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].