Skip to content
Permalink
Browse files
HugeGraph-1119: Add some description for gremlin graph, g and schema …
…object

Change-Id: I91dd0ef398b0bb17b9e9f76dd044f71c94c6c36b
  • Loading branch information
Linary committed May 9, 2018
1 parent d3acc62 commit 89f81367d728016bbb2f31e8c8ba9ed6796fbc02
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 0 deletions.
@@ -4,6 +4,10 @@

发布时间:2018-03-29

本文的代码都是`java`语言写的,但其风格与`gremlin(groovy)`是非常类似的。用户只需要把代码中的变量声明替换成`def`或直接去掉,
就能将`java`代码转变为`groovy`;另外就是每一行语句最后可以不加分号,`groovy`认为一行就是一条语句。
用户在`HugeGraph-Studio`中编写的`gremlin(groovy)`可以参考本文的`java`代码,下面会举出几个例子。

### 1 HugeClient

HugeClient 是操作 graph 的总入口,用户必须先创建出 HugeClient 对象,与 HugeGraph Server 建立连接(伪连接)后,才能获取到 schema、graph 以及 gremlin 的操作入口对象。
@@ -18,6 +22,8 @@ HugeClient hugeClient = new HugeClient("http://localhost:8080", "hugegraph");

上述创建 HugeClient 的过程如果失败会抛出异常,用户需要try-catch。如果成功则继续获取 schema、graph 以及 gremlin 的 manager。

`HugeGraph-Studio`中通过`gremlin`来操作时,不需要使用`HugeClient`,这里可以忽略。

### 2 元数据

#### 2.1 SchemaManager
@@ -30,6 +36,12 @@ SchemaManager 用于管理 HugeGraph 中的四种元数据,分别是PropertyKe
SchemaManager schema = hugeClient.schema()
```

`HugeGraph-Studio`中通过`gremlin`创建`schema`对象:

```groovy
schema = graph.schema()
```

下面分别对三种元数据的定义过程进行介绍。

#### 2.2 PropertyKey
@@ -82,6 +94,14 @@ userdata(String key, Object value) | The same key, the latter will cover the for
schema.propertyKey("name").asText().valueSet().ifNotExist().create()
```

`HugeGraph-Studio`中通过`gremlin`创建上述`PropertyKey`对象的语法完全一致,如果用户没有定义出`schema`变量,应该这样写:

```groovy
graph.schema().propertyKey("name").asText().valueSet().ifNotExist().create()
```

以下的示例中,`gremlin``java`的语法完全一致,不再赘述。

- ifNotExist():为 create 添加判断机制,若当前 PropertyKey 已经存在则不再创建,否则创建该属性。若不添加判断,在 properkey 已存在的情况下会抛出异常信息,下同,不再赘述。

##### 2.2.3 删除 PropertyKey
@@ -186,6 +186,19 @@ graph.schema().propertyKey("date").asText().ifNotExist().create()
graph.schema().propertyKey("price").asInt().ifNotExist().create()
```

**在这里有几点需要说明**

1、上述语句是`groovy`语言形式(类似但不是`java`)的`gremlin`语句,这些`gremlin`语句会被发送到`HugeGraphServer`上执行。
关于`gremlin`本身可以参考[Gremlin Query Language](http://hugegraph.baidu.com/language/hugegraph-gremlin.html)或[Tinkerpop官网](http://tinkerpop.apache.org/);

2、上述语句是通过`graph.schema()`获取到`SchemaManager`对象后操作元数据,通过`gremlin`语句操作schema可参考文档[HugeGraph-Client](http://hugegraph.baidu.com/clients/hugegraph-client.html),
需要注意的是`HugeGraph-Client``java`语法,大体上与`gremlin`风格是一致的,具体的差异见文档`HugeGraph-Client`中的说明。

3、在`HugeGraph-Studio``NoteBook`中,用户可以直接使用两个变量`graph``g``graph`就是当前Notebook连接的图对象,可使用该对象对图做各种增删改查操作;
`g`是用于遍历图的一个对象,其本质就是`graph.traversal()`,用户可以使用该对象做各种遍历操作;

4、`HugeGraph-Studio`作为一个展示图的工具,主要用于做查询或遍历,而不宜做太多增删改的操作。

执行完成后,可以得到返回的数据,表明执行成功。如图所示

<center>

0 comments on commit 89f8136

Please sign in to comment.