Skip to content

Version 1.5 of the documentation is no longer actively maintained. The site that you are currently viewing is an archived snapshot. For up-to-date documentation, see the latest version.

HugeGraph-Java-Client

1 Overview Of Hugegraph

HugeGraph-Client sends HTTP request to HugeGraph-Server to get and parse the execution result of Server. We support HugeGraph-Client for Java/Go/Python language. You can use Client-API to write code to operate HugeGraph, such as adding, deleting, modifying, and querying schema and graph data, or executing gremlin statements.

HugeGraph client SDK tool based on Go language (version >=1.2.0)

2 What You Need

  • Java 11 (also supports Java 8)
  • Maven 3.5+

3 How To Use

The basic steps to use HugeGraph-Client are as follows:

  • Build a new Maven project by IDEA or Eclipse
  • Add HugeGraph-Client dependency in a pom file;
  • Create an object to invoke the interface of HugeGraph-Client

See the complete example in the following section for the detail.

4 Complete Example

4.1 Build New Maven Project

Using IDEA or Eclipse to create the project:

4.2 Add Hugegraph-Client Dependency In POM

1<dependencies>
2    <dependency>
3        <groupId>org.apache.hugegraph</groupId>
4        <artifactId>hugegraph-client</artifactId>
5        <!-- Update to the latest release version -->
6        <version>1.5.0</version>
7    </dependency>    
8</dependencies>

Note: The versions of all graph components remain consistent

4.3 Example

4.3.1 SingleExample
  1import java.io.IOException;
  2import java.util.Iterator;
  3import java.util.List;
  4
  5import org.apache.hugegraph.driver.GraphManager;
  6import org.apache.hugegraph.driver.GremlinManager;
  7import org.apache.hugegraph.driver.HugeClient;
  8import org.apache.hugegraph.driver.SchemaManager;
  9import org.apache.hugegraph.structure.constant.T;
 10import org.apache.hugegraph.structure.graph.Edge;
 11import org.apache.hugegraph.structure.graph.Path;
 12import org.apache.hugegraph.structure.graph.Vertex;
 13import org.apache.hugegraph.structure.gremlin.Result;
 14import org.apache.hugegraph.structure.gremlin.ResultSet;
 15
 16public class SingleExample {
 17
 18    public static void main(String[] args) throws IOException {
 19        // If connect failed will throw a exception.
 20        HugeClient hugeClient = HugeClient.builder("http://localhost:8080",
 21                                                   "hugegraph")
 22                                          .build();
 23
 24        SchemaManager schema = hugeClient.schema();
 25
 26        schema.propertyKey("name").asText().ifNotExist().create();
 27        schema.propertyKey("age").asInt().ifNotExist().create();
 28        schema.propertyKey("city").asText().ifNotExist().create();
 29        schema.propertyKey("weight").asDouble().ifNotExist().create();
 30        schema.propertyKey("lang").asText().ifNotExist().create();
 31        schema.propertyKey("date").asDate().ifNotExist().create();
 32        schema.propertyKey("price").asInt().ifNotExist().create();
 33
 34        schema.vertexLabel("person")
 35              .properties("name", "age", "city")
 36              .primaryKeys("name")
 37              .ifNotExist()
 38              .create();
 39
 40        schema.vertexLabel("software")
 41              .properties("name", "lang", "price")
 42              .primaryKeys("name")
 43              .ifNotExist()
 44              .create();
 45
 46        schema.indexLabel("personByCity")
 47              .onV("person")
 48              .by("city")
 49              .secondary()
 50              .ifNotExist()
 51              .create();
 52
 53        schema.indexLabel("personByAgeAndCity")
 54              .onV("person")
 55              .by("age", "city")
 56              .secondary()
 57              .ifNotExist()
 58              .create();
 59
 60        schema.indexLabel("softwareByPrice")
 61              .onV("software")
 62              .by("price")
 63              .range()
 64              .ifNotExist()
 65              .create();
 66
 67        schema.edgeLabel("knows")
 68              .sourceLabel("person")
 69              .targetLabel("person")
 70              .properties("date", "weight")
 71              .ifNotExist()
 72              .create();
 73
 74        schema.edgeLabel("created")
 75              .sourceLabel("person").targetLabel("software")
 76              .properties("date", "weight")
 77              .ifNotExist()
 78              .create();
 79
 80        schema.indexLabel("createdByDate")
 81              .onE("created")
 82              .by("date")
 83              .secondary()
 84              .ifNotExist()
 85              .create();
 86
 87        schema.indexLabel("createdByWeight")
 88              .onE("created")
 89              .by("weight")
 90              .range()
 91              .ifNotExist()
 92              .create();
 93
 94        schema.indexLabel("knowsByWeight")
 95              .onE("knows")
 96              .by("weight")
 97              .range()
 98              .ifNotExist()
 99              .create();
100
101        GraphManager graph = hugeClient.graph();
102        Vertex marko = graph.addVertex(T.LABEL, "person", "name", "marko",
103                                       "age", 29, "city", "Beijing");
104        Vertex vadas = graph.addVertex(T.LABEL, "person", "name", "vadas",
105                                       "age", 27, "city", "Hongkong");
106        Vertex lop = graph.addVertex(T.LABEL, "software", "name", "lop",
107                                     "lang", "java", "price", 328);
108        Vertex josh = graph.addVertex(T.LABEL, "person", "name", "josh",
109                                      "age", 32, "city", "Beijing");
110        Vertex ripple = graph.addVertex(T.LABEL, "software", "name", "ripple",
111                                        "lang", "java", "price", 199);
112        Vertex peter = graph.addVertex(T.LABEL, "person", "name", "peter",
113                                       "age", 35, "city", "Shanghai");
114
115        marko.addEdge("knows", vadas, "date", "2016-01-10", "weight", 0.5);
116        marko.addEdge("knows", josh, "date", "2013-02-20", "weight", 1.0);
117        marko.addEdge("created", lop, "date", "2017-12-10", "weight", 0.4);
118        josh.addEdge("created", lop, "date", "2009-11-11", "weight", 0.4);
119        josh.addEdge("created", ripple, "date", "2017-12-10", "weight", 1.0);
120        peter.addEdge("created", lop, "date", "2017-03-24", "weight", 0.2);
121
122        GremlinManager gremlin = hugeClient.gremlin();
123        System.out.println("==== Path ====");
124        ResultSet resultSet = gremlin.gremlin("g.V().outE().path()").execute();
125        Iterator<Result> results = resultSet.iterator();
126        results.forEachRemaining(result -> {
127            System.out.println(result.getObject().getClass());
128            Object object = result.getObject();
129            if (object instanceof Vertex) {
130                System.out.println(((Vertex) object).id());
131            } else if (object instanceof Edge) {
132                System.out.println(((Edge) object).id());
133            } else if (object instanceof Path) {
134                List<Object> elements = ((Path) object).objects();
135                elements.forEach(element -> {
136                    System.out.println(element.getClass());
137                    System.out.println(element);
138                });
139            } else {
140                System.out.println(object);
141            }
142        });
143
144        hugeClient.close();
145    }
146}
4.3.2 BatchExample
  1import java.util.ArrayList;
  2import java.util.List;
  3
  4import org.apache.hugegraph.driver.GraphManager;
  5import org.apache.hugegraph.driver.HugeClient;
  6import org.apache.hugegraph.driver.SchemaManager;
  7import org.apache.hugegraph.structure.graph.Edge;
  8import org.apache.hugegraph.structure.graph.Vertex;
  9
 10public class BatchExample {
 11
 12    public static void main(String[] args) {
 13        // If connect failed will throw a exception.
 14        HugeClient hugeClient = HugeClient.builder("http://localhost:8080",
 15                                                   "hugegraph")
 16                                          .build();
 17
 18        SchemaManager schema = hugeClient.schema();
 19
 20        schema.propertyKey("name").asText().ifNotExist().create();
 21        schema.propertyKey("age").asInt().ifNotExist().create();
 22        schema.propertyKey("lang").asText().ifNotExist().create();
 23        schema.propertyKey("date").asDate().ifNotExist().create();
 24        schema.propertyKey("price").asInt().ifNotExist().create();
 25
 26        schema.vertexLabel("person")
 27              .properties("name", "age")
 28              .primaryKeys("name")
 29              .ifNotExist()
 30              .create();
 31
 32        schema.vertexLabel("person")
 33              .properties("price")
 34              .nullableKeys("price")
 35              .append();
 36
 37        schema.vertexLabel("software")
 38              .properties("name", "lang", "price")
 39              .primaryKeys("name")
 40              .ifNotExist()
 41              .create();
 42
 43        schema.indexLabel("softwareByPrice")
 44              .onV("software").by("price")
 45              .range()
 46              .ifNotExist()
 47              .create();
 48
 49        schema.edgeLabel("knows")
 50              .link("person", "person")
 51              .properties("date")
 52              .ifNotExist()
 53              .create();
 54
 55        schema.edgeLabel("created")
 56              .link("person", "software")
 57              .properties("date")
 58              .ifNotExist()
 59              .create();
 60
 61        schema.indexLabel("createdByDate")
 62              .onE("created").by("date")
 63              .secondary()
 64              .ifNotExist()
 65              .create();
 66
 67        // get schema object by name
 68        System.out.println(schema.getPropertyKey("name"));
 69        System.out.println(schema.getVertexLabel("person"));
 70        System.out.println(schema.getEdgeLabel("knows"));
 71        System.out.println(schema.getIndexLabel("createdByDate"));
 72
 73        // list all schema objects
 74        System.out.println(schema.getPropertyKeys());
 75        System.out.println(schema.getVertexLabels());
 76        System.out.println(schema.getEdgeLabels());
 77        System.out.println(schema.getIndexLabels());
 78
 79        GraphManager graph = hugeClient.graph();
 80
 81        Vertex marko = new Vertex("person").property("name", "marko")
 82                                           .property("age", 29);
 83        Vertex vadas = new Vertex("person").property("name", "vadas")
 84                                           .property("age", 27);
 85        Vertex lop = new Vertex("software").property("name", "lop")
 86                                           .property("lang", "java")
 87                                           .property("price", 328);
 88        Vertex josh = new Vertex("person").property("name", "josh")
 89                                          .property("age", 32);
 90        Vertex ripple = new Vertex("software").property("name", "ripple")
 91                                              .property("lang", "java")
 92                                              .property("price", 199);
 93        Vertex peter = new Vertex("person").property("name", "peter")
 94                                           .property("age", 35);
 95
 96        Edge markoKnowsVadas = new Edge("knows").source(marko).target(vadas)
 97                                                .property("date", "2016-01-10");
 98        Edge markoKnowsJosh = new Edge("knows").source(marko).target(josh)
 99                                               .property("date", "2013-02-20");
100        Edge markoCreateLop = new Edge("created").source(marko).target(lop)
101                                                 .property("date",
102                                                           "2017-12-10");
103        Edge joshCreateRipple = new Edge("created").source(josh).target(ripple)
104                                                   .property("date",
105                                                             "2017-12-10");
106        Edge joshCreateLop = new Edge("created").source(josh).target(lop)
107                                                .property("date", "2009-11-11");
108        Edge peterCreateLop = new Edge("created").source(peter).target(lop)
109                                                 .property("date",
110                                                           "2017-03-24");
111
112        List<Vertex> vertices = new ArrayList<>();
113        vertices.add(marko);
114        vertices.add(vadas);
115        vertices.add(lop);
116        vertices.add(josh);
117        vertices.add(ripple);
118        vertices.add(peter);
119
120        List<Edge> edges = new ArrayList<>();
121        edges.add(markoKnowsVadas);
122        edges.add(markoKnowsJosh);
123        edges.add(markoCreateLop);
124        edges.add(joshCreateRipple);
125        edges.add(joshCreateLop);
126        edges.add(peterCreateLop);
127
128        vertices = graph.addVertices(vertices);
129        vertices.forEach(vertex -> System.out.println(vertex));
130
131        edges = graph.addEdges(edges, false);
132        edges.forEach(edge -> System.out.println(edge));
133
134        hugeClient.close();
135    }
136}

4.4 Run The Example

Before running Example, you need to start the Server. For the startup process, seeHugeGraph-Server Quick Start.

4.5 More Information About Client-API

SeeIntroduce basic API of HugeGraph-Client.