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.