All Projects → JanusGraph → janusgraph-dotnet

JanusGraph / janusgraph-dotnet

Licence: other
JanusGraph .NET Gremlin Language Variant (GLV)

Programming Languages

C#
18002 projects
groovy
2714 projects

Projects that are alternatives of or similar to janusgraph-dotnet

janusgraph-python
JanusGraph Python Gremlin Language Variant (GLV)
Stars: ✭ 17 (-5.56%)
Mutual labels:  gremlin, janusgraph, glv
graph-explorer
Graph Explorer
Stars: ✭ 27 (+50%)
Mutual labels:  gremlin, janusgraph
janusgraph-docker
Yet another JanusGraph, Cassandra/Scylla and Elasticsearch in Docker Compose setup
Stars: ✭ 54 (+200%)
Mutual labels:  gremlin, janusgraph
jelass
Janus + Elastic Search + Cassandra docker container with SSL Client Certificates implemented.
Stars: ✭ 13 (-27.78%)
Mutual labels:  gremlin, janusgraph
janusgraph-deployement
A dockerized environment For [JanusGraph + ElasticSearch + Cassandra + GraphExp]
Stars: ✭ 16 (-11.11%)
Mutual labels:  janusgraph
Unipop
Data Integration Graph
Stars: ✭ 184 (+922.22%)
Mutual labels:  gremlin
Gremlin Orm
gremlin-orm is an ORM for graph databases in Node.js
Stars: ✭ 136 (+655.56%)
Mutual labels:  gremlin
Ferma
An ORM / OGM for the TinkerPop graph stack.
Stars: ✭ 130 (+622.22%)
Mutual labels:  gremlin
gremtune
Golang Gremlin Tinkerpop client with AWS Neptune compatibility
Stars: ✭ 23 (+27.78%)
Mutual labels:  gremlin
Gremlin.Net
This repository only contains an outdated version of Gremlin.Net. For newer version head to Apache TinkerPop.
Stars: ✭ 21 (+16.67%)
Mutual labels:  gremlin
janusgraph-docker
JanusGraph Docker images
Stars: ✭ 94 (+422.22%)
Mutual labels:  janusgraph
Graph Notebook
Library extending Jupyter notebooks to integrate with Apache TinkerPop and RDF SPARQL.
Stars: ✭ 199 (+1005.56%)
Mutual labels:  gremlin
amazon-neptune-csv-to-rdf-converter
Amazon Neptune CSV to RDF Converter is a tool for Amazon Neptune that converts property graphs stored as comma separated values into RDF graphs.
Stars: ✭ 27 (+50%)
Mutual labels:  gremlin
Express Cassandra
Cassandra ORM/ODM/OGM for Node.js with optional support for Elassandra & JanusGraph
Stars: ✭ 163 (+805.56%)
Mutual labels:  gremlin
GraphScope
🔨 🍇 💻 🚀 GraphScope: A One-Stop Large-Scale Graph Computing System from Alibaba 来自阿里巴巴的一站式大规模图计算系统 图分析 图查询 图机器学习
Stars: ✭ 1,899 (+10450%)
Mutual labels:  gremlin
Vscode Cosmosdb
VS Code extension for Azure Databases
Stars: ✭ 131 (+627.78%)
Mutual labels:  gremlin
yang-db
YANGDB Open-source, Scalable, Non-native Graph database (Powered by Elasticsearch)
Stars: ✭ 92 (+411.11%)
Mutual labels:  gremlin
gizmo
OGM
Stars: ✭ 20 (+11.11%)
Mutual labels:  gremlin
plume
Plume is a code property graph analysis library with options to extract the CPG from Java bytecode and store the result in various graph databases.
Stars: ✭ 53 (+194.44%)
Mutual labels:  janusgraph
janusgraph-util
util for janusgraph to import data and so on/Janusgraph 导数据等工具
Stars: ✭ 72 (+300%)
Mutual labels:  janusgraph

JanusGraph.Net

JanusGraph.Net is the .NET driver of JanusGraph. It extends Apache TinkerPop™'s Gremlin.Net as its core dependency with additional support for JanusGraph-specific types.

GitHub Workflow Status Codacy Badge Nuget

Usage

JanusGraph.Net includes a JanusGraphClientBuilder that can be used to build a IGremlinClient pre-configured for JanusGraph. This client can then be used to configure a GraphTraversalSource:

var client = JanusGraphClientBuilder
    .BuildClientForServer(new GremlinServer("localhost", 8182))
    .Create();
// The client should be disposed on shut down to release resources
// and to close open connections with client.Dispose()
var g = new Graph().Traversal().WithRemote(new DriverRemoteConnection(client));
// Reuse 'g' across the application

The GraphTraversalSource g can now be used to spawn Gremlin traversals:

var herculesAge = g.V().Has("demigod", "name", "hercules").Values<int>("age")
    .Next();
Console.WriteLine($"Hercules is {herculesAge} years old.");

The traversal can also be executed asynchronously by using Promise() which is recommended as the underlying driver in Gremlin.Net also works asynchronously:

var herculesAge = await g.V().Has("demigod", "name", "hercules")
    .Values<int>("age")
    .Promise(t => t.Next());

Refer to the chapter Gremlin Query Language in the JanusGraph docs for an introduction to Gremlin and pointers to further resources. The main syntactical difference for Gremlin.Net is that it follows .NET naming conventions, e.g., method names use PascalCase instead of camelCase.

Text Predicates

The Text class provides methods for full-text and string searches:

await g.V().Has("demigod", "name", Text.TextPrefix("herc"))
    .Promise(t => t.ToList());

The other text predicates can be used the same way.

Geoshapes

The Geoshape class in the JanusGraph.Net.Geoshapes namespace can be used to construct Geoshapes:

await g.V().Has("demigod", "name", "hercules").OutE("battled")
    .Has("place", Geoshape.Point(38.1f, 23.7f)).Count().Promise(t => t.Next());

Only the Point Geoshape is supported right now.

Version Compatibility

The lowest supported JanusGraph version is 0.3.0. The following table shows the supported JanusGraph versions for each version of JanusGraph.Net:

JanusGraph.Net JanusGraph
0.1.z 0.3.z
0.2.z 0.4.z, 0.5.z
0.3.z 0.4.z, 0.5.z, 0.6.z
0.4.z (0.4.z, 0.5.z,)* 0.6.z

While it should also be possible to use JanusGraph.Net with other versions of JanusGraph than mentioned here, compatibility is not tested and some functionality (like added Gremlin steps) will not work as it is not supported yet in case of an older JanusGraph version or was removed in a newer JanusGraph version.

* JanusGraph.Net 0.4 still supports older versions of JanusGraph, but the janusGraphPredicates flag needs to be set to false in order to be able to use JanusGraph's Text predicates.

Serialization Formats

JanusGraph.Net supports GraphSON 3 as well as GraphBinary. GraphSON 3 is used by default. GraphBinary can be configured like this:

var client = JanusGraphClientBuilder.BuildClientForServer(new GremlinServer("localhost", 8182))
    .WithSerializer(new GraphBinaryMessageSerializer(JanusGraphTypeSerializerRegistry.Instance)).Create();

Note that support for GraphBinary was only added in JanusGraph 0.6.0. So, the server needs to be at least on that version.

Not all of the JanusGraph-specific types are already supported by both formats:

Format RelationIdentifier Text predicates Geoshapes Geo predicates
GraphSON3 x x Point -
GraphBinary x x - -

Community

JanusGraph.Net uses the same communication channels as JanusGraph in general. So, please refer to the Community section in JanusGraph's main repository for more information about these various channels.

Please use GitHub issues only to report bugs or request features.

Contributing

Please see CONTRIBUTING.md in JanusGraph's main repository for more information, including CLAs and best practices for working with GitHub.

License

JanusGraph.Net code is provided under the Apache 2.0 license and documentation is provided under the CC-BY-4.0 license. For details about this dual-license structure, please see LICENSE.txt.

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].