blob: 71998ca7c5c3aa0332e4400f194461e8c7832214 [file] [log] [blame]
<!doctype html><html lang=cn class=no-js><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta name=generator content="Hugo 0.102.3"><link rel=canonical type=text/html href=/cn/docs/language/><link rel=alternate type=application/rss+xml href=/cn/docs/language/index.xml><meta name=robots content="noindex, nofollow"><link rel="shortcut icon" href=/favicons/favicon.ico><link rel=apple-touch-icon href=/favicons/apple-touch-icon-180x180.png sizes=180x180><link rel=icon type=image/png href=/favicons/favicon-16x16.png sizes=16x16><link rel=icon type=image/png href=/favicons/favicon-32x32.png sizes=32x32><link rel=icon type=image/png href=/favicons/android-36x36.png sizes=36x36><link rel=icon type=image/png href=/favicons/android-48x48.png sizes=48x48><link rel=icon type=image/png href=/favicons/android-72x72.png sizes=72x72><link rel=icon type=image/png href=/favicons/android-96x96.png sizes=96x96><link rel=icon type=image/png href=/favicons/android-144x144.png sizes=144x144><link rel=icon type=image/png href=/favicons/android-192x192.png sizes=192x192><title>QUERY LANGUAGE | HugeGraph</title><meta name=description content><meta property="og:title" content="QUERY LANGUAGE"><meta property="og:description" content="Apache HugeGraph 官网"><meta property="og:type" content="website"><meta property="og:url" content="/cn/docs/language/"><meta property="og:site_name" content="HugeGraph"><meta itemprop=name content="QUERY LANGUAGE"><meta itemprop=description content="Apache HugeGraph 官网"><meta name=twitter:card content="summary"><meta name=twitter:title content="QUERY LANGUAGE"><meta name=twitter:description content="Apache HugeGraph 官网"><link rel=preload href=/scss/main.min.14ea575cb35d93d46ff8681b2334f40fd46243c100c5c39f5a841b931fae2d40.css as=style><link href=/scss/main.min.14ea575cb35d93d46ff8681b2334f40fd46243c100c5c39f5a841b931fae2d40.css rel=stylesheet integrity><script src=https://code.jquery.com/jquery-3.5.1.min.js integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin=anonymous></script>
<link rel=stylesheet href=/css/prism.css><script type=application/javascript>var doNotTrack=!1;doNotTrack||(window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)},ga.l=+new Date,ga("create","UA-00000000-0","auto"),ga("send","pageview"))</script><script async src=https://www.google-analytics.com/analytics.js></script></head><body class=td-section><header><nav class="js-navbar-scroll navbar navbar-expand navbar-dark flex-column flex-md-row td-navbar"><a class=navbar-brand href=/cn/><span class=navbar-logo><svg id="图层_1" data-name="图层 1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 16 16"><defs><style>.cls-1{fill:none;stroke:#fff;stroke-miterlimit:10;stroke-width:.5px;opacity:.3}.cls-2{fill:#229efa}.cls-3{fill:#9948f7}.cls-4{fill:#33bc7a}.cls-5{fill:url(#未命名的渐变_3)}.cls-6{fill:url(#未命名的渐变_13)}.cls-7{fill:url(#未命名的渐变_11)}</style><linearGradient id="未命名的渐变_3" x1="6.16" y1="14.63" x2="6.16" y2="6.01" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#2e3192"/><stop offset="0" stop-color="#229efa"/><stop offset=".44" stop-color="#239cf8"/><stop offset=".6" stop-color="#2795f2"/><stop offset=".71" stop-color="#2d8ae8"/><stop offset=".81" stop-color="#3679d9"/><stop offset=".89" stop-color="#4263c6"/><stop offset=".95" stop-color="#5048af"/><stop offset="1" stop-color="#5c319b"/></linearGradient><linearGradient id="未命名的渐变_13" x1="10.75" y1="8.2" x2="4.49" y2="1.94" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#991146"/><stop offset="0" stop-color="#326b4e"/><stop offset=".02" stop-color="#3a685c"/><stop offset=".07" stop-color="#506180"/><stop offset=".13" stop-color="#645aa0"/><stop offset=".19" stop-color="#7554bc"/><stop offset=".26" stop-color="#8250d2"/><stop offset=".35" stop-color="#8d4ce3"/><stop offset=".45" stop-color="#944aee"/><stop offset=".6" stop-color="#9848f5"/><stop offset="1" stop-color="#9948f7"/></linearGradient><linearGradient id="未命名的渐变_11" x1="15.34" y1="6.67" x2="7.88" y2="10.98" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#33bc7a"/><stop offset=".45" stop-color="#32ba7a"/><stop offset=".61" stop-color="#2fb37c"/><stop offset=".73" stop-color="#29a87e"/><stop offset=".82" stop-color="#219782"/><stop offset=".9" stop-color="#168186"/><stop offset=".97" stop-color="#09668b"/><stop offset="1" stop-color="#03598e"/></linearGradient></defs><title>logo</title><rect class="cls-1" x="-143.14" y="-373.46" width="597.8" height="424.44"/><circle class="cls-2" cx="12.02" cy="1.83" r="1.33"/><circle class="cls-3" cx="12.02" cy="14.17" r="1.33"/><circle class="cls-4" cx="1.33" cy="8" r="1.33"/><path class="cls-5" d="M7.91 10h0a2.65 2.65.0 01-.23-3.74A1.75 1.75.0 017.91 6h0A2.66 2.66.0 014.4 6h0a1.81 1.81.0 01.24.24A2.65 2.65.0 014.4 10h0a2.62 2.62.0 00-.89 2 2.65 2.65.0 104.4-2z"/><path class="cls-6" d="M12.19 5.49a2.78 2.78.0 01-.5.11A2.64 2.64.0 018.76 3.5h0a2.65 2.65.0 10-2.6 3.17A2.6 2.6.0 007 6.53H7a2.65 2.65.0 013.44 2 2.94 2.94.0 010-.51 2.65 2.65.0 011.75-2.53z"/><path class="cls-7" d="M13 5.35a2.64 2.64.0 00-2.59 2.12h0a3 3 0 01-.08.32A2.65 2.65.0 017.54 9.58a2.86 2.86.0 00.37.41h0a2.63 2.63.0 01.9 2 2.84 2.84.0 01-.05.51 2.64 2.64.0 013.12-2.06l.32.08h0a2.6 2.6.0 00.84.14 2.65 2.65.0 100-5.3z"/></svg></span><span class=font-weight-bold>HugeGraph</span></a><div class="td-navbar-nav-scroll ml-md-auto" id=main_navbar><ul class="navbar-nav mt-2 mt-lg-0"><li class="nav-item mr-4 mb-2 mb-lg-0"><a class=nav-link href=/cn/docs/><i class='fas fa-book pr-2'></i><span>Documentation</span></a></li><li class="nav-item mr-4 mb-2 mb-lg-0"><a class=nav-link href=https://github.com/apache/incubator-hugegraph target=_blank><i class='fab fa-github pr-2'></i><span>GitHub</span></a></li><li class="nav-item mr-4 mb-2 mb-lg-0"><a class=nav-link href=/cn/docs/download/download/><i class='fas fa-download pr-2'></i><span>Download</span></a></li><li class="nav-item mr-4 mb-2 mb-lg-0"><a class=nav-link href=/cn/community/><span>Community</span></a></li><li class="nav-item dropdown mr-4 d-none d-lg-block"><a class="nav-link dropdown-toggle" href=# id=navbarDropdown role=button data-toggle=dropdown aria-haspopup=true aria-expanded=false>中文</a><div class=dropdown-menu aria-labelledby=navbarDropdownMenuLink><a class=dropdown-item href=/docs/language/>English</a></div></li></ul></div><div class="navbar-nav d-none d-lg-block"></div></nav></header><div class="container-fluid td-outer"><div class=td-main><div class="row flex-xl-nowrap"><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><div class=td-content><div class="pageinfo pageinfo-primary d-print-none"><p>This is the multi-page printable view of this section.
<a href=# onclick="return print(),!1">Click here to print</a>.</p><p><a href=/cn/docs/language/>Return to the regular view of this page</a>.</p></div><h1 class=title>QUERY LANGUAGE</h1><ul><li>1: <a href=#pg-2696905b5b6cbdf2ad7f78085bd6baa9>HugeGraph Gremlin</a></li><li>2: <a href=#pg-29164f631ea2ad7e883c0ba00a843508>HugeGraph Examples</a></li></ul><div class=content></div></div><div class=td-content><h1 id=pg-2696905b5b6cbdf2ad7f78085bd6baa9>1 - HugeGraph Gremlin</h1><h3 id=概述>概述</h3><p>HugeGraph支持<a href=https://tinkerpop.apache.org>Apache TinkerPop3</a>的图形遍历查询语言<a href=https://tinkerpop.apache.org/gremlin.html>Gremlin</a>。 SQL是关系型数据库查询语言,而Gremlin是一种通用的图数据库查询语言,Gremlin可用于创建图的实体(Vertex和Edge)、修改实体内部属性、删除实体,也可执行图的查询操作。</p><p>Gremlin可用于创建图的实体(Vertex和Edge)、修改实体内部属性、删除实体,更主要的是可用于执行图的查询及分析操作。</p><h3 id=tinkerpop-features>TinkerPop Features</h3><p>HugeGraph实现了TinkerPop框架,但是并没有实现TinkerPop所有的特性。</p><p>下表列出HugeGraph对TinkerPop各种特性的支持情况:</p><h3 id=graph-features>Graph Features</h3><table><thead><tr><th>Name</th><th>Description</th><th>Support</th></tr></thead><tbody><tr><td>Computer</td><td>Determines if the {@code Graph} implementation supports {@link GraphComputer} based processing</td><td>false</td></tr><tr><td>Transactions</td><td>Determines if the {@code Graph} implementations supports transactions.</td><td>true</td></tr><tr><td>Persistence</td><td>Determines if the {@code Graph} implementation supports persisting it&rsquo;s contents natively to disk.This feature does not refer to every graph&rsquo;s ability to write to disk via the Gremlin IO packages(.e.g. GraphML), unless the graph natively persists to disk via those options somehow. For example,TinkerGraph does not support this feature as it is a pure in-sideEffects graph.</td><td>true</td></tr><tr><td>ThreadedTransactions</td><td>Determines if the {@code Graph} implementation supports threaded transactions which allow a transaction be executed across multiple threads via {@link Transaction#createThreadedTx()}.</td><td>false</td></tr><tr><td>ConcurrentAccess</td><td>Determines if the {@code Graph} implementation supports more than one connection to the same instance at the same time. For example, Neo4j embedded does not support this feature because concurrent access to the same database files by multiple instances is not possible. However, Neo4j HA could support this feature as each new {@code Graph} instance coordinates with the Neo4j cluster allowing multiple instances to operate on the same database.</td><td>false</td></tr></tbody></table><h3 id=vertex-features>Vertex Features</h3><table><thead><tr><th>Name</th><th>Description</th><th>Support</th></tr></thead><tbody><tr><td>UserSuppliedIds</td><td>Determines if an {@link Element} can have a user defined identifier. Implementation that do not support this feature will be expected to auto-generate unique identifiers. In other words, if the {@link Graph} allows {@code graph.addVertex(id,x)} to work and thus set the identifier of the newly added {@link Vertex} to the value of {@code x} then this feature should return true. In this case, {@code x} is assumed to be an identifier data type that the {@link Graph} will accept.</td><td>false</td></tr><tr><td>NumericIds</td><td>Determines if an {@link Element} has numeric identifiers as their internal representation. In other words,if the value returned from {@link Element#id()} is a numeric value then this method should be return {@code true}. Note that this feature is most generally used for determining the appropriate tests to execute in the Gremlin Test Suite.</td><td>false</td></tr><tr><td>StringIds</td><td>Determines if an {@link Element} has string identifiers as their internal representation. In other words, if the value returned from {@link Element#id()} is a string value then this method should be return {@code true}. Note that this feature is most generally used for determining the appropriate tests to execute in the Gremlin Test Suite.</td><td>false</td></tr><tr><td>UuidIds</td><td>Determines if an {@link Element} has UUID identifiers as their internal representation. In other words,if the value returned from {@link Element#id()} is a {@link UUID} value then this method should be return {@code true}.Note that this feature is most generally used for determining the appropriate tests to execute in the Gremlin Test Suite.</td><td>false</td></tr><tr><td>CustomIds</td><td>Determines if an {@link Element} has a specific custom object as their internal representation.In other words, if the value returned from {@link Element#id()} is a type defined by the graph implementations, such as OrientDB&rsquo;s {@code Rid}, then this method should be return {@code true}.Note that this feature is most generally used for determining the appropriate tests to execute in the Gremlin Test Suite.</td><td>false</td></tr><tr><td>AnyIds</td><td>Determines if an {@link Element} any Java object is a suitable identifier. TinkerGraph is a good example of a {@link Graph} that can support this feature, as it can use any {@link Object} as a value for the identifier. Note that this feature is most generally used for determining the appropriate tests to execute in the Gremlin Test Suite. This setting should only return {@code true} if {@link #supportsUserSuppliedIds()} is {@code true}.</td><td>false</td></tr><tr><td>AddProperty</td><td>Determines if an {@link Element} allows properties to be added. This feature is set independently from supporting &ldquo;data types&rdquo; and refers to support of calls to {@link Element#property(String, Object)}.</td><td>true</td></tr><tr><td>RemoveProperty</td><td>Determines if an {@link Element} allows properties to be removed.</td><td>true</td></tr><tr><td>AddVertices</td><td>Determines if a {@link Vertex} can be added to the {@code Graph}.</td><td>true</td></tr><tr><td>MultiProperties</td><td>Determines if a {@link Vertex} can support multiple properties with the same key.</td><td>false</td></tr><tr><td>DuplicateMultiProperties</td><td>Determines if a {@link Vertex} can support non-unique values on the same key. For this value to be {@code true}, then {@link #supportsMetaProperties()} must also return true. By default this method, just returns what {@link #supportsMultiProperties()} returns.</td><td>false</td></tr><tr><td>MetaProperties</td><td>Determines if a {@link Vertex} can support properties on vertex properties. It is assumed that a graph will support all the same data types for meta-properties that are supported for regular properties.</td><td>false</td></tr><tr><td>RemoveVertices</td><td>Determines if a {@link Vertex} can be removed from the {@code Graph}.</td><td>true</td></tr></tbody></table><h3 id=edge-features>Edge Features</h3><table><thead><tr><th>Name</th><th>Description</th><th>Support</th></tr></thead><tbody><tr><td>UserSuppliedIds</td><td>Determines if an {@link Element} can have a user defined identifier. Implementation that do not support this feature will be expected to auto-generate unique identifiers. In other words, if the {@link Graph} allows {@code graph.addVertex(id,x)} to work and thus set the identifier of the newly added {@link Vertex} to the value of {@code x} then this feature should return true. In this case, {@code x} is assumed to be an identifier data type that the {@link Graph} will accept.</td><td>false</td></tr><tr><td>NumericIds</td><td>Determines if an {@link Element} has numeric identifiers as their internal representation. In other words,if the value returned from {@link Element#id()} is a numeric value then this method should be return {@code true}. Note that this feature is most generally used for determining the appropriate tests to execute in the Gremlin Test Suite.</td><td>false</td></tr><tr><td>StringIds</td><td>Determines if an {@link Element} has string identifiers as their internal representation. In other words, if the value returned from {@link Element#id()} is a string value then this method should be return {@code true}. Note that this feature is most generally used for determining the appropriate tests to execute in the Gremlin Test Suite.</td><td>false</td></tr><tr><td>UuidIds</td><td>Determines if an {@link Element} has UUID identifiers as their internal representation. In other words,if the value returned from {@link Element#id()} is a {@link UUID} value then this method should be return {@code true}.Note that this feature is most generally used for determining the appropriate tests to execute in the Gremlin Test Suite.</td><td>false</td></tr><tr><td>CustomIds</td><td>Determines if an {@link Element} has a specific custom object as their internal representation.In other words, if the value returned from {@link Element#id()} is a type defined by the graph implementations, such as OrientDB&rsquo;s {@code Rid}, then this method should be return {@code true}.Note that this feature is most generally used for determining the appropriate tests to execute in the Gremlin Test Suite.</td><td>false</td></tr><tr><td>AnyIds</td><td>Determines if an {@link Element} any Java object is a suitable identifier. TinkerGraph is a good example of a {@link Graph} that can support this feature, as it can use any {@link Object} as a value for the identifier. Note that this feature is most generally used for determining the appropriate tests to execute in the Gremlin Test Suite. This setting should only return {@code true} if {@link #supportsUserSuppliedIds()} is {@code true}.</td><td>false</td></tr><tr><td>AddProperty</td><td>Determines if an {@link Element} allows properties to be added. This feature is set independently from supporting &ldquo;data types&rdquo; and refers to support of calls to {@link Element#property(String, Object)}.</td><td>true</td></tr><tr><td>RemoveProperty</td><td>Determines if an {@link Element} allows properties to be removed.</td><td>true</td></tr><tr><td>AddEdges</td><td>Determines if an {@link Edge} can be added to a {@code Vertex}.</td><td>true</td></tr><tr><td>RemoveEdges</td><td>Determines if an {@link Edge} can be removed from a {@code Vertex}.</td><td>true</td></tr></tbody></table><h3 id=data-type-features>Data Type Features</h3><table><thead><tr><th>Name</th><th>Description</th><th>Support</th></tr></thead><tbody><tr><td>BooleanValues</td><td></td><td>true</td></tr><tr><td>ByteValues</td><td></td><td>true</td></tr><tr><td>DoubleValues</td><td></td><td>true</td></tr><tr><td>FloatValues</td><td></td><td>true</td></tr><tr><td>IntegerValues</td><td></td><td>true</td></tr><tr><td>LongValues</td><td></td><td>true</td></tr><tr><td>MapValues</td><td>Supports setting of a {@code Map} value. The assumption is that the {@code Map} can contain arbitrary serializable values that may or may not be defined as a feature itself</td><td>false</td></tr><tr><td>MixedListValues</td><td>Supports setting of a {@code List} value. The assumption is that the {@code List} can contain arbitrary serializable values that may or may not be defined as a feature itself. As this{@code List} is &ldquo;mixed&rdquo; it does not need to contain objects of the same type.</td><td>false</td></tr><tr><td>BooleanArrayValues</td><td></td><td>false</td></tr><tr><td>ByteArrayValues</td><td></td><td>true</td></tr><tr><td>DoubleArrayValues</td><td></td><td>false</td></tr><tr><td>FloatArrayValues</td><td></td><td>false</td></tr><tr><td>IntegerArrayValues</td><td></td><td>false</td></tr><tr><td>LongArrayValues</td><td></td><td>false</td></tr><tr><td>SerializableValues</td><td></td><td>false</td></tr><tr><td>StringArrayValues</td><td></td><td>false</td></tr><tr><td>StringValues</td><td></td><td>true</td></tr><tr><td>UniformListValues</td><td>Supports setting of a {@code List} value. The assumption is that the {@code List} can contain arbitrary serializable values that may or may not be defined as a feature itself. As this{@code List} is &ldquo;uniform&rdquo; it must contain objects of the same type.</td><td>false</td></tr></tbody></table><h3 id=gremlin的步骤>Gremlin的步骤</h3><p>HugeGraph支持Gremlin的所有步骤。有关Gremlin的完整参考信息,请参与<a href=http://tinkerpop.apache.org/docs/current/reference/>Gremlin官网</a></p><table><thead><tr><th>步骤</th><th>说明</th><th>文档</th></tr></thead><tbody><tr><td>addE</td><td>在两个顶点之间添加边</td><td><a href=http://tinkerpop.apache.org/docs/current/reference/#addedge-step>addE step</a></td></tr><tr><td>addV</td><td>将顶点添加到图形</td><td><a href=http://tinkerpop.apache.org/docs/current/reference/#addvertex-step>addV step</a></td></tr><tr><td>and</td><td>确保所有遍历都返回值</td><td><a href=http://tinkerpop.apache.org/docs/current/reference/#add-step>and step</a></td></tr><tr><td>as</td><td>用于向步骤的输出分配变量的步骤调制器</td><td><a href=http://tinkerpop.apache.org/docs/current/reference/#as-step>as step</a></td></tr><tr><td>by</td><td><code>group</code><code>order</code>配合使用的步骤调制器</td><td><a href=http://tinkerpop.apache.org/docs/current/reference/#by-step>by step</a></td></tr><tr><td>coalesce</td><td>返回第一个返回结果的遍历</td><td><a href=http://tinkerpop.apache.org/docs/current/reference/#coalesce-step>coalesce step</a></td></tr><tr><td>constant</td><td>返回常量值。 与<code>coalesce</code>配合使用</td><td><a href=http://tinkerpop.apache.org/docs/current/reference/#constant-step>constant step</a></td></tr><tr><td>count</td><td>从遍历返回计数</td><td><a href=http://tinkerpop.apache.org/docs/current/reference/#addedge-step>count step</a></td></tr><tr><td>dedup</td><td>返回已删除重复内容的值</td><td><a href=http://tinkerpop.apache.org/docs/current/reference/#dedup-step>dedup step</a></td></tr><tr><td>drop</td><td>丢弃值(顶点/边缘)</td><td><a href=http://tinkerpop.apache.org/docs/current/reference/#drop-step>drop step</a></td></tr><tr><td>fold</td><td>充当用于计算结果聚合值的屏障</td><td><a href=http://tinkerpop.apache.org/docs/current/reference/#fold-step>fold step</a></td></tr><tr><td>group</td><td>根据指定的标签将值分组</td><td><a href=http://tinkerpop.apache.org/docs/current/reference/#group-step>group step</a></td></tr><tr><td>has</td><td>用于筛选属性、顶点和边缘。 支持<code>hasLabel</code><code>hasId</code><code>hasNot</code><code>has</code> 变体</td><td><a href=http://tinkerpop.apache.org/docs/current/reference/#has-step>has step</a></td></tr><tr><td>inject</td><td>将值注入流中</td><td><a href=http://tinkerpop.apache.org/docs/current/reference/#inject-step>inject step</a></td></tr><tr><td>is</td><td>用于通过布尔表达式执行筛选器</td><td><a href=http://tinkerpop.apache.org/docs/current/reference/#is-step>is step</a></td></tr><tr><td>limit</td><td>用于限制遍历中的项数</td><td><a href=http://tinkerpop.apache.org/docs/current/reference/#limit-step>limit step</a></td></tr><tr><td>local</td><td>本地包装遍历的某个部分,类似于子查询</td><td><a href=http://tinkerpop.apache.org/docs/current/reference/#local-step>local step</a></td></tr><tr><td>not</td><td>用于生成筛选器的求反结果</td><td><a href=http://tinkerpop.apache.org/docs/current/reference/#not-step>not step</a></td></tr><tr><td>optional</td><td>如果生成了某个结果,则返回指定遍历的结果,否则返回调用元素</td><td><a href=http://tinkerpop.apache.org/docs/current/reference/#optional-step>optional step</a></td></tr><tr><td>or</td><td>确保至少有一个遍历会返回值</td><td><a href=http://tinkerpop.apache.org/docs/current/reference/#or-step>or step</a></td></tr><tr><td>order</td><td>按指定的排序顺序返回结果</td><td><a href=http://tinkerpop.apache.org/docs/current/reference/#order-step>order step</a></td></tr><tr><td>path</td><td>返回遍历的完整路径</td><td><a href=http://tinkerpop.apache.org/docs/current/reference/#addedge-step>path step</a></td></tr><tr><td>project</td><td>将属性投影为映射</td><td><a href=http://tinkerpop.apache.org/docs/current/reference/#project-step>project step</a></td></tr><tr><td>properties</td><td>返回指定标签的属性</td><td><a href=http://tinkerpop.apache.org/docs/current/reference/#properties-step>properties step</a></td></tr><tr><td>range</td><td>根据指定的值范围进行筛选</td><td><a href=http://tinkerpop.apache.org/docs/current/reference/#range-step>range step</a></td></tr><tr><td>repeat</td><td>将步骤重复指定的次数。 用于循环</td><td><a href=http://tinkerpop.apache.org/docs/current/reference/#repeat-step>repeat step</a></td></tr><tr><td>sample</td><td>用于对遍历返回的结果采样</td><td><a href=http://tinkerpop.apache.org/docs/current/reference/#sample-step>sample step</a></td></tr><tr><td>select</td><td>用于投影遍历返回的结果</td><td><a href=http://tinkerpop.apache.org/docs/current/reference/#select-step>select step</a></td></tr><tr><td>store</td><td>用于遍历返回的非阻塞聚合</td><td><a href=http://tinkerpop.apache.org/docs/current/reference/#store-step>store step</a></td></tr><tr><td>tree</td><td>将顶点中的路径聚合到树中</td><td><a href=http://tinkerpop.apache.org/docs/current/reference/#tree-step>tree step</a></td></tr><tr><td>unfold</td><td>将迭代器作为步骤展开</td><td><a href=http://tinkerpop.apache.org/docs/current/reference/#unfold-step>unfold step</a></td></tr><tr><td>union</td><td>合并多个遍历返回的结果</td><td><a href=http://tinkerpop.apache.org/docs/current/reference/#union-step>union step</a></td></tr><tr><td>V</td><td>包括顶点与边之间的遍历所需的步骤:<code>V</code><code>E</code><code>out</code><code>in</code><code>both</code><code>outE</code><code>inE</code><code>bothE</code><code>outV</code><code>inV</code><code>bothV</code><code>otherV</code></td><td><a href=http://tinkerpop.apache.org/docs/current/reference/#vertex-steps>order step</a></td></tr><tr><td>where</td><td>用于筛选遍历返回的结果。 支持 <code>eq</code><code>neq</code><code>lt</code><code>lte</code><code>gt</code><code>gte</code><code>between</code> 运算符</td><td><a href=http://tinkerpop.apache.org/docs/current/reference/#where-step>where step</a></td></tr></tbody></table></div><div class=td-content style=page-break-before:always><h1 id=pg-29164f631ea2ad7e883c0ba00a843508>2 - HugeGraph Examples</h1><h3 id=1-概述>1 概述</h3><p>本示例将<a href=http://s3.thinkaurelius.com/docs/titan/1.0.0/getting-started.html>TitanDB Getting Started</a> 为模板来演示HugeGraph的使用方法。通过对比HugeGraph和TitanDB,了解HugeGraph和TitanDB的差异。</p><h4 id=11-hugegraph与titandb的异同>1.1 HugeGraph与TitanDB的异同</h4><p>HugeGraph和TitanDB都是基于<a href=https://tinkerpop.apache.org>Apache TinkerPop3</a>框架的图数据库,均支持<a href=https://tinkerpop.apache.org/gremlin.html>Gremlin</a>图查询语言,在使用方法和接口方面具有很多相似的地方。然而HugeGraph是全新设计开发的,其代码结构清晰,功能较为丰富,接口更为友好等特点。</p><p>HugeGraph相对于TitanDB而言,其主要特点如下:</p><ul><li>HugeGraph目前有HugeGraph-API、HugeGraph-Client、HugeGraph-Loader、HugeGraph-Studio、HugeGraph-Spark等完善的工具组件,可以完成系统集成、数据载入、图可视化查询、Spark 连接等功能;</li><li>HugeGraph具有Server和Client的概念,第三方系统可以通过jar引用、client、api等多种方式接入,而TitanDB仅支持jar引用方式接入。</li><li>HugeGraph的Schema需要显式定义,所有的插入和查询均需要通过严格的schema校验,目前暂不支持schema的隐式创建。</li><li>HugeGraph充分利用后端存储系统的特点来实现数据高效存取,而TitanDB以统一的Kv结构无视后端的差异性。</li><li>HugeGraph的更新操作可以实现按需操作(例如:更新某个属性)性能更好。TitanDB的更新是read and update方式。</li><li>HugeGraph的VertexId和EdgeId均支持拼接,可实现自动去重,同时查询性能更好。TitanDB的所有Id均是自动生成,查询需要经索引。</li></ul><h4 id=12-人物关系图谱>1.2 人物关系图谱</h4><p>本示例通过Property Graph Model图数据模型来描述希腊神话中各人物角色的关系(也被成为人物关系图谱),具体关系详见下图。</p><div style=text-align:center><img src=/docs/images/graph-of-gods.png alt=image></div><p>其中,圆形节点代表实体(Vertex),箭头代表关系(Edge),方框的内容为属性。</p><p>该关系图谱中有两类顶点,分别是人物(character)和位置(location)如下表:</p><table><thead><tr><th>名称</th><th>类型</th><th>属性</th></tr></thead><tbody><tr><td>character</td><td>vertex</td><td>name,age,type</td></tr><tr><td>location</td><td>vertex</td><td>name</td></tr></tbody></table><p>有六种关系,分别是父子(father)、母子(mother)、兄弟(brother)、战斗(battled)、居住(lives)、拥有宠物(pet) 关于关系图谱的具体信息如下:</p><table><thead><tr><th>名称</th><th>类型</th><th>source vertex label</th><th>target vertex label</th><th>属性</th></tr></thead><tbody><tr><td>father</td><td>edge</td><td>character</td><td>character</td><td>-</td></tr><tr><td>mother</td><td>edge</td><td>character</td><td>character</td><td>-</td></tr><tr><td>brother</td><td>edge</td><td>character</td><td>character</td><td>-</td></tr><tr><td>pet</td><td>edge</td><td>character</td><td>character</td><td>-</td></tr><tr><td>lives</td><td>edge</td><td>character</td><td>location</td><td>reason</td></tr></tbody></table><p>在HugeGraph中,每个edge label只能作用于一对source vertex label和target vertex label。也就是说,如果一个图内定义了一种关系father连接character和character,那farther就不能再连接其他的vertex labels。</p><p>因此本例子将原TitanDB中的monster, god, human, demigod均使用相同的<code>vertex label: character</code>来表示, 同时增加属性type来标识人物的类型。<code>edge label</code>与原TitanDB保持一致。当然为了满足<code>edge label</code>约束,也可以通过调整<code>edge label</code><code>name</code>来实现。</p><h3 id=2-graph-schema-and-data-ingest-examples>2 Graph Schema and Data Ingest Examples</h3><p>HugeGraph需要显示创建Schema,因此需要依次创建PropertyKey、VertexLabel、EdgeLabel,如果有需要索引还需要创建IndexLabel。</p><h4 id=21-graph-schema>2.1 Graph Schema</h4><div class=highlight><pre tabindex=0 style=background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-groovy data-lang=groovy><span style=display:flex><span><span style=color:#000>schema</span> <span style=color:#ce5c00;font-weight:700>=</span> <span style=color:#000>hugegraph</span><span style=color:#ce5c00;font-weight:700>.</span><span style=color:#c4a000>schema</span><span style=color:#ce5c00;font-weight:700>()</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#000>schema</span><span style=color:#ce5c00;font-weight:700>.</span><span style=color:#c4a000>propertyKey</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#34;name&#34;</span><span style=color:#ce5c00;font-weight:700>).</span><span style=color:#c4a000>asText</span><span style=color:#ce5c00;font-weight:700>().</span><span style=color:#c4a000>ifNotExist</span><span style=color:#ce5c00;font-weight:700>().</span><span style=color:#c4a000>create</span><span style=color:#ce5c00;font-weight:700>()</span>
</span></span><span style=display:flex><span><span style=color:#000>schema</span><span style=color:#ce5c00;font-weight:700>.</span><span style=color:#c4a000>propertyKey</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#34;age&#34;</span><span style=color:#ce5c00;font-weight:700>).</span><span style=color:#c4a000>asInt</span><span style=color:#ce5c00;font-weight:700>().</span><span style=color:#c4a000>ifNotExist</span><span style=color:#ce5c00;font-weight:700>().</span><span style=color:#c4a000>create</span><span style=color:#ce5c00;font-weight:700>()</span>
</span></span><span style=display:flex><span><span style=color:#000>schema</span><span style=color:#ce5c00;font-weight:700>.</span><span style=color:#c4a000>propertyKey</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#34;time&#34;</span><span style=color:#ce5c00;font-weight:700>).</span><span style=color:#c4a000>asInt</span><span style=color:#ce5c00;font-weight:700>().</span><span style=color:#c4a000>ifNotExist</span><span style=color:#ce5c00;font-weight:700>().</span><span style=color:#c4a000>create</span><span style=color:#ce5c00;font-weight:700>()</span>
</span></span><span style=display:flex><span><span style=color:#000>schema</span><span style=color:#ce5c00;font-weight:700>.</span><span style=color:#c4a000>propertyKey</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#34;reason&#34;</span><span style=color:#ce5c00;font-weight:700>).</span><span style=color:#c4a000>asText</span><span style=color:#ce5c00;font-weight:700>().</span><span style=color:#c4a000>ifNotExist</span><span style=color:#ce5c00;font-weight:700>().</span><span style=color:#c4a000>create</span><span style=color:#ce5c00;font-weight:700>()</span>
</span></span><span style=display:flex><span><span style=color:#000>schema</span><span style=color:#ce5c00;font-weight:700>.</span><span style=color:#c4a000>propertyKey</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#34;type&#34;</span><span style=color:#ce5c00;font-weight:700>).</span><span style=color:#c4a000>asText</span><span style=color:#ce5c00;font-weight:700>().</span><span style=color:#c4a000>ifNotExist</span><span style=color:#ce5c00;font-weight:700>().</span><span style=color:#c4a000>create</span><span style=color:#ce5c00;font-weight:700>()</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#000>schema</span><span style=color:#ce5c00;font-weight:700>.</span><span style=color:#c4a000>vertexLabel</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#34;character&#34;</span><span style=color:#ce5c00;font-weight:700>).</span><span style=color:#c4a000>properties</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#34;name&#34;</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#4e9a06>&#34;age&#34;</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#4e9a06>&#34;type&#34;</span><span style=color:#ce5c00;font-weight:700>).</span><span style=color:#c4a000>primaryKeys</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#34;name&#34;</span><span style=color:#ce5c00;font-weight:700>).</span><span style=color:#c4a000>nullableKeys</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#34;age&#34;</span><span style=color:#ce5c00;font-weight:700>).</span><span style=color:#c4a000>ifNotExist</span><span style=color:#ce5c00;font-weight:700>().</span><span style=color:#c4a000>create</span><span style=color:#ce5c00;font-weight:700>()</span>
</span></span><span style=display:flex><span><span style=color:#000>schema</span><span style=color:#ce5c00;font-weight:700>.</span><span style=color:#c4a000>vertexLabel</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#34;location&#34;</span><span style=color:#ce5c00;font-weight:700>).</span><span style=color:#c4a000>properties</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#34;name&#34;</span><span style=color:#ce5c00;font-weight:700>).</span><span style=color:#c4a000>primaryKeys</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#34;name&#34;</span><span style=color:#ce5c00;font-weight:700>).</span><span style=color:#c4a000>ifNotExist</span><span style=color:#ce5c00;font-weight:700>().</span><span style=color:#c4a000>create</span><span style=color:#ce5c00;font-weight:700>()</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#000>schema</span><span style=color:#ce5c00;font-weight:700>.</span><span style=color:#c4a000>edgeLabel</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#34;father&#34;</span><span style=color:#ce5c00;font-weight:700>).</span><span style=color:#c4a000>link</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#34;character&#34;</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#4e9a06>&#34;character&#34;</span><span style=color:#ce5c00;font-weight:700>).</span><span style=color:#c4a000>ifNotExist</span><span style=color:#ce5c00;font-weight:700>().</span><span style=color:#c4a000>create</span><span style=color:#ce5c00;font-weight:700>()</span>
</span></span><span style=display:flex><span><span style=color:#000>schema</span><span style=color:#ce5c00;font-weight:700>.</span><span style=color:#c4a000>edgeLabel</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#34;mother&#34;</span><span style=color:#ce5c00;font-weight:700>).</span><span style=color:#c4a000>link</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#34;character&#34;</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#4e9a06>&#34;character&#34;</span><span style=color:#ce5c00;font-weight:700>).</span><span style=color:#c4a000>ifNotExist</span><span style=color:#ce5c00;font-weight:700>().</span><span style=color:#c4a000>create</span><span style=color:#ce5c00;font-weight:700>()</span>
</span></span><span style=display:flex><span><span style=color:#000>schema</span><span style=color:#ce5c00;font-weight:700>.</span><span style=color:#c4a000>edgeLabel</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#34;battled&#34;</span><span style=color:#ce5c00;font-weight:700>).</span><span style=color:#c4a000>link</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#34;character&#34;</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#4e9a06>&#34;character&#34;</span><span style=color:#ce5c00;font-weight:700>).</span><span style=color:#c4a000>properties</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#34;time&#34;</span><span style=color:#ce5c00;font-weight:700>).</span><span style=color:#c4a000>ifNotExist</span><span style=color:#ce5c00;font-weight:700>().</span><span style=color:#c4a000>create</span><span style=color:#ce5c00;font-weight:700>()</span>
</span></span><span style=display:flex><span><span style=color:#000>schema</span><span style=color:#ce5c00;font-weight:700>.</span><span style=color:#c4a000>edgeLabel</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#34;lives&#34;</span><span style=color:#ce5c00;font-weight:700>).</span><span style=color:#c4a000>link</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#34;character&#34;</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#4e9a06>&#34;location&#34;</span><span style=color:#ce5c00;font-weight:700>).</span><span style=color:#c4a000>properties</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#34;reason&#34;</span><span style=color:#ce5c00;font-weight:700>).</span><span style=color:#c4a000>nullableKeys</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#34;reason&#34;</span><span style=color:#ce5c00;font-weight:700>).</span><span style=color:#c4a000>ifNotExist</span><span style=color:#ce5c00;font-weight:700>().</span><span style=color:#c4a000>create</span><span style=color:#ce5c00;font-weight:700>()</span>
</span></span><span style=display:flex><span><span style=color:#000>schema</span><span style=color:#ce5c00;font-weight:700>.</span><span style=color:#c4a000>edgeLabel</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#34;pet&#34;</span><span style=color:#ce5c00;font-weight:700>).</span><span style=color:#c4a000>link</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#34;character&#34;</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#4e9a06>&#34;character&#34;</span><span style=color:#ce5c00;font-weight:700>).</span><span style=color:#c4a000>ifNotExist</span><span style=color:#ce5c00;font-weight:700>().</span><span style=color:#c4a000>create</span><span style=color:#ce5c00;font-weight:700>()</span>
</span></span><span style=display:flex><span><span style=color:#000>schema</span><span style=color:#ce5c00;font-weight:700>.</span><span style=color:#c4a000>edgeLabel</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#34;brother&#34;</span><span style=color:#ce5c00;font-weight:700>).</span><span style=color:#c4a000>link</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#34;character&#34;</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#4e9a06>&#34;character&#34;</span><span style=color:#ce5c00;font-weight:700>).</span><span style=color:#c4a000>ifNotExist</span><span style=color:#ce5c00;font-weight:700>().</span><span style=color:#c4a000>create</span><span style=color:#ce5c00;font-weight:700>()</span>
</span></span></code></pre></div><h4 id=22-graph-data>2.2 Graph Data</h4><div class=highlight><pre tabindex=0 style=background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-groovy data-lang=groovy><span style=display:flex><span><span style=color:#8f5902;font-style:italic>// add vertices
</span></span></span><span style=display:flex><span><span style=color:#8f5902;font-style:italic></span><span style=color:#000>Vertex</span> <span style=color:#000>saturn</span> <span style=color:#ce5c00;font-weight:700>=</span> <span style=color:#000>graph</span><span style=color:#ce5c00;font-weight:700>.</span><span style=color:#c4a000>addVertex</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#000>T</span><span style=color:#ce5c00;font-weight:700>.</span><span style=color:#c4a000>label</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#4e9a06>&#34;character&#34;</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#4e9a06>&#34;name&#34;</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#4e9a06>&#34;saturn&#34;</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#4e9a06>&#34;age&#34;</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#0000cf;font-weight:700>10000</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#4e9a06>&#34;type&#34;</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#4e9a06>&#34;titan&#34;</span><span style=color:#ce5c00;font-weight:700>)</span>
</span></span><span style=display:flex><span><span style=color:#000>Vertex</span> <span style=color:#000>sky</span> <span style=color:#ce5c00;font-weight:700>=</span> <span style=color:#000>graph</span><span style=color:#ce5c00;font-weight:700>.</span><span style=color:#c4a000>addVertex</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#000>T</span><span style=color:#ce5c00;font-weight:700>.</span><span style=color:#c4a000>label</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#4e9a06>&#34;location&#34;</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#4e9a06>&#34;name&#34;</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#4e9a06>&#34;sky&#34;</span><span style=color:#ce5c00;font-weight:700>)</span>
</span></span><span style=display:flex><span><span style=color:#000>Vertex</span> <span style=color:#000>sea</span> <span style=color:#ce5c00;font-weight:700>=</span> <span style=color:#000>graph</span><span style=color:#ce5c00;font-weight:700>.</span><span style=color:#c4a000>addVertex</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#000>T</span><span style=color:#ce5c00;font-weight:700>.</span><span style=color:#c4a000>label</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#4e9a06>&#34;location&#34;</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#4e9a06>&#34;name&#34;</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#4e9a06>&#34;sea&#34;</span><span style=color:#ce5c00;font-weight:700>)</span>
</span></span><span style=display:flex><span><span style=color:#000>Vertex</span> <span style=color:#000>jupiter</span> <span style=color:#ce5c00;font-weight:700>=</span> <span style=color:#000>graph</span><span style=color:#ce5c00;font-weight:700>.</span><span style=color:#c4a000>addVertex</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#000>T</span><span style=color:#ce5c00;font-weight:700>.</span><span style=color:#c4a000>label</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#4e9a06>&#34;character&#34;</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#4e9a06>&#34;name&#34;</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#4e9a06>&#34;jupiter&#34;</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#4e9a06>&#34;age&#34;</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#0000cf;font-weight:700>5000</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#4e9a06>&#34;type&#34;</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#4e9a06>&#34;god&#34;</span><span style=color:#ce5c00;font-weight:700>)</span>
</span></span><span style=display:flex><span><span style=color:#000>Vertex</span> <span style=color:#000>neptune</span> <span style=color:#ce5c00;font-weight:700>=</span> <span style=color:#000>graph</span><span style=color:#ce5c00;font-weight:700>.</span><span style=color:#c4a000>addVertex</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#000>T</span><span style=color:#ce5c00;font-weight:700>.</span><span style=color:#c4a000>label</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#4e9a06>&#34;character&#34;</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#4e9a06>&#34;name&#34;</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#4e9a06>&#34;neptune&#34;</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#4e9a06>&#34;age&#34;</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#0000cf;font-weight:700>4500</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#4e9a06>&#34;type&#34;</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#4e9a06>&#34;god&#34;</span><span style=color:#ce5c00;font-weight:700>)</span>
</span></span><span style=display:flex><span><span style=color:#000>Vertex</span> <span style=color:#000>hercules</span> <span style=color:#ce5c00;font-weight:700>=</span> <span style=color:#000>graph</span><span style=color:#ce5c00;font-weight:700>.</span><span style=color:#c4a000>addVertex</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#000>T</span><span style=color:#ce5c00;font-weight:700>.</span><span style=color:#c4a000>label</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#4e9a06>&#34;character&#34;</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#4e9a06>&#34;name&#34;</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#4e9a06>&#34;hercules&#34;</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#4e9a06>&#34;age&#34;</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#0000cf;font-weight:700>30</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#4e9a06>&#34;type&#34;</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#4e9a06>&#34;demigod&#34;</span><span style=color:#ce5c00;font-weight:700>)</span>
</span></span><span style=display:flex><span><span style=color:#000>Vertex</span> <span style=color:#000>alcmene</span> <span style=color:#ce5c00;font-weight:700>=</span> <span style=color:#000>graph</span><span style=color:#ce5c00;font-weight:700>.</span><span style=color:#c4a000>addVertex</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#000>T</span><span style=color:#ce5c00;font-weight:700>.</span><span style=color:#c4a000>label</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#4e9a06>&#34;character&#34;</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#4e9a06>&#34;name&#34;</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#4e9a06>&#34;alcmene&#34;</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#4e9a06>&#34;age&#34;</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#0000cf;font-weight:700>45</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#4e9a06>&#34;type&#34;</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#4e9a06>&#34;human&#34;</span><span style=color:#ce5c00;font-weight:700>)</span>
</span></span><span style=display:flex><span><span style=color:#000>Vertex</span> <span style=color:#000>pluto</span> <span style=color:#ce5c00;font-weight:700>=</span> <span style=color:#000>graph</span><span style=color:#ce5c00;font-weight:700>.</span><span style=color:#c4a000>addVertex</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#000>T</span><span style=color:#ce5c00;font-weight:700>.</span><span style=color:#c4a000>label</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#4e9a06>&#34;character&#34;</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#4e9a06>&#34;name&#34;</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#4e9a06>&#34;pluto&#34;</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#4e9a06>&#34;age&#34;</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#0000cf;font-weight:700>4000</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#4e9a06>&#34;type&#34;</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#4e9a06>&#34;god&#34;</span><span style=color:#ce5c00;font-weight:700>)</span>
</span></span><span style=display:flex><span><span style=color:#000>Vertex</span> <span style=color:#000>nemean</span> <span style=color:#ce5c00;font-weight:700>=</span> <span style=color:#000>graph</span><span style=color:#ce5c00;font-weight:700>.</span><span style=color:#c4a000>addVertex</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#000>T</span><span style=color:#ce5c00;font-weight:700>.</span><span style=color:#c4a000>label</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#4e9a06>&#34;character&#34;</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#4e9a06>&#34;name&#34;</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#4e9a06>&#34;nemean&#34;</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#4e9a06>&#34;type&#34;</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#4e9a06>&#34;monster&#34;</span><span style=color:#ce5c00;font-weight:700>)</span>
</span></span><span style=display:flex><span><span style=color:#000>Vertex</span> <span style=color:#000>hydra</span> <span style=color:#ce5c00;font-weight:700>=</span> <span style=color:#000>graph</span><span style=color:#ce5c00;font-weight:700>.</span><span style=color:#c4a000>addVertex</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#000>T</span><span style=color:#ce5c00;font-weight:700>.</span><span style=color:#c4a000>label</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#4e9a06>&#34;character&#34;</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#4e9a06>&#34;name&#34;</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#4e9a06>&#34;hydra&#34;</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#4e9a06>&#34;type&#34;</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#4e9a06>&#34;monster&#34;</span><span style=color:#ce5c00;font-weight:700>)</span>
</span></span><span style=display:flex><span><span style=color:#000>Vertex</span> <span style=color:#000>cerberus</span> <span style=color:#ce5c00;font-weight:700>=</span> <span style=color:#000>graph</span><span style=color:#ce5c00;font-weight:700>.</span><span style=color:#c4a000>addVertex</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#000>T</span><span style=color:#ce5c00;font-weight:700>.</span><span style=color:#c4a000>label</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#4e9a06>&#34;character&#34;</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#4e9a06>&#34;name&#34;</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#4e9a06>&#34;cerberus&#34;</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#4e9a06>&#34;type&#34;</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#4e9a06>&#34;monster&#34;</span><span style=color:#ce5c00;font-weight:700>)</span>
</span></span><span style=display:flex><span><span style=color:#000>Vertex</span> <span style=color:#000>tartarus</span> <span style=color:#ce5c00;font-weight:700>=</span> <span style=color:#000>graph</span><span style=color:#ce5c00;font-weight:700>.</span><span style=color:#c4a000>addVertex</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#000>T</span><span style=color:#ce5c00;font-weight:700>.</span><span style=color:#c4a000>label</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#4e9a06>&#34;location&#34;</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#4e9a06>&#34;name&#34;</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#4e9a06>&#34;tartarus&#34;</span><span style=color:#ce5c00;font-weight:700>)</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#8f5902;font-style:italic>// add edges
</span></span></span><span style=display:flex><span><span style=color:#8f5902;font-style:italic></span><span style=color:#000>jupiter</span><span style=color:#ce5c00;font-weight:700>.</span><span style=color:#c4a000>addEdge</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#34;father&#34;</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#000>saturn</span><span style=color:#ce5c00;font-weight:700>)</span>
</span></span><span style=display:flex><span><span style=color:#000>jupiter</span><span style=color:#ce5c00;font-weight:700>.</span><span style=color:#c4a000>addEdge</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#34;lives&#34;</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#000>sky</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#4e9a06>&#34;reason&#34;</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#4e9a06>&#34;loves fresh breezes&#34;</span><span style=color:#ce5c00;font-weight:700>)</span>
</span></span><span style=display:flex><span><span style=color:#000>jupiter</span><span style=color:#ce5c00;font-weight:700>.</span><span style=color:#c4a000>addEdge</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#34;brother&#34;</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#000>neptune</span><span style=color:#ce5c00;font-weight:700>)</span>
</span></span><span style=display:flex><span><span style=color:#000>jupiter</span><span style=color:#ce5c00;font-weight:700>.</span><span style=color:#c4a000>addEdge</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#34;brother&#34;</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#000>pluto</span><span style=color:#ce5c00;font-weight:700>)</span>
</span></span><span style=display:flex><span><span style=color:#000>neptune</span><span style=color:#ce5c00;font-weight:700>.</span><span style=color:#c4a000>addEdge</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#34;lives&#34;</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#000>sea</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#4e9a06>&#34;reason&#34;</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#4e9a06>&#34;loves waves&#34;</span><span style=color:#ce5c00;font-weight:700>)</span>
</span></span><span style=display:flex><span><span style=color:#000>neptune</span><span style=color:#ce5c00;font-weight:700>.</span><span style=color:#c4a000>addEdge</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#34;brother&#34;</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#000>jupiter</span><span style=color:#ce5c00;font-weight:700>)</span>
</span></span><span style=display:flex><span><span style=color:#000>neptune</span><span style=color:#ce5c00;font-weight:700>.</span><span style=color:#c4a000>addEdge</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#34;brother&#34;</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#000>pluto</span><span style=color:#ce5c00;font-weight:700>)</span>
</span></span><span style=display:flex><span><span style=color:#000>hercules</span><span style=color:#ce5c00;font-weight:700>.</span><span style=color:#c4a000>addEdge</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#34;father&#34;</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#000>jupiter</span><span style=color:#ce5c00;font-weight:700>)</span>
</span></span><span style=display:flex><span><span style=color:#000>hercules</span><span style=color:#ce5c00;font-weight:700>.</span><span style=color:#c4a000>addEdge</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#34;mother&#34;</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#000>alcmene</span><span style=color:#ce5c00;font-weight:700>)</span>
</span></span><span style=display:flex><span><span style=color:#000>hercules</span><span style=color:#ce5c00;font-weight:700>.</span><span style=color:#c4a000>addEdge</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#34;battled&#34;</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#000>nemean</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#4e9a06>&#34;time&#34;</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#0000cf;font-weight:700>1</span><span style=color:#ce5c00;font-weight:700>)</span>
</span></span><span style=display:flex><span><span style=color:#000>hercules</span><span style=color:#ce5c00;font-weight:700>.</span><span style=color:#c4a000>addEdge</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#34;battled&#34;</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#000>hydra</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#4e9a06>&#34;time&#34;</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#0000cf;font-weight:700>2</span><span style=color:#ce5c00;font-weight:700>)</span>
</span></span><span style=display:flex><span><span style=color:#000>hercules</span><span style=color:#ce5c00;font-weight:700>.</span><span style=color:#c4a000>addEdge</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#34;battled&#34;</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#000>cerberus</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#4e9a06>&#34;time&#34;</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#0000cf;font-weight:700>12</span><span style=color:#ce5c00;font-weight:700>)</span>
</span></span><span style=display:flex><span><span style=color:#000>pluto</span><span style=color:#ce5c00;font-weight:700>.</span><span style=color:#c4a000>addEdge</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#34;brother&#34;</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#000>jupiter</span><span style=color:#ce5c00;font-weight:700>)</span>
</span></span><span style=display:flex><span><span style=color:#000>pluto</span><span style=color:#ce5c00;font-weight:700>.</span><span style=color:#c4a000>addEdge</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#34;brother&#34;</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#000>neptune</span><span style=color:#ce5c00;font-weight:700>)</span>
</span></span><span style=display:flex><span><span style=color:#000>pluto</span><span style=color:#ce5c00;font-weight:700>.</span><span style=color:#c4a000>addEdge</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#34;lives&#34;</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#000>tartarus</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#4e9a06>&#34;reason&#34;</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#4e9a06>&#34;no fear of death&#34;</span><span style=color:#ce5c00;font-weight:700>)</span>
</span></span><span style=display:flex><span><span style=color:#000>pluto</span><span style=color:#ce5c00;font-weight:700>.</span><span style=color:#c4a000>addEdge</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#34;pet&#34;</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#000>cerberus</span><span style=color:#ce5c00;font-weight:700>)</span>
</span></span><span style=display:flex><span><span style=color:#000>cerberus</span><span style=color:#ce5c00;font-weight:700>.</span><span style=color:#c4a000>addEdge</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#34;lives&#34;</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#000>tartarus</span><span style=color:#ce5c00;font-weight:700>)</span>
</span></span></code></pre></div><h4 id=23-indices>2.3 Indices</h4><p>HugeGraph默认是自动生成Id,如果用户通过<code>primaryKeys</code>指定<code>VertexLabel</code><code>primaryKeys</code>字段列表后,<code>VertexLabel</code>的Id策略将会自动切换到<code>primaryKeys</code>策略。 启用<code>primaryKeys</code>策略后,HugeGraph通过<code>vertexLabel+primaryKeys</code>拼接生成<code>VertexId</code> ,可实现自动去重,同时无需额外创建索引即可以使用<code>primaryKeys</code>中的属性进行快速查询。 例如 &ldquo;character&rdquo; 和 &ldquo;location&rdquo; 都有<code>primaryKeys("name")</code>属性,因此在不额外创建索引的情况下可以通过<code>g.V().hasLabel('character') .has('name','hercules')</code>查询vertex 。</p><h3 id=3-graph-traversal-examples>3 Graph Traversal Examples</h3><h4 id=31-traversal-query>3.1 Traversal Query</h4><p><strong>1. Find the grandfather of hercules</strong></p><div class=highlight><pre tabindex=0 style=background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-groovy data-lang=groovy><span style=display:flex><span><span style=color:#000>g</span><span style=color:#ce5c00;font-weight:700>.</span><span style=color:#c4a000>V</span><span style=color:#ce5c00;font-weight:700>().</span><span style=color:#c4a000>hasLabel</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#39;character&#39;</span><span style=color:#ce5c00;font-weight:700>).</span><span style=color:#c4a000>has</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#39;name&#39;</span><span style=color:#ce5c00;font-weight:700>,</span><span style=color:#4e9a06>&#39;hercules&#39;</span><span style=color:#ce5c00;font-weight:700>).</span><span style=color:#c4a000>out</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#39;father&#39;</span><span style=color:#ce5c00;font-weight:700>).</span><span style=color:#c4a000>out</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#39;father&#39;</span><span style=color:#ce5c00;font-weight:700>)</span>
</span></span></code></pre></div><p>也可以通过<code>repeat</code>方式:</p><div class=highlight><pre tabindex=0 style=background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-groovy data-lang=groovy><span style=display:flex><span><span style=color:#000>g</span><span style=color:#ce5c00;font-weight:700>.</span><span style=color:#c4a000>V</span><span style=color:#ce5c00;font-weight:700>().</span><span style=color:#c4a000>hasLabel</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#39;character&#39;</span><span style=color:#ce5c00;font-weight:700>).</span><span style=color:#c4a000>has</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#39;name&#39;</span><span style=color:#ce5c00;font-weight:700>,</span><span style=color:#4e9a06>&#39;hercules&#39;</span><span style=color:#ce5c00;font-weight:700>).</span><span style=color:#c4a000>repeat</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#000>__</span><span style=color:#ce5c00;font-weight:700>.</span><span style=color:#c4a000>out</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#39;father&#39;</span><span style=color:#ce5c00;font-weight:700>)).</span><span style=color:#c4a000>times</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#0000cf;font-weight:700>2</span><span style=color:#ce5c00;font-weight:700>)</span>
</span></span></code></pre></div><p><strong>2. Find the name of hercules&rsquo;s father</strong></p><div class=highlight><pre tabindex=0 style=background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-groovy data-lang=groovy><span style=display:flex><span><span style=color:#000>g</span><span style=color:#ce5c00;font-weight:700>.</span><span style=color:#c4a000>V</span><span style=color:#ce5c00;font-weight:700>().</span><span style=color:#c4a000>hasLabel</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#39;character&#39;</span><span style=color:#ce5c00;font-weight:700>).</span><span style=color:#c4a000>has</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#39;name&#39;</span><span style=color:#ce5c00;font-weight:700>,</span><span style=color:#4e9a06>&#39;hercules&#39;</span><span style=color:#ce5c00;font-weight:700>).</span><span style=color:#c4a000>out</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#39;father&#39;</span><span style=color:#ce5c00;font-weight:700>).</span><span style=color:#c4a000>value</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#39;name&#39;</span><span style=color:#ce5c00;font-weight:700>)</span>
</span></span></code></pre></div><p><strong>3. Find the characters with age > 100</strong></p><div class=highlight><pre tabindex=0 style=background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-groovy data-lang=groovy><span style=display:flex><span><span style=color:#000>g</span><span style=color:#ce5c00;font-weight:700>.</span><span style=color:#c4a000>V</span><span style=color:#ce5c00;font-weight:700>().</span><span style=color:#c4a000>hasLabel</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#39;character&#39;</span><span style=color:#ce5c00;font-weight:700>).</span><span style=color:#c4a000>has</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#39;age&#39;</span><span style=color:#ce5c00;font-weight:700>,</span><span style=color:#000>gt</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#0000cf;font-weight:700>100</span><span style=color:#ce5c00;font-weight:700>))</span>
</span></span></code></pre></div><p><strong>4. Find who are pluto&rsquo;s cohabitants</strong></p><div class=highlight><pre tabindex=0 style=background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-groovy data-lang=groovy><span style=display:flex><span><span style=color:#000>g</span><span style=color:#ce5c00;font-weight:700>.</span><span style=color:#c4a000>V</span><span style=color:#ce5c00;font-weight:700>().</span><span style=color:#c4a000>hasLabel</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#39;character&#39;</span><span style=color:#ce5c00;font-weight:700>).</span><span style=color:#c4a000>has</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#39;name&#39;</span><span style=color:#ce5c00;font-weight:700>,</span><span style=color:#4e9a06>&#39;pluto&#39;</span><span style=color:#ce5c00;font-weight:700>).</span><span style=color:#c4a000>out</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#39;lives&#39;</span><span style=color:#ce5c00;font-weight:700>).</span><span style=color:#c4a000>in</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#39;lives&#39;</span><span style=color:#ce5c00;font-weight:700>).</span><span style=color:#c4a000>values</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#39;name&#39;</span><span style=color:#ce5c00;font-weight:700>)</span>
</span></span></code></pre></div><p><strong>5. Find pluto can&rsquo;t be his own cohabitant</strong></p><div class=highlight><pre tabindex=0 style=background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-groovy data-lang=groovy><span style=display:flex><span><span style=color:#000>pluto</span> <span style=color:#ce5c00;font-weight:700>=</span> <span style=color:#000>g</span><span style=color:#ce5c00;font-weight:700>.</span><span style=color:#c4a000>V</span><span style=color:#ce5c00;font-weight:700>().</span><span style=color:#c4a000>hasLabel</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#39;character&#39;</span><span style=color:#ce5c00;font-weight:700>).</span><span style=color:#c4a000>has</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#39;name&#39;</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#4e9a06>&#39;pluto&#39;</span><span style=color:#ce5c00;font-weight:700>)</span>
</span></span><span style=display:flex><span><span style=color:#000>g</span><span style=color:#ce5c00;font-weight:700>.</span><span style=color:#c4a000>V</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#000>pluto</span><span style=color:#ce5c00;font-weight:700>).</span><span style=color:#c4a000>out</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#39;lives&#39;</span><span style=color:#ce5c00;font-weight:700>).</span><span style=color:#c4a000>in</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#39;lives&#39;</span><span style=color:#ce5c00;font-weight:700>).</span><span style=color:#c4a000>where</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#000>is</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#000>neq</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#000>pluto</span><span style=color:#ce5c00;font-weight:700>)).</span><span style=color:#c4a000>values</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#39;name&#39;</span><span style=color:#ce5c00;font-weight:700>)</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#8f5902;font-style:italic>// use &#39;as&#39;
</span></span></span><span style=display:flex><span><span style=color:#8f5902;font-style:italic></span><span style=color:#000>g</span><span style=color:#ce5c00;font-weight:700>.</span><span style=color:#c4a000>V</span><span style=color:#ce5c00;font-weight:700>().</span><span style=color:#c4a000>hasLabel</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#39;character&#39;</span><span style=color:#ce5c00;font-weight:700>).</span><span style=color:#c4a000>has</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#39;name&#39;</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#4e9a06>&#39;pluto&#39;</span><span style=color:#ce5c00;font-weight:700>).</span><span style=color:#c4a000>as</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#39;x&#39;</span><span style=color:#ce5c00;font-weight:700>).</span><span style=color:#c4a000>out</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#39;lives&#39;</span><span style=color:#ce5c00;font-weight:700>).</span><span style=color:#c4a000>in</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#39;lives&#39;</span><span style=color:#ce5c00;font-weight:700>).</span><span style=color:#c4a000>where</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#000>neq</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#39;x&#39;</span><span style=color:#ce5c00;font-weight:700>)).</span><span style=color:#c4a000>values</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#39;name&#39;</span><span style=color:#ce5c00;font-weight:700>)</span>
</span></span></code></pre></div><p><strong>6. Pluto&rsquo;s Brothers</strong></p><div class=highlight><pre tabindex=0 style=background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-groovy data-lang=groovy><span style=display:flex><span><span style=color:#000>pluto</span> <span style=color:#ce5c00;font-weight:700>=</span> <span style=color:#000>g</span><span style=color:#ce5c00;font-weight:700>.</span><span style=color:#c4a000>V</span><span style=color:#ce5c00;font-weight:700>().</span><span style=color:#c4a000>hasLabel</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#39;character&#39;</span><span style=color:#ce5c00;font-weight:700>).</span><span style=color:#c4a000>has</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#39;name&#39;</span><span style=color:#ce5c00;font-weight:700>,</span> <span style=color:#4e9a06>&#39;pluto&#39;</span><span style=color:#ce5c00;font-weight:700>).</span><span style=color:#c4a000>next</span><span style=color:#ce5c00;font-weight:700>()</span>
</span></span><span style=display:flex><span><span style=color:#8f5902;font-style:italic>// where do pluto&#39;s brothers live?
</span></span></span><span style=display:flex><span><span style=color:#8f5902;font-style:italic></span><span style=color:#000>g</span><span style=color:#ce5c00;font-weight:700>.</span><span style=color:#c4a000>V</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#000>pluto</span><span style=color:#ce5c00;font-weight:700>).</span><span style=color:#c4a000>out</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#39;brother&#39;</span><span style=color:#ce5c00;font-weight:700>).</span><span style=color:#c4a000>out</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#39;lives&#39;</span><span style=color:#ce5c00;font-weight:700>).</span><span style=color:#c4a000>values</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#39;name&#39;</span><span style=color:#ce5c00;font-weight:700>)</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#8f5902;font-style:italic>// which brother lives in which place?
</span></span></span><span style=display:flex><span><span style=color:#8f5902;font-style:italic></span><span style=color:#000>g</span><span style=color:#ce5c00;font-weight:700>.</span><span style=color:#c4a000>V</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#000>pluto</span><span style=color:#ce5c00;font-weight:700>).</span><span style=color:#c4a000>out</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#39;brother&#39;</span><span style=color:#ce5c00;font-weight:700>).</span><span style=color:#c4a000>as</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#39;god&#39;</span><span style=color:#ce5c00;font-weight:700>).</span><span style=color:#c4a000>out</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#39;lives&#39;</span><span style=color:#ce5c00;font-weight:700>).</span><span style=color:#c4a000>as</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#39;place&#39;</span><span style=color:#ce5c00;font-weight:700>).</span><span style=color:#c4a000>select</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#39;god&#39;</span><span style=color:#ce5c00;font-weight:700>,</span><span style=color:#4e9a06>&#39;place&#39;</span><span style=color:#ce5c00;font-weight:700>)</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#8f5902;font-style:italic>// what is the name of the brother and the name of the place?
</span></span></span><span style=display:flex><span><span style=color:#8f5902;font-style:italic></span><span style=color:#000>g</span><span style=color:#ce5c00;font-weight:700>.</span><span style=color:#c4a000>V</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#000>pluto</span><span style=color:#ce5c00;font-weight:700>).</span><span style=color:#c4a000>out</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#39;brother&#39;</span><span style=color:#ce5c00;font-weight:700>).</span><span style=color:#c4a000>as</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#39;god&#39;</span><span style=color:#ce5c00;font-weight:700>).</span><span style=color:#c4a000>out</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#39;lives&#39;</span><span style=color:#ce5c00;font-weight:700>).</span><span style=color:#c4a000>as</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#39;place&#39;</span><span style=color:#ce5c00;font-weight:700>).</span><span style=color:#c4a000>select</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#39;god&#39;</span><span style=color:#ce5c00;font-weight:700>,</span><span style=color:#4e9a06>&#39;place&#39;</span><span style=color:#ce5c00;font-weight:700>).</span><span style=color:#c4a000>by</span><span style=color:#ce5c00;font-weight:700>(</span><span style=color:#4e9a06>&#39;name&#39;</span><span style=color:#ce5c00;font-weight:700>)</span>
</span></span></code></pre></div><p>推荐使用<a href=/docs/quickstart/hugegraph-studio>HugeGraph-Studio</a> 通过可视化的方式来执行上述代码。另外也可以通过HugeGraph-Client、HugeApi、GremlinConsole和GremlinDriver等多种方式执行上述代码。</p><h4 id=32-总结>3.2 总结</h4><p>HugeGraph 目前支持 <code>Gremlin</code> 的语法,用户可以通过 <code>Gremlin / REST-API</code> 实现各种查询需求。</p></div></main></div></div><footer class="bg-dark py-3 row d-print-none"><div class=footer-container><div class="row bg-dark"><div class=col-1></div><div class="col-4 text-center container-center"><div class=footer-row><a href=https://www.apache.org><div class=footer-apache-logo><svg id="Layer_2" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 7127.6 2890" enable-background="new 0 0 7127.6 2890"><path fill="#6d6e71" d="M7104.7 847.8c15.3 15.3 22.9 33.7 22.9 55.2s-7.6 39.9-22.9 55.4c-15.3 15.4-33.8 23.1-55.6 23.1s-40.2-7.6-55.4-22.9c-15.1-15.3-22.7-33.7-22.7-55.2s7.6-39.9 22.9-55.4c15.3-15.4 33.7-23.1 55.4-23.1C7070.9 824.9 7089.4 832.5 7104.7 847.8zM7098.1 951.9c13.3-13.6 20-29.8 20-48.7s-6.6-35-19.8-48.5c-13.2-13.4-29.4-20.1-48.6-20.1-19.2.0-35.4 6.7-48.7 20.2s-19.9 29.7-19.9 48.7 6.6 35.2 19.7 48.6c13.1 13.4 29.3 20.1 48.5 20.1S7084.7 965.4 7098.1 951.9zm-11-63.8c0 14-6.1 22.8-18.4 26.4l22.5 30.5H7073l-20.3-28.3h-18.6V945h-14.7v-84.6h31.8c12.8.0 22 2.2 27.6 6.6C7084.4 871.4 7087.1 878.4 7087.1 888.1zM7068.2 9e2c3-2.4 4.4-6.5 4.4-12s-1.5-9.4-4.5-11.6-8.4-3.2-16-3.2h-18v30.5h17.5C7059.7 903.6 7065.3 902.4 7068.2 9e2z"/><path fill="#6d6e71" d="M1803.6 499.8v155.4h-20V499.8h-56.8v-19.2h133.9v19.2H1803.6z"/><path fill="#6d6e71" d="M2082.2 655.2v-76.9H1977v76.9h-20V480.5h20v78.9h105.2v-78.9h20v174.7h-20z"/><path fill="#6d6e71" d="M2241.4 499.8v57.4h88.1v19.2h-88.1v59.8h101.8v19h-121.8V480.5H2340v19.2H2241.4z"/><path fill="#d22128" d="M1574.5 1852.4l417.3-997.6h80.1l417.3 997.6h-105.4l-129.3-311.9h-448.2l-127.9 311.9H1574.5zM2032.6 970l-205.1 493.2h404.7L2032.6 970z"/><path fill="#d22128" d="M2596.9 1852.4V854.8H3010c171.4.0 295.1 158.8 295.1 313.3.0 163-115.2 316.1-286.6 316.1h-324.6v368.1h-97zm97-455.3h318.9c118 0 193.9-108.2 193.9-229 0-125.1-92.7-226.2-202.3-226.2h-310.5v455.2z"/><path fill="#d22128" d="M3250.5 1852.4l417.3-997.6h80.1l417.3 997.6h-105.4l-129.3-311.9h-448.2l-127.9 311.9H3250.5zM3708.6 970l-205.1 493.2h404.7L3708.6 970z"/><path fill="#d22128" d="M4637.3 849.1c177 0 306.3 89.9 368.1 217.8l-78.7 47.8c-63.2-132.1-186.9-177-295.1-177-238.9.0-369.5 213.6-369.5 414.5.0 220.6 161.6 420.1 373.7 420.1 112.4.0 244.5-56.2 307.7-185.5l81.5 42.1c-64.6 148.9-241.7 231.8-394.8 231.8-274 0-466.5-261.3-466.5-514.2C4163.8 1106.3 4336.6 849.1 4637.3 849.1z"/><path fill="#d22128" d="M5949.1 854.8v997.6h-98.4v-466.5h-591.5v466.5h-96.9V854.8h96.9v444h591.5v-444H5949.1z"/><path fill="#d22128" d="M6844.6 1765.2v87.1h-670.2V854.8H6832v87.1h-560.6v359.7h489v82.9h-489v380.8H6844.6z"/><path fill="#6d6e71" d="M1667.6 2063.6c11.8 3.5 22.2 8.3 31 14.2l-10.3 22.6c-9-6-18.6-10.4-28.9-13.4-10.2-2.9-20-4.4-29.2-4.4-13.6.0-24.5 2.4-32.6 7.3s-12.2 11.8-12.2 20.7c0 7.6 2.3 14 6.8 19s10.2 8.9 17 11.7c6.8 2.8 16.1 6 28 9.6 14.4 4.6 26 8.9 34.7 12.9 8.8 4 16.3 9.9 22.5 17.8 6.2 7.8 9.3 18.2 9.3 31 0 11.7-3.2 21.8-9.5 30.6-6.3 8.7-15.3 15.5-26.8 20.3-11.6 4.8-24.9 7.2-40 7.2s-29.7-2.9-43.9-8.7c-14.2-5.8-26.4-13.6-36.6-23.4l10.7-21.6c9.6 9.4 20.7 16.7 33.3 21.9 12.6 5.2 24.8 7.8 36.8 7.8 15.3.0 27.3-3 36.1-8.9s13.2-13.9 13.2-23.9c0-7.8-2.3-14.3-6.9-19.4-4.6-5.1-10.3-9-17.1-11.9-6.8-2.8-16.1-6-28-9.6-14.2-4.2-25.7-8.3-34.6-12.2-8.9-3.9-16.4-9.7-22.5-17.5-6.1-7.7-9.2-17.9-9.2-30.6.0-10.9 3-20.4 9-28.6s14.6-14.6 25.6-19.1c11.1-4.5 23.8-6.8 38.2-6.8C1643.8 2058.3 1655.7 2060.1 1667.6 2063.6z"/><path fill="#6d6e71" d="M1980.1 2072.8c16.8 9.4 30.2 22.3 40 38.4 9.8 16.2 14.8 33.9 14.8 53.3.0 19.5-4.9 37.4-14.8 53.6-9.8 16.3-23.2 29.1-40 38.6s-35.3 14.3-55.2 14.3c-20.3.0-38.8-4.7-55.7-14.3-16.8-9.5-30.2-22.4-40-38.6-9.8-16.3-14.8-34.1-14.8-53.6s4.9-37.3 14.8-53.5c9.8-16.2 23.2-29 40-38.3 16.8-9.4 35.4-14 55.7-14C1944.8 2058.6 1963.2 2063.3 1980.1 2072.8zM1881.9 2092.7c-13.1 7.4-23.6 17.5-31.4 30.1-7.8 12.6-11.8 26.5-11.8 41.7.0 15.3 3.9 29.3 11.8 42 7.8 12.7 18.3 22.8 31.4 30.2 13.1 7.4 27.4 11.1 42.9 11.1s29.7-3.7 42.7-11.1 23.3-17.4 31.1-30.2c7.7-12.7 11.6-26.7 11.6-42s-3.9-29.2-11.6-41.8c-7.7-12.6-18.1-22.6-31.1-30s-27.2-11.2-42.6-11.2C1909.4 2081.5 1895.1 2085.2 1881.9 2092.7z"/><path fill="#6d6e71" d="M2186.5 2082.4v74h98.4v23.2h-98.4v90.2h-24.1v-210.6h133.8v23.2H2186.5z"/><path fill="#6d6e71" d="M2491.6 2082.4v187.4h-24.1v-187.4h-68.4v-23.2h161.4v23.2H2491.6z"/><path fill="#6d6e71" d="M2871.8 2269.8l-56.8-177.4-57.6 177.4h-24.5l-70.5-210.6h25.9l57.9 182.7 57.1-182.4 24.1-.3 57.7 182.7 57.1-182.7h25l-70.6 210.6H2871.8z"/><path fill="#6d6e71" d="M3087.3 2216.6l-23.5 53.2h-25.6l94.4-210.6h25l94.1 210.6h-26.1l-23.5-53.2H3087.3zM3144.5 2086.6l-46.9 106.8h94.4l-47.5-106.8z"/><path fill="#6d6e71" d="M3461.1 2202.7c-6 .4-10.7.6-14.1.6h-56v66.5h-24v-210.6h80c26.2.0 46.6 6.2 61.2 18.5 14.5 12.3 21.8 29.8 21.8 52.3.0 17.2-4.1 31.7-12.2 43.3-8.1 11.6-19.8 20-35 25l49.2 71.5h-27.3L3461.1 2202.7zM3491.3 2167.6c10.3-8.4 15.5-20.8 15.5-37 0-15.9-5.2-27.9-15.5-36s-25.1-12.2-44.3-12.2h-56v97.8h56C3466.2 2180.2 3481 2176 3491.3 2167.6z"/><path fill="#6d6e71" d="M3688.3 2082.4v69.2h106.2v23.2h-106.2v72.1h122.8v22.9h-146.9v-210.6h142.9v23.2H3688.3z"/><path fill="#6d6e71" d="M4147 2082.4v74h98.4v23.2H4147v90.2h-24.1v-210.6h133.8v23.2H4147z"/><path fill="#6d6e71" d="M4523.3 2072.8c16.8 9.4 30.2 22.3 40 38.4 9.8 16.2 14.8 33.9 14.8 53.3.0 19.5-4.9 37.4-14.8 53.6-9.8 16.3-23.2 29.1-40 38.6s-35.3 14.3-55.2 14.3c-20.3.0-38.8-4.7-55.7-14.3-16.8-9.5-30.2-22.4-40-38.6-9.8-16.3-14.8-34.1-14.8-53.6s4.9-37.3 14.8-53.5c9.8-16.2 23.2-29 40-38.3 16.8-9.4 35.4-14 55.7-14C4488.1 2058.6 4506.5 2063.3 4523.3 2072.8zM4425.2 2092.7c-13.1 7.4-23.6 17.5-31.4 30.1-7.8 12.6-11.8 26.5-11.8 41.7.0 15.3 3.9 29.3 11.8 42 7.8 12.7 18.3 22.8 31.4 30.2 13.1 7.4 27.4 11.1 42.9 11.1s29.7-3.7 42.7-11.1 23.3-17.4 31.1-30.2c7.7-12.7 11.6-26.7 11.6-42s-3.9-29.2-11.6-41.8c-7.7-12.6-18.1-22.6-31.1-30s-27.2-11.2-42.6-11.2C4452.6 2081.5 4438.3 2085.2 4425.2 2092.7z"/><path fill="#6d6e71" d="M4854.7 2247.7c-15.7 15.5-37.3 23.3-64.8 23.3-27.7.0-49.4-7.8-65.1-23.3-15.7-15.5-23.6-37-23.6-64.6v-124h24.1v124c0 20.3 5.8 36.1 17.3 47.5 11.6 11.4 27.3 17.1 47.3 17.1 20.1.0 35.8-5.7 47.1-17 11.4-11.3 17-27.2 17-47.7v-124h24.1v124C4878.2 2210.7 4870.4 2232.2 4854.7 2247.7z"/><path fill="#6d6e71" d="M5169.5 2269.8l-126.3-169.1v169.1h-24.1v-210.6h25l126.3 169.3v-169.3h23.8v210.6H5169.5z"/><path fill="#6d6e71" d="M5478.4 2073.1c16.4 9.3 29.4 21.9 38.9 37.9 9.6 16 14.3 33.9 14.3 53.5s-4.8 37.6-14.3 53.6c-9.5 16.1-22.6 28.7-39.3 37.9-16.6 9.2-35.2 13.8-55.5 13.8h-84.3v-210.6h85.2C5443.7 2059.2 5462 2063.8 5478.4 2073.1zM5362.3 2246.9h61.4c15.5.0 29.6-3.5 42.3-10.6s22.8-16.9 30.2-29.5c7.4-12.5 11.1-26.5 11.1-42s-3.8-29.4-11.3-41.9-17.7-22.3-30.6-29.6c-12.8-7.2-27-10.9-42.6-10.9h-60.5v164.5z"/><path fill="#6d6e71" d="M5668.6 2216.6l-23.5 53.2h-25.6l94.4-210.6h25l94.1 210.6h-26l-23.5-53.2H5668.6zM5725.8 2086.6l-46.9 106.8h94.4l-47.5-106.8z"/><path fill="#6d6e71" d="M5991 2082.4v187.4h-24v-187.4h-68.4v-23.2H6060v23.2h-69z"/><path fill="#6d6e71" d="M6175.9 2269.8v-210.6h24.1v210.6H6175.9z"/><path fill="#6d6e71" d="M6493.7 2072.8c16.8 9.4 30.2 22.3 40 38.4 9.8 16.2 14.8 33.9 14.8 53.3.0 19.5-4.9 37.4-14.8 53.6-9.8 16.3-23.2 29.1-40 38.6s-35.3 14.3-55.2 14.3c-20.3.0-38.8-4.7-55.7-14.3-16.8-9.5-30.2-22.4-40-38.6-9.8-16.3-14.8-34.1-14.8-53.6s4.9-37.3 14.8-53.5c9.8-16.2 23.2-29 40-38.3 16.8-9.4 35.4-14 55.7-14C6458.5 2058.6 6476.9 2063.3 6493.7 2072.8zM6395.6 2092.7c-13.1 7.4-23.6 17.5-31.4 30.1-7.8 12.6-11.8 26.5-11.8 41.7.0 15.3 3.9 29.3 11.8 42 7.8 12.7 18.3 22.8 31.4 30.2 13.1 7.4 27.4 11.1 42.9 11.1s29.7-3.7 42.7-11.1 23.3-17.4 31.1-30.2c7.7-12.7 11.6-26.7 11.6-42s-3.9-29.2-11.6-41.8c-7.7-12.6-18.1-22.6-31.1-30s-27.2-11.2-42.6-11.2C6423 2081.5 6408.8 2085.2 6395.6 2092.7z"/><path fill="#6d6e71" d="M6826.5 2269.8l-126.3-169.1v169.1h-24.1v-210.6h25l126.3 169.3v-169.3h23.8v210.6H6826.5z"/><linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="-4516.6152" y1="-2338.7222" x2="-4108.4111" y2="-1861.3982" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)"><stop offset="0" style="stop-color:#F69923"/><stop offset=".3123" style="stop-color:#F79A23"/><stop offset=".8383" style="stop-color:#E97826"/></linearGradient><path fill="url(#SVGID_1_)" d="M1230.1 13.7c-45.3 26.8-120.6 102.5-210.5 212.3l82.6 155.9c58-82.9 116.9-157.5 176.3-221.2 4.6-5.1 7-7.5 7-7.5-2.3 2.5-4.6 5-7 7.5-19.2 21.2-77.5 89.2-165.5 224.4 84.7-4.2 214.9-21.6 321.1-39.7 31.6-177-31-258-31-258S1323.4-41.4 1230.1 13.7z"/><path fill="none" d="M1090.2 903.1c.6-.1 1.2-.2 1.8-.3l-11.9 1.3c-.7.3-1.4.7-2.1 1C1082.1 904.4 1086.2 903.7 1090.2 903.1z"/><path fill="none" d="M1005.9 1182.3c-6.7 1.5-13.7 2.7-20.7 3.7C992.3 1185 999.2 1183.8 1005.9 1182.3z"/><path fill="none" d="M432.9 1808.8c.9-2.3 1.8-4.7 2.6-7 18.2-48 36.2-94.7 54-140.1 20-51 39.8-100.4 59.3-148.3 20.6-50.4 40.9-99.2 60.9-146.3 21-49.4 41.7-97 62-142.8 16.5-37.3 32.8-73.4 48.9-108.3 5.4-11.7 10.7-23.2 16-34.6 10.5-22.7 21-44.8 31.3-66.5 9.5-20 19-39.6 28.3-58.8 3.1-6.4 6.2-12.8 9.3-19.1.5-1 1-2 1.5-3.1l-10.2 1.1-8-15.9c-.8 1.6-1.6 3.1-2.4 4.6-14.5 28.8-28.9 57.9-43.1 87.2-8.2 16.9-16.4 34-24.6 51-22.6 47.4-44.8 95.2-66.6 143.3-22.1 48.6-43.7 97.5-64.9 146.5-20.8 48.1-41.3 96.2-61.2 144.2-20 48-39.5 95.7-58.5 143.2-19.9 49.5-39.2 98.7-58 147.2-4.2 10.9-8.5 21.9-12.7 32.8-15 39.2-29.7 77.8-44 116l12.7 25.1 11.4-1.2c.4-1.1.8-2.3 1.3-3.4C396.7 1905.4 414.9 1856.4 432.9 1808.8z"/><path fill="none" d="M980 1186.8c.1.0.1.0.1-.1C980.1 1186.8 980.1 1186.8 980 1186.8z"/><path fill="#be202e" d="M952.6 1323c-10.6 1.9-21.4 3.8-32.5 5.7-.1.0-.1.1-.2.1 5.6-.8 11.2-1.7 16.6-2.6C942 1325.2 947.3 1324.1 952.6 1323z"/><path opacity=".35" fill="#be202e" d="M952.6 1323c-10.6 1.9-21.4 3.8-32.5 5.7-.1.0-.1.1-.2.1 5.6-.8 11.2-1.7 16.6-2.6C942 1325.2 947.3 1324.1 952.6 1323z"/><path fill="#be202e" d="M980.3 1186.7C980.2 1186.7 980.2 1186.7 980.3 1186.7c-.1.1-.2.1-.2.1 1.8-.2 3.5-.5 5.2-.8 7-1 13.9-2.2 20.7-3.7C997.5 1183.8 989 1185.2 980.3 1186.7z"/><path opacity=".35" fill="#be202e" d="M980.3 1186.7C980.2 1186.7 980.2 1186.7 980.3 1186.7c-.1.1-.2.1-.2.1 1.8-.2 3.5-.5 5.2-.8 7-1 13.9-2.2 20.7-3.7C997.5 1183.8 989 1185.2 980.3 1186.7z"/><linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="-7537.7339" y1="-2391.4075" x2="-4625.4141" y2="-2391.4075" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)"><stop offset=".3233" style="stop-color:#9E2064"/><stop offset=".6302" style="stop-color:#C92037"/><stop offset=".7514" style="stop-color:#CD2335"/><stop offset="1" style="stop-color:#E97826"/></linearGradient><path fill="url(#SVGID_2_)" d="M858.6 784.7c25.1-46.9 50.5-92.8 76.2-137.4 26.7-46.4 53.7-91.3 80.9-134.7 1.6-2.6 3.2-5.2 4.8-7.7 27-42.7 54.2-83.7 81.6-122.9L1019.5 226c-6.2 7.6-12.5 15.3-18.8 23.2-23.8 29.7-48.6 61.6-73.9 95.5-28.6 38.2-58 78.9-87.8 121.7-27.6 39.5-55.5 80.9-83.5 123.7-23.8 36.5-47.7 74-71.4 112.5-.9 1.4-1.8 2.9-2.6 4.3L789 919.2c22.8-45.6 46.1-90.5 69.6-134.5z"/><linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="-7186.1777" y1="-2099.3059" x2="-5450.7183" y2="-2099.3059" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)"><stop offset="0" style="stop-color:#282662"/><stop offset=".0954839" style="stop-color:#662E8D"/><stop offset=".7882" style="stop-color:#9F2064"/><stop offset=".9487" style="stop-color:#CD2032"/></linearGradient><path fill="url(#SVGID_3_)" d="M369 1981c-14.2 39.1-28.5 78.9-42.9 119.6-.2.6-.4 1.2-.6 1.8-2 5.7-4.1 11.5-6.1 17.2-9.7 27.4-18 52.1-37.3 108.2 31.7 14.5 57.1 52.5 81.1 95.6-2.6-44.7-21-86.6-56.2-119.1 156.1 7 290.6-32.4 360.1-146.6 6.2-10.2 11.9-20.9 17-32.2-31.6 40.1-70.8 57.1-144.5 53-.2.1-.3.1-.5.2.2-.1.3-.1.5-.2 108.6-48.6 163.1-95.3 211.2-172.6 11.4-18.3 22.5-38.4 33.8-60.6-94.9 97.5-205 125.3-320.9 104.2l-86.9 9.5C374.4 1966.3 371.7 1973.6 369 1981z"/><linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="-7374.1626" y1="-2418.5454" x2="-4461.8428" y2="-2418.5454" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)"><stop offset=".3233" style="stop-color:#9E2064"/><stop offset=".6302" style="stop-color:#C92037"/><stop offset=".7514" style="stop-color:#CD2335"/><stop offset="1" style="stop-color:#E97826"/></linearGradient><path fill="url(#SVGID_4_)" d="M409.6 1786.3c18.8-48.5 38.1-97.7 58-147.2 19-47.4 38.5-95.2 58.5-143.2s40.4-96.1 61.2-144.2c21.2-49 42.9-97.8 64.9-146.5 21.8-48.1 44-95.9 66.6-143.3 8.1-17.1 16.3-34.1 24.6-51 14.2-29.3 28.6-58.4 43.1-87.2.8-1.6 1.6-3.1 2.4-4.6L681.4 706.8c-1.8 2.9-3.5 5.8-5.3 8.6-25.1 40.9-50 82.7-74.4 125.4-24.7 43.1-49 87.1-72.7 131.7-20 37.6-39.6 75.6-58.6 113.9-3.8 7.8-7.6 15.5-11.3 23.2-23.4 48.2-44.6 94.8-63.7 139.5-21.7 50.7-40.7 99.2-57.5 145.1-11 30.2-21 59.4-30.1 87.4-7.5 24-14.7 47.9-21.5 71.8-16 56.3-29.9 112.4-41.2 168.3L353 1935.1c14.3-38.1 28.9-76.8 44-116C401.1 1808.2 405.4 1797.3 409.6 1786.3z"/><linearGradient id="SVGID_5_" gradientUnits="userSpaceOnUse" x1="-7161.7642" y1="-2379.1431" x2="-5631.2524" y2="-2379.1431" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)"><stop offset="0" style="stop-color:#282662"/><stop offset=".0954839" style="stop-color:#662E8D"/><stop offset=".7882" style="stop-color:#9F2064"/><stop offset=".9487" style="stop-color:#CD2032"/></linearGradient><path fill="url(#SVGID_5_)" d="M243.5 1729.4c-13.6 68.2-23.2 136.2-28 203.8-.2 2.4-.4 4.7-.5 7.1-33.7-54-124-106.8-123.8-106.2 64.6 93.7 113.7 186.7 120.9 278-34.6 7.1-82-3.2-136.8-23.3 57.1 52.5 1e2 67 116.7 70.9-52.5 3.3-107.1 39.3-162.1 80.8 80.5-32.8 145.5-45.8 192.1-35.3C148.1 2414.2 74.1 2645 0 2890c22.7-6.7 36.2-21.9 43.9-42.6 13.2-44.4 100.8-335.6 238-718.2 3.9-10.9 7.8-21.8 11.8-32.9 1.1-3 2.2-6.1 3.3-9.2 14.5-40.1 29.5-81.1 45.1-122.9 3.5-9.5 7.1-19 10.7-28.6.1-.2.1-.4.2-.6l-107.9-213.2C244.6 1724.4 244 1726.9 243.5 1729.4z"/><linearGradient id="SVGID_6_" gradientUnits="userSpaceOnUse" x1="-7374.1626" y1="-2117.1309" x2="-4461.8428" y2="-2117.1309" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)"><stop offset=".3233" style="stop-color:#9E2064"/><stop offset=".6302" style="stop-color:#C92037"/><stop offset=".7514" style="stop-color:#CD2335"/><stop offset="1" style="stop-color:#E97826"/></linearGradient><path fill="url(#SVGID_6_)" d="M805.6 937c-3.1 6.3-6.2 12.7-9.3 19.1-9.3 19.2-18.8 38.8-28.3 58.8-10.3 21.7-20.7 43.9-31.3 66.5-5.3 11.4-10.6 22.9-16 34.6-16.1 35-32.4 71.1-48.9 108.3-20.3 45.8-41 93.4-62 142.8-20 47.1-40.3 95.9-60.9 146.3-19.5 47.9-39.3 97.3-59.3 148.3-17.8 45.4-35.9 92.1-54 140.1-.9 2.3-1.8 4.7-2.6 7-18 47.6-36.2 96.6-54.6 146.8-.4 1.1-.8 2.3-1.3 3.4l86.9-9.5c-1.7-.3-3.5-.5-5.2-.9 103.9-13 242.1-90.6 331.4-186.5 41.1-44.2 78.5-96.3 113-157.3 25.7-45.4 49.8-95.8 72.8-151.5 20.1-48.7 39.4-101.4 58-158.6-23.9 12.6-51.2 21.8-81.4 28.2-5.3 1.1-10.7 2.2-16.1 3.1-5.5 1-11 1.8-16.6 2.6.1.0.1-.1.2-.1 96.9-37.3 158-109.2 202.4-197.4-25.5 17.4-66.9 40.1-116.6 51.1-6.7 1.5-13.7 2.7-20.7 3.7-1.7.3-3.5.6-5.2.8.1.0.1.0.1-.1h.1c33.6-14.1 62-29.8 86.6-48.4 5.3-4 10.4-8.1 15.3-12.3 7.5-6.5 14.7-13.3 21.5-20.5 4.4-4.6 8.6-9.3 12.7-14.2 9.6-11.5 18.7-23.9 27.1-37.3 2.6-4.1 5.1-8.3 7.6-12.6 3.2-6.2 6.3-12.3 9.3-18.3 13.5-27.2 24.4-51.5 33-72.8 4.3-10.6 8.1-20.5 11.3-29.7 1.3-3.7 2.5-7.2 3.7-10.6 3.4-10.2 6.2-19.3 8.4-27.3 3.3-12 5.3-21.5 6.4-28.4-3.3 2.6-7.1 5.2-11.3 7.7-29.3 17.5-79.5 33.4-119.9 40.8l79.8-8.8-79.8 8.8c-.6.1-1.2.2-1.8.3-4 .7-8.1 1.3-12.2 2 .7-.3 1.4-.7 2.1-1l-273 29.9C806.6 935 806.1 936 805.6 937z"/><linearGradient id="SVGID_7_" gradientUnits="userSpaceOnUse" x1="-7554.8232" y1="-2132.0981" x2="-4642.5034" y2="-2132.0981" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)"><stop offset=".3233" style="stop-color:#9E2064"/><stop offset=".6302" style="stop-color:#C92037"/><stop offset=".7514" style="stop-color:#CD2335"/><stop offset="1" style="stop-color:#E97826"/></linearGradient><path fill="url(#SVGID_7_)" d="M1112.9 385.1c-24.3 37.3-50.8 79.6-79.4 127.5-1.5 2.5-3 5.1-4.5 7.6-24.6 41.5-50.8 87.1-78.3 137-23.8 43.1-48.5 89.3-74.3 139C854 839.5 830.8 885.4 807 934l273-29.9c79.5-36.6 115.1-69.7 149.6-117.6 9.2-13.2 18.4-27 27.5-41.3 28-43.8 55.6-92 80.1-139.9 23.7-46.3 44.7-92.2 60.7-133.5 10.2-26.3 18.4-50.8 24.1-72.3 5-19 8.9-36.9 11.9-54.1C1327.9 363.5 1197.6 380.9 1112.9 385.1z"/><path fill="#be202e" d="M936.5 1326.1c-5.5 1-11 1.8-16.6 2.6C925.5 1328 931 1327.1 936.5 1326.1z"/><path opacity=".35" fill="#be202e" d="M936.5 1326.1c-5.5 1-11 1.8-16.6 2.6C925.5 1328 931 1327.1 936.5 1326.1z"/><linearGradient id="SVGID_8_" gradientUnits="userSpaceOnUse" x1="-7374.1626" y1="-2027.484" x2="-4461.8433" y2="-2027.484" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)"><stop offset=".3233" style="stop-color:#9E2064"/><stop offset=".6302" style="stop-color:#C92037"/><stop offset=".7514" style="stop-color:#CD2335"/><stop offset="1" style="stop-color:#E97826"/></linearGradient><path fill="url(#SVGID_8_)" d="M936.5 1326.1c-5.5 1-11 1.8-16.6 2.6C925.5 1328 931 1327.1 936.5 1326.1z"/><path fill="#be202e" d="M980 1186.8c1.8-.2 3.5-.5 5.2-.8C983.5 1186.3 981.8 1186.6 980 1186.8z"/><path opacity=".35" fill="#be202e" d="M980 1186.8c1.8-.2 3.5-.5 5.2-.8C983.5 1186.3 981.8 1186.6 980 1186.8z"/><linearGradient id="SVGID_9_" gradientUnits="userSpaceOnUse" x1="-7374.1626" y1="-2037.7417" x2="-4461.8433" y2="-2037.7417" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)"><stop offset=".3233" style="stop-color:#9E2064"/><stop offset=".6302" style="stop-color:#C92037"/><stop offset=".7514" style="stop-color:#CD2335"/><stop offset="1" style="stop-color:#E97826"/></linearGradient><path fill="url(#SVGID_9_)" d="M980 1186.8c1.8-.2 3.5-.5 5.2-.8C983.5 1186.3 981.8 1186.6 980 1186.8z"/><path fill="#be202e" d="M980.2 1186.7z"/><path opacity=".35" fill="#be202e" d="M980.2 1186.7z"/><linearGradient id="SVGID_10_" gradientUnits="userSpaceOnUse" x1="-5738.0635" y1="-2039.799" x2="-5094.3457" y2="-2039.799" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)"><stop offset=".3233" style="stop-color:#9E2064"/><stop offset=".6302" style="stop-color:#C92037"/><stop offset=".7514" style="stop-color:#CD2335"/><stop offset="1" style="stop-color:#E97826"/></linearGradient><path fill="url(#SVGID_10_)" d="M980.2 1186.7z"/></svg></div></a><ul class=footer-link><li><a class=white href=http://www.apache.org>Foundation</a></li><li><a class=white href=http://www.apache.org/licenses/>License</a></li><li><a class=white href=https://www.apache.org/security/>Security</a></li><li><a class=white href=http://www.apache.org/events/current-event>Events</a></li><li><a class=white href=http://www.apache.org/foundation/sponsorship.html>Sponsorship</a></li><li><a class=white href=http://www.apache.org/foundation/thanks.html>Thanks</a></li><li><a class=white href=https://privacy.apache.org/policies/privacy-policy-public.html target=_blank>Privacy</a></li></ul></div></div><div class="col-6 text-white text-center container-center"><p>Copyright &copy; 2024 The Apache Software Foundation, Licensed under the <a class=white href=https://www.apache.org/licenses/LICENSE-2.0>Apache License Version 2.0</a></p><p>Apache and the Apache feather logo are trademarks of The Apache Software Foundation.</p></div><div class=col-1></div></div></div></footer></div><script src=https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js integrity=sha384-9/reFTGAW83EW2RDu2S0VKaIzap3H66lZH81PoYlFhbGU+6BZp6G7niu735Sk7lN crossorigin=anonymous></script>
<script src=https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/js/bootstrap.min.js integrity="sha512-UR25UO94eTnCVwjbXozyeVd6ZqpaAE9naiEUBK/A+QDbfSTQFhPGj5lOR6d8tsgbBk84Ggb5A3EkjsOgPRPcKA==" crossorigin=anonymous></script>
<script src=/js/tabpane-persist.js></script>
<script src=/js/main.min.aa9f4c5dae6a98b2c46277f4c56f1673a2b000d1756ce4ffae93784cab25e6d5.js integrity="sha256-qp9MXa5qmLLEYnf0xW8Wc6KwANF1bOT/rpN4TKsl5tU=" crossorigin=anonymous></script>
<script src=/js/prism.js></script></body></html>