You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@graphar.apache.org by gi...@apache.org on 2025/10/14 07:40:01 UTC

(incubator-graphar-website) branch asf-site updated: deploy: 82806c5f19bb926892acd50dd853c0007031cc91

This is an automated email from the ASF dual-hosted git repository.

github-bot pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/incubator-graphar-website.git


The following commit(s) were added to refs/heads/asf-site by this push:
     new 3366e0b  deploy: 82806c5f19bb926892acd50dd853c0007031cc91
3366e0b is described below

commit 3366e0bd590d352adfc823c6a67f37aa45c60bb2
Author: yangxk1 <ya...@users.noreply.github.com>
AuthorDate: Tue Oct 14 07:39:56 2025 +0000

    deploy: 82806c5f19bb926892acd50dd853c0007031cc91
---
 404.html                                           |    2 +-
 assets/js/e9c63600.2a89b78c.js                     |    1 +
 assets/js/e9c63600.c3b835c3.js                     |    1 -
 ...e~main.a1bcbcd5.js => runtime~main.d09f585f.js} |    2 +-
 blog/archive/index.html                            |    2 +-
 blog/demo-blog-post/index.html                     |    2 +-
 blog/graphs-openlakehouse/index.html               |    2 +-
 blog/index.html                                    |    2 +-
 blog/tags/graphar/index.html                       |    2 +-
 blog/tags/graphframes/index.html                   |    2 +-
 blog/tags/index.html                               |    2 +-
 blog/tags/kuzu/index.html                          |    2 +-
 blog/tags/lakehouse/index.html                     |    2 +-
 community/category/committers/index.html           |    2 +-
 community/category/reference/index.html            |    2 +-
 .../committers/nominating-a-committer/index.html   |    2 +-
 .../reference/generate_release_note/index.html     |    2 +-
 community/committers/release/index.html            |    2 +-
 community/committers/verify/index.html             |    2 +-
 community/development/index.html                   |    2 +-
 community/how-to-become-a-committer/index.html     |    2 +-
 community/index.html                               |    2 +-
 docs/category/c-library/index.html                 |    2 +-
 docs/category/examples/index.html                  |    2 +-
 docs/category/libraries/index.html                 |    2 +-
 docs/category/specification/index.html             |    2 +-
 docs/cpp/classgraphar_1_1_adjacent_list.html       |    4 +-
 docs/cpp/classgraphar_1_1_edge_info-members.html   |    2 +
 docs/cpp/classgraphar_1_1_edge_info.html           |  130 +-
 docs/cpp/classgraphar_1_1_edge_info_1_1_impl.html  |    2 +-
 docs/cpp/classgraphar_1_1_graph_info-members.html  |    2 +
 docs/cpp/classgraphar_1_1_graph_info.html          |  104 +-
 docs/cpp/classgraphar_1_1_graph_info_1_1_impl.html |    2 +-
 docs/cpp/classgraphar_1_1_property_group.html      |    6 +-
 docs/cpp/classgraphar_1_1_vertex_info-members.html |    9 +-
 docs/cpp/classgraphar_1_1_vertex_info.html         |   80 +-
 .../cpp/classgraphar_1_1_vertex_info_1_1_impl.html |    2 +-
 docs/cpp/functions_func_r.html                     |   13 +
 docs/cpp/functions_r.html                          |   13 +
 docs/cpp/graph__info_8cc_source.html               | 2889 ++++++++++----------
 docs/cpp/graph__info_8h_source.html                |  616 +++--
 docs/cpp/graph__reader_8h_source.html              |    2 +-
 docs/cpp/search/all_10.js                          |   30 +-
 docs/cpp/search/all_11.js                          |   10 +-
 docs/cpp/search/all_12.js                          |    8 +-
 docs/cpp/search/all_13.js                          |   30 +-
 docs/cpp/search/all_14.js                          |   30 +-
 docs/cpp/search/all_15.js                          |    4 +-
 docs/cpp/search/all_16.js                          |    2 +-
 docs/cpp/search/all_f.js                           |    6 +-
 docs/cpp/search/classes_0.js                       |   18 +-
 docs/cpp/search/classes_1.js                       |    4 +-
 docs/cpp/search/classes_2.js                       |    4 +-
 docs/cpp/search/classes_3.js                       |   42 +-
 docs/cpp/search/classes_4.js                       |    4 +-
 docs/cpp/search/classes_5.js                       |    4 +-
 docs/cpp/search/classes_6.js                       |    8 +-
 docs/cpp/search/classes_7.js                       |    6 +-
 docs/cpp/search/classes_8.js                       |    6 +-
 docs/cpp/search/classes_9.js                       |    2 +-
 docs/cpp/search/classes_a.js                       |    4 +-
 docs/cpp/search/classes_b.js                       |    4 +-
 docs/cpp/search/classes_c.js                       |   22 +-
 docs/cpp/search/classes_d.js                       |    2 +-
 docs/cpp/search/classes_e.js                       |    2 +-
 docs/cpp/search/functions_0.js                     |   26 +-
 docs/cpp/search/functions_1.js                     |    2 +-
 docs/cpp/search/functions_10.js                    |   30 +-
 docs/cpp/search/functions_11.js                    |    6 +-
 docs/cpp/search/functions_12.js                    |    8 +-
 docs/cpp/search/functions_13.js                    |   26 +-
 docs/cpp/search/functions_14.js                    |   28 +-
 docs/cpp/search/functions_15.js                    |    2 +-
 docs/cpp/search/functions_16.js                    |    2 +-
 docs/cpp/search/functions_2.js                     |   12 +-
 docs/cpp/search/functions_3.js                     |    4 +-
 docs/cpp/search/functions_4.js                     |   20 +-
 docs/cpp/search/functions_5.js                     |   16 +-
 docs/cpp/search/functions_6.js                     |  102 +-
 docs/cpp/search/functions_7.js                     |    8 +-
 docs/cpp/search/functions_8.js                     |   34 +-
 docs/cpp/search/functions_9.js                     |    2 +-
 docs/cpp/search/functions_a.js                     |    6 +-
 docs/cpp/search/functions_b.js                     |    8 +-
 docs/cpp/search/functions_c.js                     |    6 +-
 docs/cpp/search/functions_d.js                     |   22 +-
 docs/cpp/search/functions_e.js                     |    8 +-
 docs/cpp/search/functions_f.js                     |    8 +-
 docs/cpp/search/pages_0.js                         |    2 +-
 docs/index.html                                    |    2 +-
 docs/java-ffi/member-search-index.zip              |  Bin 5394 -> 5394 bytes
 docs/java-ffi/package-search-index.zip             |  Bin 310 -> 310 bytes
 docs/java-ffi/type-search-index.zip                |  Bin 825 -> 825 bytes
 docs/java-info/member-search-index.zip             |  Bin 3142 -> 3142 bytes
 docs/java-info/package-search-index.zip            |  Bin 281 -> 281 bytes
 docs/java-info/type-search-index.zip               |  Bin 484 -> 484 bytes
 docs/libraries/cpp/examples/bgl/index.html         |    2 +-
 docs/libraries/cpp/examples/graphscope/index.html  |    2 +-
 docs/libraries/cpp/examples/out-of-core/index.html |    2 +-
 .../cpp/examples/snap-to-graphar/index.html        |    2 +-
 docs/libraries/cpp/getting-started/index.html      |    2 +-
 docs/libraries/java/index.html                     |    2 +-
 .../libraries/java/info/getting-started/index.html |    2 +-
 .../java/java-FFI/getting-started/index.html       |    2 +-
 .../java-FFI/how_to_develop_java_ffi/index.html    |    2 +-
 docs/libraries/pyspark/how-to/index.html           |    2 +-
 docs/libraries/pyspark/index.html                  |    2 +-
 docs/libraries/spark/examples/index.html           |    2 +-
 docs/libraries/spark/index.html                    |    2 +-
 docs/overview/concepts/index.html                  |    2 +-
 docs/overview/index.html                           |    2 +-
 docs/overview/motivation/index.html                |    2 +-
 docs/specification/format/index.html               |    2 +-
 .../specification/implementation-status/index.html |   10 +-
 download/index.html                                |    2 +-
 index.html                                         |    2 +-
 116 files changed, 2476 insertions(+), 2140 deletions(-)

diff --git a/404.html b/404.html
index 5fb6a1e..ee27d0b 100644
--- a/404.html
+++ b/404.html
@@ -5,7 +5,7 @@
 <meta name="generator" content="Docusaurus v3.1.1">
 <title data-rh="true">Page Not Found | Apache GraphAr</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" property="og:url" content="https://graphar.apache.org/404.ht [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache GraphAr Atom Feed"><link rel="stylesheet" href="/assets/css/styles.dfe66a1a.css">
-<script src="/assets/js/runtime~main.a1bcbcd5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.d09f585f.js" defer="defer"></script>
 <script src="/assets/js/main.fdbbf013.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
diff --git a/assets/js/e9c63600.2a89b78c.js b/assets/js/e9c63600.2a89b78c.js
new file mode 100644
index 0000000..0af60e5
--- /dev/null
+++ b/assets/js/e9c63600.2a89b78c.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkapache_website_template=self.webpackChunkapache_website_template||[]).push([[8268],{3844:(d,e,t)=>{t.r(e),t.d(e,{assets:()=>l,contentTitle:()=>n,default:()=>j,frontMatter:()=>i,metadata:()=>h,toc:()=>c});var r=t(1527),s=t(395);const i={title:"Implementation Status",sidebar_position:2},n=void 0,h={id:"specification/implementation-status",title:"Implementation Status",description:"The following tables summarize the features available in the various official G [...]
\ No newline at end of file
diff --git a/assets/js/e9c63600.c3b835c3.js b/assets/js/e9c63600.c3b835c3.js
deleted file mode 100644
index 1019287..0000000
--- a/assets/js/e9c63600.c3b835c3.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkapache_website_template=self.webpackChunkapache_website_template||[]).push([[8268],{3844:(d,e,t)=>{t.r(e),t.d(e,{assets:()=>l,contentTitle:()=>n,default:()=>j,frontMatter:()=>i,metadata:()=>h,toc:()=>c});var s=t(1527),r=t(395);const i={title:"Implementation Status",sidebar_position:2},n=void 0,h={id:"specification/implementation-status",title:"Implementation Status",description:"The following tables summarize the features available in the various official G [...]
\ No newline at end of file
diff --git a/assets/js/runtime~main.a1bcbcd5.js b/assets/js/runtime~main.d09f585f.js
similarity index 98%
rename from assets/js/runtime~main.a1bcbcd5.js
rename to assets/js/runtime~main.d09f585f.js
index 90c24e8..6e77254 100644
--- a/assets/js/runtime~main.a1bcbcd5.js
+++ b/assets/js/runtime~main.d09f585f.js
@@ -1 +1 @@
-(()=>{"use strict";var e,a,c,d,f,b={},t={};function r(e){var a=t[e];if(void 0!==a)return a.exports;var c=t[e]={exports:{}};return b[e].call(c.exports,c,c.exports,r),c.exports}r.m=b,e=[],r.O=(a,c,d,f)=>{if(!c){var b=1/0;for(i=0;i<e.length;i++){c=e[i][0],d=e[i][1],f=e[i][2];for(var t=!0,o=0;o<c.length;o++)(!1&f||b>=f)&&Object.keys(r.O).every((e=>r.O[e](c[o])))?c.splice(o--,1):(t=!1,f<b&&(b=f));if(t){e.splice(i--,1);var n=d();void 0!==n&&(a=n)}}return a}f=f||0;for(var i=e.length;i>0&&e[i-1] [...]
\ No newline at end of file
+(()=>{"use strict";var e,a,c,d,f,b={},t={};function r(e){var a=t[e];if(void 0!==a)return a.exports;var c=t[e]={exports:{}};return b[e].call(c.exports,c,c.exports,r),c.exports}r.m=b,e=[],r.O=(a,c,d,f)=>{if(!c){var b=1/0;for(i=0;i<e.length;i++){c=e[i][0],d=e[i][1],f=e[i][2];for(var t=!0,o=0;o<c.length;o++)(!1&f||b>=f)&&Object.keys(r.O).every((e=>r.O[e](c[o])))?c.splice(o--,1):(t=!1,f<b&&(b=f));if(t){e.splice(i--,1);var n=d();void 0!==n&&(a=n)}}return a}f=f||0;for(var i=e.length;i>0&&e[i-1] [...]
\ No newline at end of file
diff --git a/blog/archive/index.html b/blog/archive/index.html
index d3bfd45..61f5577 100644
--- a/blog/archive/index.html
+++ b/blog/archive/index.html
@@ -5,7 +5,7 @@
 <meta name="generator" content="Docusaurus v3.1.1">
 <title data-rh="true">Archive | Apache GraphAr</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" property="og:url" content="https://graphar.apache.org/blog/archive" [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache GraphAr Atom Feed"><link rel="stylesheet" href="/assets/css/styles.dfe66a1a.css">
-<script src="/assets/js/runtime~main.a1bcbcd5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.d09f585f.js" defer="defer"></script>
 <script src="/assets/js/main.fdbbf013.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
diff --git a/blog/demo-blog-post/index.html b/blog/demo-blog-post/index.html
index abb180a..35473e0 100644
--- a/blog/demo-blog-post/index.html
+++ b/blog/demo-blog-post/index.html
@@ -5,7 +5,7 @@
 <meta name="generator" content="Docusaurus v3.1.1">
 <title data-rh="true">Welcome to GraphAr | Apache GraphAr</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" property="og:url" content="https://graphar.apache.org/bl [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache GraphAr Atom Feed"><link rel="stylesheet" href="/assets/css/styles.dfe66a1a.css">
-<script src="/assets/js/runtime~main.a1bcbcd5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.d09f585f.js" defer="defer"></script>
 <script src="/assets/js/main.fdbbf013.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
diff --git a/blog/graphs-openlakehouse/index.html b/blog/graphs-openlakehouse/index.html
index 5f008a6..24b74bc 100644
--- a/blog/graphs-openlakehouse/index.html
+++ b/blog/graphs-openlakehouse/index.html
@@ -5,7 +5,7 @@
 <meta name="generator" content="Docusaurus v3.1.1">
 <title data-rh="true">Dreaming of Graphs in the Open Lakehouse | Apache GraphAr</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://graphar.apache.org/blog/graphs-openlakehouse"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docusauru [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache GraphAr Atom Feed"><link rel="stylesheet" href="/assets/css/styles.dfe66a1a.css">
-<script src="/assets/js/runtime~main.a1bcbcd5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.d09f585f.js" defer="defer"></script>
 <script src="/assets/js/main.fdbbf013.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
diff --git a/blog/index.html b/blog/index.html
index 8ea81d8..b6bedc4 100644
--- a/blog/index.html
+++ b/blog/index.html
@@ -5,7 +5,7 @@
 <meta name="generator" content="Docusaurus v3.1.1">
 <title data-rh="true">Blog | Apache GraphAr</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" property="og:url" content="https://graphar.apache.org/blog"><meta data [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache GraphAr Atom Feed"><link rel="stylesheet" href="/assets/css/styles.dfe66a1a.css">
-<script src="/assets/js/runtime~main.a1bcbcd5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.d09f585f.js" defer="defer"></script>
 <script src="/assets/js/main.fdbbf013.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
diff --git a/blog/tags/graphar/index.html b/blog/tags/graphar/index.html
index 2ee0194..7890353 100644
--- a/blog/tags/graphar/index.html
+++ b/blog/tags/graphar/index.html
@@ -5,7 +5,7 @@
 <meta name="generator" content="Docusaurus v3.1.1">
 <title data-rh="true">2 posts tagged with &quot;graphar&quot; | Apache GraphAr</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" property="og:url" content="https:// [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache GraphAr Atom Feed"><link rel="stylesheet" href="/assets/css/styles.dfe66a1a.css">
-<script src="/assets/js/runtime~main.a1bcbcd5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.d09f585f.js" defer="defer"></script>
 <script src="/assets/js/main.fdbbf013.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
diff --git a/blog/tags/graphframes/index.html b/blog/tags/graphframes/index.html
index e694e06..eb82d6f 100644
--- a/blog/tags/graphframes/index.html
+++ b/blog/tags/graphframes/index.html
@@ -5,7 +5,7 @@
 <meta name="generator" content="Docusaurus v3.1.1">
 <title data-rh="true">One post tagged with &quot;graphframes&quot; | Apache GraphAr</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" property="og:url" content="htt [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache GraphAr Atom Feed"><link rel="stylesheet" href="/assets/css/styles.dfe66a1a.css">
-<script src="/assets/js/runtime~main.a1bcbcd5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.d09f585f.js" defer="defer"></script>
 <script src="/assets/js/main.fdbbf013.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
diff --git a/blog/tags/index.html b/blog/tags/index.html
index ed69cb2..9b18b35 100644
--- a/blog/tags/index.html
+++ b/blog/tags/index.html
@@ -5,7 +5,7 @@
 <meta name="generator" content="Docusaurus v3.1.1">
 <title data-rh="true">Tags | Apache GraphAr</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" property="og:url" content="https://graphar.apache.org/blog/tags"><meta [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache GraphAr Atom Feed"><link rel="stylesheet" href="/assets/css/styles.dfe66a1a.css">
-<script src="/assets/js/runtime~main.a1bcbcd5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.d09f585f.js" defer="defer"></script>
 <script src="/assets/js/main.fdbbf013.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
diff --git a/blog/tags/kuzu/index.html b/blog/tags/kuzu/index.html
index 3a304f4..98f8655 100644
--- a/blog/tags/kuzu/index.html
+++ b/blog/tags/kuzu/index.html
@@ -5,7 +5,7 @@
 <meta name="generator" content="Docusaurus v3.1.1">
 <title data-rh="true">One post tagged with &quot;kuzu&quot; | Apache GraphAr</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" property="og:url" content="https://gr [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache GraphAr Atom Feed"><link rel="stylesheet" href="/assets/css/styles.dfe66a1a.css">
-<script src="/assets/js/runtime~main.a1bcbcd5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.d09f585f.js" defer="defer"></script>
 <script src="/assets/js/main.fdbbf013.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
diff --git a/blog/tags/lakehouse/index.html b/blog/tags/lakehouse/index.html
index 414da70..6f9876d 100644
--- a/blog/tags/lakehouse/index.html
+++ b/blog/tags/lakehouse/index.html
@@ -5,7 +5,7 @@
 <meta name="generator" content="Docusaurus v3.1.1">
 <title data-rh="true">One post tagged with &quot;lakehouse&quot; | Apache GraphAr</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" property="og:url" content="https [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache GraphAr Atom Feed"><link rel="stylesheet" href="/assets/css/styles.dfe66a1a.css">
-<script src="/assets/js/runtime~main.a1bcbcd5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.d09f585f.js" defer="defer"></script>
 <script src="/assets/js/main.fdbbf013.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
diff --git a/community/category/committers/index.html b/community/category/committers/index.html
index 9f83a57..eae5b18 100644
--- a/community/category/committers/index.html
+++ b/community/category/committers/index.html
@@ -5,7 +5,7 @@
 <meta name="generator" content="Docusaurus v3.1.1">
 <title data-rh="true">Committers | Apache GraphAr</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" property="og:url" content="https://graphar.apache.org/community/ [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache GraphAr Atom Feed"><link rel="stylesheet" href="/assets/css/styles.dfe66a1a.css">
-<script src="/assets/js/runtime~main.a1bcbcd5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.d09f585f.js" defer="defer"></script>
 <script src="/assets/js/main.fdbbf013.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
diff --git a/community/category/reference/index.html b/community/category/reference/index.html
index 00641fb..5a38712 100644
--- a/community/category/reference/index.html
+++ b/community/category/reference/index.html
@@ -5,7 +5,7 @@
 <meta name="generator" content="Docusaurus v3.1.1">
 <title data-rh="true">Reference | Apache GraphAr</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" property="og:url" content="https://graphar.apache.org/community/c [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache GraphAr Atom Feed"><link rel="stylesheet" href="/assets/css/styles.dfe66a1a.css">
-<script src="/assets/js/runtime~main.a1bcbcd5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.d09f585f.js" defer="defer"></script>
 <script src="/assets/js/main.fdbbf013.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
diff --git a/community/committers/nominating-a-committer/index.html b/community/committers/nominating-a-committer/index.html
index e8aafd8..41c2369 100644
--- a/community/committers/nominating-a-committer/index.html
+++ b/community/committers/nominating-a-committer/index.html
@@ -5,7 +5,7 @@
 <meta name="generator" content="Docusaurus v3.1.1">
 <title data-rh="true">Nominating a Committer and PPMC member | Apache GraphAr</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" property="og:url" content="https://g [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache GraphAr Atom Feed"><link rel="stylesheet" href="/assets/css/styles.dfe66a1a.css">
-<script src="/assets/js/runtime~main.a1bcbcd5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.d09f585f.js" defer="defer"></script>
 <script src="/assets/js/main.fdbbf013.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
diff --git a/community/committers/reference/generate_release_note/index.html b/community/committers/reference/generate_release_note/index.html
index 990ce20..acf3b79 100644
--- a/community/committers/reference/generate_release_note/index.html
+++ b/community/committers/reference/generate_release_note/index.html
@@ -5,7 +5,7 @@
 <meta name="generator" content="Docusaurus v3.1.1">
 <title data-rh="true">Generate release note | Apache GraphAr</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" property="og:url" content="https://graphar.apache.org [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache GraphAr Atom Feed"><link rel="stylesheet" href="/assets/css/styles.dfe66a1a.css">
-<script src="/assets/js/runtime~main.a1bcbcd5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.d09f585f.js" defer="defer"></script>
 <script src="/assets/js/main.fdbbf013.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
diff --git a/community/committers/release/index.html b/community/committers/release/index.html
index 6c18e97..e09b4c3 100644
--- a/community/committers/release/index.html
+++ b/community/committers/release/index.html
@@ -5,7 +5,7 @@
 <meta name="generator" content="Docusaurus v3.1.1">
 <title data-rh="true">Create a release | Apache GraphAr</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" property="og:url" content="https://graphar.apache.org/comm [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache GraphAr Atom Feed"><link rel="stylesheet" href="/assets/css/styles.dfe66a1a.css">
-<script src="/assets/js/runtime~main.a1bcbcd5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.d09f585f.js" defer="defer"></script>
 <script src="/assets/js/main.fdbbf013.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
diff --git a/community/committers/verify/index.html b/community/committers/verify/index.html
index 073ef97..e13fe5b 100644
--- a/community/committers/verify/index.html
+++ b/community/committers/verify/index.html
@@ -5,7 +5,7 @@
 <meta name="generator" content="Docusaurus v3.1.1">
 <title data-rh="true">Verify a candidate version | Apache GraphAr</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" property="og:url" content="https://graphar.apach [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache GraphAr Atom Feed"><link rel="stylesheet" href="/assets/css/styles.dfe66a1a.css">
-<script src="/assets/js/runtime~main.a1bcbcd5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.d09f585f.js" defer="defer"></script>
 <script src="/assets/js/main.fdbbf013.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
diff --git a/community/development/index.html b/community/development/index.html
index 558ac21..9f51da7 100644
--- a/community/development/index.html
+++ b/community/development/index.html
@@ -5,7 +5,7 @@
 <meta name="generator" content="Docusaurus v3.1.1">
 <title data-rh="true">Development | Apache GraphAr</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" property="og:url" content="https://graphar.apache.org/community [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache GraphAr Atom Feed"><link rel="stylesheet" href="/assets/css/styles.dfe66a1a.css">
-<script src="/assets/js/runtime~main.a1bcbcd5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.d09f585f.js" defer="defer"></script>
 <script src="/assets/js/main.fdbbf013.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
diff --git a/community/how-to-become-a-committer/index.html b/community/how-to-become-a-committer/index.html
index e0b6873..e35425e 100644
--- a/community/how-to-become-a-committer/index.html
+++ b/community/how-to-become-a-committer/index.html
@@ -5,7 +5,7 @@
 <meta name="generator" content="Docusaurus v3.1.1">
 <title data-rh="true">How to Become a Committer or PPMC member | Apache GraphAr</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" property="og:url" content="https:/ [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache GraphAr Atom Feed"><link rel="stylesheet" href="/assets/css/styles.dfe66a1a.css">
-<script src="/assets/js/runtime~main.a1bcbcd5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.d09f585f.js" defer="defer"></script>
 <script src="/assets/js/main.fdbbf013.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
diff --git a/community/index.html b/community/index.html
index 6b16f9d..cfb964b 100644
--- a/community/index.html
+++ b/community/index.html
@@ -5,7 +5,7 @@
 <meta name="generator" content="Docusaurus v3.1.1">
 <title data-rh="true">Community | Apache GraphAr</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" property="og:url" content="https://graphar.apache.org/community/" [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache GraphAr Atom Feed"><link rel="stylesheet" href="/assets/css/styles.dfe66a1a.css">
-<script src="/assets/js/runtime~main.a1bcbcd5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.d09f585f.js" defer="defer"></script>
 <script src="/assets/js/main.fdbbf013.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
diff --git a/docs/category/c-library/index.html b/docs/category/c-library/index.html
index 24af0b8..f5ef29b 100644
--- a/docs/category/c-library/index.html
+++ b/docs/category/c-library/index.html
@@ -5,7 +5,7 @@
 <meta name="generator" content="Docusaurus v3.1.1">
 <title data-rh="true">C++ Library | Apache GraphAr</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" property="og:url" content="https://graphar.apache.org/docs/cate [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache GraphAr Atom Feed"><link rel="stylesheet" href="/assets/css/styles.dfe66a1a.css">
-<script src="/assets/js/runtime~main.a1bcbcd5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.d09f585f.js" defer="defer"></script>
 <script src="/assets/js/main.fdbbf013.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
diff --git a/docs/category/examples/index.html b/docs/category/examples/index.html
index 6182045..13bcbb7 100644
--- a/docs/category/examples/index.html
+++ b/docs/category/examples/index.html
@@ -5,7 +5,7 @@
 <meta name="generator" content="Docusaurus v3.1.1">
 <title data-rh="true">Examples | Apache GraphAr</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" property="og:url" content="https://graphar.apache.org/docs/categor [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache GraphAr Atom Feed"><link rel="stylesheet" href="/assets/css/styles.dfe66a1a.css">
-<script src="/assets/js/runtime~main.a1bcbcd5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.d09f585f.js" defer="defer"></script>
 <script src="/assets/js/main.fdbbf013.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
diff --git a/docs/category/libraries/index.html b/docs/category/libraries/index.html
index 2ad88a7..57cecda 100644
--- a/docs/category/libraries/index.html
+++ b/docs/category/libraries/index.html
@@ -5,7 +5,7 @@
 <meta name="generator" content="Docusaurus v3.1.1">
 <title data-rh="true">Libraries | Apache GraphAr</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" property="og:url" content="https://graphar.apache.org/docs/catego [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache GraphAr Atom Feed"><link rel="stylesheet" href="/assets/css/styles.dfe66a1a.css">
-<script src="/assets/js/runtime~main.a1bcbcd5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.d09f585f.js" defer="defer"></script>
 <script src="/assets/js/main.fdbbf013.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
diff --git a/docs/category/specification/index.html b/docs/category/specification/index.html
index 043d161..9999c12 100644
--- a/docs/category/specification/index.html
+++ b/docs/category/specification/index.html
@@ -5,7 +5,7 @@
 <meta name="generator" content="Docusaurus v3.1.1">
 <title data-rh="true">Specification | Apache GraphAr</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" property="og:url" content="https://graphar.apache.org/docs/ca [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache GraphAr Atom Feed"><link rel="stylesheet" href="/assets/css/styles.dfe66a1a.css">
-<script src="/assets/js/runtime~main.a1bcbcd5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.d09f585f.js" defer="defer"></script>
 <script src="/assets/js/main.fdbbf013.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
diff --git a/docs/cpp/classgraphar_1_1_adjacent_list.html b/docs/cpp/classgraphar_1_1_adjacent_list.html
index efd1a3d..b2941ad 100644
--- a/docs/cpp/classgraphar_1_1_adjacent_list.html
+++ b/docs/cpp/classgraphar_1_1_adjacent_list.html
@@ -146,7 +146,7 @@ Public Member Functions</h2></td></tr>
   </dd>
 </dl>
 
-<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00168">168</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00183">183</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
 
 </div>
 </div>
@@ -258,7 +258,7 @@ Public Member Functions</h2></td></tr>
 <p>Returns whether the adjacent list is validated.</p>
 <dl class="section return"><dt>Returns</dt><dd>True if the adjacent list is valid, False otherwise. </dd></dl>
 
-<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00176">176</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00191">191</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
 
 </div>
 </div>
diff --git a/docs/cpp/classgraphar_1_1_edge_info-members.html b/docs/cpp/classgraphar_1_1_edge_info-members.html
index 28cf708..1b79a66 100644
--- a/docs/cpp/classgraphar_1_1_edge_info-members.html
+++ b/docs/cpp/classgraphar_1_1_edge_info-members.html
@@ -107,6 +107,8 @@ $(function() {
   <tr><td class="entry"><a class="el" href="classgraphar_1_1_edge_info.html#a0ac67e1cf3b3fa79b6fcbc054869d0e5">Load</a>(std::shared_ptr&lt; Yaml &gt; yaml)</td><td class="entry"><a class="el" href="classgraphar_1_1_edge_info.html">graphar::EdgeInfo</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classgraphar_1_1_edge_info.html#a5840f6d36ba8e8dab30c1f89534a7edf">Load</a>(const std::string &amp;input)</td><td class="entry"><a class="el" href="classgraphar_1_1_edge_info.html">graphar::EdgeInfo</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
   <tr><td class="entry"><a class="el" href="classgraphar_1_1_edge_info.html#aee914f2c4adf773c048daed0e93dbe32">PropertyGroupNum</a>() const</td><td class="entry"><a class="el" href="classgraphar_1_1_edge_info.html">graphar::EdgeInfo</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classgraphar_1_1_edge_info.html#a7db36496a4cf0eb517b463de5caa125f">RemoveAdjacentList</a>(std::shared_ptr&lt; AdjacentList &gt; adj_list) const</td><td class="entry"><a class="el" href="classgraphar_1_1_edge_info.html">graphar::EdgeInfo</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="classgraphar_1_1_edge_info.html#a264853429b84060bbe36c671d5bc8963">RemovePropertyGroup</a>(std::shared_ptr&lt; PropertyGroup &gt; property_group) const</td><td class="entry"><a class="el" href="classgraphar_1_1_edge_info.html">graphar::EdgeInfo</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classgraphar_1_1_edge_info.html#a1e95f986bd8c5191f438705b195191e3">Save</a>(const std::string &amp;file_name) const</td><td class="entry"><a class="el" href="classgraphar_1_1_edge_info.html">graphar::EdgeInfo</a></td><td class="entry"></td></tr>
   <tr><td class="entry"><a class="el" href="classgraphar_1_1_edge_info.html#a9440bef05f4fa689662f26a9ef0117c1">version</a>() const</td><td class="entry"><a class="el" href="classgraphar_1_1_edge_info.html">graphar::EdgeInfo</a></td><td class="entry"></td></tr>
   <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~EdgeInfo</b>() (defined in <a class="el" href="classgraphar_1_1_edge_info.html">graphar::EdgeInfo</a>)</td><td class="entry"><a class="el" href="classgraphar_1_1_edge_info.html">graphar::EdgeInfo</a></td><td class="entry"></td></tr>
diff --git a/docs/cpp/classgraphar_1_1_edge_info.html b/docs/cpp/classgraphar_1_1_edge_info.html
index f9e688a..e5a443c 100644
--- a/docs/cpp/classgraphar_1_1_edge_info.html
+++ b/docs/cpp/classgraphar_1_1_edge_info.html
@@ -93,8 +93,14 @@ Public Member Functions</h2></td></tr>
 <tr class="separator:ab3c32f3112dcf08304676eeb95545b55"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a6e5b4fdc98d8399564396fb63955c62a"><td class="memItemLeft" align="right" valign="top">Result&lt; std::shared_ptr&lt; <a class="el" href="classgraphar_1_1_edge_info.html">EdgeInfo</a> &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgraphar_1_1_edge_info.html#a6e5b4fdc98d8399564396fb63955c62a">AddAdjacentList</a> (std::shared_ptr&lt; <a class="el" href="classgraphar_1_1_adjacent_list.html">AdjacentList</a> &gt; adj_list) const</td></tr>
 <tr class="separator:a6e5b4fdc98d8399564396fb63955c62a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7db36496a4cf0eb517b463de5caa125f"><td class="memItemLeft" align="right" valign="top">Result&lt; std::shared_ptr&lt; <a class="el" href="classgraphar_1_1_edge_info.html">EdgeInfo</a> &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgraphar_1_1_edge_info.html#a7db36496a4cf0eb517b463de5caa125f">RemoveAdjacentList</a> (std::shared_ptr&lt; <a class="el" href="classgraphar_1_1_adjacent_list.html">AdjacentList</a> &gt; adj_list) const</td></tr>
+<tr class="memdesc:a7db36496a4cf0eb517b463de5caa125f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Removes an adjacency list from the <a class="el" href="classgraphar_1_1_edge_info.html" title="EdgeInfo is a class to describe the edge information, including the source vertex type,...">EdgeInfo</a> instance and returns a new <a class="el" href="classgraphar_1_1_edge_info.html" title="EdgeInfo is a class to describe the edge information, including the source vertex type,...">Edg [...]
+<tr class="separator:a7db36496a4cf0eb517b463de5caa125f"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a9620f838addfdcb892b30e80e2cc4239"><td class="memItemLeft" align="right" valign="top">Result&lt; std::shared_ptr&lt; <a class="el" href="classgraphar_1_1_edge_info.html">EdgeInfo</a> &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgraphar_1_1_edge_info.html#a9620f838addfdcb892b30e80e2cc4239">AddPropertyGroup</a> (std::shared_ptr&lt; <a class="el" href="classgraphar_1_1_property_group.html">PropertyGroup</a> &gt; property_group) con [...]
 <tr class="separator:a9620f838addfdcb892b30e80e2cc4239"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a264853429b84060bbe36c671d5bc8963"><td class="memItemLeft" align="right" valign="top">Result&lt; std::shared_ptr&lt; <a class="el" href="classgraphar_1_1_edge_info.html">EdgeInfo</a> &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgraphar_1_1_edge_info.html#a264853429b84060bbe36c671d5bc8963">RemovePropertyGroup</a> (std::shared_ptr&lt; <a class="el" href="classgraphar_1_1_property_group.html">PropertyGroup</a> &gt; property_group)  [...]
+<tr class="memdesc:a264853429b84060bbe36c671d5bc8963"><td class="mdescLeft">&#160;</td><td class="mdescRight">Removes a property group from the <a class="el" href="classgraphar_1_1_edge_info.html" title="EdgeInfo is a class to describe the edge information, including the source vertex type,...">EdgeInfo</a> instance and returns a new <a class="el" href="classgraphar_1_1_edge_info.html" title="EdgeInfo is a class to describe the edge information, including the source vertex type,...">Edge [...]
+<tr class="separator:a264853429b84060bbe36c671d5bc8963"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a994023f50f2f952cc1361b0f9928dec4"><td class="memItemLeft" align="right" valign="top">const std::string &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgraphar_1_1_edge_info.html#a994023f50f2f952cc1361b0f9928dec4">GetSrcType</a> () const</td></tr>
 <tr class="separator:a994023f50f2f952cc1361b0f9928dec4"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a03c9b4f4b0edcf47f2e5746e8f9f6db0"><td class="memItemLeft" align="right" valign="top">const std::string &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgraphar_1_1_edge_info.html#a03c9b4f4b0edcf47f2e5746e8f9f6db0">GetEdgeType</a> () const</td></tr>
@@ -183,7 +189,7 @@ Static Public Member Functions</h2></td></tr>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
 <div class="textblock"><p><a class="el" href="classgraphar_1_1_edge_info.html" title="EdgeInfo is a class to describe the edge information, including the source vertex type,...">EdgeInfo</a> is a class to describe the edge information, including the source vertex type, edge type, destination vertex type, chunk size, adjacent list property groups, and prefix. </p>
 
-<p class="definition">Definition at line <a class="el" href="graph__info_8h_source.html#l00398">398</a> of file <a class="el" href="graph__info_8h_source.html">graph_info.h</a>.</p>
+<p class="definition">Definition at line <a class="el" href="graph__info_8h_source.html#l00408">408</a> of file <a class="el" href="graph__info_8h_source.html">graph_info.h</a>.</p>
 </div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
 <a id="ab3c32f3112dcf08304676eeb95545b55"></a>
 <h2 class="memtitle"><span class="permalink"><a href="#ab3c32f3112dcf08304676eeb95545b55">&#9670;&nbsp;</a></span>EdgeInfo()</h2>
@@ -291,7 +297,7 @@ Static Public Member Functions</h2></td></tr>
   </dd>
 </dl>
 
-<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00643">643</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00679">679</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
 
 </div>
 </div>
@@ -319,7 +325,7 @@ Static Public Member Functions</h2></td></tr>
   </dd>
 </dl>
 
-<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00832">832</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00868">868</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
 
 </div>
 </div>
@@ -346,7 +352,7 @@ Static Public Member Functions</h2></td></tr>
   </dd>
 </dl>
 
-<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00848">848</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00906">906</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
 
 </div>
 </div>
@@ -375,7 +381,7 @@ Static Public Member Functions</h2></td></tr>
 <p>Returns the edge info as a YAML formatted string.</p>
 <dl class="section return"><dt>Returns</dt><dd>A Result object containing the YAML string, or a <a class="el" href="classgraphar_1_1_status.html" title="Status outcome object (success or error)">Status</a> object indicating an error. </dd></dl>
 
-<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00972">972</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l01052">1052</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
 
 </div>
 </div>
@@ -421,7 +427,7 @@ Static Public Member Functions</h2></td></tr>
   </dd>
 </dl>
 
-<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00746">746</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00782">782</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
 
 </div>
 </div>
@@ -460,7 +466,7 @@ Static Public Member Functions</h2></td></tr>
   </dd>
 </dl>
 
-<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00764">764</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00800">800</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
 
 </div>
 </div>
@@ -489,7 +495,7 @@ Static Public Member Functions</h2></td></tr>
 </dl>
 <dl class="section return"><dt>Returns</dt><dd>A Result object containing the directory, or a <a class="el" href="classgraphar_1_1_status.html" title="Status outcome object (success or error)">Status</a> object indicating an error. </dd></dl>
 
-<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00756">756</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00792">792</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
 
 </div>
 </div>
@@ -509,7 +515,7 @@ Static Public Member Functions</h2></td></tr>
 </div><div class="memdoc">
 <p>Get the number of edges in each edge chunk. </p><dl class="section return"><dt>Returns</dt><dd>The number of edges in each edge chunk. </dd></dl>
 
-<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00662">662</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00698">698</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
 
 </div>
 </div>
@@ -529,7 +535,7 @@ Static Public Member Functions</h2></td></tr>
 </div><div class="memdoc">
 <p>Get the number of destination vertices in each vertex chunk. </p><dl class="section return"><dt>Returns</dt><dd>The number of destination vertices in each vertex chunk. </dd></dl>
 
-<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00666">666</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00702">702</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
 
 </div>
 </div>
@@ -549,7 +555,7 @@ Static Public Member Functions</h2></td></tr>
 </div><div class="memdoc">
 <p>Get the type of the destination vertex. </p><dl class="section return"><dt>Returns</dt><dd>The type of the destination vertex. </dd></dl>
 
-<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00660">660</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00696">696</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
 
 </div>
 </div>
@@ -588,7 +594,7 @@ Static Public Member Functions</h2></td></tr>
 </dl>
 <dl class="section return"><dt>Returns</dt><dd>A Result object containing the file path for the number of edges, or a <a class="el" href="classgraphar_1_1_status.html" title="Status outcome object (success or error)">Status</a> object indicating an error. </dd></dl>
 
-<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00738">738</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00774">774</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
 
 </div>
 </div>
@@ -608,7 +614,7 @@ Static Public Member Functions</h2></td></tr>
 </div><div class="memdoc">
 <p>Get the type of the edge. </p><dl class="section return"><dt>Returns</dt><dd>The type of the edge. </dd></dl>
 
-<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00658">658</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00694">694</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
 
 </div>
 </div>
@@ -635,7 +641,7 @@ Static Public Member Functions</h2></td></tr>
 </dl>
 <dl class="section return"><dt>Returns</dt><dd>A Result object containing the path prefix, or a <a class="el" href="classgraphar_1_1_status.html" title="Status outcome object (success or error)">Status</a> object indicating an error. </dd></dl>
 
-<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00772">772</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00808">808</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
 
 </div>
 </div>
@@ -655,7 +661,7 @@ Static Public Member Functions</h2></td></tr>
 </div><div class="memdoc">
 <p>Get the path prefix of the edge. </p><dl class="section return"><dt>Returns</dt><dd>The path prefix of the edge. </dd></dl>
 
-<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00668">668</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00704">704</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
 
 </div>
 </div>
@@ -708,7 +714,7 @@ Static Public Member Functions</h2></td></tr>
   </dd>
 </dl>
 
-<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00780">780</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00816">816</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
 
 </div>
 </div>
@@ -737,7 +743,7 @@ Static Public Member Functions</h2></td></tr>
 </dl>
 <dl class="section return"><dt>Returns</dt><dd><a class="el" href="classgraphar_1_1_property.html">Property</a> group may be nullptr if the property is not found. </dd></dl>
 
-<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00716">716</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00752">752</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
 
 </div>
 </div>
@@ -766,7 +772,7 @@ Static Public Member Functions</h2></td></tr>
 </dl>
 <dl class="section return"><dt>Returns</dt><dd><a class="el" href="classgraphar_1_1_property.html">Property</a> group may be nullptr if the index is out of range. </dd></dl>
 
-<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00722">722</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00758">758</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
 
 </div>
 </div>
@@ -804,7 +810,7 @@ Static Public Member Functions</h2></td></tr>
 </dl>
 <dl class="section return"><dt>Returns</dt><dd>A Result object containing the path prefix, or a <a class="el" href="classgraphar_1_1_status.html" title="Status outcome object (success or error)">Status</a> object indicating an error. </dd></dl>
 
-<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00795">795</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00831">831</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
 
 </div>
 </div>
@@ -832,7 +838,7 @@ Static Public Member Functions</h2></td></tr>
 </dl>
 <dl class="section return"><dt>Returns</dt><dd>A Result object containing the data type of the property, or a KeyError <a class="el" href="classgraphar_1_1_status.html" title="Status outcome object (success or error)">Status</a> object if the property is not found. </dd></dl>
 
-<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00807">807</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00843">843</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
 
 </div>
 </div>
@@ -852,7 +858,7 @@ Static Public Member Functions</h2></td></tr>
 </div><div class="memdoc">
 <p>Get the number of source vertices in each vertex chunk. </p><dl class="section return"><dt>Returns</dt><dd>The number of source vertices in each vertex chunk. </dd></dl>
 
-<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00664">664</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00700">700</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
 
 </div>
 </div>
@@ -872,7 +878,7 @@ Static Public Member Functions</h2></td></tr>
 </div><div class="memdoc">
 <p>Get the type of the source vertex. </p><dl class="section return"><dt>Returns</dt><dd>The type of the source vertex. </dd></dl>
 
-<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00656">656</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00692">692</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
 
 </div>
 </div>
@@ -901,7 +907,7 @@ Static Public Member Functions</h2></td></tr>
 </dl>
 <dl class="section return"><dt>Returns</dt><dd>A Result object containing the file path for the number of edges, or a <a class="el" href="classgraphar_1_1_status.html" title="Status outcome object (success or error)">Status</a> object indicating an error. </dd></dl>
 
-<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00730">730</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00766">766</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
 
 </div>
 </div>
@@ -929,7 +935,7 @@ Static Public Member Functions</h2></td></tr>
 </dl>
 <dl class="section return"><dt>Returns</dt><dd>True if the edge info contains the adjacency list information, false otherwise. </dd></dl>
 
-<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00676">676</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00712">712</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
 
 </div>
 </div>
@@ -958,7 +964,7 @@ Static Public Member Functions</h2></td></tr>
 </dl>
 <dl class="section return"><dt>Returns</dt><dd>True if the edge info contains the property, false otherwise. </dd></dl>
 
-<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00681">681</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00717">717</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
 
 </div>
 </div>
@@ -978,7 +984,7 @@ Static Public Member Functions</h2></td></tr>
 </div><div class="memdoc">
 <p>Returns whether the edge is directed. </p><dl class="section return"><dt>Returns</dt><dd>True if the edge is directed, false otherwise. </dd></dl>
 
-<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00670">670</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00706">706</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
 
 </div>
 </div>
@@ -1006,7 +1012,7 @@ Static Public Member Functions</h2></td></tr>
 </dl>
 <dl class="section return"><dt>Returns</dt><dd>True if the property is a nullable key, False otherwise. </dd></dl>
 
-<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00824">824</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00860">860</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
 
 </div>
 </div>
@@ -1034,7 +1040,7 @@ Static Public Member Functions</h2></td></tr>
 </dl>
 <dl class="section return"><dt>Returns</dt><dd>True if the property is a primary key, False otherwise. </dd></dl>
 
-<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00816">816</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00852">852</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
 
 </div>
 </div>
@@ -1055,7 +1061,7 @@ Static Public Member Functions</h2></td></tr>
 <p>Returns whether the edge info is validated.</p>
 <dl class="section return"><dt>Returns</dt><dd>True if the edge info is valid, False otherwise. </dd></dl>
 
-<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00867">867</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00947">947</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
 
 </div>
 </div>
@@ -1091,7 +1097,7 @@ Static Public Member Functions</h2></td></tr>
 </dl>
 <dl class="section return"><dt>Returns</dt><dd>A Result object containing the <a class="el" href="classgraphar_1_1_edge_info.html" title="EdgeInfo is a class to describe the edge information, including the source vertex type,...">EdgeInfo</a> object, or a <a class="el" href="classgraphar_1_1_status.html" title="Status outcome object (success or error)">Status</a>. </dd></dl>
 
-<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00967">967</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l01047">1047</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
 
 </div>
 </div>
@@ -1120,7 +1126,65 @@ Static Public Member Functions</h2></td></tr>
 </div><div class="memdoc">
 <p>Loads the yaml as an <a class="el" href="classgraphar_1_1_edge_info.html" title="EdgeInfo is a class to describe the edge information, including the source vertex type,...">EdgeInfo</a> instance. </p>
 
-<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00886">886</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00966">966</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+
+</div>
+</div>
+<a id="a7db36496a4cf0eb517b463de5caa125f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a7db36496a4cf0eb517b463de5caa125f">&#9670;&nbsp;</a></span>RemoveAdjacentList()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">Result&lt; std::shared_ptr&lt; <a class="el" href="classgraphar_1_1_edge_info.html">EdgeInfo</a> &gt; &gt; graphar::EdgeInfo::RemoveAdjacentList </td>
+          <td>(</td>
+          <td class="paramtype">std::shared_ptr&lt; <a class="el" href="classgraphar_1_1_adjacent_list.html">AdjacentList</a> &gt;&#160;</td>
+          <td class="paramname"><em>adj_list</em></td><td>)</td>
+          <td> const</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Removes an adjacency list from the <a class="el" href="classgraphar_1_1_edge_info.html" title="EdgeInfo is a class to describe the edge information, including the source vertex type,...">EdgeInfo</a> instance and returns a new <a class="el" href="classgraphar_1_1_edge_info.html" title="EdgeInfo is a class to describe the edge information, including the source vertex type,...">EdgeInfo</a>. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">adj_list</td><td>The adjacency list to remove. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>A <a class="el" href="classgraphar_1_1_status.html" title="Status outcome object (success or error)">Status</a> object indicating the success or failure of the operation. Returns InvalidOperation if the adjacency list is not contained. </dd></dl>
+
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00884">884</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+
+</div>
+</div>
+<a id="a264853429b84060bbe36c671d5bc8963"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a264853429b84060bbe36c671d5bc8963">&#9670;&nbsp;</a></span>RemovePropertyGroup()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">Result&lt; std::shared_ptr&lt; <a class="el" href="classgraphar_1_1_edge_info.html">EdgeInfo</a> &gt; &gt; graphar::EdgeInfo::RemovePropertyGroup </td>
+          <td>(</td>
+          <td class="paramtype">std::shared_ptr&lt; <a class="el" href="classgraphar_1_1_property_group.html">PropertyGroup</a> &gt;&#160;</td>
+          <td class="paramname"><em>property_group</em></td><td>)</td>
+          <td> const</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Removes a property group from the <a class="el" href="classgraphar_1_1_edge_info.html" title="EdgeInfo is a class to describe the edge information, including the source vertex type,...">EdgeInfo</a> instance and returns a new <a class="el" href="classgraphar_1_1_edge_info.html" title="EdgeInfo is a class to describe the edge information, including the source vertex type,...">EdgeInfo</a>. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">property_group</td><td>The property group to remove. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>A <a class="el" href="classgraphar_1_1_status.html" title="Status outcome object (success or error)">Status</a> object indicating the success or failure of the operation. Returns InvalidOperation if the property group is not contained. </dd></dl>
+
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00925">925</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
 
 </div>
 </div>
@@ -1148,7 +1212,7 @@ Static Public Member Functions</h2></td></tr>
 </dl>
 <dl class="section return"><dt>Returns</dt><dd>A <a class="el" href="classgraphar_1_1_status.html" title="Status outcome object (success or error)">Status</a> object indicating success or failure. </dd></dl>
 
-<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l01027">1027</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l01107">1107</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
 
 </div>
 </div>
@@ -1168,7 +1232,7 @@ Static Public Member Functions</h2></td></tr>
 </div><div class="memdoc">
 <p>Get the version info of the edge. </p><dl class="section return"><dt>Returns</dt><dd>The version info of the edge. </dd></dl>
 
-<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00672">672</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00708">708</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
 
 </div>
 </div>
diff --git a/docs/cpp/classgraphar_1_1_edge_info_1_1_impl.html b/docs/cpp/classgraphar_1_1_edge_info_1_1_impl.html
index 3c94e96..f0421e1 100644
--- a/docs/cpp/classgraphar_1_1_edge_info_1_1_impl.html
+++ b/docs/cpp/classgraphar_1_1_edge_info_1_1_impl.html
@@ -137,7 +137,7 @@ std::shared_ptr&lt; const <a class="el" href="classgraphar_1_1_info_version.html
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
 <div class="textblock">
-<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00537">537</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00573">573</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
 </div><hr/>The documentation for this class was generated from the following file:<ul>
 <li>src/graphar/<a class="el" href="graph__info_8cc_source.html">graph_info.cc</a></li>
 </ul>
diff --git a/docs/cpp/classgraphar_1_1_graph_info-members.html b/docs/cpp/classgraphar_1_1_graph_info-members.html
index 7af352b..988e677 100644
--- a/docs/cpp/classgraphar_1_1_graph_info-members.html
+++ b/docs/cpp/classgraphar_1_1_graph_info-members.html
@@ -93,6 +93,8 @@ $(function() {
   <tr><td class="entry"><a class="el" href="classgraphar_1_1_graph_info.html#a6e848c7015e3b7d4706ff1ac2ffa6dcd">IsValidated</a>() const</td><td class="entry"><a class="el" href="classgraphar_1_1_graph_info.html">graphar::GraphInfo</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classgraphar_1_1_graph_info.html#a63dbd61d6575fe783b3287f391f651ed">Load</a>(const std::string &amp;path)</td><td class="entry"><a class="el" href="classgraphar_1_1_graph_info.html">graphar::GraphInfo</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
   <tr><td class="entry"><a class="el" href="classgraphar_1_1_graph_info.html#acf6ef4ce04b70184f596be59dbb58318">Load</a>(const std::string &amp;input, const std::string &amp;relative_path)</td><td class="entry"><a class="el" href="classgraphar_1_1_graph_info.html">graphar::GraphInfo</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classgraphar_1_1_graph_info.html#acc0e018222ae59e749a52b3678e6529a">RemoveEdge</a>(std::shared_ptr&lt; EdgeInfo &gt; edge_info) const</td><td class="entry"><a class="el" href="classgraphar_1_1_graph_info.html">graphar::GraphInfo</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="classgraphar_1_1_graph_info.html#ad64a71966ca197ae14ea21ff8787b769">RemoveVertex</a>(std::shared_ptr&lt; VertexInfo &gt; vertex_info) const</td><td class="entry"><a class="el" href="classgraphar_1_1_graph_info.html">graphar::GraphInfo</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classgraphar_1_1_graph_info.html#a339f08f5a1427aadc91d30d41dccced3">Save</a>(const std::string &amp;path) const</td><td class="entry"><a class="el" href="classgraphar_1_1_graph_info.html">graphar::GraphInfo</a></td><td class="entry"></td></tr>
   <tr><td class="entry"><a class="el" href="classgraphar_1_1_graph_info.html#aeb68a7550c63365d8093136601a3aeee">version</a>() const</td><td class="entry"><a class="el" href="classgraphar_1_1_graph_info.html">graphar::GraphInfo</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classgraphar_1_1_graph_info.html#aa384328a58c9138b5b77ea6172199d07">VertexInfoNum</a>() const</td><td class="entry"><a class="el" href="classgraphar_1_1_graph_info.html">graphar::GraphInfo</a></td><td class="entry"></td></tr>
diff --git a/docs/cpp/classgraphar_1_1_graph_info.html b/docs/cpp/classgraphar_1_1_graph_info.html
index c9d85e4..a1f36d0 100644
--- a/docs/cpp/classgraphar_1_1_graph_info.html
+++ b/docs/cpp/classgraphar_1_1_graph_info.html
@@ -91,9 +91,15 @@ Public Member Functions</h2></td></tr>
 <tr class="memitem:a44e38c74dc765a56f8f0d200774d8180"><td class="memItemLeft" align="right" valign="top">Result&lt; std::shared_ptr&lt; <a class="el" href="classgraphar_1_1_graph_info.html">GraphInfo</a> &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgraphar_1_1_graph_info.html#a44e38c74dc765a56f8f0d200774d8180">AddVertex</a> (std::shared_ptr&lt; <a class="el" href="classgraphar_1_1_vertex_info.html">VertexInfo</a> &gt; vertex_info) const</td></tr>
 <tr class="memdesc:a44e38c74dc765a56f8f0d200774d8180"><td class="mdescLeft">&#160;</td><td class="mdescRight">Adds a vertex info to the <a class="el" href="classgraphar_1_1_graph_info.html">GraphInfo</a> instance and returns a new <a class="el" href="classgraphar_1_1_graph_info.html">GraphInfo</a>.  <a href="classgraphar_1_1_graph_info.html#a44e38c74dc765a56f8f0d200774d8180">More...</a><br /></td></tr>
 <tr class="separator:a44e38c74dc765a56f8f0d200774d8180"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad64a71966ca197ae14ea21ff8787b769"><td class="memItemLeft" align="right" valign="top">Result&lt; std::shared_ptr&lt; <a class="el" href="classgraphar_1_1_graph_info.html">GraphInfo</a> &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgraphar_1_1_graph_info.html#ad64a71966ca197ae14ea21ff8787b769">RemoveVertex</a> (std::shared_ptr&lt; <a class="el" href="classgraphar_1_1_vertex_info.html">VertexInfo</a> &gt; vertex_info) const</td></tr>
+<tr class="memdesc:ad64a71966ca197ae14ea21ff8787b769"><td class="mdescLeft">&#160;</td><td class="mdescRight">Removes a vertex info from the <a class="el" href="classgraphar_1_1_graph_info.html">GraphInfo</a> instance and returns a new <a class="el" href="classgraphar_1_1_graph_info.html">GraphInfo</a>.  <a href="classgraphar_1_1_graph_info.html#ad64a71966ca197ae14ea21ff8787b769">More...</a><br /></td></tr>
+<tr class="separator:ad64a71966ca197ae14ea21ff8787b769"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a8fdf1ff0ec57e3ca2e66dd4366e390aa"><td class="memItemLeft" align="right" valign="top">Result&lt; std::shared_ptr&lt; <a class="el" href="classgraphar_1_1_graph_info.html">GraphInfo</a> &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgraphar_1_1_graph_info.html#a8fdf1ff0ec57e3ca2e66dd4366e390aa">AddEdge</a> (std::shared_ptr&lt; <a class="el" href="classgraphar_1_1_edge_info.html">EdgeInfo</a> &gt; edge_info) const</td></tr>
 <tr class="memdesc:a8fdf1ff0ec57e3ca2e66dd4366e390aa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Adds an edge info to the <a class="el" href="classgraphar_1_1_graph_info.html">GraphInfo</a> instance and returns a new <a class="el" href="classgraphar_1_1_graph_info.html">GraphInfo</a>.  <a href="classgraphar_1_1_graph_info.html#a8fdf1ff0ec57e3ca2e66dd4366e390aa">More...</a><br /></td></tr>
 <tr class="separator:a8fdf1ff0ec57e3ca2e66dd4366e390aa"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:acc0e018222ae59e749a52b3678e6529a"><td class="memItemLeft" align="right" valign="top">Result&lt; std::shared_ptr&lt; <a class="el" href="classgraphar_1_1_graph_info.html">GraphInfo</a> &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgraphar_1_1_graph_info.html#acc0e018222ae59e749a52b3678e6529a">RemoveEdge</a> (std::shared_ptr&lt; <a class="el" href="classgraphar_1_1_edge_info.html">EdgeInfo</a> &gt; edge_info) const</td></tr>
+<tr class="memdesc:acc0e018222ae59e749a52b3678e6529a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Removes an edge info from the <a class="el" href="classgraphar_1_1_graph_info.html">GraphInfo</a> instance and returns a new <a class="el" href="classgraphar_1_1_graph_info.html">GraphInfo</a>.  <a href="classgraphar_1_1_graph_info.html#acc0e018222ae59e749a52b3678e6529a">More...</a><br /></td></tr>
+<tr class="separator:acc0e018222ae59e749a52b3678e6529a"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:ab10cb1ceaa01a74d44c1076c43c2fcce"><td class="memItemLeft" align="right" valign="top">const std::string &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgraphar_1_1_graph_info.html#ab10cb1ceaa01a74d44c1076c43c2fcce">GetName</a> () const</td></tr>
 <tr class="memdesc:ab10cb1ceaa01a74d44c1076c43c2fcce"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the name of the graph.  <a href="classgraphar_1_1_graph_info.html#ab10cb1ceaa01a74d44c1076c43c2fcce">More...</a><br /></td></tr>
 <tr class="separator:ab10cb1ceaa01a74d44c1076c43c2fcce"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -162,7 +168,7 @@ Static Public Member Functions</h2></td></tr>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
 <div class="textblock"><p><a class="el" href="classgraphar_1_1_graph_info.html">GraphInfo</a> is a class to store the graph meta information. </p>
 
-<p class="definition">Definition at line <a class="el" href="graph__info_8h_source.html#l00706">706</a> of file <a class="el" href="graph__info_8h_source.html">graph_info.h</a>.</p>
+<p class="definition">Definition at line <a class="el" href="graph__info_8h_source.html#l00736">736</a> of file <a class="el" href="graph__info_8h_source.html">graph_info.h</a>.</p>
 </div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
 <a id="a1b473deea923f7b2a57c339dc7e51192"></a>
 <h2 class="memtitle"><span class="permalink"><a href="#a1b473deea923f7b2a57c339dc7e51192">&#9670;&nbsp;</a></span>GraphInfo()</h2>
@@ -242,7 +248,7 @@ Static Public Member Functions</h2></td></tr>
   </dd>
 </dl>
 
-<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l01184">1184</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l01264">1264</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
 
 </div>
 </div>
@@ -272,7 +278,7 @@ Static Public Member Functions</h2></td></tr>
 </dl>
 <dl class="section return"><dt>Returns</dt><dd>A <a class="el" href="classgraphar_1_1_status.html" title="Status outcome object (success or error)">Status</a> object indicating the success or failure of the operation. Returns <code>InvalidOperation</code> if the edge info is already contained. </dd></dl>
 
-<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l01281">1281</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l01377">1377</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
 
 </div>
 </div>
@@ -301,7 +307,7 @@ Static Public Member Functions</h2></td></tr>
 </dl>
 <dl class="section return"><dt>Returns</dt><dd>A <a class="el" href="classgraphar_1_1_status.html" title="Status outcome object (success or error)">Status</a> object indicating the success or failure of the operation. Returns InvalidOperation if the vertex info is already contained. </dd></dl>
 
-<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l01268">1268</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l01348">1348</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
 
 </div>
 </div>
@@ -322,7 +328,7 @@ Static Public Member Functions</h2></td></tr>
 <p>Returns the graph info as a YAML formatted string.</p>
 <dl class="section return"><dt>Returns</dt><dd>A Result object containing the YAML string, or a <a class="el" href="classgraphar_1_1_status.html" title="Status outcome object (success or error)">Status</a> object indicating an error. </dd></dl>
 
-<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l01334">1334</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l01446">1446</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
 
 </div>
 </div>
@@ -369,7 +375,7 @@ Static Public Member Functions</h2></td></tr>
 </dl>
 <dl class="section return"><dt>Returns</dt><dd>edge info may be nullptr if the type is not found. </dd></dl>
 
-<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l01221">1221</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l01301">1301</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
 
 </div>
 </div>
@@ -398,7 +404,7 @@ Static Public Member Functions</h2></td></tr>
 </dl>
 <dl class="section return"><dt>Returns</dt><dd>edge info may be nullptr if the index is out of range. </dd></dl>
 
-<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l01251">1251</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l01331">1331</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
 
 </div>
 </div>
@@ -420,7 +426,7 @@ Static Public Member Functions</h2></td></tr>
 <p>Get the edge infos of graph info. </p>
 <dl class="section return"><dt>Returns</dt><dd>edge infos of graph info </dd></dl>
 
-<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l01262">1262</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l01342">1342</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
 
 </div>
 </div>
@@ -442,7 +448,7 @@ Static Public Member Functions</h2></td></tr>
 <p>Get the extra metadata of the graph info object. </p>
 <dl class="section return"><dt>Returns</dt><dd>The extra metadata of the graph info object. </dd></dl>
 
-<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l01206">1206</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l01286">1286</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
 
 </div>
 </div>
@@ -464,7 +470,7 @@ Static Public Member Functions</h2></td></tr>
 <p>Get the vertex labels of the graph. </p>
 <dl class="section return"><dt>Returns</dt><dd>The vertex labels of the graph. </dd></dl>
 
-<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l01196">1196</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l01276">1276</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
 
 </div>
 </div>
@@ -486,7 +492,7 @@ Static Public Member Functions</h2></td></tr>
 <p>Get the name of the graph. </p>
 <dl class="section return"><dt>Returns</dt><dd>The name of the graph. </dd></dl>
 
-<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l01194">1194</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l01274">1274</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
 
 </div>
 </div>
@@ -508,7 +514,7 @@ Static Public Member Functions</h2></td></tr>
 <p>Get the absolute path prefix of the chunk files. </p>
 <dl class="section return"><dt>Returns</dt><dd>The absolute path prefix of the chunk files. </dd></dl>
 
-<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l01200">1200</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l01280">1280</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
 
 </div>
 </div>
@@ -537,7 +543,7 @@ Static Public Member Functions</h2></td></tr>
 </dl>
 <dl class="section return"><dt>Returns</dt><dd>vertex info may be nullptr if the type is not found. </dd></dl>
 
-<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l01211">1211</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l01291">1291</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
 
 </div>
 </div>
@@ -566,7 +572,7 @@ Static Public Member Functions</h2></td></tr>
 </dl>
 <dl class="section return"><dt>Returns</dt><dd>vertex info may be nullptr if the index is out of range. </dd></dl>
 
-<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l01243">1243</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l01323">1323</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
 
 </div>
 </div>
@@ -588,7 +594,7 @@ Static Public Member Functions</h2></td></tr>
 <p>Get the vertex infos of graph info. </p>
 <dl class="section return"><dt>Returns</dt><dd>vertex infos of graph info </dd></dl>
 
-<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l01258">1258</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l01338">1338</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
 
 </div>
 </div>
@@ -609,7 +615,7 @@ Static Public Member Functions</h2></td></tr>
 <p>Returns whether the graph info is validated.</p>
 <dl class="section return"><dt>Returns</dt><dd>True if the graph info is valid, False otherwise. </dd></dl>
 
-<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l01266">1266</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l01346">1346</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
 
 </div>
 </div>
@@ -657,7 +663,7 @@ Static Public Member Functions</h2></td></tr>
 </dl>
 <dl class="section return"><dt>Returns</dt><dd>A Result object containing the <a class="el" href="classgraphar_1_1_graph_info.html">GraphInfo</a> instance, or a <code><a class="el" href="classgraphar_1_1_status.html" title="Status outcome object (success or error)">Status</a></code> object indicating an error. </dd></dl>
 
-<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l01321">1321</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l01433">1433</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
 
 </div>
 </div>
@@ -694,7 +700,65 @@ Static Public Member Functions</h2></td></tr>
 </dl>
 <dl class="section return"><dt>Returns</dt><dd>A Result object containing the <a class="el" href="classgraphar_1_1_graph_info.html">GraphInfo</a> instance, or a <a class="el" href="classgraphar_1_1_status.html" title="Status outcome object (success or error)">Status</a> object indicating an error. </dd></dl>
 
-<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l01308">1308</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l01420">1420</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+
+</div>
+</div>
+<a id="acc0e018222ae59e749a52b3678e6529a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#acc0e018222ae59e749a52b3678e6529a">&#9670;&nbsp;</a></span>RemoveEdge()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">Result&lt; std::shared_ptr&lt; <a class="el" href="classgraphar_1_1_graph_info.html">GraphInfo</a> &gt; &gt; graphar::GraphInfo::RemoveEdge </td>
+          <td>(</td>
+          <td class="paramtype">std::shared_ptr&lt; <a class="el" href="classgraphar_1_1_edge_info.html">EdgeInfo</a> &gt;&#160;</td>
+          <td class="paramname"><em>edge_info</em></td><td>)</td>
+          <td> const</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Removes an edge info from the <a class="el" href="classgraphar_1_1_graph_info.html">GraphInfo</a> instance and returns a new <a class="el" href="classgraphar_1_1_graph_info.html">GraphInfo</a>. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">edge_info</td><td>The edge info to remove. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>A <a class="el" href="classgraphar_1_1_status.html" title="Status outcome object (success or error)">Status</a> object indicating the success or failure of the operation. Returns InvalidOperation if the edge info is not contained. </dd></dl>
+
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l01392">1392</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+
+</div>
+</div>
+<a id="ad64a71966ca197ae14ea21ff8787b769"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad64a71966ca197ae14ea21ff8787b769">&#9670;&nbsp;</a></span>RemoveVertex()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">Result&lt; std::shared_ptr&lt; <a class="el" href="classgraphar_1_1_graph_info.html">GraphInfo</a> &gt; &gt; graphar::GraphInfo::RemoveVertex </td>
+          <td>(</td>
+          <td class="paramtype">std::shared_ptr&lt; <a class="el" href="classgraphar_1_1_vertex_info.html">VertexInfo</a> &gt;&#160;</td>
+          <td class="paramname"><em>vertex_info</em></td><td>)</td>
+          <td> const</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Removes a vertex info from the <a class="el" href="classgraphar_1_1_graph_info.html">GraphInfo</a> instance and returns a new <a class="el" href="classgraphar_1_1_graph_info.html">GraphInfo</a>. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">vertex_info</td><td>The vertex info to remove. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>A <a class="el" href="classgraphar_1_1_status.html" title="Status outcome object (success or error)">Status</a> object indicating the success or failure of the operation. Returns InvalidOperation if the vertex info is not contained. </dd></dl>
+
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l01361">1361</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
 
 </div>
 </div>
@@ -722,7 +786,7 @@ Static Public Member Functions</h2></td></tr>
 </dl>
 <dl class="section return"><dt>Returns</dt><dd>A <a class="el" href="classgraphar_1_1_status.html" title="Status outcome object (success or error)">Status</a> object indicating success or failure. </dd></dl>
 
-<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l01384">1384</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l01496">1496</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
 
 </div>
 </div>
@@ -744,7 +808,7 @@ Static Public Member Functions</h2></td></tr>
 <p>Get the version info of the graph info object. </p>
 <dl class="section return"><dt>Returns</dt><dd>The version info of the graph info object. </dd></dl>
 
-<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l01202">1202</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l01282">1282</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
 
 </div>
 </div>
diff --git a/docs/cpp/classgraphar_1_1_graph_info_1_1_impl.html b/docs/cpp/classgraphar_1_1_graph_info_1_1_impl.html
index 68bc144..9654091 100644
--- a/docs/cpp/classgraphar_1_1_graph_info_1_1_impl.html
+++ b/docs/cpp/classgraphar_1_1_graph_info_1_1_impl.html
@@ -116,7 +116,7 @@ std::unordered_map&lt; std::string, int &gt;&#160;</td><td class="memItemRight"
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
 <div class="textblock">
-<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l01124">1124</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l01204">1204</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
 </div><hr/>The documentation for this class was generated from the following file:<ul>
 <li>src/graphar/<a class="el" href="graph__info_8cc_source.html">graph_info.cc</a></li>
 </ul>
diff --git a/docs/cpp/classgraphar_1_1_property_group.html b/docs/cpp/classgraphar_1_1_property_group.html
index b198210..a34877e 100644
--- a/docs/cpp/classgraphar_1_1_property_group.html
+++ b/docs/cpp/classgraphar_1_1_property_group.html
@@ -154,7 +154,7 @@ std::ostream &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>operato
   </dd>
 </dl>
 
-<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00094">94</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00109">109</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
 
 </div>
 </div>
@@ -234,7 +234,7 @@ std::ostream &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>operato
 <p>Get the property list of group.</p>
 <dl class="section return"><dt>Returns</dt><dd>The property list of group. </dd></dl>
 
-<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00105">105</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00120">120</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
 
 </div>
 </div>
@@ -254,7 +254,7 @@ std::ostream &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>operato
 </div><div class="memdoc">
 <p>Check if the property group is validated. </p>
 
-<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00118">118</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00133">133</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
 
 </div>
 </div>
diff --git a/docs/cpp/classgraphar_1_1_vertex_info-members.html b/docs/cpp/classgraphar_1_1_vertex_info-members.html
index 509a055..9cc4bc7 100644
--- a/docs/cpp/classgraphar_1_1_vertex_info-members.html
+++ b/docs/cpp/classgraphar_1_1_vertex_info-members.html
@@ -95,10 +95,11 @@ $(function() {
   <tr><td class="entry"><a class="el" href="classgraphar_1_1_vertex_info.html#af1ade1caa6e70e4b7ce60cf4df7ac50c">Load</a>(std::shared_ptr&lt; Yaml &gt; yaml)</td><td class="entry"><a class="el" href="classgraphar_1_1_vertex_info.html">graphar::VertexInfo</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classgraphar_1_1_vertex_info.html#afc1a3662d2215f157af8ba115307807b">Load</a>(const std::string &amp;input)</td><td class="entry"><a class="el" href="classgraphar_1_1_vertex_info.html">graphar::VertexInfo</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
   <tr><td class="entry"><a class="el" href="classgraphar_1_1_vertex_info.html#a7917824d18f7c84a02859f18b47e77fe">PropertyGroupNum</a>() const</td><td class="entry"><a class="el" href="classgraphar_1_1_vertex_info.html">graphar::VertexInfo</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classgraphar_1_1_vertex_info.html#afd42b99a43507a9edb1825e7e104d1e7">Save</a>(const std::string &amp;file_name) const</td><td class="entry"><a class="el" href="classgraphar_1_1_vertex_info.html">graphar::VertexInfo</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="classgraphar_1_1_vertex_info.html#a47c84aab28674b5250a26c97806f2f48">version</a>() const</td><td class="entry"><a class="el" href="classgraphar_1_1_vertex_info.html">graphar::VertexInfo</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classgraphar_1_1_vertex_info.html#acddb12cfcf7c6bfe1f1937f984828312">VertexInfo</a>(const std::string &amp;type, IdType chunk_size, const PropertyGroupVector &amp;property_groups, const std::vector&lt; std::string &gt; &amp;labels={}, const std::string &amp;prefix=&quot;&quot;, std::shared_ptr&lt; const InfoVersion &gt; version=nullptr)</td><td class="entry"><a class="el" href="classgraphar_1_1_vertex_info.html">graphar::VertexInfo [...]
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>~VertexInfo</b>() (defined in <a class="el" href="classgraphar_1_1_vertex_info.html">graphar::VertexInfo</a>)</td><td class="entry"><a class="el" href="classgraphar_1_1_vertex_info.html">graphar::VertexInfo</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classgraphar_1_1_vertex_info.html#a8432977087cbb207f65b91debc240119">RemovePropertyGroup</a>(std::shared_ptr&lt; PropertyGroup &gt; property_group) const</td><td class="entry"><a class="el" href="classgraphar_1_1_vertex_info.html">graphar::VertexInfo</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="classgraphar_1_1_vertex_info.html#afd42b99a43507a9edb1825e7e104d1e7">Save</a>(const std::string &amp;file_name) const</td><td class="entry"><a class="el" href="classgraphar_1_1_vertex_info.html">graphar::VertexInfo</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classgraphar_1_1_vertex_info.html#a47c84aab28674b5250a26c97806f2f48">version</a>() const</td><td class="entry"><a class="el" href="classgraphar_1_1_vertex_info.html">graphar::VertexInfo</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="classgraphar_1_1_vertex_info.html#acddb12cfcf7c6bfe1f1937f984828312">VertexInfo</a>(const std::string &amp;type, IdType chunk_size, const PropertyGroupVector &amp;property_groups, const std::vector&lt; std::string &gt; &amp;labels={}, const std::string &amp;prefix=&quot;&quot;, std::shared_ptr&lt; const InfoVersion &gt; version=nullptr)</td><td class="entry"><a class="el" href="classgraphar_1_1_vertex_info.html">graphar::VertexInfo</a></td><td  [...]
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~VertexInfo</b>() (defined in <a class="el" href="classgraphar_1_1_vertex_info.html">graphar::VertexInfo</a>)</td><td class="entry"><a class="el" href="classgraphar_1_1_vertex_info.html">graphar::VertexInfo</a></td><td class="entry"></td></tr>
 </table></div><!-- contents -->
 <!--
     Licensed to the Apache Software Foundation (ASF) under one
diff --git a/docs/cpp/classgraphar_1_1_vertex_info.html b/docs/cpp/classgraphar_1_1_vertex_info.html
index 29506c3..9e21f96 100644
--- a/docs/cpp/classgraphar_1_1_vertex_info.html
+++ b/docs/cpp/classgraphar_1_1_vertex_info.html
@@ -92,6 +92,9 @@ Public Member Functions</h2></td></tr>
 <tr class="separator:acddb12cfcf7c6bfe1f1937f984828312"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a4a70be2aa82d5c435b3271ae766bb54d"><td class="memItemLeft" align="right" valign="top">Result&lt; std::shared_ptr&lt; <a class="el" href="classgraphar_1_1_vertex_info.html">VertexInfo</a> &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgraphar_1_1_vertex_info.html#a4a70be2aa82d5c435b3271ae766bb54d">AddPropertyGroup</a> (std::shared_ptr&lt; <a class="el" href="classgraphar_1_1_property_group.html">PropertyGroup</a> &gt; property_grou [...]
 <tr class="separator:a4a70be2aa82d5c435b3271ae766bb54d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8432977087cbb207f65b91debc240119"><td class="memItemLeft" align="right" valign="top">Result&lt; std::shared_ptr&lt; <a class="el" href="classgraphar_1_1_vertex_info.html">VertexInfo</a> &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgraphar_1_1_vertex_info.html#a8432977087cbb207f65b91debc240119">RemovePropertyGroup</a> (std::shared_ptr&lt; <a class="el" href="classgraphar_1_1_property_group.html">PropertyGroup</a> &gt; property_g [...]
+<tr class="memdesc:a8432977087cbb207f65b91debc240119"><td class="mdescLeft">&#160;</td><td class="mdescRight">Removes a property group from the <a class="el" href="classgraphar_1_1_vertex_info.html" title="VertexInfo is a class to describe the vertex information, including the vertex type,...">VertexInfo</a> instance and returns a new <a class="el" href="classgraphar_1_1_vertex_info.html" title="VertexInfo is a class to describe the vertex information, including the vertex type,...">Vert [...]
+<tr class="separator:a8432977087cbb207f65b91debc240119"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a2364ef208346bbd4d468ee78cfc6a1a3"><td class="memItemLeft" align="right" valign="top">const std::string &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgraphar_1_1_vertex_info.html#a2364ef208346bbd4d468ee78cfc6a1a3">GetType</a> () const</td></tr>
 <tr class="separator:a2364ef208346bbd4d468ee78cfc6a1a3"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a39a607d51da7e73a0fae473e90a61825"><td class="memItemLeft" align="right" valign="top">IdType&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgraphar_1_1_vertex_info.html#a39a607d51da7e73a0fae473e90a61825">GetChunkSize</a> () const</td></tr>
@@ -218,7 +221,7 @@ Static Public Member Functions</h2></td></tr>
   </dd>
 </dl>
 
-<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00265">265</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00280">280</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
 
 </div>
 </div>
@@ -246,7 +249,7 @@ Static Public Member Functions</h2></td></tr>
   </dd>
 </dl>
 
-<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00384">384</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00399">399</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
 
 </div>
 </div>
@@ -275,7 +278,7 @@ Static Public Member Functions</h2></td></tr>
 <p>Returns the vertex info as a YAML formatted string.</p>
 <dl class="section return"><dt>Returns</dt><dd>A Result object containing the YAML string, or a <a class="el" href="classgraphar_1_1_status.html" title="Status outcome object (success or error)">Status</a> object indicating an error. </dd></dl>
 
-<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00482">482</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00518">518</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
 
 </div>
 </div>
@@ -296,7 +299,7 @@ Static Public Member Functions</h2></td></tr>
 <p>Get the chunk size of the vertex.</p>
 <dl class="section return"><dt>Returns</dt><dd>The chunk size of the vertex. </dd></dl>
 
-<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00277">277</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00292">292</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
 
 </div>
 </div>
@@ -335,7 +338,7 @@ Static Public Member Functions</h2></td></tr>
 </dl>
 <dl class="section return"><dt>Returns</dt><dd>A Result object containing the file path, or a KeyError <a class="el" href="classgraphar_1_1_status.html" title="Status outcome object (success or error)">Status</a> object if the property group is not found in the vertex info. </dd></dl>
 
-<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00289">289</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00304">304</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
 
 </div>
 </div>
@@ -355,7 +358,7 @@ Static Public Member Functions</h2></td></tr>
 </div><div class="memdoc">
 <p>Get the labels of the vertex. </p><dl class="section return"><dt>Returns</dt><dd>The labels of the vertex. </dd></dl>
 
-<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00281">281</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00296">296</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
 
 </div>
 </div>
@@ -383,7 +386,7 @@ Static Public Member Functions</h2></td></tr>
 </dl>
 <dl class="section return"><dt>Returns</dt><dd>A Result object containing the path prefix, or a KeyError <a class="el" href="classgraphar_1_1_status.html" title="Status outcome object (success or error)">Status</a> object if the property group is not found in the vertex info. </dd></dl>
 
-<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00298">298</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00313">313</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
 
 </div>
 </div>
@@ -404,7 +407,7 @@ Static Public Member Functions</h2></td></tr>
 <p>Get the path prefix of the vertex.</p>
 <dl class="section return"><dt>Returns</dt><dd>The path prefix of the vertex. </dd></dl>
 
-<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00279">279</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00294">294</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
 
 </div>
 </div>
@@ -432,7 +435,7 @@ Static Public Member Functions</h2></td></tr>
 </dl>
 <dl class="section return"><dt>Returns</dt><dd>property group may be nullptr if the property is not found. </dd></dl>
 
-<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00314">314</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00329">329</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
 
 </div>
 </div>
@@ -460,7 +463,7 @@ Static Public Member Functions</h2></td></tr>
 </dl>
 <dl class="section return"><dt>Returns</dt><dd>property group may be nullptr if the index is out of range. </dd></dl>
 
-<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00320">320</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00335">335</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
 
 </div>
 </div>
@@ -480,7 +483,7 @@ Static Public Member Functions</h2></td></tr>
 </div><div class="memdoc">
 <p>Get the property groups of the vertex. </p>
 
-<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00328">328</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00343">343</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
 
 </div>
 </div>
@@ -508,7 +511,7 @@ Static Public Member Functions</h2></td></tr>
 </dl>
 <dl class="section return"><dt>Returns</dt><dd>A Result object containing the data type of the property, or a KeyError <a class="el" href="classgraphar_1_1_status.html" title="Status outcome object (success or error)">Status</a> object if the property is not found. </dd></dl>
 
-<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00366">366</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00381">381</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
 
 </div>
 </div>
@@ -529,7 +532,7 @@ Static Public Member Functions</h2></td></tr>
 <p>Get the type of the vertex.</p>
 <dl class="section return"><dt>Returns</dt><dd>The type of the vertex. </dd></dl>
 
-<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00275">275</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00290">290</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
 
 </div>
 </div>
@@ -550,7 +553,7 @@ Static Public Member Functions</h2></td></tr>
 <p>Get the file path for the number of vertices.</p>
 <dl class="section return"><dt>Returns</dt><dd>The file path for the number of vertices. </dd></dl>
 
-<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00306">306</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00321">321</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
 
 </div>
 </div>
@@ -578,7 +581,7 @@ Static Public Member Functions</h2></td></tr>
 </dl>
 <dl class="section return"><dt>Returns</dt><dd>True if the property exists in the vertex info, False otherwise. </dd></dl>
 
-<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00348">348</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00363">363</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
 
 </div>
 </div>
@@ -606,7 +609,7 @@ Static Public Member Functions</h2></td></tr>
 </dl>
 <dl class="section return"><dt>Returns</dt><dd>True if the property group exists in the vertex info, False otherwise. </dd></dl>
 
-<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00353">353</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00368">368</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
 
 </div>
 </div>
@@ -634,7 +637,7 @@ Static Public Member Functions</h2></td></tr>
 </dl>
 <dl class="section return"><dt>Returns</dt><dd>True if the property is a nullable key, False otherwise. </dd></dl>
 
-<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00340">340</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00355">355</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
 
 </div>
 </div>
@@ -662,7 +665,7 @@ Static Public Member Functions</h2></td></tr>
 </dl>
 <dl class="section return"><dt>Returns</dt><dd>True if the property is a primary key, False otherwise. </dd></dl>
 
-<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00332">332</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00347">347</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
 
 </div>
 </div>
@@ -683,7 +686,7 @@ Static Public Member Functions</h2></td></tr>
 <p>Returns whether the vertex info is validated.</p>
 <dl class="section return"><dt>Returns</dt><dd>True if the vertex info is valid, False otherwise. </dd></dl>
 
-<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00401">401</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00437">437</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
 
 </div>
 </div>
@@ -719,7 +722,7 @@ Static Public Member Functions</h2></td></tr>
 </dl>
 <dl class="section return"><dt>Returns</dt><dd>A Result object containing the <a class="el" href="classgraphar_1_1_vertex_info.html" title="VertexInfo is a class to describe the vertex information, including the vertex type,...">VertexInfo</a> object, or a <a class="el" href="classgraphar_1_1_status.html" title="Status outcome object (success or error)">Status</a>. </dd></dl>
 
-<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00477">477</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00513">513</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
 
 </div>
 </div>
@@ -755,7 +758,7 @@ Static Public Member Functions</h2></td></tr>
 </dl>
 <dl class="section return"><dt>Returns</dt><dd>A Result object containing the <a class="el" href="classgraphar_1_1_vertex_info.html" title="VertexInfo is a class to describe the vertex information, including the vertex type,...">VertexInfo</a> object, or a <a class="el" href="classgraphar_1_1_status.html" title="Status outcome object (success or error)">Status</a> object indicating an error. </dd></dl>
 
-<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00415">415</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00451">451</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
 
 </div>
 </div>
@@ -776,7 +779,36 @@ Static Public Member Functions</h2></td></tr>
 <p>Get the number of property groups of the vertex.</p>
 <dl class="section return"><dt>Returns</dt><dd>The number of property groups of the vertex. </dd></dl>
 
-<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00310">310</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00325">325</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+
+</div>
+</div>
+<a id="a8432977087cbb207f65b91debc240119"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a8432977087cbb207f65b91debc240119">&#9670;&nbsp;</a></span>RemovePropertyGroup()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">Result&lt; std::shared_ptr&lt; <a class="el" href="classgraphar_1_1_vertex_info.html">VertexInfo</a> &gt; &gt; graphar::VertexInfo::RemovePropertyGroup </td>
+          <td>(</td>
+          <td class="paramtype">std::shared_ptr&lt; <a class="el" href="classgraphar_1_1_property_group.html">PropertyGroup</a> &gt;&#160;</td>
+          <td class="paramname"><em>property_group</em></td><td>)</td>
+          <td> const</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Removes a property group from the <a class="el" href="classgraphar_1_1_vertex_info.html" title="VertexInfo is a class to describe the vertex information, including the vertex type,...">VertexInfo</a> instance and returns a new <a class="el" href="classgraphar_1_1_vertex_info.html" title="VertexInfo is a class to describe the vertex information, including the vertex type,...">VertexInfo</a>. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">property_group</td><td>The property group to remove. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>A <a class="el" href="classgraphar_1_1_status.html" title="Status outcome object (success or error)">Status</a> object indicating the success or failure of the operation. Returns InvalidOperation if the property group is not contained. </dd></dl>
+
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00416">416</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
 
 </div>
 </div>
@@ -804,7 +836,7 @@ Static Public Member Functions</h2></td></tr>
 </dl>
 <dl class="section return"><dt>Returns</dt><dd>A <a class="el" href="classgraphar_1_1_status.html" title="Status outcome object (success or error)">Status</a> object indicating success or failure. </dd></dl>
 
-<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00530">530</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00566">566</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
 
 </div>
 </div>
@@ -825,7 +857,7 @@ Static Public Member Functions</h2></td></tr>
 <p>Get the version info of the vertex.</p>
 <dl class="section return"><dt>Returns</dt><dd>The version info of the vertex. </dd></dl>
 
-<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00285">285</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00300">300</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
 
 </div>
 </div>
diff --git a/docs/cpp/classgraphar_1_1_vertex_info_1_1_impl.html b/docs/cpp/classgraphar_1_1_vertex_info_1_1_impl.html
index 13d035a..fb8a2be 100644
--- a/docs/cpp/classgraphar_1_1_vertex_info_1_1_impl.html
+++ b/docs/cpp/classgraphar_1_1_vertex_info_1_1_impl.html
@@ -122,7 +122,7 @@ std::unordered_map&lt; std::string, Cardinality &gt;&#160;</td><td class="memIte
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
 <div class="textblock">
-<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00197">197</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="graph__info_8cc_source.html#l00212">212</a> of file <a class="el" href="graph__info_8cc_source.html">graph_info.cc</a>.</p>
 </div><hr/>The documentation for this class was generated from the following file:<ul>
 <li>src/graphar/<a class="el" href="graph__info_8cc_source.html">graph_info.cc</a></li>
 </ul>
diff --git a/docs/cpp/functions_func_r.html b/docs/cpp/functions_func_r.html
index 5c7785e..2788d4b 100644
--- a/docs/cpp/functions_func_r.html
+++ b/docs/cpp/functions_func_r.html
@@ -71,6 +71,19 @@ $(function() {
 <li>ReadFileToValue()
 : <a class="el" href="classgraphar_1_1_file_system.html#aa014a28119399836283a573c9abd97b7">graphar::FileSystem</a>
 </li>
+<li>RemoveAdjacentList()
+: <a class="el" href="classgraphar_1_1_edge_info.html#a7db36496a4cf0eb517b463de5caa125f">graphar::EdgeInfo</a>
+</li>
+<li>RemoveEdge()
+: <a class="el" href="classgraphar_1_1_graph_info.html#acc0e018222ae59e749a52b3678e6529a">graphar::GraphInfo</a>
+</li>
+<li>RemovePropertyGroup()
+: <a class="el" href="classgraphar_1_1_edge_info.html#a264853429b84060bbe36c671d5bc8963">graphar::EdgeInfo</a>
+, <a class="el" href="classgraphar_1_1_vertex_info.html#a8432977087cbb207f65b91debc240119">graphar::VertexInfo</a>
+</li>
+<li>RemoveVertex()
+: <a class="el" href="classgraphar_1_1_graph_info.html#ad64a71966ca197ae14ea21ff8787b769">graphar::GraphInfo</a>
+</li>
 </ul>
 </div><!-- contents -->
 <!--
diff --git a/docs/cpp/functions_r.html b/docs/cpp/functions_r.html
index 68cdccf..f0587c6 100644
--- a/docs/cpp/functions_r.html
+++ b/docs/cpp/functions_r.html
@@ -71,6 +71,19 @@ $(function() {
 <li>ReadFileToValue()
 : <a class="el" href="classgraphar_1_1_file_system.html#aa014a28119399836283a573c9abd97b7">graphar::FileSystem</a>
 </li>
+<li>RemoveAdjacentList()
+: <a class="el" href="classgraphar_1_1_edge_info.html#a7db36496a4cf0eb517b463de5caa125f">graphar::EdgeInfo</a>
+</li>
+<li>RemoveEdge()
+: <a class="el" href="classgraphar_1_1_graph_info.html#acc0e018222ae59e749a52b3678e6529a">graphar::GraphInfo</a>
+</li>
+<li>RemovePropertyGroup()
+: <a class="el" href="classgraphar_1_1_edge_info.html#a264853429b84060bbe36c671d5bc8963">graphar::EdgeInfo</a>
+, <a class="el" href="classgraphar_1_1_vertex_info.html#a8432977087cbb207f65b91debc240119">graphar::VertexInfo</a>
+</li>
+<li>RemoveVertex()
+: <a class="el" href="classgraphar_1_1_graph_info.html#ad64a71966ca197ae14ea21ff8787b769">graphar::GraphInfo</a>
+</li>
 </ul>
 </div><!-- contents -->
 <!--
diff --git a/docs/cpp/graph__info_8cc_source.html b/docs/cpp/graph__info_8cc_source.html
index cd3200e..b1f8b8f 100644
--- a/docs/cpp/graph__info_8cc_source.html
+++ b/docs/cpp/graph__info_8cc_source.html
@@ -143,1415 +143,1532 @@ $(function() {
 <div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;  <span class="keywordflow">return</span> out;</div>
 <div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;}</div>
 <div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160; </div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;std::string BuildPath(<span class="keyword">const</span> std::vector&lt;std::string&gt;&amp; paths) {</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;  std::string path;</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; p : paths) {</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;    <span class="keywordflow">if</span> (p.back() == <span class="charliteral">&#39;/&#39;</span>) {</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;      path += p;</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;    } <span class="keywordflow">else</span> {</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;      path += p + <span class="stringliteral">&quot;/&quot;</span>;</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;    }</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;  }</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;  <span class="keywordflow">return</span> path;</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;}</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;}  <span class="comment">// namespace</span></div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160; </div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;<span class="keywordtype">bool</span> operator==(<span class="keyword">const</span> Property&amp; lhs, <span class="keyword">const</span> Property&amp; rhs) {</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;  <span class="keywordflow">return</span> (lhs.name == rhs.name) &amp;&amp; (lhs.type == rhs.type) &amp;&amp;</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;         (lhs.is_primary == rhs.is_primary) &amp;&amp;</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;         (lhs.is_nullable == rhs.is_nullable) &amp;&amp;</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;         (lhs.cardinality == rhs.cardinality);</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;}</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160; </div>
-<div class="line"><a name="l00094"></a><span class="lineno"><a class="line" href="classgraphar_1_1_property_group.html#abb84d3d9d16e5efc52c96089a977c60d">   94</a></span>&#160;<a class="code" href="classgraphar_1_1_property_group.html#abb84d3d9d16e5efc52c96089a977c60d">PropertyGroup::PropertyGroup</a>(<span class="keyword">const</span> std::vector&lt;Property&gt;&amp; properties,</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;                             FileType file_type, <span class="keyword">const</span> std::string&amp; prefix)</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;    : properties_(properties), file_type_(file_type), prefix_(prefix) {</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;  <span class="keywordflow">if</span> (prefix_.empty() &amp;&amp; !properties_.empty()) {</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; p : properties_) {</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;      prefix_ += p.name + REGULAR_SEPARATOR;</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;    }</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;    prefix_.back() = <span class="charliteral">&#39;/&#39;</span>;</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;  }</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;}</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160; </div>
-<div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="classgraphar_1_1_property_group.html#af090f1d74049ce0222148ad02b26f81a">  105</a></span>&#160;<span class="keyword">const</span> std::vector&lt;Property&gt;&amp; <a class="code" href="classgraphar_1_1_property_group.html#af090f1d74049ce0222148ad02b26f81a">PropertyGroup::GetProperties</a>()<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;  <span class="keywordflow">return</span> properties_;</div>
+<div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
+<div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;std::vector&lt;T&gt; RemoveVectorElement(<span class="keyword">const</span> std::vector&lt;T&gt;&amp; values, <span class="keywordtype">size_t</span> index) {</div>
+<div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;  <span class="keywordflow">if</span> (index &gt;= values.size()) {</div>
+<div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;    <span class="keywordflow">return</span> values;</div>
+<div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;  }</div>
+<div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;  std::vector&lt;T&gt; out;</div>
+<div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;  out.reserve(values.size() - 1);</div>
+<div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; values.size(); ++i) {</div>
+<div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;    <span class="keywordflow">if</span> (i != index) {</div>
+<div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;      out.push_back(values[i]);</div>
+<div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;    }</div>
+<div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;  }</div>
+<div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;  <span class="keywordflow">return</span> out;</div>
+<div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;}</div>
+<div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160; </div>
+<div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;std::string BuildPath(<span class="keyword">const</span> std::vector&lt;std::string&gt;&amp; paths) {</div>
+<div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;  std::string path;</div>
+<div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; p : paths) {</div>
+<div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;    <span class="keywordflow">if</span> (p.back() == <span class="charliteral">&#39;/&#39;</span>) {</div>
+<div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;      path += p;</div>
+<div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;    } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;      path += p + <span class="stringliteral">&quot;/&quot;</span>;</div>
+<div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;    }</div>
+<div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;  }</div>
+<div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;  <span class="keywordflow">return</span> path;</div>
+<div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;}</div>
+<div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;}  <span class="comment">// namespace</span></div>
+<div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160; </div>
+<div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;<span class="keywordtype">bool</span> operator==(<span class="keyword">const</span> Property&amp; lhs, <span class="keyword">const</span> Property&amp; rhs) {</div>
+<div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;  <span class="keywordflow">return</span> (lhs.name == rhs.name) &amp;&amp; (lhs.type == rhs.type) &amp;&amp;</div>
+<div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;         (lhs.is_primary == rhs.is_primary) &amp;&amp;</div>
+<div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;         (lhs.is_nullable == rhs.is_nullable) &amp;&amp;</div>
+<div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;         (lhs.cardinality == rhs.cardinality);</div>
 <div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;}</div>
 <div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160; </div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;<span class="keywordtype">bool</span> PropertyGroup::HasProperty(<span class="keyword">const</span> std::string&amp; property_name)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; p : properties_) {</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;    <span class="keywordflow">if</span> (p.name == property_name) {</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;      <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;    }</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;  }</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;}</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160; </div>
-<div class="line"><a name="l00118"></a><span class="lineno"><a class="line" href="classgraphar_1_1_property_group.html#a9a1d4401d81fb2576ae3f3de21eb9e25">  118</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classgraphar_1_1_property_group.html#a9a1d4401d81fb2576ae3f3de21eb9e25">PropertyGroup::IsValidated</a>()<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;  <span class="keywordflow">if</span> (prefix_.empty() ||</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;      (file_type_ != FileType::CSV &amp;&amp; file_type_ != FileType::PARQUET &amp;&amp;</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;       file_type_ != FileType::ORC)) {</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;  }</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;  <span class="keywordflow">if</span> (properties_.empty()) {</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;  }</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;  std::unordered_set&lt;std::string&gt; check_property_unique_set;</div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; p : properties_) {</div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;    <span class="keywordflow">if</span> (p.name.empty() || p.type == <span class="keyword">nullptr</span>) {</div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;      <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;    }</div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;    <span class="keywordflow">if</span> (check_property_unique_set.find(p.name) !=</div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;        check_property_unique_set.end()) {</div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;      <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;    } <span class="keywordflow">else</span> {</div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;      check_property_unique_set.insert(p.name);</div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;    }</div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;    <span class="comment">// TODO(@acezen): support list type in csv file</span></div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;    <span class="keywordflow">if</span> (p.type-&gt;id() == Type::LIST &amp;&amp; file_type_ == FileType::CSV) {</div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;      <span class="comment">// list type is not supported in csv file</span></div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;      <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;    }</div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;    <span class="comment">// TODO(@yangxk): support cardinality in csv file</span></div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;    <span class="keywordflow">if</span> (p.cardinality != Cardinality::SINGLE &amp;&amp; file_type_ == FileType::CSV) {</div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;      <span class="comment">// list cardinality is not supported in csv file</span></div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;      <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;    }</div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;  }</div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;}</div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160; </div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;std::shared_ptr&lt;PropertyGroup&gt; CreatePropertyGroup(</div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;    <span class="keyword">const</span> std::vector&lt;Property&gt;&amp; properties, FileType file_type,</div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;    <span class="keyword">const</span> std::string&amp; prefix) {</div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;  <span class="keywordflow">if</span> (properties.empty()) {</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;    <span class="comment">// empty property group is not allowed</span></div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;  }</div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;  <span class="keywordflow">return</span> std::make_shared&lt;PropertyGroup&gt;(properties, file_type, prefix);</div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;}</div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160; </div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;<span class="keywordtype">bool</span> operator==(<span class="keyword">const</span> PropertyGroup&amp; lhs, <span class="keyword">const</span> PropertyGroup&amp; rhs) {</div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;  <span class="keywordflow">return</span> (lhs.GetPrefix() == rhs.GetPrefix()) &amp;&amp;</div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;         (lhs.GetFileType() == rhs.GetFileType()) &amp;&amp;</div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;         (lhs.GetProperties() == rhs.GetProperties());</div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;}</div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160; </div>
-<div class="line"><a name="l00168"></a><span class="lineno"><a class="line" href="classgraphar_1_1_adjacent_list.html#ab31cbdbaae74305f7bf3ffbd76c93efc">  168</a></span>&#160;<a class="code" href="classgraphar_1_1_adjacent_list.html#ab31cbdbaae74305f7bf3ffbd76c93efc">AdjacentList::AdjacentList</a>(AdjListType type, FileType file_type,</div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;                           <span class="keyword">const</span> std::string&amp; prefix)</div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;    : type_(type), file_type_(file_type), prefix_(prefix) {</div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;  <span class="keywordflow">if</span> (prefix_.empty()) {</div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;    prefix_ = std::string(AdjListTypeToString(type_)) + <span class="stringliteral">&quot;/&quot;</span>;</div>
+<div class="line"><a name="l00109"></a><span class="lineno"><a class="line" href="classgraphar_1_1_property_group.html#abb84d3d9d16e5efc52c96089a977c60d">  109</a></span>&#160;<a class="code" href="classgraphar_1_1_property_group.html#abb84d3d9d16e5efc52c96089a977c60d">PropertyGroup::PropertyGroup</a>(<span class="keyword">const</span> std::vector&lt;Property&gt;&amp; properties,</div>
+<div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;                             FileType file_type, <span class="keyword">const</span> std::string&amp; prefix)</div>
+<div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;    : properties_(properties), file_type_(file_type), prefix_(prefix) {</div>
+<div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;  <span class="keywordflow">if</span> (prefix_.empty() &amp;&amp; !properties_.empty()) {</div>
+<div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; p : properties_) {</div>
+<div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;      prefix_ += p.name + REGULAR_SEPARATOR;</div>
+<div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;    }</div>
+<div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;    prefix_.back() = <span class="charliteral">&#39;/&#39;</span>;</div>
+<div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;  }</div>
+<div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;}</div>
+<div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160; </div>
+<div class="line"><a name="l00120"></a><span class="lineno"><a class="line" href="classgraphar_1_1_property_group.html#af090f1d74049ce0222148ad02b26f81a">  120</a></span>&#160;<span class="keyword">const</span> std::vector&lt;Property&gt;&amp; <a class="code" href="classgraphar_1_1_property_group.html#af090f1d74049ce0222148ad02b26f81a">PropertyGroup::GetProperties</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;  <span class="keywordflow">return</span> properties_;</div>
+<div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;}</div>
+<div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160; </div>
+<div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;<span class="keywordtype">bool</span> PropertyGroup::HasProperty(<span class="keyword">const</span> std::string&amp; property_name)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; p : properties_) {</div>
+<div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;    <span class="keywordflow">if</span> (p.name == property_name) {</div>
+<div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;      <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;    }</div>
+<div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;  }</div>
+<div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;}</div>
+<div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160; </div>
+<div class="line"><a name="l00133"></a><span class="lineno"><a class="line" href="classgraphar_1_1_property_group.html#a9a1d4401d81fb2576ae3f3de21eb9e25">  133</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classgraphar_1_1_property_group.html#a9a1d4401d81fb2576ae3f3de21eb9e25">PropertyGroup::IsValidated</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;  <span class="keywordflow">if</span> (prefix_.empty() ||</div>
+<div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;      (file_type_ != FileType::CSV &amp;&amp; file_type_ != FileType::PARQUET &amp;&amp;</div>
+<div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;       file_type_ != FileType::ORC)) {</div>
+<div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;  }</div>
+<div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;  <span class="keywordflow">if</span> (properties_.empty()) {</div>
+<div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;  }</div>
+<div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;  std::unordered_set&lt;std::string&gt; check_property_unique_set;</div>
+<div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; p : properties_) {</div>
+<div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;    <span class="keywordflow">if</span> (p.name.empty() || p.type == <span class="keyword">nullptr</span>) {</div>
+<div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;      <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;    }</div>
+<div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;    <span class="keywordflow">if</span> (check_property_unique_set.find(p.name) !=</div>
+<div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;        check_property_unique_set.end()) {</div>
+<div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;      <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;    } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;      check_property_unique_set.insert(p.name);</div>
+<div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;    }</div>
+<div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;    <span class="comment">// TODO(@acezen): support list type in csv file</span></div>
+<div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;    <span class="keywordflow">if</span> (p.type-&gt;id() == Type::LIST &amp;&amp; file_type_ == FileType::CSV) {</div>
+<div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;      <span class="comment">// list type is not supported in csv file</span></div>
+<div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;      <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;    }</div>
+<div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;    <span class="comment">// TODO(@yangxk): support cardinality in csv file</span></div>
+<div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;    <span class="keywordflow">if</span> (p.cardinality != Cardinality::SINGLE &amp;&amp; file_type_ == FileType::CSV) {</div>
+<div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;      <span class="comment">// list cardinality is not supported in csv file</span></div>
+<div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;      <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;    }</div>
+<div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;  }</div>
+<div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;}</div>
+<div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160; </div>
+<div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;std::shared_ptr&lt;PropertyGroup&gt; CreatePropertyGroup(</div>
+<div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;    <span class="keyword">const</span> std::vector&lt;Property&gt;&amp; properties, FileType file_type,</div>
+<div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;    <span class="keyword">const</span> std::string&amp; prefix) {</div>
+<div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;  <span class="keywordflow">if</span> (properties.empty()) {</div>
+<div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;    <span class="comment">// empty property group is not allowed</span></div>
+<div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
 <div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;  }</div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;}</div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160; </div>
-<div class="line"><a name="l00176"></a><span class="lineno"><a class="line" href="classgraphar_1_1_adjacent_list.html#a592ba95843997b321f5545e950f03a57">  176</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classgraphar_1_1_adjacent_list.html#a592ba95843997b321f5545e950f03a57">AdjacentList::IsValidated</a>()<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;  <span class="keywordflow">if</span> (type_ != AdjListType::unordered_by_source &amp;&amp;</div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;      type_ != AdjListType::ordered_by_source &amp;&amp;</div>
-<div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;      type_ != AdjListType::unordered_by_dest &amp;&amp;</div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;      type_ != AdjListType::ordered_by_dest) {</div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;  }</div>
-<div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;  <span class="keywordflow">if</span> (prefix_.empty() ||</div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;      (file_type_ != FileType::CSV &amp;&amp; file_type_ != FileType::PARQUET &amp;&amp;</div>
-<div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;       file_type_ != FileType::ORC)) {</div>
-<div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;  }</div>
-<div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;  <span class="keywordflow">return</span> std::make_shared&lt;PropertyGroup&gt;(properties, file_type, prefix);</div>
+<div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;}</div>
+<div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160; </div>
+<div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;<span class="keywordtype">bool</span> operator==(<span class="keyword">const</span> PropertyGroup&amp; lhs, <span class="keyword">const</span> PropertyGroup&amp; rhs) {</div>
+<div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;  <span class="keywordflow">return</span> (lhs.GetPrefix() == rhs.GetPrefix()) &amp;&amp;</div>
+<div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;         (lhs.GetFileType() == rhs.GetFileType()) &amp;&amp;</div>
+<div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;         (lhs.GetProperties() == rhs.GetProperties());</div>
+<div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;}</div>
+<div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160; </div>
+<div class="line"><a name="l00183"></a><span class="lineno"><a class="line" href="classgraphar_1_1_adjacent_list.html#ab31cbdbaae74305f7bf3ffbd76c93efc">  183</a></span>&#160;<a class="code" href="classgraphar_1_1_adjacent_list.html#ab31cbdbaae74305f7bf3ffbd76c93efc">AdjacentList::AdjacentList</a>(AdjListType type, FileType file_type,</div>
+<div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;                           <span class="keyword">const</span> std::string&amp; prefix)</div>
+<div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;    : type_(type), file_type_(file_type), prefix_(prefix) {</div>
+<div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;  <span class="keywordflow">if</span> (prefix_.empty()) {</div>
+<div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;    prefix_ = std::string(AdjListTypeToString(type_)) + <span class="stringliteral">&quot;/&quot;</span>;</div>
+<div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;  }</div>
 <div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;}</div>
 <div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160; </div>
-<div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;std::shared_ptr&lt;AdjacentList&gt; CreateAdjacentList(AdjListType type,</div>
-<div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;                                                 FileType file_type,</div>
-<div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;                                                 <span class="keyword">const</span> std::string&amp; prefix) {</div>
-<div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;  <span class="keywordflow">return</span> std::make_shared&lt;AdjacentList&gt;(type, file_type, prefix);</div>
-<div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;}</div>
-<div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160; </div>
-<div class="line"><a name="l00197"></a><span class="lineno"><a class="line" href="classgraphar_1_1_vertex_info_1_1_impl.html">  197</a></span>&#160;<span class="keyword">class </span><a class="code" href="classgraphar_1_1_vertex_info_1_1_impl.html">VertexInfo::Impl</a> {</div>
-<div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160; <span class="keyword">public</span>:</div>
-<div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;  <a class="code" href="classgraphar_1_1_vertex_info_1_1_impl.html">Impl</a>(<span class="keyword">const</span> std::string&amp; type, IdType chunk_size, <span class="keyword">const</span> std::string&amp; prefix,</div>
-<div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;       <span class="keyword">const</span> PropertyGroupVector&amp; property_groups,</div>
-<div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;       <span class="keyword">const</span> std::vector&lt;std::string&gt;&amp; labels,</div>
-<div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;       std::shared_ptr&lt;const InfoVersion&gt; <a class="code" href="classgraphar_1_1_vertex_info.html#a47c84aab28674b5250a26c97806f2f48">version</a>)</div>
-<div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;      : type_(type),</div>
-<div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;        chunk_size_(chunk_size),</div>
-<div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;        property_groups_(std::move(property_groups)),</div>
-<div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;        labels_(labels),</div>
-<div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;        prefix_(prefix),</div>
-<div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;        version_(std::move(<a class="code" href="classgraphar_1_1_vertex_info.html#a47c84aab28674b5250a26c97806f2f48">version</a>)) {</div>
-<div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;    <span class="keywordflow">if</span> (prefix_.empty()) {</div>
-<div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;      prefix_ = type_ + <span class="stringliteral">&quot;/&quot;</span>;  <span class="comment">// default prefix</span></div>
-<div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;    }</div>
-<div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; property_groups_.size(); i++) {</div>
-<div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;      <span class="keyword">const</span> <span class="keyword">auto</span>&amp; pg = property_groups_[i];</div>
-<div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;      <span class="keywordflow">if</span> (!pg) {</div>
-<div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;        <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;      }</div>
-<div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;      <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; p : pg-&gt;GetProperties()) {</div>
-<div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;        property_name_to_index_.emplace(p.name, i);</div>
-<div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;        property_name_to_primary_.emplace(p.name, p.is_primary);</div>
-<div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;        property_name_to_nullable_.emplace(p.name, p.is_nullable);</div>
-<div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;        property_name_to_type_.emplace(p.name, p.type);</div>
-<div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;        property_name_to_cardinality_.emplace(p.name, p.cardinality);</div>
-<div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;      }</div>
-<div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;    }</div>
-<div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;  }</div>
-<div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160; </div>
-<div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;  <span class="keywordtype">bool</span> is_validated() <span class="keyword">const</span> noexcept {</div>
-<div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;    <span class="keywordflow">if</span> (type_.empty() || chunk_size_ &lt;= 0 || prefix_.empty()) {</div>
-<div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;      <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;    }</div>
-<div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;    std::unordered_set&lt;std::string&gt; check_property_unique_set;</div>
-<div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; pg : property_groups_) {</div>
-<div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;      <span class="comment">// check if property group is validated</span></div>
-<div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;      <span class="keywordflow">if</span> (!pg || !pg-&gt;IsValidated()) {</div>
-<div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;        <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;      }</div>
-<div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;      <span class="comment">// check if property name is unique in all property groups</span></div>
-<div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;      <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; p : pg-&gt;GetProperties()) {</div>
-<div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;        <span class="keywordflow">if</span> (check_property_unique_set.find(p.name) !=</div>
-<div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160;            check_property_unique_set.end()) {</div>
-<div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;          <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;        } <span class="keywordflow">else</span> {</div>
-<div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;          check_property_unique_set.insert(p.name);</div>
-<div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;        }</div>
-<div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;      }</div>
-<div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;    }</div>
-<div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160; </div>
-<div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;  }</div>
-<div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160; </div>
-<div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;  std::string type_;</div>
-<div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;  IdType chunk_size_;</div>
-<div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;  PropertyGroupVector property_groups_;</div>
-<div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;  std::vector&lt;std::string&gt; labels_;</div>
-<div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;  std::string prefix_;</div>
-<div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;  std::shared_ptr&lt;const InfoVersion&gt; version_;</div>
-<div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;  std::unordered_map&lt;std::string, int&gt; property_name_to_index_;</div>
-<div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;  std::unordered_map&lt;std::string, bool&gt; property_name_to_primary_;</div>
-<div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;  std::unordered_map&lt;std::string, bool&gt; property_name_to_nullable_;</div>
-<div class="line"><a name="l00260"></a><span class="lineno">  260</span>&#160;  std::unordered_map&lt;std::string, std::shared_ptr&lt;DataType&gt;&gt;</div>
-<div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;      property_name_to_type_;</div>
-<div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;  std::unordered_map&lt;std::string, Cardinality&gt; property_name_to_cardinality_;</div>
-<div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;};</div>
-<div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160; </div>
-<div class="line"><a name="l00265"></a><span class="lineno"><a class="line" href="classgraphar_1_1_vertex_info.html#acddb12cfcf7c6bfe1f1937f984828312">  265</a></span>&#160;<a class="code" href="classgraphar_1_1_vertex_info.html#acddb12cfcf7c6bfe1f1937f984828312">VertexInfo::VertexInfo</a>(<span class="keyword">const</span> std::string&amp; type, IdType chunk_size,</div>
-<div class="line"><a name="l00266"></a><span class="lineno">  266</span>&#160;                       <span class="keyword">const</span> PropertyGroupVector&amp; property_groups,</div>
-<div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;                       <span class="keyword">const</span> std::vector&lt;std::string&gt;&amp; labels,</div>
-<div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;                       <span class="keyword">const</span> std::string&amp; prefix,</div>
-<div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160;                       std::shared_ptr&lt;const InfoVersion&gt; version)</div>
-<div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160;    : impl_(new <a class="code" href="classgraphar_1_1_vertex_info_1_1_impl.html">Impl</a>(type, chunk_size, prefix, property_groups, labels,</div>
-<div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;                     version)) {}</div>
-<div class="line"><a name="l00272"></a><span class="lineno">  272</span>&#160; </div>
-<div class="line"><a name="l00273"></a><span class="lineno">  273</span>&#160;VertexInfo::~VertexInfo() = <span class="keywordflow">default</span>;</div>
-<div class="line"><a name="l00274"></a><span class="lineno">  274</span>&#160; </div>
-<div class="line"><a name="l00275"></a><span class="lineno"><a class="line" href="classgraphar_1_1_vertex_info.html#a2364ef208346bbd4d468ee78cfc6a1a3">  275</a></span>&#160;<span class="keyword">const</span> std::string&amp; <a class="code" href="classgraphar_1_1_vertex_info.html#a2364ef208346bbd4d468ee78cfc6a1a3">VertexInfo::GetType</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> impl_-&gt;type_; }</div>
-<div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160; </div>
-<div class="line"><a name="l00277"></a><span class="lineno"><a class="line" href="classgraphar_1_1_vertex_info.html#a39a607d51da7e73a0fae473e90a61825">  277</a></span>&#160;IdType <a class="code" href="classgraphar_1_1_vertex_info.html#a39a607d51da7e73a0fae473e90a61825">VertexInfo::GetChunkSize</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> impl_-&gt;chunk_size_; }</div>
-<div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160; </div>
-<div class="line"><a name="l00279"></a><span class="lineno"><a class="line" href="classgraphar_1_1_vertex_info.html#a8fb76a180c2fb8192961a27862f5aa69">  279</a></span>&#160;<span class="keyword">const</span> std::string&amp; <a class="code" href="classgraphar_1_1_vertex_info.html#a8fb76a180c2fb8192961a27862f5aa69">VertexInfo::GetPrefix</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> impl_-&gt;prefix_; }</div>
-<div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160; </div>
-<div class="line"><a name="l00281"></a><span class="lineno"><a class="line" href="classgraphar_1_1_vertex_info.html#a34a49ce4905632889db3f969986cbe75">  281</a></span>&#160;<span class="keyword">const</span> std::vector&lt;std::string&gt;&amp; <a class="code" href="classgraphar_1_1_vertex_info.html#a34a49ce4905632889db3f969986cbe75">VertexInfo::GetLabels</a>()<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;  <span class="keywordflow">return</span> impl_-&gt;labels_;</div>
-<div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160;}</div>
-<div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160; </div>
-<div class="line"><a name="l00285"></a><span class="lineno"><a class="line" href="classgraphar_1_1_vertex_info.html#a47c84aab28674b5250a26c97806f2f48">  285</a></span>&#160;<span class="keyword">const</span> std::shared_ptr&lt;const InfoVersion&gt;&amp; <a class="code" href="classgraphar_1_1_vertex_info.html#a47c84aab28674b5250a26c97806f2f48">VertexInfo::version</a>()<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;  <span class="keywordflow">return</span> impl_-&gt;version_;</div>
-<div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;}</div>
-<div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160; </div>
-<div class="line"><a name="l00289"></a><span class="lineno"><a class="line" href="classgraphar_1_1_vertex_info.html#a65faa894acf765eae9c7d4e34dff6306">  289</a></span>&#160;Result&lt;std::string&gt; <a class="code" href="classgraphar_1_1_vertex_info.html#a65faa894acf765eae9c7d4e34dff6306">VertexInfo::GetFilePath</a>(</div>
-<div class="line"><a name="l00290"></a><span class="lineno">  290</span>&#160;    std::shared_ptr&lt;PropertyGroup&gt; property_group, IdType chunk_index)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;  <span class="keywordflow">if</span> (property_group == <span class="keyword">nullptr</span>) {</div>
-<div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#a9ca4be37aae8dfea7e6ef54920e0073f">Status::Invalid</a>(<span class="stringliteral">&quot;property group is nullptr&quot;</span>);</div>
-<div class="line"><a name="l00293"></a><span class="lineno">  293</span>&#160;  }</div>
-<div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;  <span class="keywordflow">return</span> BuildPath({impl_-&gt;prefix_, property_group-&gt;GetPrefix()}) + <span class="stringliteral">&quot;chunk&quot;</span> +</div>
-<div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;         std::to_string(chunk_index);</div>
-<div class="line"><a name="l00296"></a><span class="lineno">  296</span>&#160;}</div>
-<div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160; </div>
-<div class="line"><a name="l00298"></a><span class="lineno"><a class="line" href="classgraphar_1_1_vertex_info.html#a3214a62ac41be6cb53c22894d2926710">  298</a></span>&#160;Result&lt;std::string&gt; <a class="code" href="classgraphar_1_1_vertex_info.html#a3214a62ac41be6cb53c22894d2926710">VertexInfo::GetPathPrefix</a>(</div>
-<div class="line"><a name="l00299"></a><span class="lineno">  299</span>&#160;    std::shared_ptr&lt;PropertyGroup&gt; property_group)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00300"></a><span class="lineno">  300</span>&#160;  <span class="keywordflow">if</span> (property_group == <span class="keyword">nullptr</span>) {</div>
-<div class="line"><a name="l00301"></a><span class="lineno">  301</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#a9ca4be37aae8dfea7e6ef54920e0073f">Status::Invalid</a>(<span class="stringliteral">&quot;property group is nullptr&quot;</span>);</div>
-<div class="line"><a name="l00302"></a><span class="lineno">  302</span>&#160;  }</div>
-<div class="line"><a name="l00303"></a><span class="lineno">  303</span>&#160;  <span class="keywordflow">return</span> BuildPath({impl_-&gt;prefix_, property_group-&gt;GetPrefix()});</div>
-<div class="line"><a name="l00304"></a><span class="lineno">  304</span>&#160;}</div>
-<div class="line"><a name="l00305"></a><span class="lineno">  305</span>&#160; </div>
-<div class="line"><a name="l00306"></a><span class="lineno"><a class="line" href="classgraphar_1_1_vertex_info.html#aad61b0a40a4bef344fad93cb1332d97d">  306</a></span>&#160;Result&lt;std::string&gt; <a class="code" href="classgraphar_1_1_vertex_info.html#aad61b0a40a4bef344fad93cb1332d97d">VertexInfo::GetVerticesNumFilePath</a>()<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00307"></a><span class="lineno">  307</span>&#160;  <span class="keywordflow">return</span> BuildPath({impl_-&gt;prefix_}) + <span class="stringliteral">&quot;vertex_count&quot;</span>;</div>
-<div class="line"><a name="l00308"></a><span class="lineno">  308</span>&#160;}</div>
-<div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160; </div>
-<div class="line"><a name="l00310"></a><span class="lineno"><a class="line" href="classgraphar_1_1_vertex_info.html#a7917824d18f7c84a02859f18b47e77fe">  310</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="classgraphar_1_1_vertex_info.html#a7917824d18f7c84a02859f18b47e77fe">VertexInfo::PropertyGroupNum</a>()<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00311"></a><span class="lineno">  311</span>&#160;  <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(impl_-&gt;property_groups_.size());</div>
-<div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160;}</div>
-<div class="line"><a name="l00313"></a><span class="lineno">  313</span>&#160; </div>
-<div class="line"><a name="l00314"></a><span class="lineno"><a class="line" href="classgraphar_1_1_vertex_info.html#a2a4cc44b7db8784bdb0e9691c7ad0fba">  314</a></span>&#160;std::shared_ptr&lt;PropertyGroup&gt; <a class="code" href="classgraphar_1_1_vertex_info.html#a2a4cc44b7db8784bdb0e9691c7ad0fba">VertexInfo::GetPropertyGroup</a>(</div>
-<div class="line"><a name="l00315"></a><span class="lineno">  315</span>&#160;    <span class="keyword">const</span> std::string&amp; property_name)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00316"></a><span class="lineno">  316</span>&#160;  <span class="keywordtype">int</span> i = LookupKeyIndex(impl_-&gt;property_name_to_index_, property_name);</div>
-<div class="line"><a name="l00317"></a><span class="lineno">  317</span>&#160;  <span class="keywordflow">return</span> i == -1 ? nullptr : impl_-&gt;property_groups_[i];</div>
-<div class="line"><a name="l00318"></a><span class="lineno">  318</span>&#160;}</div>
-<div class="line"><a name="l00319"></a><span class="lineno">  319</span>&#160; </div>
-<div class="line"><a name="l00320"></a><span class="lineno"><a class="line" href="classgraphar_1_1_vertex_info.html#af6106f8fa90d876a0e97f58c7c39db33">  320</a></span>&#160;std::shared_ptr&lt;PropertyGroup&gt; <a class="code" href="classgraphar_1_1_vertex_info.html#af6106f8fa90d876a0e97f58c7c39db33">VertexInfo::GetPropertyGroupByIndex</a>(</div>
-<div class="line"><a name="l00321"></a><span class="lineno">  321</span>&#160;    <span class="keywordtype">int</span> index)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00322"></a><span class="lineno">  322</span>&#160;  <span class="keywordflow">if</span> (index &lt; 0 || index &gt;= <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(impl_-&gt;property_groups_.size())) {</div>
-<div class="line"><a name="l00323"></a><span class="lineno">  323</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
-<div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160;  }</div>
-<div class="line"><a name="l00325"></a><span class="lineno">  325</span>&#160;  <span class="keywordflow">return</span> impl_-&gt;property_groups_[index];</div>
-<div class="line"><a name="l00326"></a><span class="lineno">  326</span>&#160;}</div>
-<div class="line"><a name="l00327"></a><span class="lineno">  327</span>&#160; </div>
-<div class="line"><a name="l00328"></a><span class="lineno"><a class="line" href="classgraphar_1_1_vertex_info.html#aff9aadd406180802facb14d6a4b5e72e">  328</a></span>&#160;<span class="keyword">const</span> PropertyGroupVector&amp; <a class="code" href="classgraphar_1_1_vertex_info.html#aff9aadd406180802facb14d6a4b5e72e">VertexInfo::GetPropertyGroups</a>()<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00329"></a><span class="lineno">  329</span>&#160;  <span class="keywordflow">return</span> impl_-&gt;property_groups_;</div>
-<div class="line"><a name="l00330"></a><span class="lineno">  330</span>&#160;}</div>
-<div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160; </div>
-<div class="line"><a name="l00332"></a><span class="lineno"><a class="line" href="classgraphar_1_1_vertex_info.html#a68f7407348b39115e0fa4d44750e9d37">  332</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classgraphar_1_1_vertex_info.html#a68f7407348b39115e0fa4d44750e9d37">VertexInfo::IsPrimaryKey</a>(<span class="keyword">const</span> std::string&amp; property_name)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00333"></a><span class="lineno">  333</span>&#160;  <span class="keyword">auto</span> it = impl_-&gt;property_name_to_primary_.find(property_name);</div>
-<div class="line"><a name="l00334"></a><span class="lineno">  334</span>&#160;  <span class="keywordflow">if</span> (it == impl_-&gt;property_name_to_primary_.end()) {</div>
-<div class="line"><a name="l00335"></a><span class="lineno">  335</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160;  }</div>
-<div class="line"><a name="l00337"></a><span class="lineno">  337</span>&#160;  <span class="keywordflow">return</span> it-&gt;second;</div>
-<div class="line"><a name="l00338"></a><span class="lineno">  338</span>&#160;}</div>
-<div class="line"><a name="l00339"></a><span class="lineno">  339</span>&#160; </div>
-<div class="line"><a name="l00340"></a><span class="lineno"><a class="line" href="classgraphar_1_1_vertex_info.html#ad6bc3cbb3ed0c5eaa7fd50298e106a78">  340</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classgraphar_1_1_vertex_info.html#ad6bc3cbb3ed0c5eaa7fd50298e106a78">VertexInfo::IsNullableKey</a>(<span class="keyword">const</span> std::string&amp; property_name)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00341"></a><span class="lineno">  341</span>&#160;  <span class="keyword">auto</span> it = impl_-&gt;property_name_to_nullable_.find(property_name);</div>
-<div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160;  <span class="keywordflow">if</span> (it == impl_-&gt;property_name_to_nullable_.end()) {</div>
-<div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160;  }</div>
-<div class="line"><a name="l00345"></a><span class="lineno">  345</span>&#160;  <span class="keywordflow">return</span> it-&gt;second;</div>
-<div class="line"><a name="l00346"></a><span class="lineno">  346</span>&#160;}</div>
-<div class="line"><a name="l00347"></a><span class="lineno">  347</span>&#160; </div>
-<div class="line"><a name="l00348"></a><span class="lineno"><a class="line" href="classgraphar_1_1_vertex_info.html#a5d42bec7d8cdb67f1e04b921f484e328">  348</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classgraphar_1_1_vertex_info.html#a5d42bec7d8cdb67f1e04b921f484e328">VertexInfo::HasProperty</a>(<span class="keyword">const</span> std::string&amp; property_name)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00349"></a><span class="lineno">  349</span>&#160;  <span class="keywordflow">return</span> impl_-&gt;property_name_to_index_.find(property_name) !=</div>
-<div class="line"><a name="l00350"></a><span class="lineno">  350</span>&#160;         impl_-&gt;property_name_to_index_.end();</div>
-<div class="line"><a name="l00351"></a><span class="lineno">  351</span>&#160;}</div>
-<div class="line"><a name="l00352"></a><span class="lineno">  352</span>&#160; </div>
-<div class="line"><a name="l00353"></a><span class="lineno"><a class="line" href="classgraphar_1_1_vertex_info.html#a64aca915578185662b4429e5ed265322">  353</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classgraphar_1_1_vertex_info.html#a64aca915578185662b4429e5ed265322">VertexInfo::HasPropertyGroup</a>(</div>
-<div class="line"><a name="l00354"></a><span class="lineno">  354</span>&#160;    <span class="keyword">const</span> std::shared_ptr&lt;PropertyGroup&gt;&amp; property_group)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00355"></a><span class="lineno">  355</span>&#160;  <span class="keywordflow">if</span> (property_group == <span class="keyword">nullptr</span>) {</div>
-<div class="line"><a name="l00356"></a><span class="lineno">  356</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00357"></a><span class="lineno">  357</span>&#160;  }</div>
-<div class="line"><a name="l00358"></a><span class="lineno">  358</span>&#160;  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; pg : impl_-&gt;property_groups_) {</div>
-<div class="line"><a name="l00359"></a><span class="lineno">  359</span>&#160;    <span class="keywordflow">if</span> (*pg == *property_group) {</div>
-<div class="line"><a name="l00360"></a><span class="lineno">  360</span>&#160;      <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00361"></a><span class="lineno">  361</span>&#160;    }</div>
-<div class="line"><a name="l00362"></a><span class="lineno">  362</span>&#160;  }</div>
-<div class="line"><a name="l00363"></a><span class="lineno">  363</span>&#160;  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00364"></a><span class="lineno">  364</span>&#160;}</div>
-<div class="line"><a name="l00365"></a><span class="lineno">  365</span>&#160; </div>
-<div class="line"><a name="l00366"></a><span class="lineno"><a class="line" href="classgraphar_1_1_vertex_info.html#acbeedc2afc98e53155bb1f75c9cb465c">  366</a></span>&#160;Result&lt;std::shared_ptr&lt;DataType&gt;&gt; <a class="code" href="classgraphar_1_1_vertex_info.html#acbeedc2afc98e53155bb1f75c9cb465c">VertexInfo::GetPropertyType</a>(</div>
-<div class="line"><a name="l00367"></a><span class="lineno">  367</span>&#160;    <span class="keyword">const</span> std::string&amp; property_name)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00368"></a><span class="lineno">  368</span>&#160;  <span class="keyword">auto</span> it = impl_-&gt;property_name_to_type_.find(property_name);</div>
-<div class="line"><a name="l00369"></a><span class="lineno">  369</span>&#160;  <span class="keywordflow">if</span> (it == impl_-&gt;property_name_to_type_.end()) {</div>
-<div class="line"><a name="l00370"></a><span class="lineno">  370</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#a9ca4be37aae8dfea7e6ef54920e0073f">Status::Invalid</a>(<span class="stringliteral">&quot;property name not found: &quot;</span>, property_name);</div>
-<div class="line"><a name="l00371"></a><span class="lineno">  371</span>&#160;  }</div>
-<div class="line"><a name="l00372"></a><span class="lineno">  372</span>&#160;  <span class="keywordflow">return</span> it-&gt;second;</div>
-<div class="line"><a name="l00373"></a><span class="lineno">  373</span>&#160;}</div>
-<div class="line"><a name="l00374"></a><span class="lineno">  374</span>&#160; </div>
-<div class="line"><a name="l00375"></a><span class="lineno">  375</span>&#160;Result&lt;Cardinality&gt; VertexInfo::GetPropertyCardinality(</div>
-<div class="line"><a name="l00376"></a><span class="lineno">  376</span>&#160;    <span class="keyword">const</span> std::string&amp; property_name)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00377"></a><span class="lineno">  377</span>&#160;  <span class="keyword">auto</span> it = impl_-&gt;property_name_to_cardinality_.find(property_name);</div>
-<div class="line"><a name="l00378"></a><span class="lineno">  378</span>&#160;  <span class="keywordflow">if</span> (it == impl_-&gt;property_name_to_cardinality_.end()) {</div>
-<div class="line"><a name="l00379"></a><span class="lineno">  379</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#a9ca4be37aae8dfea7e6ef54920e0073f">Status::Invalid</a>(<span class="stringliteral">&quot;property name not found: &quot;</span>, property_name);</div>
-<div class="line"><a name="l00380"></a><span class="lineno">  380</span>&#160;  }</div>
-<div class="line"><a name="l00381"></a><span class="lineno">  381</span>&#160;  <span class="keywordflow">return</span> it-&gt;second;</div>
-<div class="line"><a name="l00382"></a><span class="lineno">  382</span>&#160;}</div>
-<div class="line"><a name="l00383"></a><span class="lineno">  383</span>&#160; </div>
-<div class="line"><a name="l00384"></a><span class="lineno"><a class="line" href="classgraphar_1_1_vertex_info.html#a4a70be2aa82d5c435b3271ae766bb54d">  384</a></span>&#160;Result&lt;std::shared_ptr&lt;VertexInfo&gt;&gt; <a class="code" href="classgraphar_1_1_vertex_info.html#a4a70be2aa82d5c435b3271ae766bb54d">VertexInfo::AddPropertyGroup</a>(</div>
-<div class="line"><a name="l00385"></a><span class="lineno">  385</span>&#160;    std::shared_ptr&lt;PropertyGroup&gt; property_group)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00386"></a><span class="lineno">  386</span>&#160;  <span class="keywordflow">if</span> (property_group == <span class="keyword">nullptr</span>) {</div>
-<div class="line"><a name="l00387"></a><span class="lineno">  387</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#a9ca4be37aae8dfea7e6ef54920e0073f">Status::Invalid</a>(<span class="stringliteral">&quot;property group is nullptr&quot;</span>);</div>
-<div class="line"><a name="l00388"></a><span class="lineno">  388</span>&#160;  }</div>
-<div class="line"><a name="l00389"></a><span class="lineno">  389</span>&#160;  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; property : property_group-&gt;GetProperties()) {</div>
-<div class="line"><a name="l00390"></a><span class="lineno">  390</span>&#160;    <span class="keywordflow">if</span> (<a class="code" href="classgraphar_1_1_vertex_info.html#a5d42bec7d8cdb67f1e04b921f484e328">HasProperty</a>(property.name)) {</div>
-<div class="line"><a name="l00391"></a><span class="lineno">  391</span>&#160;      <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#a9ca4be37aae8dfea7e6ef54920e0073f">Status::Invalid</a>(<span class="stringliteral">&quot;property in the property group already exists: &quot;</span>,</div>
-<div class="line"><a name="l00392"></a><span class="lineno">  392</span>&#160;                             property.name);</div>
-<div class="line"><a name="l00393"></a><span class="lineno">  393</span>&#160;    }</div>
-<div class="line"><a name="l00394"></a><span class="lineno">  394</span>&#160;  }</div>
-<div class="line"><a name="l00395"></a><span class="lineno">  395</span>&#160;  <span class="keywordflow">return</span> std::make_shared&lt;VertexInfo&gt;(</div>
-<div class="line"><a name="l00396"></a><span class="lineno">  396</span>&#160;      impl_-&gt;type_, impl_-&gt;chunk_size_,</div>
-<div class="line"><a name="l00397"></a><span class="lineno">  397</span>&#160;      AddVectorElement(impl_-&gt;property_groups_, property_group), impl_-&gt;labels_,</div>
-<div class="line"><a name="l00398"></a><span class="lineno">  398</span>&#160;      impl_-&gt;prefix_, impl_-&gt;version_);</div>
-<div class="line"><a name="l00399"></a><span class="lineno">  399</span>&#160;}</div>
-<div class="line"><a name="l00400"></a><span class="lineno">  400</span>&#160; </div>
-<div class="line"><a name="l00401"></a><span class="lineno"><a class="line" href="classgraphar_1_1_vertex_info.html#a70d2cb4637d4b2909bd34045a39568af">  401</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classgraphar_1_1_vertex_info.html#a70d2cb4637d4b2909bd34045a39568af">VertexInfo::IsValidated</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> impl_-&gt;is_validated(); }</div>
-<div class="line"><a name="l00402"></a><span class="lineno">  402</span>&#160; </div>
-<div class="line"><a name="l00403"></a><span class="lineno">  403</span>&#160;std::shared_ptr&lt;VertexInfo&gt; CreateVertexInfo(</div>
-<div class="line"><a name="l00404"></a><span class="lineno">  404</span>&#160;    <span class="keyword">const</span> std::string&amp; type, IdType chunk_size,</div>
-<div class="line"><a name="l00405"></a><span class="lineno">  405</span>&#160;    <span class="keyword">const</span> PropertyGroupVector&amp; property_groups,</div>
-<div class="line"><a name="l00406"></a><span class="lineno">  406</span>&#160;    <span class="keyword">const</span> std::vector&lt;std::string&gt;&amp; labels, <span class="keyword">const</span> std::string&amp; prefix,</div>
-<div class="line"><a name="l00407"></a><span class="lineno">  407</span>&#160;    std::shared_ptr&lt;const InfoVersion&gt; version) {</div>
-<div class="line"><a name="l00408"></a><span class="lineno">  408</span>&#160;  <span class="keywordflow">if</span> (type.empty() || chunk_size &lt;= 0) {</div>
-<div class="line"><a name="l00409"></a><span class="lineno">  409</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
-<div class="line"><a name="l00410"></a><span class="lineno">  410</span>&#160;  }</div>
-<div class="line"><a name="l00411"></a><span class="lineno">  411</span>&#160;  <span class="keywordflow">return</span> std::make_shared&lt;VertexInfo&gt;(type, chunk_size, property_groups, labels,</div>
-<div class="line"><a name="l00412"></a><span class="lineno">  412</span>&#160;                                      prefix, version);</div>
-<div class="line"><a name="l00413"></a><span class="lineno">  413</span>&#160;}</div>
-<div class="line"><a name="l00414"></a><span class="lineno">  414</span>&#160; </div>
-<div class="line"><a name="l00415"></a><span class="lineno"><a class="line" href="classgraphar_1_1_vertex_info.html#af1ade1caa6e70e4b7ce60cf4df7ac50c">  415</a></span>&#160;Result&lt;std::shared_ptr&lt;VertexInfo&gt;&gt; <a class="code" href="classgraphar_1_1_vertex_info.html#af1ade1caa6e70e4b7ce60cf4df7ac50c">VertexInfo::Load</a>(</div>
-<div class="line"><a name="l00416"></a><span class="lineno">  416</span>&#160;    std::shared_ptr&lt;Yaml&gt; yaml) {</div>
-<div class="line"><a name="l00417"></a><span class="lineno">  417</span>&#160;  <span class="keywordflow">if</span> (yaml == <span class="keyword">nullptr</span>) {</div>
-<div class="line"><a name="l00418"></a><span class="lineno">  418</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#a9ca4be37aae8dfea7e6ef54920e0073f">Status::Invalid</a>(<span class="stringliteral">&quot;yaml shared pointer is nullptr&quot;</span>);</div>
-<div class="line"><a name="l00419"></a><span class="lineno">  419</span>&#160;  }</div>
-<div class="line"><a name="l00420"></a><span class="lineno">  420</span>&#160;  std::string type = yaml-&gt;operator[](<span class="stringliteral">&quot;type&quot;</span>).As&lt;std::string&gt;();</div>
-<div class="line"><a name="l00421"></a><span class="lineno">  421</span>&#160;  IdType chunk_size =</div>
-<div class="line"><a name="l00422"></a><span class="lineno">  422</span>&#160;      <span class="keyword">static_cast&lt;</span>IdType<span class="keyword">&gt;</span>(yaml-&gt;operator[](<span class="stringliteral">&quot;chunk_size&quot;</span>).As&lt;int64_t&gt;());</div>
-<div class="line"><a name="l00423"></a><span class="lineno">  423</span>&#160;  std::string prefix;</div>
-<div class="line"><a name="l00424"></a><span class="lineno">  424</span>&#160;  <span class="keywordflow">if</span> (!yaml-&gt;operator[](<span class="stringliteral">&quot;prefix&quot;</span>).IsNone()) {</div>
-<div class="line"><a name="l00425"></a><span class="lineno">  425</span>&#160;    prefix = yaml-&gt;operator[](<span class="stringliteral">&quot;prefix&quot;</span>).As&lt;std::string&gt;();</div>
-<div class="line"><a name="l00426"></a><span class="lineno">  426</span>&#160;  }</div>
-<div class="line"><a name="l00427"></a><span class="lineno">  427</span>&#160;  std::vector&lt;std::string&gt; labels;</div>
-<div class="line"><a name="l00428"></a><span class="lineno">  428</span>&#160;  <span class="keyword">const</span> <span class="keyword">auto</span>&amp; labels_node = yaml-&gt;operator[](<span class="stringliteral">&quot;labels&quot;</span>);</div>
-<div class="line"><a name="l00429"></a><span class="lineno">  429</span>&#160;  <span class="keywordflow">if</span> (labels_node.IsSequence()) {</div>
-<div class="line"><a name="l00430"></a><span class="lineno">  430</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = labels_node.Begin(); it != labels_node.End(); it++) {</div>
-<div class="line"><a name="l00431"></a><span class="lineno">  431</span>&#160;      labels.push_back((*it).second.As&lt;std::string&gt;());</div>
-<div class="line"><a name="l00432"></a><span class="lineno">  432</span>&#160;    }</div>
-<div class="line"><a name="l00433"></a><span class="lineno">  433</span>&#160;  }</div>
-<div class="line"><a name="l00434"></a><span class="lineno">  434</span>&#160;  std::shared_ptr&lt;const InfoVersion&gt; <a class="code" href="classgraphar_1_1_vertex_info.html#a47c84aab28674b5250a26c97806f2f48">version</a> = <span class="keyword">nullptr</span>;</div>
-<div class="line"><a name="l00435"></a><span class="lineno">  435</span>&#160;  <span class="keywordflow">if</span> (!yaml-&gt;operator[](<span class="stringliteral">&quot;version&quot;</span>).IsNone()) {</div>
-<div class="line"><a name="l00436"></a><span class="lineno">  436</span>&#160;    GAR_ASSIGN_OR_RAISE(</div>
-<div class="line"><a name="l00437"></a><span class="lineno">  437</span>&#160;        <a class="code" href="classgraphar_1_1_vertex_info.html#a47c84aab28674b5250a26c97806f2f48">version</a>,</div>
-<div class="line"><a name="l00438"></a><span class="lineno">  438</span>&#160;        <a class="code" href="classgraphar_1_1_info_version.html#a6c149bd120118e7c6803dcac71a7a667">InfoVersion::Parse</a>(yaml-&gt;operator[](<span class="stringliteral">&quot;version&quot;</span>).As&lt;std::string&gt;()));</div>
-<div class="line"><a name="l00439"></a><span class="lineno">  439</span>&#160;  }</div>
-<div class="line"><a name="l00440"></a><span class="lineno">  440</span>&#160;  PropertyGroupVector property_groups;</div>
-<div class="line"><a name="l00441"></a><span class="lineno">  441</span>&#160;  <span class="keyword">auto</span> property_groups_node = yaml-&gt;operator[](<span class="stringliteral">&quot;property_groups&quot;</span>);</div>
-<div class="line"><a name="l00442"></a><span class="lineno">  442</span>&#160;  <span class="keywordflow">if</span> (!property_groups_node.IsNone()) {  <span class="comment">// property_groups exist</span></div>
-<div class="line"><a name="l00443"></a><span class="lineno">  443</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = property_groups_node.Begin();</div>
-<div class="line"><a name="l00444"></a><span class="lineno">  444</span>&#160;         it != property_groups_node.End(); it++) {</div>
-<div class="line"><a name="l00445"></a><span class="lineno">  445</span>&#160;      std::string pg_prefix;</div>
-<div class="line"><a name="l00446"></a><span class="lineno">  446</span>&#160;      <span class="keyword">auto</span>&amp; node = (*it).second;</div>
-<div class="line"><a name="l00447"></a><span class="lineno">  447</span>&#160;      <span class="keywordflow">if</span> (!node[<span class="stringliteral">&quot;prefix&quot;</span>].IsNone()) {</div>
-<div class="line"><a name="l00448"></a><span class="lineno">  448</span>&#160;        pg_prefix = node[<span class="stringliteral">&quot;prefix&quot;</span>].As&lt;std::string&gt;();</div>
-<div class="line"><a name="l00449"></a><span class="lineno">  449</span>&#160;      }</div>
-<div class="line"><a name="l00450"></a><span class="lineno">  450</span>&#160;      <span class="keyword">auto</span> file_type = StringToFileType(node[<span class="stringliteral">&quot;file_type&quot;</span>].As&lt;std::string&gt;());</div>
-<div class="line"><a name="l00451"></a><span class="lineno">  451</span>&#160;      std::vector&lt;Property&gt; property_vec;</div>
-<div class="line"><a name="l00452"></a><span class="lineno">  452</span>&#160;      <span class="keyword">auto</span>&amp; properties = node[<span class="stringliteral">&quot;properties&quot;</span>];</div>
-<div class="line"><a name="l00453"></a><span class="lineno">  453</span>&#160;      <span class="keywordflow">for</span> (<span class="keyword">auto</span> iit = properties.Begin(); iit != properties.End(); iit++) {</div>
-<div class="line"><a name="l00454"></a><span class="lineno">  454</span>&#160;        <span class="keyword">auto</span>&amp; p_node = (*iit).second;</div>
-<div class="line"><a name="l00455"></a><span class="lineno">  455</span>&#160;        <span class="keyword">auto</span> property_name = p_node[<span class="stringliteral">&quot;name&quot;</span>].As&lt;std::string&gt;();</div>
-<div class="line"><a name="l00456"></a><span class="lineno">  456</span>&#160;        <span class="keyword">auto</span> property_type =</div>
-<div class="line"><a name="l00457"></a><span class="lineno">  457</span>&#160;            DataType::TypeNameToDataType(p_node[<span class="stringliteral">&quot;data_type&quot;</span>].As&lt;std::string&gt;());</div>
-<div class="line"><a name="l00458"></a><span class="lineno">  458</span>&#160;        <span class="keywordtype">bool</span> is_primary = p_node[<span class="stringliteral">&quot;is_primary&quot;</span>].As&lt;<span class="keywordtype">bool</span>&gt;();</div>
-<div class="line"><a name="l00459"></a><span class="lineno">  459</span>&#160;        <span class="keywordtype">bool</span> is_nullable =</div>
-<div class="line"><a name="l00460"></a><span class="lineno">  460</span>&#160;            p_node[<span class="stringliteral">&quot;is_nullable&quot;</span>].IsNone() || p_node[<span class="stringliteral">&quot;is_nullable&quot;</span>].As&lt;<span class="keywordtype">bool</span>&gt;();</div>
-<div class="line"><a name="l00461"></a><span class="lineno">  461</span>&#160;        Cardinality cardinality = Cardinality::SINGLE;</div>
-<div class="line"><a name="l00462"></a><span class="lineno">  462</span>&#160;        <span class="keywordflow">if</span> (!p_node[<span class="stringliteral">&quot;cardinality&quot;</span>].IsNone()) {</div>
-<div class="line"><a name="l00463"></a><span class="lineno">  463</span>&#160;          cardinality =</div>
-<div class="line"><a name="l00464"></a><span class="lineno">  464</span>&#160;              StringToCardinality(p_node[<span class="stringliteral">&quot;cardinality&quot;</span>].As&lt;std::string&gt;());</div>
-<div class="line"><a name="l00465"></a><span class="lineno">  465</span>&#160;        }</div>
-<div class="line"><a name="l00466"></a><span class="lineno">  466</span>&#160;        property_vec.emplace_back(property_name, property_type, is_primary,</div>
-<div class="line"><a name="l00467"></a><span class="lineno">  467</span>&#160;                                  is_nullable, cardinality);</div>
-<div class="line"><a name="l00468"></a><span class="lineno">  468</span>&#160;      }</div>
-<div class="line"><a name="l00469"></a><span class="lineno">  469</span>&#160;      property_groups.push_back(</div>
-<div class="line"><a name="l00470"></a><span class="lineno">  470</span>&#160;          std::make_shared&lt;PropertyGroup&gt;(property_vec, file_type, pg_prefix));</div>
-<div class="line"><a name="l00471"></a><span class="lineno">  471</span>&#160;    }</div>
-<div class="line"><a name="l00472"></a><span class="lineno">  472</span>&#160;  }</div>
-<div class="line"><a name="l00473"></a><span class="lineno">  473</span>&#160;  <span class="keywordflow">return</span> std::make_shared&lt;VertexInfo&gt;(type, chunk_size, property_groups, labels,</div>
-<div class="line"><a name="l00474"></a><span class="lineno">  474</span>&#160;                                      prefix, <a class="code" href="classgraphar_1_1_vertex_info.html#a47c84aab28674b5250a26c97806f2f48">version</a>);</div>
-<div class="line"><a name="l00475"></a><span class="lineno">  475</span>&#160;}</div>
-<div class="line"><a name="l00476"></a><span class="lineno">  476</span>&#160; </div>
-<div class="line"><a name="l00477"></a><span class="lineno"><a class="line" href="classgraphar_1_1_vertex_info.html#afc1a3662d2215f157af8ba115307807b">  477</a></span>&#160;Result&lt;std::shared_ptr&lt;VertexInfo&gt;&gt; <a class="code" href="classgraphar_1_1_vertex_info.html#af1ade1caa6e70e4b7ce60cf4df7ac50c">VertexInfo::Load</a>(<span class="keyword">const</span> std::string&amp; input) {</div>
-<div class="line"><a name="l00478"></a><span class="lineno">  478</span>&#160;  GAR_ASSIGN_OR_RAISE(<span class="keyword">auto</span> yaml, <a class="code" href="classgraphar_1_1_yaml.html#a2fff6ba5eaf3e59b489d015f10013179">Yaml::Load</a>(input));</div>
-<div class="line"><a name="l00479"></a><span class="lineno">  479</span>&#160;  <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_vertex_info.html#af1ade1caa6e70e4b7ce60cf4df7ac50c">VertexInfo::Load</a>(yaml);</div>
-<div class="line"><a name="l00480"></a><span class="lineno">  480</span>&#160;}</div>
-<div class="line"><a name="l00481"></a><span class="lineno">  481</span>&#160; </div>
-<div class="line"><a name="l00482"></a><span class="lineno"><a class="line" href="classgraphar_1_1_vertex_info.html#adc0a253c371a004324ffae6e8abbdbc7">  482</a></span>&#160;Result&lt;std::string&gt; <a class="code" href="classgraphar_1_1_vertex_info.html#adc0a253c371a004324ffae6e8abbdbc7">VertexInfo::Dump</a>() const noexcept {</div>
-<div class="line"><a name="l00483"></a><span class="lineno">  483</span>&#160;  <span class="keywordflow">if</span> (!<a class="code" href="classgraphar_1_1_vertex_info.html#a70d2cb4637d4b2909bd34045a39568af">IsValidated</a>()) {</div>
-<div class="line"><a name="l00484"></a><span class="lineno">  484</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#a9ca4be37aae8dfea7e6ef54920e0073f">Status::Invalid</a>(<span class="stringliteral">&quot;The vertex info is not validated&quot;</span>);</div>
-<div class="line"><a name="l00485"></a><span class="lineno">  485</span>&#160;  }</div>
-<div class="line"><a name="l00486"></a><span class="lineno">  486</span>&#160;  std::string dump_string;</div>
-<div class="line"><a name="l00487"></a><span class="lineno">  487</span>&#160;  ::Yaml::Node node;</div>
-<div class="line"><a name="l00488"></a><span class="lineno">  488</span>&#160;  <span class="keywordflow">try</span> {</div>
-<div class="line"><a name="l00489"></a><span class="lineno">  489</span>&#160;    node[<span class="stringliteral">&quot;type&quot;</span>] = impl_-&gt;type_;</div>
-<div class="line"><a name="l00490"></a><span class="lineno">  490</span>&#160;    node[<span class="stringliteral">&quot;chunk_size&quot;</span>] = std::to_string(impl_-&gt;chunk_size_);</div>
-<div class="line"><a name="l00491"></a><span class="lineno">  491</span>&#160;    node[<span class="stringliteral">&quot;prefix&quot;</span>] = impl_-&gt;prefix_;</div>
-<div class="line"><a name="l00492"></a><span class="lineno">  492</span>&#160;    <span class="keywordflow">if</span> (impl_-&gt;labels_.size() &gt; 0) {</div>
-<div class="line"><a name="l00493"></a><span class="lineno">  493</span>&#160;      node[<span class="stringliteral">&quot;labels&quot;</span>];</div>
-<div class="line"><a name="l00494"></a><span class="lineno">  494</span>&#160;      <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; label : impl_-&gt;labels_) {</div>
-<div class="line"><a name="l00495"></a><span class="lineno">  495</span>&#160;        node[<span class="stringliteral">&quot;labels&quot;</span>].PushBack();</div>
-<div class="line"><a name="l00496"></a><span class="lineno">  496</span>&#160;        node[<span class="stringliteral">&quot;labels&quot;</span>][node[<span class="stringliteral">&quot;labels&quot;</span>].Size() - 1] = label;</div>
-<div class="line"><a name="l00497"></a><span class="lineno">  497</span>&#160;      }</div>
-<div class="line"><a name="l00498"></a><span class="lineno">  498</span>&#160;    }</div>
-<div class="line"><a name="l00499"></a><span class="lineno">  499</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; pg : impl_-&gt;property_groups_) {</div>
-<div class="line"><a name="l00500"></a><span class="lineno">  500</span>&#160;      ::Yaml::Node pg_node;</div>
-<div class="line"><a name="l00501"></a><span class="lineno">  501</span>&#160;      <span class="keywordflow">if</span> (!pg-&gt;GetPrefix().empty()) {</div>
-<div class="line"><a name="l00502"></a><span class="lineno">  502</span>&#160;        pg_node[<span class="stringliteral">&quot;prefix&quot;</span>] = pg-&gt;GetPrefix();</div>
-<div class="line"><a name="l00503"></a><span class="lineno">  503</span>&#160;      }</div>
-<div class="line"><a name="l00504"></a><span class="lineno">  504</span>&#160;      pg_node[<span class="stringliteral">&quot;file_type&quot;</span>] = FileTypeToString(pg-&gt;GetFileType());</div>
-<div class="line"><a name="l00505"></a><span class="lineno">  505</span>&#160;      <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; p : pg-&gt;GetProperties()) {</div>
-<div class="line"><a name="l00506"></a><span class="lineno">  506</span>&#160;        ::Yaml::Node p_node;</div>
-<div class="line"><a name="l00507"></a><span class="lineno">  507</span>&#160;        p_node[<span class="stringliteral">&quot;name&quot;</span>] = p.name;</div>
-<div class="line"><a name="l00508"></a><span class="lineno">  508</span>&#160;        p_node[<span class="stringliteral">&quot;data_type&quot;</span>] = p.type-&gt;ToTypeName();</div>
-<div class="line"><a name="l00509"></a><span class="lineno">  509</span>&#160;        p_node[<span class="stringliteral">&quot;is_primary&quot;</span>] = p.is_primary ? <span class="stringliteral">&quot;true&quot;</span> : <span class="stringliteral">&quot;false&quot;</span>;</div>
-<div class="line"><a name="l00510"></a><span class="lineno">  510</span>&#160;        p_node[<span class="stringliteral">&quot;is_nullable&quot;</span>] = p.is_nullable ? <span class="stringliteral">&quot;true&quot;</span> : <span class="stringliteral">&quot;false&quot;</span>;</div>
-<div class="line"><a name="l00511"></a><span class="lineno">  511</span>&#160;        <span class="keywordflow">if</span> (p.cardinality != Cardinality::SINGLE) {</div>
-<div class="line"><a name="l00512"></a><span class="lineno">  512</span>&#160;          p_node[<span class="stringliteral">&quot;cardinality&quot;</span>] = CardinalityToString(p.cardinality);</div>
-<div class="line"><a name="l00513"></a><span class="lineno">  513</span>&#160;        }</div>
-<div class="line"><a name="l00514"></a><span class="lineno">  514</span>&#160;        pg_node[<span class="stringliteral">&quot;properties&quot;</span>].PushBack();</div>
-<div class="line"><a name="l00515"></a><span class="lineno">  515</span>&#160;        pg_node[<span class="stringliteral">&quot;properties&quot;</span>][pg_node[<span class="stringliteral">&quot;properties&quot;</span>].Size() - 1] = p_node;</div>
-<div class="line"><a name="l00516"></a><span class="lineno">  516</span>&#160;      }</div>
-<div class="line"><a name="l00517"></a><span class="lineno">  517</span>&#160;      node[<span class="stringliteral">&quot;property_groups&quot;</span>].PushBack();</div>
-<div class="line"><a name="l00518"></a><span class="lineno">  518</span>&#160;      node[<span class="stringliteral">&quot;property_groups&quot;</span>][node[<span class="stringliteral">&quot;property_groups&quot;</span>].Size() - 1] = pg_node;</div>
-<div class="line"><a name="l00519"></a><span class="lineno">  519</span>&#160;    }</div>
-<div class="line"><a name="l00520"></a><span class="lineno">  520</span>&#160;    <span class="keywordflow">if</span> (impl_-&gt;version_ != <span class="keyword">nullptr</span>) {</div>
-<div class="line"><a name="l00521"></a><span class="lineno">  521</span>&#160;      node[<span class="stringliteral">&quot;version&quot;</span>] = impl_-&gt;version_-&gt;ToString();</div>
-<div class="line"><a name="l00522"></a><span class="lineno">  522</span>&#160;    }</div>
-<div class="line"><a name="l00523"></a><span class="lineno">  523</span>&#160;    ::Yaml::Serialize(node, dump_string);</div>
-<div class="line"><a name="l00524"></a><span class="lineno">  524</span>&#160;  } <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception&amp; e) {</div>
-<div class="line"><a name="l00525"></a><span class="lineno">  525</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#a9ca4be37aae8dfea7e6ef54920e0073f">Status::Invalid</a>(<span class="stringliteral">&quot;Failed to dump vertex info: &quot;</span>, e.what());</div>
-<div class="line"><a name="l00526"></a><span class="lineno">  526</span>&#160;  }</div>
-<div class="line"><a name="l00527"></a><span class="lineno">  527</span>&#160;  <span class="keywordflow">return</span> dump_string;</div>
-<div class="line"><a name="l00528"></a><span class="lineno">  528</span>&#160;}</div>
-<div class="line"><a name="l00529"></a><span class="lineno">  529</span>&#160; </div>
-<div class="line"><a name="l00530"></a><span class="lineno"><a class="line" href="classgraphar_1_1_vertex_info.html#afd42b99a43507a9edb1825e7e104d1e7">  530</a></span>&#160;<a class="code" href="classgraphar_1_1_status.html">Status</a> <a class="code" href="classgraphar_1_1_vertex_info.html#afd42b99a43507a9edb1825e7e104d1e7">VertexInfo::Save</a>(<span class="keyword">const</span> std::string&amp; path)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00531"></a><span class="lineno">  531</span>&#160;  std::string no_url_path;</div>
-<div class="line"><a name="l00532"></a><span class="lineno">  532</span>&#160;  GAR_ASSIGN_OR_RAISE(<span class="keyword">auto</span> fs, FileSystemFromUriOrPath(path, &amp;no_url_path));</div>
-<div class="line"><a name="l00533"></a><span class="lineno">  533</span>&#160;  GAR_ASSIGN_OR_RAISE(<span class="keyword">auto</span> yaml_content, this-&gt;<a class="code" href="classgraphar_1_1_vertex_info.html#adc0a253c371a004324ffae6e8abbdbc7">Dump</a>());</div>
-<div class="line"><a name="l00534"></a><span class="lineno">  534</span>&#160;  <span class="keywordflow">return</span> fs-&gt;WriteValueToFile(yaml_content, no_url_path);</div>
-<div class="line"><a name="l00535"></a><span class="lineno">  535</span>&#160;}</div>
-<div class="line"><a name="l00536"></a><span class="lineno">  536</span>&#160; </div>
-<div class="line"><a name="l00537"></a><span class="lineno"><a class="line" href="classgraphar_1_1_edge_info_1_1_impl.html">  537</a></span>&#160;<span class="keyword">class </span><a class="code" href="classgraphar_1_1_edge_info_1_1_impl.html">EdgeInfo::Impl</a> {</div>
-<div class="line"><a name="l00538"></a><span class="lineno">  538</span>&#160; <span class="keyword">public</span>:</div>
-<div class="line"><a name="l00539"></a><span class="lineno">  539</span>&#160;  <a class="code" href="classgraphar_1_1_edge_info_1_1_impl.html">Impl</a>(<span class="keyword">const</span> std::string&amp; src_type, <span class="keyword">const</span> std::string&amp; edge_type,</div>
-<div class="line"><a name="l00540"></a><span class="lineno">  540</span>&#160;       <span class="keyword">const</span> std::string&amp; dst_type, IdType chunk_size, IdType src_chunk_size,</div>
-<div class="line"><a name="l00541"></a><span class="lineno">  541</span>&#160;       IdType dst_chunk_size, <span class="keywordtype">bool</span> directed, <span class="keyword">const</span> std::string&amp; prefix,</div>
-<div class="line"><a name="l00542"></a><span class="lineno">  542</span>&#160;       <span class="keyword">const</span> AdjacentListVector&amp; adjacent_lists,</div>
-<div class="line"><a name="l00543"></a><span class="lineno">  543</span>&#160;       <span class="keyword">const</span> PropertyGroupVector&amp; property_groups,</div>
-<div class="line"><a name="l00544"></a><span class="lineno">  544</span>&#160;       std::shared_ptr&lt;const InfoVersion&gt; <a class="code" href="classgraphar_1_1_edge_info.html#a9440bef05f4fa689662f26a9ef0117c1">version</a>)</div>
-<div class="line"><a name="l00545"></a><span class="lineno">  545</span>&#160;      : src_type_(src_type),</div>
-<div class="line"><a name="l00546"></a><span class="lineno">  546</span>&#160;        edge_type_(edge_type),</div>
-<div class="line"><a name="l00547"></a><span class="lineno">  547</span>&#160;        dst_type_(dst_type),</div>
-<div class="line"><a name="l00548"></a><span class="lineno">  548</span>&#160;        chunk_size_(chunk_size),</div>
-<div class="line"><a name="l00549"></a><span class="lineno">  549</span>&#160;        src_chunk_size_(src_chunk_size),</div>
-<div class="line"><a name="l00550"></a><span class="lineno">  550</span>&#160;        dst_chunk_size_(dst_chunk_size),</div>
-<div class="line"><a name="l00551"></a><span class="lineno">  551</span>&#160;        directed_(directed),</div>
-<div class="line"><a name="l00552"></a><span class="lineno">  552</span>&#160;        prefix_(prefix),</div>
-<div class="line"><a name="l00553"></a><span class="lineno">  553</span>&#160;        adjacent_lists_(std::move(adjacent_lists)),</div>
-<div class="line"><a name="l00554"></a><span class="lineno">  554</span>&#160;        property_groups_(std::move(property_groups)),</div>
-<div class="line"><a name="l00555"></a><span class="lineno">  555</span>&#160;        version_(std::move(<a class="code" href="classgraphar_1_1_edge_info.html#a9440bef05f4fa689662f26a9ef0117c1">version</a>)) {</div>
-<div class="line"><a name="l00556"></a><span class="lineno">  556</span>&#160;    <span class="keywordflow">if</span> (prefix_.empty()) {</div>
-<div class="line"><a name="l00557"></a><span class="lineno">  557</span>&#160;      prefix_ = src_type_ + REGULAR_SEPARATOR + edge_type_ + REGULAR_SEPARATOR +</div>
-<div class="line"><a name="l00558"></a><span class="lineno">  558</span>&#160;                dst_type_ + <span class="stringliteral">&quot;/&quot;</span>;  <span class="comment">// default prefix</span></div>
-<div class="line"><a name="l00559"></a><span class="lineno">  559</span>&#160;    }</div>
-<div class="line"><a name="l00560"></a><span class="lineno">  560</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; adjacent_lists_.size(); i++) {</div>
-<div class="line"><a name="l00561"></a><span class="lineno">  561</span>&#160;      <span class="keywordflow">if</span> (!adjacent_lists_[i]) {</div>
-<div class="line"><a name="l00562"></a><span class="lineno">  562</span>&#160;        <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00563"></a><span class="lineno">  563</span>&#160;      }</div>
-<div class="line"><a name="l00564"></a><span class="lineno">  564</span>&#160; </div>
-<div class="line"><a name="l00565"></a><span class="lineno">  565</span>&#160;      <span class="keyword">auto</span> adj_list_type = adjacent_lists_[i]-&gt;GetType();</div>
-<div class="line"><a name="l00566"></a><span class="lineno">  566</span>&#160;      adjacent_list_type_to_index_[adj_list_type] = i;</div>
-<div class="line"><a name="l00567"></a><span class="lineno">  567</span>&#160;    }</div>
-<div class="line"><a name="l00568"></a><span class="lineno">  568</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; property_groups_.size(); i++) {</div>
-<div class="line"><a name="l00569"></a><span class="lineno">  569</span>&#160;      <span class="keyword">const</span> <span class="keyword">auto</span>&amp; pg = property_groups_[i];</div>
-<div class="line"><a name="l00570"></a><span class="lineno">  570</span>&#160;      <span class="keywordflow">if</span> (!pg) {</div>
-<div class="line"><a name="l00571"></a><span class="lineno">  571</span>&#160;        <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00572"></a><span class="lineno">  572</span>&#160;      }</div>
-<div class="line"><a name="l00573"></a><span class="lineno">  573</span>&#160;      <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; p : pg-&gt;GetProperties()) {</div>
-<div class="line"><a name="l00574"></a><span class="lineno">  574</span>&#160;        property_name_to_index_.emplace(p.name, i);</div>
-<div class="line"><a name="l00575"></a><span class="lineno">  575</span>&#160;        property_name_to_primary_.emplace(p.name, p.is_primary);</div>
-<div class="line"><a name="l00576"></a><span class="lineno">  576</span>&#160;        property_name_to_nullable_.emplace(p.name, p.is_nullable);</div>
-<div class="line"><a name="l00577"></a><span class="lineno">  577</span>&#160;        property_name_to_type_.emplace(p.name, p.type);</div>
-<div class="line"><a name="l00578"></a><span class="lineno">  578</span>&#160;      }</div>
-<div class="line"><a name="l00579"></a><span class="lineno">  579</span>&#160;    }</div>
-<div class="line"><a name="l00580"></a><span class="lineno">  580</span>&#160;  }</div>
-<div class="line"><a name="l00581"></a><span class="lineno">  581</span>&#160; </div>
-<div class="line"><a name="l00582"></a><span class="lineno">  582</span>&#160;  <span class="keywordtype">bool</span> is_validated() <span class="keyword">const</span> noexcept {</div>
-<div class="line"><a name="l00583"></a><span class="lineno">  583</span>&#160;    <span class="keywordflow">if</span> (src_type_.empty() || edge_type_.empty() || dst_type_.empty() ||</div>
-<div class="line"><a name="l00584"></a><span class="lineno">  584</span>&#160;        chunk_size_ &lt;= 0 || src_chunk_size_ &lt;= 0 || dst_chunk_size_ &lt;= 0 ||</div>
-<div class="line"><a name="l00585"></a><span class="lineno">  585</span>&#160;        prefix_.empty() || adjacent_lists_.empty()) {</div>
-<div class="line"><a name="l00586"></a><span class="lineno">  586</span>&#160;      <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00587"></a><span class="lineno">  587</span>&#160;    }</div>
-<div class="line"><a name="l00588"></a><span class="lineno">  588</span>&#160; </div>
-<div class="line"><a name="l00589"></a><span class="lineno">  589</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; al : adjacent_lists_) {</div>
-<div class="line"><a name="l00590"></a><span class="lineno">  590</span>&#160;      <span class="keywordflow">if</span> (!al || !al-&gt;IsValidated()) {</div>
-<div class="line"><a name="l00591"></a><span class="lineno">  591</span>&#160;        <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00592"></a><span class="lineno">  592</span>&#160;      }</div>
-<div class="line"><a name="l00593"></a><span class="lineno">  593</span>&#160;    }</div>
-<div class="line"><a name="l00594"></a><span class="lineno">  594</span>&#160; </div>
-<div class="line"><a name="l00595"></a><span class="lineno">  595</span>&#160;    std::unordered_set&lt;std::string&gt; check_property_unique_set;</div>
-<div class="line"><a name="l00596"></a><span class="lineno">  596</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; pg : property_groups_) {</div>
-<div class="line"><a name="l00597"></a><span class="lineno">  597</span>&#160;      <span class="comment">// check if property group is validated</span></div>
-<div class="line"><a name="l00598"></a><span class="lineno">  598</span>&#160;      <span class="keywordflow">if</span> (!pg || !pg-&gt;IsValidated()) {</div>
-<div class="line"><a name="l00599"></a><span class="lineno">  599</span>&#160;        <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00600"></a><span class="lineno">  600</span>&#160;      }</div>
-<div class="line"><a name="l00601"></a><span class="lineno">  601</span>&#160;      <span class="comment">// check if property name is unique in all property groups</span></div>
-<div class="line"><a name="l00602"></a><span class="lineno">  602</span>&#160;      <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; p : pg-&gt;GetProperties()) {</div>
-<div class="line"><a name="l00603"></a><span class="lineno">  603</span>&#160;        <span class="keywordflow">if</span> (p.cardinality != Cardinality::SINGLE) {</div>
-<div class="line"><a name="l00604"></a><span class="lineno">  604</span>&#160;          <span class="comment">// edge property only supports single cardinality</span></div>
-<div class="line"><a name="l00605"></a><span class="lineno">  605</span>&#160;          std::cout</div>
-<div class="line"><a name="l00606"></a><span class="lineno">  606</span>&#160;              &lt;&lt; <span class="stringliteral">&quot;Edge property only supports single cardinality, but got: &quot;</span></div>
-<div class="line"><a name="l00607"></a><span class="lineno">  607</span>&#160;              &lt;&lt; CardinalityToString(p.cardinality) &lt;&lt; std::endl;</div>
-<div class="line"><a name="l00608"></a><span class="lineno">  608</span>&#160;          <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00609"></a><span class="lineno">  609</span>&#160;        }</div>
-<div class="line"><a name="l00610"></a><span class="lineno">  610</span>&#160;        <span class="keywordflow">if</span> (check_property_unique_set.find(p.name) !=</div>
-<div class="line"><a name="l00611"></a><span class="lineno">  611</span>&#160;            check_property_unique_set.end()) {</div>
-<div class="line"><a name="l00612"></a><span class="lineno">  612</span>&#160;          <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00613"></a><span class="lineno">  613</span>&#160;        } <span class="keywordflow">else</span> {</div>
-<div class="line"><a name="l00614"></a><span class="lineno">  614</span>&#160;          check_property_unique_set.insert(p.name);</div>
-<div class="line"><a name="l00615"></a><span class="lineno">  615</span>&#160;        }</div>
-<div class="line"><a name="l00616"></a><span class="lineno">  616</span>&#160;      }</div>
-<div class="line"><a name="l00617"></a><span class="lineno">  617</span>&#160;    }</div>
-<div class="line"><a name="l00618"></a><span class="lineno">  618</span>&#160;    <span class="keywordflow">if</span> (adjacent_lists_.size() != adjacent_list_type_to_index_.size()) {</div>
-<div class="line"><a name="l00619"></a><span class="lineno">  619</span>&#160;      <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00620"></a><span class="lineno">  620</span>&#160;    }</div>
-<div class="line"><a name="l00621"></a><span class="lineno">  621</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00622"></a><span class="lineno">  622</span>&#160;  }</div>
-<div class="line"><a name="l00623"></a><span class="lineno">  623</span>&#160; </div>
-<div class="line"><a name="l00624"></a><span class="lineno">  624</span>&#160;  std::string src_type_;</div>
-<div class="line"><a name="l00625"></a><span class="lineno">  625</span>&#160;  std::string edge_type_;</div>
-<div class="line"><a name="l00626"></a><span class="lineno">  626</span>&#160;  std::string dst_type_;</div>
-<div class="line"><a name="l00627"></a><span class="lineno">  627</span>&#160;  IdType chunk_size_;</div>
-<div class="line"><a name="l00628"></a><span class="lineno">  628</span>&#160;  IdType src_chunk_size_;</div>
-<div class="line"><a name="l00629"></a><span class="lineno">  629</span>&#160;  IdType dst_chunk_size_;</div>
-<div class="line"><a name="l00630"></a><span class="lineno">  630</span>&#160;  <span class="keywordtype">bool</span> directed_;</div>
-<div class="line"><a name="l00631"></a><span class="lineno">  631</span>&#160;  std::string prefix_;</div>
-<div class="line"><a name="l00632"></a><span class="lineno">  632</span>&#160;  AdjacentListVector adjacent_lists_;</div>
-<div class="line"><a name="l00633"></a><span class="lineno">  633</span>&#160;  PropertyGroupVector property_groups_;</div>
-<div class="line"><a name="l00634"></a><span class="lineno">  634</span>&#160;  std::unordered_map&lt;AdjListType, int&gt; adjacent_list_type_to_index_;</div>
-<div class="line"><a name="l00635"></a><span class="lineno">  635</span>&#160;  std::unordered_map&lt;std::string, int&gt; property_name_to_index_;</div>
-<div class="line"><a name="l00636"></a><span class="lineno">  636</span>&#160;  std::unordered_map&lt;std::string, bool&gt; property_name_to_primary_;</div>
-<div class="line"><a name="l00637"></a><span class="lineno">  637</span>&#160;  std::unordered_map&lt;std::string, bool&gt; property_name_to_nullable_;</div>
-<div class="line"><a name="l00638"></a><span class="lineno">  638</span>&#160;  std::unordered_map&lt;std::string, std::shared_ptr&lt;DataType&gt;&gt;</div>
-<div class="line"><a name="l00639"></a><span class="lineno">  639</span>&#160;      property_name_to_type_;</div>
-<div class="line"><a name="l00640"></a><span class="lineno">  640</span>&#160;  std::shared_ptr&lt;const InfoVersion&gt; version_;</div>
-<div class="line"><a name="l00641"></a><span class="lineno">  641</span>&#160;};</div>
-<div class="line"><a name="l00642"></a><span class="lineno">  642</span>&#160; </div>
-<div class="line"><a name="l00643"></a><span class="lineno"><a class="line" href="classgraphar_1_1_edge_info.html#ab3c32f3112dcf08304676eeb95545b55">  643</a></span>&#160;<a class="code" href="classgraphar_1_1_edge_info.html#ab3c32f3112dcf08304676eeb95545b55">EdgeInfo::EdgeInfo</a>(<span class="keyword">const</span> std::string&amp; src_type, <span class="keyword">const</span> std::string&amp; edge_type,</div>
-<div class="line"><a name="l00644"></a><span class="lineno">  644</span>&#160;                   <span class="keyword">const</span> std::string&amp; dst_type, IdType chunk_size,</div>
-<div class="line"><a name="l00645"></a><span class="lineno">  645</span>&#160;                   IdType src_chunk_size, IdType dst_chunk_size, <span class="keywordtype">bool</span> directed,</div>
-<div class="line"><a name="l00646"></a><span class="lineno">  646</span>&#160;                   <span class="keyword">const</span> AdjacentListVector&amp; adjacent_lists,</div>
-<div class="line"><a name="l00647"></a><span class="lineno">  647</span>&#160;                   <span class="keyword">const</span> PropertyGroupVector&amp; property_groups,</div>
-<div class="line"><a name="l00648"></a><span class="lineno">  648</span>&#160;                   <span class="keyword">const</span> std::string&amp; prefix,</div>
-<div class="line"><a name="l00649"></a><span class="lineno">  649</span>&#160;                   std::shared_ptr&lt;const InfoVersion&gt; version)</div>
-<div class="line"><a name="l00650"></a><span class="lineno">  650</span>&#160;    : impl_(new <a class="code" href="classgraphar_1_1_edge_info_1_1_impl.html">Impl</a>(src_type, edge_type, dst_type, chunk_size, src_chunk_size,</div>
-<div class="line"><a name="l00651"></a><span class="lineno">  651</span>&#160;                     dst_chunk_size, directed, prefix, adjacent_lists,</div>
-<div class="line"><a name="l00652"></a><span class="lineno">  652</span>&#160;                     property_groups, version)) {}</div>
-<div class="line"><a name="l00653"></a><span class="lineno">  653</span>&#160; </div>
-<div class="line"><a name="l00654"></a><span class="lineno">  654</span>&#160;EdgeInfo::~EdgeInfo() = <span class="keywordflow">default</span>;</div>
-<div class="line"><a name="l00655"></a><span class="lineno">  655</span>&#160; </div>
-<div class="line"><a name="l00656"></a><span class="lineno"><a class="line" href="classgraphar_1_1_edge_info.html#a994023f50f2f952cc1361b0f9928dec4">  656</a></span>&#160;<span class="keyword">const</span> std::string&amp; <a class="code" href="classgraphar_1_1_edge_info.html#a994023f50f2f952cc1361b0f9928dec4">EdgeInfo::GetSrcType</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> impl_-&gt;src_type_; }</div>
-<div class="line"><a name="l00657"></a><span class="lineno">  657</span>&#160; </div>
-<div class="line"><a name="l00658"></a><span class="lineno"><a class="line" href="classgraphar_1_1_edge_info.html#a03c9b4f4b0edcf47f2e5746e8f9f6db0">  658</a></span>&#160;<span class="keyword">const</span> std::string&amp; <a class="code" href="classgraphar_1_1_edge_info.html#a03c9b4f4b0edcf47f2e5746e8f9f6db0">EdgeInfo::GetEdgeType</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> impl_-&gt;edge_type_; }</div>
+<div class="line"><a name="l00191"></a><span class="lineno"><a class="line" href="classgraphar_1_1_adjacent_list.html#a592ba95843997b321f5545e950f03a57">  191</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classgraphar_1_1_adjacent_list.html#a592ba95843997b321f5545e950f03a57">AdjacentList::IsValidated</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;  <span class="keywordflow">if</span> (type_ != AdjListType::unordered_by_source &amp;&amp;</div>
+<div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;      type_ != AdjListType::ordered_by_source &amp;&amp;</div>
+<div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;      type_ != AdjListType::unordered_by_dest &amp;&amp;</div>
+<div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;      type_ != AdjListType::ordered_by_dest) {</div>
+<div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;  }</div>
+<div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;  <span class="keywordflow">if</span> (prefix_.empty() ||</div>
+<div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;      (file_type_ != FileType::CSV &amp;&amp; file_type_ != FileType::PARQUET &amp;&amp;</div>
+<div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;       file_type_ != FileType::ORC)) {</div>
+<div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;  }</div>
+<div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;}</div>
+<div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160; </div>
+<div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;std::shared_ptr&lt;AdjacentList&gt; CreateAdjacentList(AdjListType type,</div>
+<div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;                                                 FileType file_type,</div>
+<div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;                                                 <span class="keyword">const</span> std::string&amp; prefix) {</div>
+<div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;  <span class="keywordflow">return</span> std::make_shared&lt;AdjacentList&gt;(type, file_type, prefix);</div>
+<div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;}</div>
+<div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160; </div>
+<div class="line"><a name="l00212"></a><span class="lineno"><a class="line" href="classgraphar_1_1_vertex_info_1_1_impl.html">  212</a></span>&#160;<span class="keyword">class </span><a class="code" href="classgraphar_1_1_vertex_info_1_1_impl.html">VertexInfo::Impl</a> {</div>
+<div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160; <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;  <a class="code" href="classgraphar_1_1_vertex_info_1_1_impl.html">Impl</a>(<span class="keyword">const</span> std::string&amp; type, IdType chunk_size, <span class="keyword">const</span> std::string&amp; prefix,</div>
+<div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;       <span class="keyword">const</span> PropertyGroupVector&amp; property_groups,</div>
+<div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;       <span class="keyword">const</span> std::vector&lt;std::string&gt;&amp; labels,</div>
+<div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;       std::shared_ptr&lt;const InfoVersion&gt; <a class="code" href="classgraphar_1_1_vertex_info.html#a47c84aab28674b5250a26c97806f2f48">version</a>)</div>
+<div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;      : type_(type),</div>
+<div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;        chunk_size_(chunk_size),</div>
+<div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;        property_groups_(std::move(property_groups)),</div>
+<div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;        labels_(labels),</div>
+<div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;        prefix_(prefix),</div>
+<div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;        version_(std::move(<a class="code" href="classgraphar_1_1_vertex_info.html#a47c84aab28674b5250a26c97806f2f48">version</a>)) {</div>
+<div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;    <span class="keywordflow">if</span> (prefix_.empty()) {</div>
+<div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;      prefix_ = type_ + <span class="stringliteral">&quot;/&quot;</span>;  <span class="comment">// default prefix</span></div>
+<div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;    }</div>
+<div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; property_groups_.size(); i++) {</div>
+<div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;      <span class="keyword">const</span> <span class="keyword">auto</span>&amp; pg = property_groups_[i];</div>
+<div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;      <span class="keywordflow">if</span> (!pg) {</div>
+<div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;        <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;      }</div>
+<div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;      <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; p : pg-&gt;GetProperties()) {</div>
+<div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;        property_name_to_index_.emplace(p.name, i);</div>
+<div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;        property_name_to_primary_.emplace(p.name, p.is_primary);</div>
+<div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;        property_name_to_nullable_.emplace(p.name, p.is_nullable);</div>
+<div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;        property_name_to_type_.emplace(p.name, p.type);</div>
+<div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;        property_name_to_cardinality_.emplace(p.name, p.cardinality);</div>
+<div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;      }</div>
+<div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;    }</div>
+<div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160;  }</div>
+<div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160; </div>
+<div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;  <span class="keywordtype">bool</span> is_validated() <span class="keyword">const</span> noexcept {</div>
+<div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;    <span class="keywordflow">if</span> (type_.empty() || chunk_size_ &lt;= 0 || prefix_.empty()) {</div>
+<div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;      <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;    }</div>
+<div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;    std::unordered_set&lt;std::string&gt; check_property_unique_set;</div>
+<div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; pg : property_groups_) {</div>
+<div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;      <span class="comment">// check if property group is validated</span></div>
+<div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;      <span class="keywordflow">if</span> (!pg || !pg-&gt;IsValidated()) {</div>
+<div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;        <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;      }</div>
+<div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;      <span class="comment">// check if property name is unique in all property groups</span></div>
+<div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;      <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; p : pg-&gt;GetProperties()) {</div>
+<div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;        <span class="keywordflow">if</span> (check_property_unique_set.find(p.name) !=</div>
+<div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;            check_property_unique_set.end()) {</div>
+<div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;          <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;        } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;          check_property_unique_set.insert(p.name);</div>
+<div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;        }</div>
+<div class="line"><a name="l00260"></a><span class="lineno">  260</span>&#160;      }</div>
+<div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;    }</div>
+<div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160; </div>
+<div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;  }</div>
+<div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160; </div>
+<div class="line"><a name="l00266"></a><span class="lineno">  266</span>&#160;  std::string type_;</div>
+<div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;  IdType chunk_size_;</div>
+<div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;  PropertyGroupVector property_groups_;</div>
+<div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160;  std::vector&lt;std::string&gt; labels_;</div>
+<div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160;  std::string prefix_;</div>
+<div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;  std::shared_ptr&lt;const InfoVersion&gt; version_;</div>
+<div class="line"><a name="l00272"></a><span class="lineno">  272</span>&#160;  std::unordered_map&lt;std::string, int&gt; property_name_to_index_;</div>
+<div class="line"><a name="l00273"></a><span class="lineno">  273</span>&#160;  std::unordered_map&lt;std::string, bool&gt; property_name_to_primary_;</div>
+<div class="line"><a name="l00274"></a><span class="lineno">  274</span>&#160;  std::unordered_map&lt;std::string, bool&gt; property_name_to_nullable_;</div>
+<div class="line"><a name="l00275"></a><span class="lineno">  275</span>&#160;  std::unordered_map&lt;std::string, std::shared_ptr&lt;DataType&gt;&gt;</div>
+<div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160;      property_name_to_type_;</div>
+<div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160;  std::unordered_map&lt;std::string, Cardinality&gt; property_name_to_cardinality_;</div>
+<div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160;};</div>
+<div class="line"><a name="l00279"></a><span class="lineno">  279</span>&#160; </div>
+<div class="line"><a name="l00280"></a><span class="lineno"><a class="line" href="classgraphar_1_1_vertex_info.html#acddb12cfcf7c6bfe1f1937f984828312">  280</a></span>&#160;<a class="code" href="classgraphar_1_1_vertex_info.html#acddb12cfcf7c6bfe1f1937f984828312">VertexInfo::VertexInfo</a>(<span class="keyword">const</span> std::string&amp; type, IdType chunk_size,</div>
+<div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;                       <span class="keyword">const</span> PropertyGroupVector&amp; property_groups,</div>
+<div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;                       <span class="keyword">const</span> std::vector&lt;std::string&gt;&amp; labels,</div>
+<div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160;                       <span class="keyword">const</span> std::string&amp; prefix,</div>
+<div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;                       std::shared_ptr&lt;const InfoVersion&gt; version)</div>
+<div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160;    : impl_(new <a class="code" href="classgraphar_1_1_vertex_info_1_1_impl.html">Impl</a>(type, chunk_size, prefix, property_groups, labels,</div>
+<div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;                     version)) {}</div>
+<div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160; </div>
+<div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160;VertexInfo::~VertexInfo() = <span class="keywordflow">default</span>;</div>
+<div class="line"><a name="l00289"></a><span class="lineno">  289</span>&#160; </div>
+<div class="line"><a name="l00290"></a><span class="lineno"><a class="line" href="classgraphar_1_1_vertex_info.html#a2364ef208346bbd4d468ee78cfc6a1a3">  290</a></span>&#160;<span class="keyword">const</span> std::string&amp; <a class="code" href="classgraphar_1_1_vertex_info.html#a2364ef208346bbd4d468ee78cfc6a1a3">VertexInfo::GetType</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> impl_-&gt;type_; }</div>
+<div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160; </div>
+<div class="line"><a name="l00292"></a><span class="lineno"><a class="line" href="classgraphar_1_1_vertex_info.html#a39a607d51da7e73a0fae473e90a61825">  292</a></span>&#160;IdType <a class="code" href="classgraphar_1_1_vertex_info.html#a39a607d51da7e73a0fae473e90a61825">VertexInfo::GetChunkSize</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> impl_-&gt;chunk_size_; }</div>
+<div class="line"><a name="l00293"></a><span class="lineno">  293</span>&#160; </div>
+<div class="line"><a name="l00294"></a><span class="lineno"><a class="line" href="classgraphar_1_1_vertex_info.html#a8fb76a180c2fb8192961a27862f5aa69">  294</a></span>&#160;<span class="keyword">const</span> std::string&amp; <a class="code" href="classgraphar_1_1_vertex_info.html#a8fb76a180c2fb8192961a27862f5aa69">VertexInfo::GetPrefix</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> impl_-&gt;prefix_; }</div>
+<div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160; </div>
+<div class="line"><a name="l00296"></a><span class="lineno"><a class="line" href="classgraphar_1_1_vertex_info.html#a34a49ce4905632889db3f969986cbe75">  296</a></span>&#160;<span class="keyword">const</span> std::vector&lt;std::string&gt;&amp; <a class="code" href="classgraphar_1_1_vertex_info.html#a34a49ce4905632889db3f969986cbe75">VertexInfo::GetLabels</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160;  <span class="keywordflow">return</span> impl_-&gt;labels_;</div>
+<div class="line"><a name="l00298"></a><span class="lineno">  298</span>&#160;}</div>
+<div class="line"><a name="l00299"></a><span class="lineno">  299</span>&#160; </div>
+<div class="line"><a name="l00300"></a><span class="lineno"><a class="line" href="classgraphar_1_1_vertex_info.html#a47c84aab28674b5250a26c97806f2f48">  300</a></span>&#160;<span class="keyword">const</span> std::shared_ptr&lt;const InfoVersion&gt;&amp; <a class="code" href="classgraphar_1_1_vertex_info.html#a47c84aab28674b5250a26c97806f2f48">VertexInfo::version</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00301"></a><span class="lineno">  301</span>&#160;  <span class="keywordflow">return</span> impl_-&gt;version_;</div>
+<div class="line"><a name="l00302"></a><span class="lineno">  302</span>&#160;}</div>
+<div class="line"><a name="l00303"></a><span class="lineno">  303</span>&#160; </div>
+<div class="line"><a name="l00304"></a><span class="lineno"><a class="line" href="classgraphar_1_1_vertex_info.html#a65faa894acf765eae9c7d4e34dff6306">  304</a></span>&#160;Result&lt;std::string&gt; <a class="code" href="classgraphar_1_1_vertex_info.html#a65faa894acf765eae9c7d4e34dff6306">VertexInfo::GetFilePath</a>(</div>
+<div class="line"><a name="l00305"></a><span class="lineno">  305</span>&#160;    std::shared_ptr&lt;PropertyGroup&gt; property_group, IdType chunk_index)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00306"></a><span class="lineno">  306</span>&#160;  <span class="keywordflow">if</span> (property_group == <span class="keyword">nullptr</span>) {</div>
+<div class="line"><a name="l00307"></a><span class="lineno">  307</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#a9ca4be37aae8dfea7e6ef54920e0073f">Status::Invalid</a>(<span class="stringliteral">&quot;property group is nullptr&quot;</span>);</div>
+<div class="line"><a name="l00308"></a><span class="lineno">  308</span>&#160;  }</div>
+<div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160;  <span class="keywordflow">return</span> BuildPath({impl_-&gt;prefix_, property_group-&gt;GetPrefix()}) + <span class="stringliteral">&quot;chunk&quot;</span> +</div>
+<div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160;         std::to_string(chunk_index);</div>
+<div class="line"><a name="l00311"></a><span class="lineno">  311</span>&#160;}</div>
+<div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160; </div>
+<div class="line"><a name="l00313"></a><span class="lineno"><a class="line" href="classgraphar_1_1_vertex_info.html#a3214a62ac41be6cb53c22894d2926710">  313</a></span>&#160;Result&lt;std::string&gt; <a class="code" href="classgraphar_1_1_vertex_info.html#a3214a62ac41be6cb53c22894d2926710">VertexInfo::GetPathPrefix</a>(</div>
+<div class="line"><a name="l00314"></a><span class="lineno">  314</span>&#160;    std::shared_ptr&lt;PropertyGroup&gt; property_group)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00315"></a><span class="lineno">  315</span>&#160;  <span class="keywordflow">if</span> (property_group == <span class="keyword">nullptr</span>) {</div>
+<div class="line"><a name="l00316"></a><span class="lineno">  316</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#a9ca4be37aae8dfea7e6ef54920e0073f">Status::Invalid</a>(<span class="stringliteral">&quot;property group is nullptr&quot;</span>);</div>
+<div class="line"><a name="l00317"></a><span class="lineno">  317</span>&#160;  }</div>
+<div class="line"><a name="l00318"></a><span class="lineno">  318</span>&#160;  <span class="keywordflow">return</span> BuildPath({impl_-&gt;prefix_, property_group-&gt;GetPrefix()});</div>
+<div class="line"><a name="l00319"></a><span class="lineno">  319</span>&#160;}</div>
+<div class="line"><a name="l00320"></a><span class="lineno">  320</span>&#160; </div>
+<div class="line"><a name="l00321"></a><span class="lineno"><a class="line" href="classgraphar_1_1_vertex_info.html#aad61b0a40a4bef344fad93cb1332d97d">  321</a></span>&#160;Result&lt;std::string&gt; <a class="code" href="classgraphar_1_1_vertex_info.html#aad61b0a40a4bef344fad93cb1332d97d">VertexInfo::GetVerticesNumFilePath</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00322"></a><span class="lineno">  322</span>&#160;  <span class="keywordflow">return</span> BuildPath({impl_-&gt;prefix_}) + <span class="stringliteral">&quot;vertex_count&quot;</span>;</div>
+<div class="line"><a name="l00323"></a><span class="lineno">  323</span>&#160;}</div>
+<div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160; </div>
+<div class="line"><a name="l00325"></a><span class="lineno"><a class="line" href="classgraphar_1_1_vertex_info.html#a7917824d18f7c84a02859f18b47e77fe">  325</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="classgraphar_1_1_vertex_info.html#a7917824d18f7c84a02859f18b47e77fe">VertexInfo::PropertyGroupNum</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00326"></a><span class="lineno">  326</span>&#160;  <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(impl_-&gt;property_groups_.size());</div>
+<div class="line"><a name="l00327"></a><span class="lineno">  327</span>&#160;}</div>
+<div class="line"><a name="l00328"></a><span class="lineno">  328</span>&#160; </div>
+<div class="line"><a name="l00329"></a><span class="lineno"><a class="line" href="classgraphar_1_1_vertex_info.html#a2a4cc44b7db8784bdb0e9691c7ad0fba">  329</a></span>&#160;std::shared_ptr&lt;PropertyGroup&gt; <a class="code" href="classgraphar_1_1_vertex_info.html#a2a4cc44b7db8784bdb0e9691c7ad0fba">VertexInfo::GetPropertyGroup</a>(</div>
+<div class="line"><a name="l00330"></a><span class="lineno">  330</span>&#160;    <span class="keyword">const</span> std::string&amp; property_name)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160;  <span class="keywordtype">int</span> i = LookupKeyIndex(impl_-&gt;property_name_to_index_, property_name);</div>
+<div class="line"><a name="l00332"></a><span class="lineno">  332</span>&#160;  <span class="keywordflow">return</span> i == -1 ? nullptr : impl_-&gt;property_groups_[i];</div>
+<div class="line"><a name="l00333"></a><span class="lineno">  333</span>&#160;}</div>
+<div class="line"><a name="l00334"></a><span class="lineno">  334</span>&#160; </div>
+<div class="line"><a name="l00335"></a><span class="lineno"><a class="line" href="classgraphar_1_1_vertex_info.html#af6106f8fa90d876a0e97f58c7c39db33">  335</a></span>&#160;std::shared_ptr&lt;PropertyGroup&gt; <a class="code" href="classgraphar_1_1_vertex_info.html#af6106f8fa90d876a0e97f58c7c39db33">VertexInfo::GetPropertyGroupByIndex</a>(</div>
+<div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160;    <span class="keywordtype">int</span> index)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00337"></a><span class="lineno">  337</span>&#160;  <span class="keywordflow">if</span> (index &lt; 0 || index &gt;= <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(impl_-&gt;property_groups_.size())) {</div>
+<div class="line"><a name="l00338"></a><span class="lineno">  338</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
+<div class="line"><a name="l00339"></a><span class="lineno">  339</span>&#160;  }</div>
+<div class="line"><a name="l00340"></a><span class="lineno">  340</span>&#160;  <span class="keywordflow">return</span> impl_-&gt;property_groups_[index];</div>
+<div class="line"><a name="l00341"></a><span class="lineno">  341</span>&#160;}</div>
+<div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160; </div>
+<div class="line"><a name="l00343"></a><span class="lineno"><a class="line" href="classgraphar_1_1_vertex_info.html#aff9aadd406180802facb14d6a4b5e72e">  343</a></span>&#160;<span class="keyword">const</span> PropertyGroupVector&amp; <a class="code" href="classgraphar_1_1_vertex_info.html#aff9aadd406180802facb14d6a4b5e72e">VertexInfo::GetPropertyGroups</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160;  <span class="keywordflow">return</span> impl_-&gt;property_groups_;</div>
+<div class="line"><a name="l00345"></a><span class="lineno">  345</span>&#160;}</div>
+<div class="line"><a name="l00346"></a><span class="lineno">  346</span>&#160; </div>
+<div class="line"><a name="l00347"></a><span class="lineno"><a class="line" href="classgraphar_1_1_vertex_info.html#a68f7407348b39115e0fa4d44750e9d37">  347</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classgraphar_1_1_vertex_info.html#a68f7407348b39115e0fa4d44750e9d37">VertexInfo::IsPrimaryKey</a>(<span class="keyword">const</span> std::string&amp; property_name)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00348"></a><span class="lineno">  348</span>&#160;  <span class="keyword">auto</span> it = impl_-&gt;property_name_to_primary_.find(property_name);</div>
+<div class="line"><a name="l00349"></a><span class="lineno">  349</span>&#160;  <span class="keywordflow">if</span> (it == impl_-&gt;property_name_to_primary_.end()) {</div>
+<div class="line"><a name="l00350"></a><span class="lineno">  350</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00351"></a><span class="lineno">  351</span>&#160;  }</div>
+<div class="line"><a name="l00352"></a><span class="lineno">  352</span>&#160;  <span class="keywordflow">return</span> it-&gt;second;</div>
+<div class="line"><a name="l00353"></a><span class="lineno">  353</span>&#160;}</div>
+<div class="line"><a name="l00354"></a><span class="lineno">  354</span>&#160; </div>
+<div class="line"><a name="l00355"></a><span class="lineno"><a class="line" href="classgraphar_1_1_vertex_info.html#ad6bc3cbb3ed0c5eaa7fd50298e106a78">  355</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classgraphar_1_1_vertex_info.html#ad6bc3cbb3ed0c5eaa7fd50298e106a78">VertexInfo::IsNullableKey</a>(<span class="keyword">const</span> std::string&amp; property_name)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00356"></a><span class="lineno">  356</span>&#160;  <span class="keyword">auto</span> it = impl_-&gt;property_name_to_nullable_.find(property_name);</div>
+<div class="line"><a name="l00357"></a><span class="lineno">  357</span>&#160;  <span class="keywordflow">if</span> (it == impl_-&gt;property_name_to_nullable_.end()) {</div>
+<div class="line"><a name="l00358"></a><span class="lineno">  358</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00359"></a><span class="lineno">  359</span>&#160;  }</div>
+<div class="line"><a name="l00360"></a><span class="lineno">  360</span>&#160;  <span class="keywordflow">return</span> it-&gt;second;</div>
+<div class="line"><a name="l00361"></a><span class="lineno">  361</span>&#160;}</div>
+<div class="line"><a name="l00362"></a><span class="lineno">  362</span>&#160; </div>
+<div class="line"><a name="l00363"></a><span class="lineno"><a class="line" href="classgraphar_1_1_vertex_info.html#a5d42bec7d8cdb67f1e04b921f484e328">  363</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classgraphar_1_1_vertex_info.html#a5d42bec7d8cdb67f1e04b921f484e328">VertexInfo::HasProperty</a>(<span class="keyword">const</span> std::string&amp; property_name)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00364"></a><span class="lineno">  364</span>&#160;  <span class="keywordflow">return</span> impl_-&gt;property_name_to_index_.find(property_name) !=</div>
+<div class="line"><a name="l00365"></a><span class="lineno">  365</span>&#160;         impl_-&gt;property_name_to_index_.end();</div>
+<div class="line"><a name="l00366"></a><span class="lineno">  366</span>&#160;}</div>
+<div class="line"><a name="l00367"></a><span class="lineno">  367</span>&#160; </div>
+<div class="line"><a name="l00368"></a><span class="lineno"><a class="line" href="classgraphar_1_1_vertex_info.html#a64aca915578185662b4429e5ed265322">  368</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classgraphar_1_1_vertex_info.html#a64aca915578185662b4429e5ed265322">VertexInfo::HasPropertyGroup</a>(</div>
+<div class="line"><a name="l00369"></a><span class="lineno">  369</span>&#160;    <span class="keyword">const</span> std::shared_ptr&lt;PropertyGroup&gt;&amp; property_group)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00370"></a><span class="lineno">  370</span>&#160;  <span class="keywordflow">if</span> (property_group == <span class="keyword">nullptr</span>) {</div>
+<div class="line"><a name="l00371"></a><span class="lineno">  371</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00372"></a><span class="lineno">  372</span>&#160;  }</div>
+<div class="line"><a name="l00373"></a><span class="lineno">  373</span>&#160;  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; pg : impl_-&gt;property_groups_) {</div>
+<div class="line"><a name="l00374"></a><span class="lineno">  374</span>&#160;    <span class="keywordflow">if</span> (*pg == *property_group) {</div>
+<div class="line"><a name="l00375"></a><span class="lineno">  375</span>&#160;      <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00376"></a><span class="lineno">  376</span>&#160;    }</div>
+<div class="line"><a name="l00377"></a><span class="lineno">  377</span>&#160;  }</div>
+<div class="line"><a name="l00378"></a><span class="lineno">  378</span>&#160;  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00379"></a><span class="lineno">  379</span>&#160;}</div>
+<div class="line"><a name="l00380"></a><span class="lineno">  380</span>&#160; </div>
+<div class="line"><a name="l00381"></a><span class="lineno"><a class="line" href="classgraphar_1_1_vertex_info.html#acbeedc2afc98e53155bb1f75c9cb465c">  381</a></span>&#160;Result&lt;std::shared_ptr&lt;DataType&gt;&gt; <a class="code" href="classgraphar_1_1_vertex_info.html#acbeedc2afc98e53155bb1f75c9cb465c">VertexInfo::GetPropertyType</a>(</div>
+<div class="line"><a name="l00382"></a><span class="lineno">  382</span>&#160;    <span class="keyword">const</span> std::string&amp; property_name)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00383"></a><span class="lineno">  383</span>&#160;  <span class="keyword">auto</span> it = impl_-&gt;property_name_to_type_.find(property_name);</div>
+<div class="line"><a name="l00384"></a><span class="lineno">  384</span>&#160;  <span class="keywordflow">if</span> (it == impl_-&gt;property_name_to_type_.end()) {</div>
+<div class="line"><a name="l00385"></a><span class="lineno">  385</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#a9ca4be37aae8dfea7e6ef54920e0073f">Status::Invalid</a>(<span class="stringliteral">&quot;property name not found: &quot;</span>, property_name);</div>
+<div class="line"><a name="l00386"></a><span class="lineno">  386</span>&#160;  }</div>
+<div class="line"><a name="l00387"></a><span class="lineno">  387</span>&#160;  <span class="keywordflow">return</span> it-&gt;second;</div>
+<div class="line"><a name="l00388"></a><span class="lineno">  388</span>&#160;}</div>
+<div class="line"><a name="l00389"></a><span class="lineno">  389</span>&#160; </div>
+<div class="line"><a name="l00390"></a><span class="lineno">  390</span>&#160;Result&lt;Cardinality&gt; VertexInfo::GetPropertyCardinality(</div>
+<div class="line"><a name="l00391"></a><span class="lineno">  391</span>&#160;    <span class="keyword">const</span> std::string&amp; property_name)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00392"></a><span class="lineno">  392</span>&#160;  <span class="keyword">auto</span> it = impl_-&gt;property_name_to_cardinality_.find(property_name);</div>
+<div class="line"><a name="l00393"></a><span class="lineno">  393</span>&#160;  <span class="keywordflow">if</span> (it == impl_-&gt;property_name_to_cardinality_.end()) {</div>
+<div class="line"><a name="l00394"></a><span class="lineno">  394</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#a9ca4be37aae8dfea7e6ef54920e0073f">Status::Invalid</a>(<span class="stringliteral">&quot;property name not found: &quot;</span>, property_name);</div>
+<div class="line"><a name="l00395"></a><span class="lineno">  395</span>&#160;  }</div>
+<div class="line"><a name="l00396"></a><span class="lineno">  396</span>&#160;  <span class="keywordflow">return</span> it-&gt;second;</div>
+<div class="line"><a name="l00397"></a><span class="lineno">  397</span>&#160;}</div>
+<div class="line"><a name="l00398"></a><span class="lineno">  398</span>&#160; </div>
+<div class="line"><a name="l00399"></a><span class="lineno"><a class="line" href="classgraphar_1_1_vertex_info.html#a4a70be2aa82d5c435b3271ae766bb54d">  399</a></span>&#160;Result&lt;std::shared_ptr&lt;VertexInfo&gt;&gt; <a class="code" href="classgraphar_1_1_vertex_info.html#a4a70be2aa82d5c435b3271ae766bb54d">VertexInfo::AddPropertyGroup</a>(</div>
+<div class="line"><a name="l00400"></a><span class="lineno">  400</span>&#160;    std::shared_ptr&lt;PropertyGroup&gt; property_group)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00401"></a><span class="lineno">  401</span>&#160;  <span class="keywordflow">if</span> (property_group == <span class="keyword">nullptr</span>) {</div>
+<div class="line"><a name="l00402"></a><span class="lineno">  402</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#a9ca4be37aae8dfea7e6ef54920e0073f">Status::Invalid</a>(<span class="stringliteral">&quot;property group is nullptr&quot;</span>);</div>
+<div class="line"><a name="l00403"></a><span class="lineno">  403</span>&#160;  }</div>
+<div class="line"><a name="l00404"></a><span class="lineno">  404</span>&#160;  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; property : property_group-&gt;GetProperties()) {</div>
+<div class="line"><a name="l00405"></a><span class="lineno">  405</span>&#160;    <span class="keywordflow">if</span> (<a class="code" href="classgraphar_1_1_vertex_info.html#a5d42bec7d8cdb67f1e04b921f484e328">HasProperty</a>(property.name)) {</div>
+<div class="line"><a name="l00406"></a><span class="lineno">  406</span>&#160;      <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#a9ca4be37aae8dfea7e6ef54920e0073f">Status::Invalid</a>(<span class="stringliteral">&quot;property in the property group already exists: &quot;</span>,</div>
+<div class="line"><a name="l00407"></a><span class="lineno">  407</span>&#160;                             property.name);</div>
+<div class="line"><a name="l00408"></a><span class="lineno">  408</span>&#160;    }</div>
+<div class="line"><a name="l00409"></a><span class="lineno">  409</span>&#160;  }</div>
+<div class="line"><a name="l00410"></a><span class="lineno">  410</span>&#160;  <span class="keywordflow">return</span> std::make_shared&lt;VertexInfo&gt;(</div>
+<div class="line"><a name="l00411"></a><span class="lineno">  411</span>&#160;      impl_-&gt;type_, impl_-&gt;chunk_size_,</div>
+<div class="line"><a name="l00412"></a><span class="lineno">  412</span>&#160;      AddVectorElement(impl_-&gt;property_groups_, property_group), impl_-&gt;labels_,</div>
+<div class="line"><a name="l00413"></a><span class="lineno">  413</span>&#160;      impl_-&gt;prefix_, impl_-&gt;version_);</div>
+<div class="line"><a name="l00414"></a><span class="lineno">  414</span>&#160;}</div>
+<div class="line"><a name="l00415"></a><span class="lineno">  415</span>&#160; </div>
+<div class="line"><a name="l00416"></a><span class="lineno"><a class="line" href="classgraphar_1_1_vertex_info.html#a8432977087cbb207f65b91debc240119">  416</a></span>&#160;Result&lt;std::shared_ptr&lt;VertexInfo&gt;&gt; <a class="code" href="classgraphar_1_1_vertex_info.html#a8432977087cbb207f65b91debc240119">VertexInfo::RemovePropertyGroup</a>(</div>
+<div class="line"><a name="l00417"></a><span class="lineno">  417</span>&#160;    std::shared_ptr&lt;PropertyGroup&gt; property_group)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00418"></a><span class="lineno">  418</span>&#160;  <span class="keywordflow">if</span> (property_group == <span class="keyword">nullptr</span>) {</div>
+<div class="line"><a name="l00419"></a><span class="lineno">  419</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#a9ca4be37aae8dfea7e6ef54920e0073f">Status::Invalid</a>(<span class="stringliteral">&quot;property group is nullptr&quot;</span>);</div>
+<div class="line"><a name="l00420"></a><span class="lineno">  420</span>&#160;  }</div>
+<div class="line"><a name="l00421"></a><span class="lineno">  421</span>&#160;  <span class="keywordtype">int</span> idx = -1;</div>
+<div class="line"><a name="l00422"></a><span class="lineno">  422</span>&#160;  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; impl_-&gt;property_groups_.size(); i++) {</div>
+<div class="line"><a name="l00423"></a><span class="lineno">  423</span>&#160;    <span class="keywordflow">if</span> (*(impl_-&gt;property_groups_[i]) == *property_group) {</div>
+<div class="line"><a name="l00424"></a><span class="lineno">  424</span>&#160;      idx = i;</div>
+<div class="line"><a name="l00425"></a><span class="lineno">  425</span>&#160;      <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00426"></a><span class="lineno">  426</span>&#160;    }</div>
+<div class="line"><a name="l00427"></a><span class="lineno">  427</span>&#160;  }</div>
+<div class="line"><a name="l00428"></a><span class="lineno">  428</span>&#160;  <span class="keywordflow">if</span> (idx == -1) {</div>
+<div class="line"><a name="l00429"></a><span class="lineno">  429</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#a9ca4be37aae8dfea7e6ef54920e0073f">Status::Invalid</a>(<span class="stringliteral">&quot;property group not found&quot;</span>);</div>
+<div class="line"><a name="l00430"></a><span class="lineno">  430</span>&#160;  }</div>
+<div class="line"><a name="l00431"></a><span class="lineno">  431</span>&#160;  <span class="keywordflow">return</span> std::make_shared&lt;VertexInfo&gt;(</div>
+<div class="line"><a name="l00432"></a><span class="lineno">  432</span>&#160;      impl_-&gt;type_, impl_-&gt;chunk_size_,</div>
+<div class="line"><a name="l00433"></a><span class="lineno">  433</span>&#160;      RemoveVectorElement(impl_-&gt;property_groups_, <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(idx)),</div>
+<div class="line"><a name="l00434"></a><span class="lineno">  434</span>&#160;      impl_-&gt;labels_, impl_-&gt;prefix_, impl_-&gt;version_);</div>
+<div class="line"><a name="l00435"></a><span class="lineno">  435</span>&#160;}</div>
+<div class="line"><a name="l00436"></a><span class="lineno">  436</span>&#160; </div>
+<div class="line"><a name="l00437"></a><span class="lineno"><a class="line" href="classgraphar_1_1_vertex_info.html#a70d2cb4637d4b2909bd34045a39568af">  437</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classgraphar_1_1_vertex_info.html#a70d2cb4637d4b2909bd34045a39568af">VertexInfo::IsValidated</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> impl_-&gt;is_validated(); }</div>
+<div class="line"><a name="l00438"></a><span class="lineno">  438</span>&#160; </div>
+<div class="line"><a name="l00439"></a><span class="lineno">  439</span>&#160;std::shared_ptr&lt;VertexInfo&gt; CreateVertexInfo(</div>
+<div class="line"><a name="l00440"></a><span class="lineno">  440</span>&#160;    <span class="keyword">const</span> std::string&amp; type, IdType chunk_size,</div>
+<div class="line"><a name="l00441"></a><span class="lineno">  441</span>&#160;    <span class="keyword">const</span> PropertyGroupVector&amp; property_groups,</div>
+<div class="line"><a name="l00442"></a><span class="lineno">  442</span>&#160;    <span class="keyword">const</span> std::vector&lt;std::string&gt;&amp; labels, <span class="keyword">const</span> std::string&amp; prefix,</div>
+<div class="line"><a name="l00443"></a><span class="lineno">  443</span>&#160;    std::shared_ptr&lt;const InfoVersion&gt; version) {</div>
+<div class="line"><a name="l00444"></a><span class="lineno">  444</span>&#160;  <span class="keywordflow">if</span> (type.empty() || chunk_size &lt;= 0) {</div>
+<div class="line"><a name="l00445"></a><span class="lineno">  445</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
+<div class="line"><a name="l00446"></a><span class="lineno">  446</span>&#160;  }</div>
+<div class="line"><a name="l00447"></a><span class="lineno">  447</span>&#160;  <span class="keywordflow">return</span> std::make_shared&lt;VertexInfo&gt;(type, chunk_size, property_groups, labels,</div>
+<div class="line"><a name="l00448"></a><span class="lineno">  448</span>&#160;                                      prefix, version);</div>
+<div class="line"><a name="l00449"></a><span class="lineno">  449</span>&#160;}</div>
+<div class="line"><a name="l00450"></a><span class="lineno">  450</span>&#160; </div>
+<div class="line"><a name="l00451"></a><span class="lineno"><a class="line" href="classgraphar_1_1_vertex_info.html#af1ade1caa6e70e4b7ce60cf4df7ac50c">  451</a></span>&#160;Result&lt;std::shared_ptr&lt;VertexInfo&gt;&gt; <a class="code" href="classgraphar_1_1_vertex_info.html#af1ade1caa6e70e4b7ce60cf4df7ac50c">VertexInfo::Load</a>(</div>
+<div class="line"><a name="l00452"></a><span class="lineno">  452</span>&#160;    std::shared_ptr&lt;Yaml&gt; yaml) {</div>
+<div class="line"><a name="l00453"></a><span class="lineno">  453</span>&#160;  <span class="keywordflow">if</span> (yaml == <span class="keyword">nullptr</span>) {</div>
+<div class="line"><a name="l00454"></a><span class="lineno">  454</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#a9ca4be37aae8dfea7e6ef54920e0073f">Status::Invalid</a>(<span class="stringliteral">&quot;yaml shared pointer is nullptr&quot;</span>);</div>
+<div class="line"><a name="l00455"></a><span class="lineno">  455</span>&#160;  }</div>
+<div class="line"><a name="l00456"></a><span class="lineno">  456</span>&#160;  std::string type = yaml-&gt;operator[](<span class="stringliteral">&quot;type&quot;</span>).As&lt;std::string&gt;();</div>
+<div class="line"><a name="l00457"></a><span class="lineno">  457</span>&#160;  IdType chunk_size =</div>
+<div class="line"><a name="l00458"></a><span class="lineno">  458</span>&#160;      <span class="keyword">static_cast&lt;</span>IdType<span class="keyword">&gt;</span>(yaml-&gt;operator[](<span class="stringliteral">&quot;chunk_size&quot;</span>).As&lt;int64_t&gt;());</div>
+<div class="line"><a name="l00459"></a><span class="lineno">  459</span>&#160;  std::string prefix;</div>
+<div class="line"><a name="l00460"></a><span class="lineno">  460</span>&#160;  <span class="keywordflow">if</span> (!yaml-&gt;operator[](<span class="stringliteral">&quot;prefix&quot;</span>).IsNone()) {</div>
+<div class="line"><a name="l00461"></a><span class="lineno">  461</span>&#160;    prefix = yaml-&gt;operator[](<span class="stringliteral">&quot;prefix&quot;</span>).As&lt;std::string&gt;();</div>
+<div class="line"><a name="l00462"></a><span class="lineno">  462</span>&#160;  }</div>
+<div class="line"><a name="l00463"></a><span class="lineno">  463</span>&#160;  std::vector&lt;std::string&gt; labels;</div>
+<div class="line"><a name="l00464"></a><span class="lineno">  464</span>&#160;  <span class="keyword">const</span> <span class="keyword">auto</span>&amp; labels_node = yaml-&gt;operator[](<span class="stringliteral">&quot;labels&quot;</span>);</div>
+<div class="line"><a name="l00465"></a><span class="lineno">  465</span>&#160;  <span class="keywordflow">if</span> (labels_node.IsSequence()) {</div>
+<div class="line"><a name="l00466"></a><span class="lineno">  466</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = labels_node.Begin(); it != labels_node.End(); it++) {</div>
+<div class="line"><a name="l00467"></a><span class="lineno">  467</span>&#160;      labels.push_back((*it).second.As&lt;std::string&gt;());</div>
+<div class="line"><a name="l00468"></a><span class="lineno">  468</span>&#160;    }</div>
+<div class="line"><a name="l00469"></a><span class="lineno">  469</span>&#160;  }</div>
+<div class="line"><a name="l00470"></a><span class="lineno">  470</span>&#160;  std::shared_ptr&lt;const InfoVersion&gt; <a class="code" href="classgraphar_1_1_vertex_info.html#a47c84aab28674b5250a26c97806f2f48">version</a> = <span class="keyword">nullptr</span>;</div>
+<div class="line"><a name="l00471"></a><span class="lineno">  471</span>&#160;  <span class="keywordflow">if</span> (!yaml-&gt;operator[](<span class="stringliteral">&quot;version&quot;</span>).IsNone()) {</div>
+<div class="line"><a name="l00472"></a><span class="lineno">  472</span>&#160;    GAR_ASSIGN_OR_RAISE(</div>
+<div class="line"><a name="l00473"></a><span class="lineno">  473</span>&#160;        <a class="code" href="classgraphar_1_1_vertex_info.html#a47c84aab28674b5250a26c97806f2f48">version</a>,</div>
+<div class="line"><a name="l00474"></a><span class="lineno">  474</span>&#160;        <a class="code" href="classgraphar_1_1_info_version.html#a6c149bd120118e7c6803dcac71a7a667">InfoVersion::Parse</a>(yaml-&gt;operator[](<span class="stringliteral">&quot;version&quot;</span>).As&lt;std::string&gt;()));</div>
+<div class="line"><a name="l00475"></a><span class="lineno">  475</span>&#160;  }</div>
+<div class="line"><a name="l00476"></a><span class="lineno">  476</span>&#160;  PropertyGroupVector property_groups;</div>
+<div class="line"><a name="l00477"></a><span class="lineno">  477</span>&#160;  <span class="keyword">auto</span> property_groups_node = yaml-&gt;operator[](<span class="stringliteral">&quot;property_groups&quot;</span>);</div>
+<div class="line"><a name="l00478"></a><span class="lineno">  478</span>&#160;  <span class="keywordflow">if</span> (!property_groups_node.IsNone()) {  <span class="comment">// property_groups exist</span></div>
+<div class="line"><a name="l00479"></a><span class="lineno">  479</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = property_groups_node.Begin();</div>
+<div class="line"><a name="l00480"></a><span class="lineno">  480</span>&#160;         it != property_groups_node.End(); it++) {</div>
+<div class="line"><a name="l00481"></a><span class="lineno">  481</span>&#160;      std::string pg_prefix;</div>
+<div class="line"><a name="l00482"></a><span class="lineno">  482</span>&#160;      <span class="keyword">auto</span>&amp; node = (*it).second;</div>
+<div class="line"><a name="l00483"></a><span class="lineno">  483</span>&#160;      <span class="keywordflow">if</span> (!node[<span class="stringliteral">&quot;prefix&quot;</span>].IsNone()) {</div>
+<div class="line"><a name="l00484"></a><span class="lineno">  484</span>&#160;        pg_prefix = node[<span class="stringliteral">&quot;prefix&quot;</span>].As&lt;std::string&gt;();</div>
+<div class="line"><a name="l00485"></a><span class="lineno">  485</span>&#160;      }</div>
+<div class="line"><a name="l00486"></a><span class="lineno">  486</span>&#160;      <span class="keyword">auto</span> file_type = StringToFileType(node[<span class="stringliteral">&quot;file_type&quot;</span>].As&lt;std::string&gt;());</div>
+<div class="line"><a name="l00487"></a><span class="lineno">  487</span>&#160;      std::vector&lt;Property&gt; property_vec;</div>
+<div class="line"><a name="l00488"></a><span class="lineno">  488</span>&#160;      <span class="keyword">auto</span>&amp; properties = node[<span class="stringliteral">&quot;properties&quot;</span>];</div>
+<div class="line"><a name="l00489"></a><span class="lineno">  489</span>&#160;      <span class="keywordflow">for</span> (<span class="keyword">auto</span> iit = properties.Begin(); iit != properties.End(); iit++) {</div>
+<div class="line"><a name="l00490"></a><span class="lineno">  490</span>&#160;        <span class="keyword">auto</span>&amp; p_node = (*iit).second;</div>
+<div class="line"><a name="l00491"></a><span class="lineno">  491</span>&#160;        <span class="keyword">auto</span> property_name = p_node[<span class="stringliteral">&quot;name&quot;</span>].As&lt;std::string&gt;();</div>
+<div class="line"><a name="l00492"></a><span class="lineno">  492</span>&#160;        <span class="keyword">auto</span> property_type =</div>
+<div class="line"><a name="l00493"></a><span class="lineno">  493</span>&#160;            DataType::TypeNameToDataType(p_node[<span class="stringliteral">&quot;data_type&quot;</span>].As&lt;std::string&gt;());</div>
+<div class="line"><a name="l00494"></a><span class="lineno">  494</span>&#160;        <span class="keywordtype">bool</span> is_primary = p_node[<span class="stringliteral">&quot;is_primary&quot;</span>].As&lt;<span class="keywordtype">bool</span>&gt;();</div>
+<div class="line"><a name="l00495"></a><span class="lineno">  495</span>&#160;        <span class="keywordtype">bool</span> is_nullable =</div>
+<div class="line"><a name="l00496"></a><span class="lineno">  496</span>&#160;            p_node[<span class="stringliteral">&quot;is_nullable&quot;</span>].IsNone() || p_node[<span class="stringliteral">&quot;is_nullable&quot;</span>].As&lt;<span class="keywordtype">bool</span>&gt;();</div>
+<div class="line"><a name="l00497"></a><span class="lineno">  497</span>&#160;        Cardinality cardinality = Cardinality::SINGLE;</div>
+<div class="line"><a name="l00498"></a><span class="lineno">  498</span>&#160;        <span class="keywordflow">if</span> (!p_node[<span class="stringliteral">&quot;cardinality&quot;</span>].IsNone()) {</div>
+<div class="line"><a name="l00499"></a><span class="lineno">  499</span>&#160;          cardinality =</div>
+<div class="line"><a name="l00500"></a><span class="lineno">  500</span>&#160;              StringToCardinality(p_node[<span class="stringliteral">&quot;cardinality&quot;</span>].As&lt;std::string&gt;());</div>
+<div class="line"><a name="l00501"></a><span class="lineno">  501</span>&#160;        }</div>
+<div class="line"><a name="l00502"></a><span class="lineno">  502</span>&#160;        property_vec.emplace_back(property_name, property_type, is_primary,</div>
+<div class="line"><a name="l00503"></a><span class="lineno">  503</span>&#160;                                  is_nullable, cardinality);</div>
+<div class="line"><a name="l00504"></a><span class="lineno">  504</span>&#160;      }</div>
+<div class="line"><a name="l00505"></a><span class="lineno">  505</span>&#160;      property_groups.push_back(</div>
+<div class="line"><a name="l00506"></a><span class="lineno">  506</span>&#160;          std::make_shared&lt;PropertyGroup&gt;(property_vec, file_type, pg_prefix));</div>
+<div class="line"><a name="l00507"></a><span class="lineno">  507</span>&#160;    }</div>
+<div class="line"><a name="l00508"></a><span class="lineno">  508</span>&#160;  }</div>
+<div class="line"><a name="l00509"></a><span class="lineno">  509</span>&#160;  <span class="keywordflow">return</span> std::make_shared&lt;VertexInfo&gt;(type, chunk_size, property_groups, labels,</div>
+<div class="line"><a name="l00510"></a><span class="lineno">  510</span>&#160;                                      prefix, <a class="code" href="classgraphar_1_1_vertex_info.html#a47c84aab28674b5250a26c97806f2f48">version</a>);</div>
+<div class="line"><a name="l00511"></a><span class="lineno">  511</span>&#160;}</div>
+<div class="line"><a name="l00512"></a><span class="lineno">  512</span>&#160; </div>
+<div class="line"><a name="l00513"></a><span class="lineno"><a class="line" href="classgraphar_1_1_vertex_info.html#afc1a3662d2215f157af8ba115307807b">  513</a></span>&#160;Result&lt;std::shared_ptr&lt;VertexInfo&gt;&gt; <a class="code" href="classgraphar_1_1_vertex_info.html#af1ade1caa6e70e4b7ce60cf4df7ac50c">VertexInfo::Load</a>(<span class="keyword">const</span> std::string&amp; input) {</div>
+<div class="line"><a name="l00514"></a><span class="lineno">  514</span>&#160;  GAR_ASSIGN_OR_RAISE(<span class="keyword">auto</span> yaml, <a class="code" href="classgraphar_1_1_yaml.html#a2fff6ba5eaf3e59b489d015f10013179">Yaml::Load</a>(input));</div>
+<div class="line"><a name="l00515"></a><span class="lineno">  515</span>&#160;  <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_vertex_info.html#af1ade1caa6e70e4b7ce60cf4df7ac50c">VertexInfo::Load</a>(yaml);</div>
+<div class="line"><a name="l00516"></a><span class="lineno">  516</span>&#160;}</div>
+<div class="line"><a name="l00517"></a><span class="lineno">  517</span>&#160; </div>
+<div class="line"><a name="l00518"></a><span class="lineno"><a class="line" href="classgraphar_1_1_vertex_info.html#adc0a253c371a004324ffae6e8abbdbc7">  518</a></span>&#160;Result&lt;std::string&gt; <a class="code" href="classgraphar_1_1_vertex_info.html#adc0a253c371a004324ffae6e8abbdbc7">VertexInfo::Dump</a>() const noexcept {</div>
+<div class="line"><a name="l00519"></a><span class="lineno">  519</span>&#160;  <span class="keywordflow">if</span> (!<a class="code" href="classgraphar_1_1_vertex_info.html#a70d2cb4637d4b2909bd34045a39568af">IsValidated</a>()) {</div>
+<div class="line"><a name="l00520"></a><span class="lineno">  520</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#a9ca4be37aae8dfea7e6ef54920e0073f">Status::Invalid</a>(<span class="stringliteral">&quot;The vertex info is not validated&quot;</span>);</div>
+<div class="line"><a name="l00521"></a><span class="lineno">  521</span>&#160;  }</div>
+<div class="line"><a name="l00522"></a><span class="lineno">  522</span>&#160;  std::string dump_string;</div>
+<div class="line"><a name="l00523"></a><span class="lineno">  523</span>&#160;  ::Yaml::Node node;</div>
+<div class="line"><a name="l00524"></a><span class="lineno">  524</span>&#160;  <span class="keywordflow">try</span> {</div>
+<div class="line"><a name="l00525"></a><span class="lineno">  525</span>&#160;    node[<span class="stringliteral">&quot;type&quot;</span>] = impl_-&gt;type_;</div>
+<div class="line"><a name="l00526"></a><span class="lineno">  526</span>&#160;    node[<span class="stringliteral">&quot;chunk_size&quot;</span>] = std::to_string(impl_-&gt;chunk_size_);</div>
+<div class="line"><a name="l00527"></a><span class="lineno">  527</span>&#160;    node[<span class="stringliteral">&quot;prefix&quot;</span>] = impl_-&gt;prefix_;</div>
+<div class="line"><a name="l00528"></a><span class="lineno">  528</span>&#160;    <span class="keywordflow">if</span> (impl_-&gt;labels_.size() &gt; 0) {</div>
+<div class="line"><a name="l00529"></a><span class="lineno">  529</span>&#160;      node[<span class="stringliteral">&quot;labels&quot;</span>];</div>
+<div class="line"><a name="l00530"></a><span class="lineno">  530</span>&#160;      <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; label : impl_-&gt;labels_) {</div>
+<div class="line"><a name="l00531"></a><span class="lineno">  531</span>&#160;        node[<span class="stringliteral">&quot;labels&quot;</span>].PushBack();</div>
+<div class="line"><a name="l00532"></a><span class="lineno">  532</span>&#160;        node[<span class="stringliteral">&quot;labels&quot;</span>][node[<span class="stringliteral">&quot;labels&quot;</span>].Size() - 1] = label;</div>
+<div class="line"><a name="l00533"></a><span class="lineno">  533</span>&#160;      }</div>
+<div class="line"><a name="l00534"></a><span class="lineno">  534</span>&#160;    }</div>
+<div class="line"><a name="l00535"></a><span class="lineno">  535</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; pg : impl_-&gt;property_groups_) {</div>
+<div class="line"><a name="l00536"></a><span class="lineno">  536</span>&#160;      ::Yaml::Node pg_node;</div>
+<div class="line"><a name="l00537"></a><span class="lineno">  537</span>&#160;      <span class="keywordflow">if</span> (!pg-&gt;GetPrefix().empty()) {</div>
+<div class="line"><a name="l00538"></a><span class="lineno">  538</span>&#160;        pg_node[<span class="stringliteral">&quot;prefix&quot;</span>] = pg-&gt;GetPrefix();</div>
+<div class="line"><a name="l00539"></a><span class="lineno">  539</span>&#160;      }</div>
+<div class="line"><a name="l00540"></a><span class="lineno">  540</span>&#160;      pg_node[<span class="stringliteral">&quot;file_type&quot;</span>] = FileTypeToString(pg-&gt;GetFileType());</div>
+<div class="line"><a name="l00541"></a><span class="lineno">  541</span>&#160;      <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; p : pg-&gt;GetProperties()) {</div>
+<div class="line"><a name="l00542"></a><span class="lineno">  542</span>&#160;        ::Yaml::Node p_node;</div>
+<div class="line"><a name="l00543"></a><span class="lineno">  543</span>&#160;        p_node[<span class="stringliteral">&quot;name&quot;</span>] = p.name;</div>
+<div class="line"><a name="l00544"></a><span class="lineno">  544</span>&#160;        p_node[<span class="stringliteral">&quot;data_type&quot;</span>] = p.type-&gt;ToTypeName();</div>
+<div class="line"><a name="l00545"></a><span class="lineno">  545</span>&#160;        p_node[<span class="stringliteral">&quot;is_primary&quot;</span>] = p.is_primary ? <span class="stringliteral">&quot;true&quot;</span> : <span class="stringliteral">&quot;false&quot;</span>;</div>
+<div class="line"><a name="l00546"></a><span class="lineno">  546</span>&#160;        p_node[<span class="stringliteral">&quot;is_nullable&quot;</span>] = p.is_nullable ? <span class="stringliteral">&quot;true&quot;</span> : <span class="stringliteral">&quot;false&quot;</span>;</div>
+<div class="line"><a name="l00547"></a><span class="lineno">  547</span>&#160;        <span class="keywordflow">if</span> (p.cardinality != Cardinality::SINGLE) {</div>
+<div class="line"><a name="l00548"></a><span class="lineno">  548</span>&#160;          p_node[<span class="stringliteral">&quot;cardinality&quot;</span>] = CardinalityToString(p.cardinality);</div>
+<div class="line"><a name="l00549"></a><span class="lineno">  549</span>&#160;        }</div>
+<div class="line"><a name="l00550"></a><span class="lineno">  550</span>&#160;        pg_node[<span class="stringliteral">&quot;properties&quot;</span>].PushBack();</div>
+<div class="line"><a name="l00551"></a><span class="lineno">  551</span>&#160;        pg_node[<span class="stringliteral">&quot;properties&quot;</span>][pg_node[<span class="stringliteral">&quot;properties&quot;</span>].Size() - 1] = p_node;</div>
+<div class="line"><a name="l00552"></a><span class="lineno">  552</span>&#160;      }</div>
+<div class="line"><a name="l00553"></a><span class="lineno">  553</span>&#160;      node[<span class="stringliteral">&quot;property_groups&quot;</span>].PushBack();</div>
+<div class="line"><a name="l00554"></a><span class="lineno">  554</span>&#160;      node[<span class="stringliteral">&quot;property_groups&quot;</span>][node[<span class="stringliteral">&quot;property_groups&quot;</span>].Size() - 1] = pg_node;</div>
+<div class="line"><a name="l00555"></a><span class="lineno">  555</span>&#160;    }</div>
+<div class="line"><a name="l00556"></a><span class="lineno">  556</span>&#160;    <span class="keywordflow">if</span> (impl_-&gt;version_ != <span class="keyword">nullptr</span>) {</div>
+<div class="line"><a name="l00557"></a><span class="lineno">  557</span>&#160;      node[<span class="stringliteral">&quot;version&quot;</span>] = impl_-&gt;version_-&gt;ToString();</div>
+<div class="line"><a name="l00558"></a><span class="lineno">  558</span>&#160;    }</div>
+<div class="line"><a name="l00559"></a><span class="lineno">  559</span>&#160;    ::Yaml::Serialize(node, dump_string);</div>
+<div class="line"><a name="l00560"></a><span class="lineno">  560</span>&#160;  } <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception&amp; e) {</div>
+<div class="line"><a name="l00561"></a><span class="lineno">  561</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#a9ca4be37aae8dfea7e6ef54920e0073f">Status::Invalid</a>(<span class="stringliteral">&quot;Failed to dump vertex info: &quot;</span>, e.what());</div>
+<div class="line"><a name="l00562"></a><span class="lineno">  562</span>&#160;  }</div>
+<div class="line"><a name="l00563"></a><span class="lineno">  563</span>&#160;  <span class="keywordflow">return</span> dump_string;</div>
+<div class="line"><a name="l00564"></a><span class="lineno">  564</span>&#160;}</div>
+<div class="line"><a name="l00565"></a><span class="lineno">  565</span>&#160; </div>
+<div class="line"><a name="l00566"></a><span class="lineno"><a class="line" href="classgraphar_1_1_vertex_info.html#afd42b99a43507a9edb1825e7e104d1e7">  566</a></span>&#160;<a class="code" href="classgraphar_1_1_status.html">Status</a> <a class="code" href="classgraphar_1_1_vertex_info.html#afd42b99a43507a9edb1825e7e104d1e7">VertexInfo::Save</a>(<span class="keyword">const</span> std::string&amp; path)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00567"></a><span class="lineno">  567</span>&#160;  std::string no_url_path;</div>
+<div class="line"><a name="l00568"></a><span class="lineno">  568</span>&#160;  GAR_ASSIGN_OR_RAISE(<span class="keyword">auto</span> fs, FileSystemFromUriOrPath(path, &amp;no_url_path));</div>
+<div class="line"><a name="l00569"></a><span class="lineno">  569</span>&#160;  GAR_ASSIGN_OR_RAISE(<span class="keyword">auto</span> yaml_content, this-&gt;<a class="code" href="classgraphar_1_1_vertex_info.html#adc0a253c371a004324ffae6e8abbdbc7">Dump</a>());</div>
+<div class="line"><a name="l00570"></a><span class="lineno">  570</span>&#160;  <span class="keywordflow">return</span> fs-&gt;WriteValueToFile(yaml_content, no_url_path);</div>
+<div class="line"><a name="l00571"></a><span class="lineno">  571</span>&#160;}</div>
+<div class="line"><a name="l00572"></a><span class="lineno">  572</span>&#160; </div>
+<div class="line"><a name="l00573"></a><span class="lineno"><a class="line" href="classgraphar_1_1_edge_info_1_1_impl.html">  573</a></span>&#160;<span class="keyword">class </span><a class="code" href="classgraphar_1_1_edge_info_1_1_impl.html">EdgeInfo::Impl</a> {</div>
+<div class="line"><a name="l00574"></a><span class="lineno">  574</span>&#160; <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00575"></a><span class="lineno">  575</span>&#160;  <a class="code" href="classgraphar_1_1_edge_info_1_1_impl.html">Impl</a>(<span class="keyword">const</span> std::string&amp; src_type, <span class="keyword">const</span> std::string&amp; edge_type,</div>
+<div class="line"><a name="l00576"></a><span class="lineno">  576</span>&#160;       <span class="keyword">const</span> std::string&amp; dst_type, IdType chunk_size, IdType src_chunk_size,</div>
+<div class="line"><a name="l00577"></a><span class="lineno">  577</span>&#160;       IdType dst_chunk_size, <span class="keywordtype">bool</span> directed, <span class="keyword">const</span> std::string&amp; prefix,</div>
+<div class="line"><a name="l00578"></a><span class="lineno">  578</span>&#160;       <span class="keyword">const</span> AdjacentListVector&amp; adjacent_lists,</div>
+<div class="line"><a name="l00579"></a><span class="lineno">  579</span>&#160;       <span class="keyword">const</span> PropertyGroupVector&amp; property_groups,</div>
+<div class="line"><a name="l00580"></a><span class="lineno">  580</span>&#160;       std::shared_ptr&lt;const InfoVersion&gt; <a class="code" href="classgraphar_1_1_edge_info.html#a9440bef05f4fa689662f26a9ef0117c1">version</a>)</div>
+<div class="line"><a name="l00581"></a><span class="lineno">  581</span>&#160;      : src_type_(src_type),</div>
+<div class="line"><a name="l00582"></a><span class="lineno">  582</span>&#160;        edge_type_(edge_type),</div>
+<div class="line"><a name="l00583"></a><span class="lineno">  583</span>&#160;        dst_type_(dst_type),</div>
+<div class="line"><a name="l00584"></a><span class="lineno">  584</span>&#160;        chunk_size_(chunk_size),</div>
+<div class="line"><a name="l00585"></a><span class="lineno">  585</span>&#160;        src_chunk_size_(src_chunk_size),</div>
+<div class="line"><a name="l00586"></a><span class="lineno">  586</span>&#160;        dst_chunk_size_(dst_chunk_size),</div>
+<div class="line"><a name="l00587"></a><span class="lineno">  587</span>&#160;        directed_(directed),</div>
+<div class="line"><a name="l00588"></a><span class="lineno">  588</span>&#160;        prefix_(prefix),</div>
+<div class="line"><a name="l00589"></a><span class="lineno">  589</span>&#160;        adjacent_lists_(std::move(adjacent_lists)),</div>
+<div class="line"><a name="l00590"></a><span class="lineno">  590</span>&#160;        property_groups_(std::move(property_groups)),</div>
+<div class="line"><a name="l00591"></a><span class="lineno">  591</span>&#160;        version_(std::move(<a class="code" href="classgraphar_1_1_edge_info.html#a9440bef05f4fa689662f26a9ef0117c1">version</a>)) {</div>
+<div class="line"><a name="l00592"></a><span class="lineno">  592</span>&#160;    <span class="keywordflow">if</span> (prefix_.empty()) {</div>
+<div class="line"><a name="l00593"></a><span class="lineno">  593</span>&#160;      prefix_ = src_type_ + REGULAR_SEPARATOR + edge_type_ + REGULAR_SEPARATOR +</div>
+<div class="line"><a name="l00594"></a><span class="lineno">  594</span>&#160;                dst_type_ + <span class="stringliteral">&quot;/&quot;</span>;  <span class="comment">// default prefix</span></div>
+<div class="line"><a name="l00595"></a><span class="lineno">  595</span>&#160;    }</div>
+<div class="line"><a name="l00596"></a><span class="lineno">  596</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; adjacent_lists_.size(); i++) {</div>
+<div class="line"><a name="l00597"></a><span class="lineno">  597</span>&#160;      <span class="keywordflow">if</span> (!adjacent_lists_[i]) {</div>
+<div class="line"><a name="l00598"></a><span class="lineno">  598</span>&#160;        <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00599"></a><span class="lineno">  599</span>&#160;      }</div>
+<div class="line"><a name="l00600"></a><span class="lineno">  600</span>&#160; </div>
+<div class="line"><a name="l00601"></a><span class="lineno">  601</span>&#160;      <span class="keyword">auto</span> adj_list_type = adjacent_lists_[i]-&gt;GetType();</div>
+<div class="line"><a name="l00602"></a><span class="lineno">  602</span>&#160;      adjacent_list_type_to_index_[adj_list_type] = i;</div>
+<div class="line"><a name="l00603"></a><span class="lineno">  603</span>&#160;    }</div>
+<div class="line"><a name="l00604"></a><span class="lineno">  604</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; property_groups_.size(); i++) {</div>
+<div class="line"><a name="l00605"></a><span class="lineno">  605</span>&#160;      <span class="keyword">const</span> <span class="keyword">auto</span>&amp; pg = property_groups_[i];</div>
+<div class="line"><a name="l00606"></a><span class="lineno">  606</span>&#160;      <span class="keywordflow">if</span> (!pg) {</div>
+<div class="line"><a name="l00607"></a><span class="lineno">  607</span>&#160;        <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00608"></a><span class="lineno">  608</span>&#160;      }</div>
+<div class="line"><a name="l00609"></a><span class="lineno">  609</span>&#160;      <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; p : pg-&gt;GetProperties()) {</div>
+<div class="line"><a name="l00610"></a><span class="lineno">  610</span>&#160;        property_name_to_index_.emplace(p.name, i);</div>
+<div class="line"><a name="l00611"></a><span class="lineno">  611</span>&#160;        property_name_to_primary_.emplace(p.name, p.is_primary);</div>
+<div class="line"><a name="l00612"></a><span class="lineno">  612</span>&#160;        property_name_to_nullable_.emplace(p.name, p.is_nullable);</div>
+<div class="line"><a name="l00613"></a><span class="lineno">  613</span>&#160;        property_name_to_type_.emplace(p.name, p.type);</div>
+<div class="line"><a name="l00614"></a><span class="lineno">  614</span>&#160;      }</div>
+<div class="line"><a name="l00615"></a><span class="lineno">  615</span>&#160;    }</div>
+<div class="line"><a name="l00616"></a><span class="lineno">  616</span>&#160;  }</div>
+<div class="line"><a name="l00617"></a><span class="lineno">  617</span>&#160; </div>
+<div class="line"><a name="l00618"></a><span class="lineno">  618</span>&#160;  <span class="keywordtype">bool</span> is_validated() <span class="keyword">const</span> noexcept {</div>
+<div class="line"><a name="l00619"></a><span class="lineno">  619</span>&#160;    <span class="keywordflow">if</span> (src_type_.empty() || edge_type_.empty() || dst_type_.empty() ||</div>
+<div class="line"><a name="l00620"></a><span class="lineno">  620</span>&#160;        chunk_size_ &lt;= 0 || src_chunk_size_ &lt;= 0 || dst_chunk_size_ &lt;= 0 ||</div>
+<div class="line"><a name="l00621"></a><span class="lineno">  621</span>&#160;        prefix_.empty() || adjacent_lists_.empty()) {</div>
+<div class="line"><a name="l00622"></a><span class="lineno">  622</span>&#160;      <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00623"></a><span class="lineno">  623</span>&#160;    }</div>
+<div class="line"><a name="l00624"></a><span class="lineno">  624</span>&#160; </div>
+<div class="line"><a name="l00625"></a><span class="lineno">  625</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; al : adjacent_lists_) {</div>
+<div class="line"><a name="l00626"></a><span class="lineno">  626</span>&#160;      <span class="keywordflow">if</span> (!al || !al-&gt;IsValidated()) {</div>
+<div class="line"><a name="l00627"></a><span class="lineno">  627</span>&#160;        <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00628"></a><span class="lineno">  628</span>&#160;      }</div>
+<div class="line"><a name="l00629"></a><span class="lineno">  629</span>&#160;    }</div>
+<div class="line"><a name="l00630"></a><span class="lineno">  630</span>&#160; </div>
+<div class="line"><a name="l00631"></a><span class="lineno">  631</span>&#160;    std::unordered_set&lt;std::string&gt; check_property_unique_set;</div>
+<div class="line"><a name="l00632"></a><span class="lineno">  632</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; pg : property_groups_) {</div>
+<div class="line"><a name="l00633"></a><span class="lineno">  633</span>&#160;      <span class="comment">// check if property group is validated</span></div>
+<div class="line"><a name="l00634"></a><span class="lineno">  634</span>&#160;      <span class="keywordflow">if</span> (!pg || !pg-&gt;IsValidated()) {</div>
+<div class="line"><a name="l00635"></a><span class="lineno">  635</span>&#160;        <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00636"></a><span class="lineno">  636</span>&#160;      }</div>
+<div class="line"><a name="l00637"></a><span class="lineno">  637</span>&#160;      <span class="comment">// check if property name is unique in all property groups</span></div>
+<div class="line"><a name="l00638"></a><span class="lineno">  638</span>&#160;      <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; p : pg-&gt;GetProperties()) {</div>
+<div class="line"><a name="l00639"></a><span class="lineno">  639</span>&#160;        <span class="keywordflow">if</span> (p.cardinality != Cardinality::SINGLE) {</div>
+<div class="line"><a name="l00640"></a><span class="lineno">  640</span>&#160;          <span class="comment">// edge property only supports single cardinality</span></div>
+<div class="line"><a name="l00641"></a><span class="lineno">  641</span>&#160;          std::cout</div>
+<div class="line"><a name="l00642"></a><span class="lineno">  642</span>&#160;              &lt;&lt; <span class="stringliteral">&quot;Edge property only supports single cardinality, but got: &quot;</span></div>
+<div class="line"><a name="l00643"></a><span class="lineno">  643</span>&#160;              &lt;&lt; CardinalityToString(p.cardinality) &lt;&lt; std::endl;</div>
+<div class="line"><a name="l00644"></a><span class="lineno">  644</span>&#160;          <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00645"></a><span class="lineno">  645</span>&#160;        }</div>
+<div class="line"><a name="l00646"></a><span class="lineno">  646</span>&#160;        <span class="keywordflow">if</span> (check_property_unique_set.find(p.name) !=</div>
+<div class="line"><a name="l00647"></a><span class="lineno">  647</span>&#160;            check_property_unique_set.end()) {</div>
+<div class="line"><a name="l00648"></a><span class="lineno">  648</span>&#160;          <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00649"></a><span class="lineno">  649</span>&#160;        } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00650"></a><span class="lineno">  650</span>&#160;          check_property_unique_set.insert(p.name);</div>
+<div class="line"><a name="l00651"></a><span class="lineno">  651</span>&#160;        }</div>
+<div class="line"><a name="l00652"></a><span class="lineno">  652</span>&#160;      }</div>
+<div class="line"><a name="l00653"></a><span class="lineno">  653</span>&#160;    }</div>
+<div class="line"><a name="l00654"></a><span class="lineno">  654</span>&#160;    <span class="keywordflow">if</span> (adjacent_lists_.size() != adjacent_list_type_to_index_.size()) {</div>
+<div class="line"><a name="l00655"></a><span class="lineno">  655</span>&#160;      <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00656"></a><span class="lineno">  656</span>&#160;    }</div>
+<div class="line"><a name="l00657"></a><span class="lineno">  657</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00658"></a><span class="lineno">  658</span>&#160;  }</div>
 <div class="line"><a name="l00659"></a><span class="lineno">  659</span>&#160; </div>
-<div class="line"><a name="l00660"></a><span class="lineno"><a class="line" href="classgraphar_1_1_edge_info.html#ac03180737adf29c79196bbe729b3c929">  660</a></span>&#160;<span class="keyword">const</span> std::string&amp; <a class="code" href="classgraphar_1_1_edge_info.html#ac03180737adf29c79196bbe729b3c929">EdgeInfo::GetDstType</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> impl_-&gt;dst_type_; }</div>
-<div class="line"><a name="l00661"></a><span class="lineno">  661</span>&#160; </div>
-<div class="line"><a name="l00662"></a><span class="lineno"><a class="line" href="classgraphar_1_1_edge_info.html#a62c2300185c0655df9b44db39b0a399b">  662</a></span>&#160;IdType <a class="code" href="classgraphar_1_1_edge_info.html#a62c2300185c0655df9b44db39b0a399b">EdgeInfo::GetChunkSize</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> impl_-&gt;chunk_size_; }</div>
-<div class="line"><a name="l00663"></a><span class="lineno">  663</span>&#160; </div>
-<div class="line"><a name="l00664"></a><span class="lineno"><a class="line" href="classgraphar_1_1_edge_info.html#ac07ad975e8ecbdb779038388e3def59e">  664</a></span>&#160;IdType <a class="code" href="classgraphar_1_1_edge_info.html#ac07ad975e8ecbdb779038388e3def59e">EdgeInfo::GetSrcChunkSize</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> impl_-&gt;src_chunk_size_; }</div>
-<div class="line"><a name="l00665"></a><span class="lineno">  665</span>&#160; </div>
-<div class="line"><a name="l00666"></a><span class="lineno"><a class="line" href="classgraphar_1_1_edge_info.html#abe0fc6672a3fbb5fbd0b5e8775cb8dac">  666</a></span>&#160;IdType <a class="code" href="classgraphar_1_1_edge_info.html#abe0fc6672a3fbb5fbd0b5e8775cb8dac">EdgeInfo::GetDstChunkSize</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> impl_-&gt;dst_chunk_size_; }</div>
-<div class="line"><a name="l00667"></a><span class="lineno">  667</span>&#160; </div>
-<div class="line"><a name="l00668"></a><span class="lineno"><a class="line" href="classgraphar_1_1_edge_info.html#a4ec8810a54411f9a8aba35b2faf29acb">  668</a></span>&#160;<span class="keyword">const</span> std::string&amp; <a class="code" href="classgraphar_1_1_edge_info.html#a4ec8810a54411f9a8aba35b2faf29acb">EdgeInfo::GetPrefix</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> impl_-&gt;prefix_; }</div>
-<div class="line"><a name="l00669"></a><span class="lineno">  669</span>&#160; </div>
-<div class="line"><a name="l00670"></a><span class="lineno"><a class="line" href="classgraphar_1_1_edge_info.html#aad31af465d41c026a35c20828915922e">  670</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classgraphar_1_1_edge_info.html#aad31af465d41c026a35c20828915922e">EdgeInfo::IsDirected</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> impl_-&gt;directed_; }</div>
-<div class="line"><a name="l00671"></a><span class="lineno">  671</span>&#160; </div>
-<div class="line"><a name="l00672"></a><span class="lineno"><a class="line" href="classgraphar_1_1_edge_info.html#a9440bef05f4fa689662f26a9ef0117c1">  672</a></span>&#160;<span class="keyword">const</span> std::shared_ptr&lt;const InfoVersion&gt;&amp; <a class="code" href="classgraphar_1_1_edge_info.html#a9440bef05f4fa689662f26a9ef0117c1">EdgeInfo::version</a>()<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00673"></a><span class="lineno">  673</span>&#160;  <span class="keywordflow">return</span> impl_-&gt;version_;</div>
-<div class="line"><a name="l00674"></a><span class="lineno">  674</span>&#160;}</div>
-<div class="line"><a name="l00675"></a><span class="lineno">  675</span>&#160; </div>
-<div class="line"><a name="l00676"></a><span class="lineno"><a class="line" href="classgraphar_1_1_edge_info.html#aaa6633dc8136cec806cbcf42c2cf136d">  676</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classgraphar_1_1_edge_info.html#aaa6633dc8136cec806cbcf42c2cf136d">EdgeInfo::HasAdjacentListType</a>(AdjListType adj_list_type)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00677"></a><span class="lineno">  677</span>&#160;  <span class="keywordflow">return</span> impl_-&gt;adjacent_list_type_to_index_.find(adj_list_type) !=</div>
-<div class="line"><a name="l00678"></a><span class="lineno">  678</span>&#160;         impl_-&gt;adjacent_list_type_to_index_.end();</div>
-<div class="line"><a name="l00679"></a><span class="lineno">  679</span>&#160;}</div>
-<div class="line"><a name="l00680"></a><span class="lineno">  680</span>&#160; </div>
-<div class="line"><a name="l00681"></a><span class="lineno"><a class="line" href="classgraphar_1_1_edge_info.html#a69182fa8d45bb0e7d4ac230adb1239b2">  681</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classgraphar_1_1_edge_info.html#a69182fa8d45bb0e7d4ac230adb1239b2">EdgeInfo::HasProperty</a>(<span class="keyword">const</span> std::string&amp; property_name)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00682"></a><span class="lineno">  682</span>&#160;  <span class="keywordflow">return</span> impl_-&gt;property_name_to_index_.find(property_name) !=</div>
-<div class="line"><a name="l00683"></a><span class="lineno">  683</span>&#160;         impl_-&gt;property_name_to_index_.end();</div>
-<div class="line"><a name="l00684"></a><span class="lineno">  684</span>&#160;}</div>
-<div class="line"><a name="l00685"></a><span class="lineno">  685</span>&#160; </div>
-<div class="line"><a name="l00686"></a><span class="lineno"><a class="line" href="classgraphar_1_1_edge_info.html#a857bb686e5d7f579ac0e2a889a53f829">  686</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classgraphar_1_1_edge_info.html#a857bb686e5d7f579ac0e2a889a53f829">EdgeInfo::HasPropertyGroup</a>(</div>
-<div class="line"><a name="l00687"></a><span class="lineno">  687</span>&#160;    <span class="keyword">const</span> std::shared_ptr&lt;PropertyGroup&gt;&amp; property_group)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00688"></a><span class="lineno">  688</span>&#160;  <span class="keywordflow">if</span> (property_group == <span class="keyword">nullptr</span>) {</div>
-<div class="line"><a name="l00689"></a><span class="lineno">  689</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00690"></a><span class="lineno">  690</span>&#160;  }</div>
-<div class="line"><a name="l00691"></a><span class="lineno">  691</span>&#160;  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; pg : impl_-&gt;property_groups_) {</div>
-<div class="line"><a name="l00692"></a><span class="lineno">  692</span>&#160;    <span class="keywordflow">if</span> (*pg == *property_group) {</div>
-<div class="line"><a name="l00693"></a><span class="lineno">  693</span>&#160;      <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00694"></a><span class="lineno">  694</span>&#160;    }</div>
-<div class="line"><a name="l00695"></a><span class="lineno">  695</span>&#160;  }</div>
-<div class="line"><a name="l00696"></a><span class="lineno">  696</span>&#160;  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00697"></a><span class="lineno">  697</span>&#160;}</div>
-<div class="line"><a name="l00698"></a><span class="lineno">  698</span>&#160; </div>
-<div class="line"><a name="l00699"></a><span class="lineno">  699</span>&#160;std::shared_ptr&lt;AdjacentList&gt; EdgeInfo::GetAdjacentList(</div>
-<div class="line"><a name="l00700"></a><span class="lineno">  700</span>&#160;    AdjListType adj_list_type)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00701"></a><span class="lineno">  701</span>&#160;  <span class="keyword">auto</span> it = impl_-&gt;adjacent_list_type_to_index_.find(adj_list_type);</div>
-<div class="line"><a name="l00702"></a><span class="lineno">  702</span>&#160;  <span class="keywordflow">if</span> (it == impl_-&gt;adjacent_list_type_to_index_.end()) {</div>
-<div class="line"><a name="l00703"></a><span class="lineno">  703</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
-<div class="line"><a name="l00704"></a><span class="lineno">  704</span>&#160;  }</div>
-<div class="line"><a name="l00705"></a><span class="lineno">  705</span>&#160;  <span class="keywordflow">return</span> impl_-&gt;adjacent_lists_[it-&gt;second];</div>
-<div class="line"><a name="l00706"></a><span class="lineno">  706</span>&#160;}</div>
+<div class="line"><a name="l00660"></a><span class="lineno">  660</span>&#160;  std::string src_type_;</div>
+<div class="line"><a name="l00661"></a><span class="lineno">  661</span>&#160;  std::string edge_type_;</div>
+<div class="line"><a name="l00662"></a><span class="lineno">  662</span>&#160;  std::string dst_type_;</div>
+<div class="line"><a name="l00663"></a><span class="lineno">  663</span>&#160;  IdType chunk_size_;</div>
+<div class="line"><a name="l00664"></a><span class="lineno">  664</span>&#160;  IdType src_chunk_size_;</div>
+<div class="line"><a name="l00665"></a><span class="lineno">  665</span>&#160;  IdType dst_chunk_size_;</div>
+<div class="line"><a name="l00666"></a><span class="lineno">  666</span>&#160;  <span class="keywordtype">bool</span> directed_;</div>
+<div class="line"><a name="l00667"></a><span class="lineno">  667</span>&#160;  std::string prefix_;</div>
+<div class="line"><a name="l00668"></a><span class="lineno">  668</span>&#160;  AdjacentListVector adjacent_lists_;</div>
+<div class="line"><a name="l00669"></a><span class="lineno">  669</span>&#160;  PropertyGroupVector property_groups_;</div>
+<div class="line"><a name="l00670"></a><span class="lineno">  670</span>&#160;  std::unordered_map&lt;AdjListType, int&gt; adjacent_list_type_to_index_;</div>
+<div class="line"><a name="l00671"></a><span class="lineno">  671</span>&#160;  std::unordered_map&lt;std::string, int&gt; property_name_to_index_;</div>
+<div class="line"><a name="l00672"></a><span class="lineno">  672</span>&#160;  std::unordered_map&lt;std::string, bool&gt; property_name_to_primary_;</div>
+<div class="line"><a name="l00673"></a><span class="lineno">  673</span>&#160;  std::unordered_map&lt;std::string, bool&gt; property_name_to_nullable_;</div>
+<div class="line"><a name="l00674"></a><span class="lineno">  674</span>&#160;  std::unordered_map&lt;std::string, std::shared_ptr&lt;DataType&gt;&gt;</div>
+<div class="line"><a name="l00675"></a><span class="lineno">  675</span>&#160;      property_name_to_type_;</div>
+<div class="line"><a name="l00676"></a><span class="lineno">  676</span>&#160;  std::shared_ptr&lt;const InfoVersion&gt; version_;</div>
+<div class="line"><a name="l00677"></a><span class="lineno">  677</span>&#160;};</div>
+<div class="line"><a name="l00678"></a><span class="lineno">  678</span>&#160; </div>
+<div class="line"><a name="l00679"></a><span class="lineno"><a class="line" href="classgraphar_1_1_edge_info.html#ab3c32f3112dcf08304676eeb95545b55">  679</a></span>&#160;<a class="code" href="classgraphar_1_1_edge_info.html#ab3c32f3112dcf08304676eeb95545b55">EdgeInfo::EdgeInfo</a>(<span class="keyword">const</span> std::string&amp; src_type, <span class="keyword">const</span> std::string&amp; edge_type,</div>
+<div class="line"><a name="l00680"></a><span class="lineno">  680</span>&#160;                   <span class="keyword">const</span> std::string&amp; dst_type, IdType chunk_size,</div>
+<div class="line"><a name="l00681"></a><span class="lineno">  681</span>&#160;                   IdType src_chunk_size, IdType dst_chunk_size, <span class="keywordtype">bool</span> directed,</div>
+<div class="line"><a name="l00682"></a><span class="lineno">  682</span>&#160;                   <span class="keyword">const</span> AdjacentListVector&amp; adjacent_lists,</div>
+<div class="line"><a name="l00683"></a><span class="lineno">  683</span>&#160;                   <span class="keyword">const</span> PropertyGroupVector&amp; property_groups,</div>
+<div class="line"><a name="l00684"></a><span class="lineno">  684</span>&#160;                   <span class="keyword">const</span> std::string&amp; prefix,</div>
+<div class="line"><a name="l00685"></a><span class="lineno">  685</span>&#160;                   std::shared_ptr&lt;const InfoVersion&gt; version)</div>
+<div class="line"><a name="l00686"></a><span class="lineno">  686</span>&#160;    : impl_(new <a class="code" href="classgraphar_1_1_edge_info_1_1_impl.html">Impl</a>(src_type, edge_type, dst_type, chunk_size, src_chunk_size,</div>
+<div class="line"><a name="l00687"></a><span class="lineno">  687</span>&#160;                     dst_chunk_size, directed, prefix, adjacent_lists,</div>
+<div class="line"><a name="l00688"></a><span class="lineno">  688</span>&#160;                     property_groups, version)) {}</div>
+<div class="line"><a name="l00689"></a><span class="lineno">  689</span>&#160; </div>
+<div class="line"><a name="l00690"></a><span class="lineno">  690</span>&#160;EdgeInfo::~EdgeInfo() = <span class="keywordflow">default</span>;</div>
+<div class="line"><a name="l00691"></a><span class="lineno">  691</span>&#160; </div>
+<div class="line"><a name="l00692"></a><span class="lineno"><a class="line" href="classgraphar_1_1_edge_info.html#a994023f50f2f952cc1361b0f9928dec4">  692</a></span>&#160;<span class="keyword">const</span> std::string&amp; <a class="code" href="classgraphar_1_1_edge_info.html#a994023f50f2f952cc1361b0f9928dec4">EdgeInfo::GetSrcType</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> impl_-&gt;src_type_; }</div>
+<div class="line"><a name="l00693"></a><span class="lineno">  693</span>&#160; </div>
+<div class="line"><a name="l00694"></a><span class="lineno"><a class="line" href="classgraphar_1_1_edge_info.html#a03c9b4f4b0edcf47f2e5746e8f9f6db0">  694</a></span>&#160;<span class="keyword">const</span> std::string&amp; <a class="code" href="classgraphar_1_1_edge_info.html#a03c9b4f4b0edcf47f2e5746e8f9f6db0">EdgeInfo::GetEdgeType</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> impl_-&gt;edge_type_; }</div>
+<div class="line"><a name="l00695"></a><span class="lineno">  695</span>&#160; </div>
+<div class="line"><a name="l00696"></a><span class="lineno"><a class="line" href="classgraphar_1_1_edge_info.html#ac03180737adf29c79196bbe729b3c929">  696</a></span>&#160;<span class="keyword">const</span> std::string&amp; <a class="code" href="classgraphar_1_1_edge_info.html#ac03180737adf29c79196bbe729b3c929">EdgeInfo::GetDstType</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> impl_-&gt;dst_type_; }</div>
+<div class="line"><a name="l00697"></a><span class="lineno">  697</span>&#160; </div>
+<div class="line"><a name="l00698"></a><span class="lineno"><a class="line" href="classgraphar_1_1_edge_info.html#a62c2300185c0655df9b44db39b0a399b">  698</a></span>&#160;IdType <a class="code" href="classgraphar_1_1_edge_info.html#a62c2300185c0655df9b44db39b0a399b">EdgeInfo::GetChunkSize</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> impl_-&gt;chunk_size_; }</div>
+<div class="line"><a name="l00699"></a><span class="lineno">  699</span>&#160; </div>
+<div class="line"><a name="l00700"></a><span class="lineno"><a class="line" href="classgraphar_1_1_edge_info.html#ac07ad975e8ecbdb779038388e3def59e">  700</a></span>&#160;IdType <a class="code" href="classgraphar_1_1_edge_info.html#ac07ad975e8ecbdb779038388e3def59e">EdgeInfo::GetSrcChunkSize</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> impl_-&gt;src_chunk_size_; }</div>
+<div class="line"><a name="l00701"></a><span class="lineno">  701</span>&#160; </div>
+<div class="line"><a name="l00702"></a><span class="lineno"><a class="line" href="classgraphar_1_1_edge_info.html#abe0fc6672a3fbb5fbd0b5e8775cb8dac">  702</a></span>&#160;IdType <a class="code" href="classgraphar_1_1_edge_info.html#abe0fc6672a3fbb5fbd0b5e8775cb8dac">EdgeInfo::GetDstChunkSize</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> impl_-&gt;dst_chunk_size_; }</div>
+<div class="line"><a name="l00703"></a><span class="lineno">  703</span>&#160; </div>
+<div class="line"><a name="l00704"></a><span class="lineno"><a class="line" href="classgraphar_1_1_edge_info.html#a4ec8810a54411f9a8aba35b2faf29acb">  704</a></span>&#160;<span class="keyword">const</span> std::string&amp; <a class="code" href="classgraphar_1_1_edge_info.html#a4ec8810a54411f9a8aba35b2faf29acb">EdgeInfo::GetPrefix</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> impl_-&gt;prefix_; }</div>
+<div class="line"><a name="l00705"></a><span class="lineno">  705</span>&#160; </div>
+<div class="line"><a name="l00706"></a><span class="lineno"><a class="line" href="classgraphar_1_1_edge_info.html#aad31af465d41c026a35c20828915922e">  706</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classgraphar_1_1_edge_info.html#aad31af465d41c026a35c20828915922e">EdgeInfo::IsDirected</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> impl_-&gt;directed_; }</div>
 <div class="line"><a name="l00707"></a><span class="lineno">  707</span>&#160; </div>
-<div class="line"><a name="l00708"></a><span class="lineno"><a class="line" href="classgraphar_1_1_edge_info.html#aee914f2c4adf773c048daed0e93dbe32">  708</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="classgraphar_1_1_edge_info.html#aee914f2c4adf773c048daed0e93dbe32">EdgeInfo::PropertyGroupNum</a>()<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00709"></a><span class="lineno">  709</span>&#160;  <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(impl_-&gt;property_groups_.size());</div>
+<div class="line"><a name="l00708"></a><span class="lineno"><a class="line" href="classgraphar_1_1_edge_info.html#a9440bef05f4fa689662f26a9ef0117c1">  708</a></span>&#160;<span class="keyword">const</span> std::shared_ptr&lt;const InfoVersion&gt;&amp; <a class="code" href="classgraphar_1_1_edge_info.html#a9440bef05f4fa689662f26a9ef0117c1">EdgeInfo::version</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00709"></a><span class="lineno">  709</span>&#160;  <span class="keywordflow">return</span> impl_-&gt;version_;</div>
 <div class="line"><a name="l00710"></a><span class="lineno">  710</span>&#160;}</div>
 <div class="line"><a name="l00711"></a><span class="lineno">  711</span>&#160; </div>
-<div class="line"><a name="l00712"></a><span class="lineno"><a class="line" href="classgraphar_1_1_edge_info.html#ad56107001dcbadac71ae8063cd25b58f">  712</a></span>&#160;<span class="keyword">const</span> PropertyGroupVector&amp; <a class="code" href="classgraphar_1_1_edge_info.html#ad56107001dcbadac71ae8063cd25b58f">EdgeInfo::GetPropertyGroups</a>()<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00713"></a><span class="lineno">  713</span>&#160;  <span class="keywordflow">return</span> impl_-&gt;property_groups_;</div>
-<div class="line"><a name="l00714"></a><span class="lineno">  714</span>&#160;}</div>
-<div class="line"><a name="l00715"></a><span class="lineno">  715</span>&#160; </div>
-<div class="line"><a name="l00716"></a><span class="lineno"><a class="line" href="classgraphar_1_1_edge_info.html#aec1bdf018d5b209f722dbf293ef14dd6">  716</a></span>&#160;std::shared_ptr&lt;PropertyGroup&gt; <a class="code" href="classgraphar_1_1_edge_info.html#aec1bdf018d5b209f722dbf293ef14dd6">EdgeInfo::GetPropertyGroup</a>(</div>
-<div class="line"><a name="l00717"></a><span class="lineno">  717</span>&#160;    <span class="keyword">const</span> std::string&amp; property_name)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00718"></a><span class="lineno">  718</span>&#160;  <span class="keywordtype">int</span> i = LookupKeyIndex(impl_-&gt;property_name_to_index_, property_name);</div>
-<div class="line"><a name="l00719"></a><span class="lineno">  719</span>&#160;  <span class="keywordflow">return</span> i == -1 ? nullptr : impl_-&gt;property_groups_[i];</div>
+<div class="line"><a name="l00712"></a><span class="lineno"><a class="line" href="classgraphar_1_1_edge_info.html#aaa6633dc8136cec806cbcf42c2cf136d">  712</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classgraphar_1_1_edge_info.html#aaa6633dc8136cec806cbcf42c2cf136d">EdgeInfo::HasAdjacentListType</a>(AdjListType adj_list_type)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00713"></a><span class="lineno">  713</span>&#160;  <span class="keywordflow">return</span> impl_-&gt;adjacent_list_type_to_index_.find(adj_list_type) !=</div>
+<div class="line"><a name="l00714"></a><span class="lineno">  714</span>&#160;         impl_-&gt;adjacent_list_type_to_index_.end();</div>
+<div class="line"><a name="l00715"></a><span class="lineno">  715</span>&#160;}</div>
+<div class="line"><a name="l00716"></a><span class="lineno">  716</span>&#160; </div>
+<div class="line"><a name="l00717"></a><span class="lineno"><a class="line" href="classgraphar_1_1_edge_info.html#a69182fa8d45bb0e7d4ac230adb1239b2">  717</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classgraphar_1_1_edge_info.html#a69182fa8d45bb0e7d4ac230adb1239b2">EdgeInfo::HasProperty</a>(<span class="keyword">const</span> std::string&amp; property_name)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00718"></a><span class="lineno">  718</span>&#160;  <span class="keywordflow">return</span> impl_-&gt;property_name_to_index_.find(property_name) !=</div>
+<div class="line"><a name="l00719"></a><span class="lineno">  719</span>&#160;         impl_-&gt;property_name_to_index_.end();</div>
 <div class="line"><a name="l00720"></a><span class="lineno">  720</span>&#160;}</div>
 <div class="line"><a name="l00721"></a><span class="lineno">  721</span>&#160; </div>
-<div class="line"><a name="l00722"></a><span class="lineno"><a class="line" href="classgraphar_1_1_edge_info.html#a8551959066b19885b9ce15262b5cb3db">  722</a></span>&#160;std::shared_ptr&lt;PropertyGroup&gt; <a class="code" href="classgraphar_1_1_edge_info.html#a8551959066b19885b9ce15262b5cb3db">EdgeInfo::GetPropertyGroupByIndex</a>(</div>
-<div class="line"><a name="l00723"></a><span class="lineno">  723</span>&#160;    <span class="keywordtype">int</span> index)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00724"></a><span class="lineno">  724</span>&#160;  <span class="keywordflow">if</span> (index &lt; 0 || index &gt;= <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(impl_-&gt;property_groups_.size())) {</div>
-<div class="line"><a name="l00725"></a><span class="lineno">  725</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
+<div class="line"><a name="l00722"></a><span class="lineno"><a class="line" href="classgraphar_1_1_edge_info.html#a857bb686e5d7f579ac0e2a889a53f829">  722</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classgraphar_1_1_edge_info.html#a857bb686e5d7f579ac0e2a889a53f829">EdgeInfo::HasPropertyGroup</a>(</div>
+<div class="line"><a name="l00723"></a><span class="lineno">  723</span>&#160;    <span class="keyword">const</span> std::shared_ptr&lt;PropertyGroup&gt;&amp; property_group)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00724"></a><span class="lineno">  724</span>&#160;  <span class="keywordflow">if</span> (property_group == <span class="keyword">nullptr</span>) {</div>
+<div class="line"><a name="l00725"></a><span class="lineno">  725</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
 <div class="line"><a name="l00726"></a><span class="lineno">  726</span>&#160;  }</div>
-<div class="line"><a name="l00727"></a><span class="lineno">  727</span>&#160;  <span class="keywordflow">return</span> impl_-&gt;property_groups_[index];</div>
-<div class="line"><a name="l00728"></a><span class="lineno">  728</span>&#160;}</div>
-<div class="line"><a name="l00729"></a><span class="lineno">  729</span>&#160; </div>
-<div class="line"><a name="l00730"></a><span class="lineno"><a class="line" href="classgraphar_1_1_edge_info.html#aec1a622c83b14d62b26e7143850a3cf1">  730</a></span>&#160;Result&lt;std::string&gt; <a class="code" href="classgraphar_1_1_edge_info.html#aec1a622c83b14d62b26e7143850a3cf1">EdgeInfo::GetVerticesNumFilePath</a>(</div>
-<div class="line"><a name="l00731"></a><span class="lineno">  731</span>&#160;    AdjListType adj_list_type)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00732"></a><span class="lineno">  732</span>&#160;  CHECK_HAS_ADJ_LIST_TYPE(adj_list_type);</div>
-<div class="line"><a name="l00733"></a><span class="lineno">  733</span>&#160;  <span class="keywordtype">int</span> i = impl_-&gt;adjacent_list_type_to_index_.at(adj_list_type);</div>
-<div class="line"><a name="l00734"></a><span class="lineno">  734</span>&#160;  <span class="keywordflow">return</span> BuildPath({impl_-&gt;prefix_, impl_-&gt;adjacent_lists_[i]-&gt;GetPrefix()}) +</div>
-<div class="line"><a name="l00735"></a><span class="lineno">  735</span>&#160;         <span class="stringliteral">&quot;vertex_count&quot;</span>;</div>
-<div class="line"><a name="l00736"></a><span class="lineno">  736</span>&#160;}</div>
-<div class="line"><a name="l00737"></a><span class="lineno">  737</span>&#160; </div>
-<div class="line"><a name="l00738"></a><span class="lineno"><a class="line" href="classgraphar_1_1_edge_info.html#a4f2c7fedc68dce8f1c7fb90eede9906f">  738</a></span>&#160;Result&lt;std::string&gt; <a class="code" href="classgraphar_1_1_edge_info.html#a4f2c7fedc68dce8f1c7fb90eede9906f">EdgeInfo::GetEdgesNumFilePath</a>(</div>
-<div class="line"><a name="l00739"></a><span class="lineno">  739</span>&#160;    IdType vertex_chunk_index, AdjListType adj_list_type)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00740"></a><span class="lineno">  740</span>&#160;  CHECK_HAS_ADJ_LIST_TYPE(adj_list_type);</div>
-<div class="line"><a name="l00741"></a><span class="lineno">  741</span>&#160;  <span class="keywordtype">int</span> i = impl_-&gt;adjacent_list_type_to_index_.at(adj_list_type);</div>
-<div class="line"><a name="l00742"></a><span class="lineno">  742</span>&#160;  <span class="keywordflow">return</span> BuildPath({impl_-&gt;prefix_, impl_-&gt;adjacent_lists_[i]-&gt;GetPrefix()}) +</div>
-<div class="line"><a name="l00743"></a><span class="lineno">  743</span>&#160;         <span class="stringliteral">&quot;edge_count&quot;</span> + std::to_string(vertex_chunk_index);</div>
-<div class="line"><a name="l00744"></a><span class="lineno">  744</span>&#160;}</div>
-<div class="line"><a name="l00745"></a><span class="lineno">  745</span>&#160; </div>
-<div class="line"><a name="l00746"></a><span class="lineno"><a class="line" href="classgraphar_1_1_edge_info.html#a0eb9f0ff282c73f5c90a8c3940f1929e">  746</a></span>&#160;Result&lt;std::string&gt; <a class="code" href="classgraphar_1_1_edge_info.html#a0eb9f0ff282c73f5c90a8c3940f1929e">EdgeInfo::GetAdjListFilePath</a>(</div>
-<div class="line"><a name="l00747"></a><span class="lineno">  747</span>&#160;    IdType vertex_chunk_index, IdType edge_chunk_index,</div>
-<div class="line"><a name="l00748"></a><span class="lineno">  748</span>&#160;    AdjListType adj_list_type)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00749"></a><span class="lineno">  749</span>&#160;  CHECK_HAS_ADJ_LIST_TYPE(adj_list_type);</div>
-<div class="line"><a name="l00750"></a><span class="lineno">  750</span>&#160;  <span class="keywordtype">int</span> i = impl_-&gt;adjacent_list_type_to_index_.at(adj_list_type);</div>
-<div class="line"><a name="l00751"></a><span class="lineno">  751</span>&#160;  <span class="keywordflow">return</span> BuildPath({impl_-&gt;prefix_, impl_-&gt;adjacent_lists_[i]-&gt;GetPrefix()}) +</div>
-<div class="line"><a name="l00752"></a><span class="lineno">  752</span>&#160;         <span class="stringliteral">&quot;adj_list/part&quot;</span> + std::to_string(vertex_chunk_index) + <span class="stringliteral">&quot;/chunk&quot;</span> +</div>
-<div class="line"><a name="l00753"></a><span class="lineno">  753</span>&#160;         std::to_string(edge_chunk_index);</div>
-<div class="line"><a name="l00754"></a><span class="lineno">  754</span>&#160;}</div>
-<div class="line"><a name="l00755"></a><span class="lineno">  755</span>&#160; </div>
-<div class="line"><a name="l00756"></a><span class="lineno"><a class="line" href="classgraphar_1_1_edge_info.html#ab39f63f0aa7284c510a7e0d61b0942d3">  756</a></span>&#160;Result&lt;std::string&gt; <a class="code" href="classgraphar_1_1_edge_info.html#ab39f63f0aa7284c510a7e0d61b0942d3">EdgeInfo::GetAdjListPathPrefix</a>(</div>
-<div class="line"><a name="l00757"></a><span class="lineno">  757</span>&#160;    AdjListType adj_list_type)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00758"></a><span class="lineno">  758</span>&#160;  CHECK_HAS_ADJ_LIST_TYPE(adj_list_type);</div>
-<div class="line"><a name="l00759"></a><span class="lineno">  759</span>&#160;  <span class="keywordtype">int</span> i = impl_-&gt;adjacent_list_type_to_index_.at(adj_list_type);</div>
-<div class="line"><a name="l00760"></a><span class="lineno">  760</span>&#160;  <span class="keywordflow">return</span> BuildPath({impl_-&gt;prefix_, impl_-&gt;adjacent_lists_[i]-&gt;GetPrefix()}) +</div>
-<div class="line"><a name="l00761"></a><span class="lineno">  761</span>&#160;         <span class="stringliteral">&quot;adj_list/&quot;</span>;</div>
-<div class="line"><a name="l00762"></a><span class="lineno">  762</span>&#160;}</div>
-<div class="line"><a name="l00763"></a><span class="lineno">  763</span>&#160; </div>
-<div class="line"><a name="l00764"></a><span class="lineno"><a class="line" href="classgraphar_1_1_edge_info.html#a615fe3ed78f35af9aef598287cb89a27">  764</a></span>&#160;Result&lt;std::string&gt; <a class="code" href="classgraphar_1_1_edge_info.html#a615fe3ed78f35af9aef598287cb89a27">EdgeInfo::GetAdjListOffsetFilePath</a>(</div>
-<div class="line"><a name="l00765"></a><span class="lineno">  765</span>&#160;    IdType vertex_chunk_index, AdjListType adj_list_type)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00766"></a><span class="lineno">  766</span>&#160;  CHECK_HAS_ADJ_LIST_TYPE(adj_list_type);</div>
-<div class="line"><a name="l00767"></a><span class="lineno">  767</span>&#160;  <span class="keywordtype">int</span> i = impl_-&gt;adjacent_list_type_to_index_.at(adj_list_type);</div>
-<div class="line"><a name="l00768"></a><span class="lineno">  768</span>&#160;  <span class="keywordflow">return</span> BuildPath({impl_-&gt;prefix_, impl_-&gt;adjacent_lists_[i]-&gt;GetPrefix()}) +</div>
-<div class="line"><a name="l00769"></a><span class="lineno">  769</span>&#160;         <span class="stringliteral">&quot;offset/chunk&quot;</span> + std::to_string(vertex_chunk_index);</div>
-<div class="line"><a name="l00770"></a><span class="lineno">  770</span>&#160;}</div>
-<div class="line"><a name="l00771"></a><span class="lineno">  771</span>&#160; </div>
-<div class="line"><a name="l00772"></a><span class="lineno"><a class="line" href="classgraphar_1_1_edge_info.html#aab2032669c9e9dcf11275fdd4cb2c1fa">  772</a></span>&#160;Result&lt;std::string&gt; <a class="code" href="classgraphar_1_1_edge_info.html#aab2032669c9e9dcf11275fdd4cb2c1fa">EdgeInfo::GetOffsetPathPrefix</a>(</div>
-<div class="line"><a name="l00773"></a><span class="lineno">  773</span>&#160;    AdjListType adj_list_type)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00774"></a><span class="lineno">  774</span>&#160;  CHECK_HAS_ADJ_LIST_TYPE(adj_list_type);</div>
-<div class="line"><a name="l00775"></a><span class="lineno">  775</span>&#160;  <span class="keywordtype">int</span> i = impl_-&gt;adjacent_list_type_to_index_.at(adj_list_type);</div>
-<div class="line"><a name="l00776"></a><span class="lineno">  776</span>&#160;  <span class="keywordflow">return</span> BuildPath({impl_-&gt;prefix_, impl_-&gt;adjacent_lists_[i]-&gt;GetPrefix()}) +</div>
-<div class="line"><a name="l00777"></a><span class="lineno">  777</span>&#160;         <span class="stringliteral">&quot;offset/&quot;</span>;</div>
-<div class="line"><a name="l00778"></a><span class="lineno">  778</span>&#160;}</div>
-<div class="line"><a name="l00779"></a><span class="lineno">  779</span>&#160; </div>
-<div class="line"><a name="l00780"></a><span class="lineno"><a class="line" href="classgraphar_1_1_edge_info.html#abfcba5aed61cdfaf91f98e649b370722">  780</a></span>&#160;Result&lt;std::string&gt; <a class="code" href="classgraphar_1_1_edge_info.html#abfcba5aed61cdfaf91f98e649b370722">EdgeInfo::GetPropertyFilePath</a>(</div>
-<div class="line"><a name="l00781"></a><span class="lineno">  781</span>&#160;    <span class="keyword">const</span> std::shared_ptr&lt;PropertyGroup&gt;&amp; property_group,</div>
-<div class="line"><a name="l00782"></a><span class="lineno">  782</span>&#160;    AdjListType adj_list_type, IdType vertex_chunk_index,</div>
-<div class="line"><a name="l00783"></a><span class="lineno">  783</span>&#160;    IdType edge_chunk_index)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00784"></a><span class="lineno">  784</span>&#160;  <span class="keywordflow">if</span> (property_group == <span class="keyword">nullptr</span>) {</div>
-<div class="line"><a name="l00785"></a><span class="lineno">  785</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#a9ca4be37aae8dfea7e6ef54920e0073f">Status::Invalid</a>(<span class="stringliteral">&quot;property group is nullptr&quot;</span>);</div>
-<div class="line"><a name="l00786"></a><span class="lineno">  786</span>&#160;  }</div>
-<div class="line"><a name="l00787"></a><span class="lineno">  787</span>&#160;  CHECK_HAS_ADJ_LIST_TYPE(adj_list_type);</div>
-<div class="line"><a name="l00788"></a><span class="lineno">  788</span>&#160;  <span class="keywordtype">int</span> i = impl_-&gt;adjacent_list_type_to_index_.at(adj_list_type);</div>
-<div class="line"><a name="l00789"></a><span class="lineno">  789</span>&#160;  <span class="keywordflow">return</span> BuildPath({impl_-&gt;prefix_, impl_-&gt;adjacent_lists_[i]-&gt;GetPrefix(),</div>
-<div class="line"><a name="l00790"></a><span class="lineno">  790</span>&#160;                    property_group-&gt;GetPrefix()}) +</div>
-<div class="line"><a name="l00791"></a><span class="lineno">  791</span>&#160;         <span class="stringliteral">&quot;part&quot;</span> + std::to_string(vertex_chunk_index) + <span class="stringliteral">&quot;/chunk&quot;</span> +</div>
-<div class="line"><a name="l00792"></a><span class="lineno">  792</span>&#160;         std::to_string(edge_chunk_index);</div>
-<div class="line"><a name="l00793"></a><span class="lineno">  793</span>&#160;}</div>
-<div class="line"><a name="l00794"></a><span class="lineno">  794</span>&#160; </div>
-<div class="line"><a name="l00795"></a><span class="lineno"><a class="line" href="classgraphar_1_1_edge_info.html#a55004cedc30fcb0fa94adf246dcc2702">  795</a></span>&#160;Result&lt;std::string&gt; <a class="code" href="classgraphar_1_1_edge_info.html#a55004cedc30fcb0fa94adf246dcc2702">EdgeInfo::GetPropertyGroupPathPrefix</a>(</div>
-<div class="line"><a name="l00796"></a><span class="lineno">  796</span>&#160;    <span class="keyword">const</span> std::shared_ptr&lt;PropertyGroup&gt;&amp; property_group,</div>
-<div class="line"><a name="l00797"></a><span class="lineno">  797</span>&#160;    AdjListType adj_list_type)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00798"></a><span class="lineno">  798</span>&#160;  <span class="keywordflow">if</span> (property_group == <span class="keyword">nullptr</span>) {</div>
-<div class="line"><a name="l00799"></a><span class="lineno">  799</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#a9ca4be37aae8dfea7e6ef54920e0073f">Status::Invalid</a>(<span class="stringliteral">&quot;property group is nullptr&quot;</span>);</div>
-<div class="line"><a name="l00800"></a><span class="lineno">  800</span>&#160;  }</div>
-<div class="line"><a name="l00801"></a><span class="lineno">  801</span>&#160;  CHECK_HAS_ADJ_LIST_TYPE(adj_list_type);</div>
-<div class="line"><a name="l00802"></a><span class="lineno">  802</span>&#160;  <span class="keywordtype">int</span> i = impl_-&gt;adjacent_list_type_to_index_.at(adj_list_type);</div>
-<div class="line"><a name="l00803"></a><span class="lineno">  803</span>&#160;  <span class="keywordflow">return</span> BuildPath({impl_-&gt;prefix_, impl_-&gt;adjacent_lists_[i]-&gt;GetPrefix(),</div>
-<div class="line"><a name="l00804"></a><span class="lineno">  804</span>&#160;                    property_group-&gt;GetPrefix()});</div>
-<div class="line"><a name="l00805"></a><span class="lineno">  805</span>&#160;}</div>
-<div class="line"><a name="l00806"></a><span class="lineno">  806</span>&#160; </div>
-<div class="line"><a name="l00807"></a><span class="lineno"><a class="line" href="classgraphar_1_1_edge_info.html#a37fa8536c627a5e5f529e8ee6d3d7506">  807</a></span>&#160;Result&lt;std::shared_ptr&lt;DataType&gt;&gt; <a class="code" href="classgraphar_1_1_edge_info.html#a37fa8536c627a5e5f529e8ee6d3d7506">EdgeInfo::GetPropertyType</a>(</div>
-<div class="line"><a name="l00808"></a><span class="lineno">  808</span>&#160;    <span class="keyword">const</span> std::string&amp; property_name)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00809"></a><span class="lineno">  809</span>&#160;  <span class="keyword">auto</span> it = impl_-&gt;property_name_to_type_.find(property_name);</div>
-<div class="line"><a name="l00810"></a><span class="lineno">  810</span>&#160;  <span class="keywordflow">if</span> (it == impl_-&gt;property_name_to_type_.end()) {</div>
-<div class="line"><a name="l00811"></a><span class="lineno">  811</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#a9ca4be37aae8dfea7e6ef54920e0073f">Status::Invalid</a>(<span class="stringliteral">&quot;property name not found: &quot;</span>, property_name);</div>
-<div class="line"><a name="l00812"></a><span class="lineno">  812</span>&#160;  }</div>
-<div class="line"><a name="l00813"></a><span class="lineno">  813</span>&#160;  <span class="keywordflow">return</span> it-&gt;second;</div>
+<div class="line"><a name="l00727"></a><span class="lineno">  727</span>&#160;  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; pg : impl_-&gt;property_groups_) {</div>
+<div class="line"><a name="l00728"></a><span class="lineno">  728</span>&#160;    <span class="keywordflow">if</span> (*pg == *property_group) {</div>
+<div class="line"><a name="l00729"></a><span class="lineno">  729</span>&#160;      <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00730"></a><span class="lineno">  730</span>&#160;    }</div>
+<div class="line"><a name="l00731"></a><span class="lineno">  731</span>&#160;  }</div>
+<div class="line"><a name="l00732"></a><span class="lineno">  732</span>&#160;  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00733"></a><span class="lineno">  733</span>&#160;}</div>
+<div class="line"><a name="l00734"></a><span class="lineno">  734</span>&#160; </div>
+<div class="line"><a name="l00735"></a><span class="lineno">  735</span>&#160;std::shared_ptr&lt;AdjacentList&gt; EdgeInfo::GetAdjacentList(</div>
+<div class="line"><a name="l00736"></a><span class="lineno">  736</span>&#160;    AdjListType adj_list_type)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00737"></a><span class="lineno">  737</span>&#160;  <span class="keyword">auto</span> it = impl_-&gt;adjacent_list_type_to_index_.find(adj_list_type);</div>
+<div class="line"><a name="l00738"></a><span class="lineno">  738</span>&#160;  <span class="keywordflow">if</span> (it == impl_-&gt;adjacent_list_type_to_index_.end()) {</div>
+<div class="line"><a name="l00739"></a><span class="lineno">  739</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
+<div class="line"><a name="l00740"></a><span class="lineno">  740</span>&#160;  }</div>
+<div class="line"><a name="l00741"></a><span class="lineno">  741</span>&#160;  <span class="keywordflow">return</span> impl_-&gt;adjacent_lists_[it-&gt;second];</div>
+<div class="line"><a name="l00742"></a><span class="lineno">  742</span>&#160;}</div>
+<div class="line"><a name="l00743"></a><span class="lineno">  743</span>&#160; </div>
+<div class="line"><a name="l00744"></a><span class="lineno"><a class="line" href="classgraphar_1_1_edge_info.html#aee914f2c4adf773c048daed0e93dbe32">  744</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="classgraphar_1_1_edge_info.html#aee914f2c4adf773c048daed0e93dbe32">EdgeInfo::PropertyGroupNum</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00745"></a><span class="lineno">  745</span>&#160;  <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(impl_-&gt;property_groups_.size());</div>
+<div class="line"><a name="l00746"></a><span class="lineno">  746</span>&#160;}</div>
+<div class="line"><a name="l00747"></a><span class="lineno">  747</span>&#160; </div>
+<div class="line"><a name="l00748"></a><span class="lineno"><a class="line" href="classgraphar_1_1_edge_info.html#ad56107001dcbadac71ae8063cd25b58f">  748</a></span>&#160;<span class="keyword">const</span> PropertyGroupVector&amp; <a class="code" href="classgraphar_1_1_edge_info.html#ad56107001dcbadac71ae8063cd25b58f">EdgeInfo::GetPropertyGroups</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00749"></a><span class="lineno">  749</span>&#160;  <span class="keywordflow">return</span> impl_-&gt;property_groups_;</div>
+<div class="line"><a name="l00750"></a><span class="lineno">  750</span>&#160;}</div>
+<div class="line"><a name="l00751"></a><span class="lineno">  751</span>&#160; </div>
+<div class="line"><a name="l00752"></a><span class="lineno"><a class="line" href="classgraphar_1_1_edge_info.html#aec1bdf018d5b209f722dbf293ef14dd6">  752</a></span>&#160;std::shared_ptr&lt;PropertyGroup&gt; <a class="code" href="classgraphar_1_1_edge_info.html#aec1bdf018d5b209f722dbf293ef14dd6">EdgeInfo::GetPropertyGroup</a>(</div>
+<div class="line"><a name="l00753"></a><span class="lineno">  753</span>&#160;    <span class="keyword">const</span> std::string&amp; property_name)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00754"></a><span class="lineno">  754</span>&#160;  <span class="keywordtype">int</span> i = LookupKeyIndex(impl_-&gt;property_name_to_index_, property_name);</div>
+<div class="line"><a name="l00755"></a><span class="lineno">  755</span>&#160;  <span class="keywordflow">return</span> i == -1 ? nullptr : impl_-&gt;property_groups_[i];</div>
+<div class="line"><a name="l00756"></a><span class="lineno">  756</span>&#160;}</div>
+<div class="line"><a name="l00757"></a><span class="lineno">  757</span>&#160; </div>
+<div class="line"><a name="l00758"></a><span class="lineno"><a class="line" href="classgraphar_1_1_edge_info.html#a8551959066b19885b9ce15262b5cb3db">  758</a></span>&#160;std::shared_ptr&lt;PropertyGroup&gt; <a class="code" href="classgraphar_1_1_edge_info.html#a8551959066b19885b9ce15262b5cb3db">EdgeInfo::GetPropertyGroupByIndex</a>(</div>
+<div class="line"><a name="l00759"></a><span class="lineno">  759</span>&#160;    <span class="keywordtype">int</span> index)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00760"></a><span class="lineno">  760</span>&#160;  <span class="keywordflow">if</span> (index &lt; 0 || index &gt;= <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(impl_-&gt;property_groups_.size())) {</div>
+<div class="line"><a name="l00761"></a><span class="lineno">  761</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
+<div class="line"><a name="l00762"></a><span class="lineno">  762</span>&#160;  }</div>
+<div class="line"><a name="l00763"></a><span class="lineno">  763</span>&#160;  <span class="keywordflow">return</span> impl_-&gt;property_groups_[index];</div>
+<div class="line"><a name="l00764"></a><span class="lineno">  764</span>&#160;}</div>
+<div class="line"><a name="l00765"></a><span class="lineno">  765</span>&#160; </div>
+<div class="line"><a name="l00766"></a><span class="lineno"><a class="line" href="classgraphar_1_1_edge_info.html#aec1a622c83b14d62b26e7143850a3cf1">  766</a></span>&#160;Result&lt;std::string&gt; <a class="code" href="classgraphar_1_1_edge_info.html#aec1a622c83b14d62b26e7143850a3cf1">EdgeInfo::GetVerticesNumFilePath</a>(</div>
+<div class="line"><a name="l00767"></a><span class="lineno">  767</span>&#160;    AdjListType adj_list_type)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00768"></a><span class="lineno">  768</span>&#160;  CHECK_HAS_ADJ_LIST_TYPE(adj_list_type);</div>
+<div class="line"><a name="l00769"></a><span class="lineno">  769</span>&#160;  <span class="keywordtype">int</span> i = impl_-&gt;adjacent_list_type_to_index_.at(adj_list_type);</div>
+<div class="line"><a name="l00770"></a><span class="lineno">  770</span>&#160;  <span class="keywordflow">return</span> BuildPath({impl_-&gt;prefix_, impl_-&gt;adjacent_lists_[i]-&gt;GetPrefix()}) +</div>
+<div class="line"><a name="l00771"></a><span class="lineno">  771</span>&#160;         <span class="stringliteral">&quot;vertex_count&quot;</span>;</div>
+<div class="line"><a name="l00772"></a><span class="lineno">  772</span>&#160;}</div>
+<div class="line"><a name="l00773"></a><span class="lineno">  773</span>&#160; </div>
+<div class="line"><a name="l00774"></a><span class="lineno"><a class="line" href="classgraphar_1_1_edge_info.html#a4f2c7fedc68dce8f1c7fb90eede9906f">  774</a></span>&#160;Result&lt;std::string&gt; <a class="code" href="classgraphar_1_1_edge_info.html#a4f2c7fedc68dce8f1c7fb90eede9906f">EdgeInfo::GetEdgesNumFilePath</a>(</div>
+<div class="line"><a name="l00775"></a><span class="lineno">  775</span>&#160;    IdType vertex_chunk_index, AdjListType adj_list_type)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00776"></a><span class="lineno">  776</span>&#160;  CHECK_HAS_ADJ_LIST_TYPE(adj_list_type);</div>
+<div class="line"><a name="l00777"></a><span class="lineno">  777</span>&#160;  <span class="keywordtype">int</span> i = impl_-&gt;adjacent_list_type_to_index_.at(adj_list_type);</div>
+<div class="line"><a name="l00778"></a><span class="lineno">  778</span>&#160;  <span class="keywordflow">return</span> BuildPath({impl_-&gt;prefix_, impl_-&gt;adjacent_lists_[i]-&gt;GetPrefix()}) +</div>
+<div class="line"><a name="l00779"></a><span class="lineno">  779</span>&#160;         <span class="stringliteral">&quot;edge_count&quot;</span> + std::to_string(vertex_chunk_index);</div>
+<div class="line"><a name="l00780"></a><span class="lineno">  780</span>&#160;}</div>
+<div class="line"><a name="l00781"></a><span class="lineno">  781</span>&#160; </div>
+<div class="line"><a name="l00782"></a><span class="lineno"><a class="line" href="classgraphar_1_1_edge_info.html#a0eb9f0ff282c73f5c90a8c3940f1929e">  782</a></span>&#160;Result&lt;std::string&gt; <a class="code" href="classgraphar_1_1_edge_info.html#a0eb9f0ff282c73f5c90a8c3940f1929e">EdgeInfo::GetAdjListFilePath</a>(</div>
+<div class="line"><a name="l00783"></a><span class="lineno">  783</span>&#160;    IdType vertex_chunk_index, IdType edge_chunk_index,</div>
+<div class="line"><a name="l00784"></a><span class="lineno">  784</span>&#160;    AdjListType adj_list_type)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00785"></a><span class="lineno">  785</span>&#160;  CHECK_HAS_ADJ_LIST_TYPE(adj_list_type);</div>
+<div class="line"><a name="l00786"></a><span class="lineno">  786</span>&#160;  <span class="keywordtype">int</span> i = impl_-&gt;adjacent_list_type_to_index_.at(adj_list_type);</div>
+<div class="line"><a name="l00787"></a><span class="lineno">  787</span>&#160;  <span class="keywordflow">return</span> BuildPath({impl_-&gt;prefix_, impl_-&gt;adjacent_lists_[i]-&gt;GetPrefix()}) +</div>
+<div class="line"><a name="l00788"></a><span class="lineno">  788</span>&#160;         <span class="stringliteral">&quot;adj_list/part&quot;</span> + std::to_string(vertex_chunk_index) + <span class="stringliteral">&quot;/chunk&quot;</span> +</div>
+<div class="line"><a name="l00789"></a><span class="lineno">  789</span>&#160;         std::to_string(edge_chunk_index);</div>
+<div class="line"><a name="l00790"></a><span class="lineno">  790</span>&#160;}</div>
+<div class="line"><a name="l00791"></a><span class="lineno">  791</span>&#160; </div>
+<div class="line"><a name="l00792"></a><span class="lineno"><a class="line" href="classgraphar_1_1_edge_info.html#ab39f63f0aa7284c510a7e0d61b0942d3">  792</a></span>&#160;Result&lt;std::string&gt; <a class="code" href="classgraphar_1_1_edge_info.html#ab39f63f0aa7284c510a7e0d61b0942d3">EdgeInfo::GetAdjListPathPrefix</a>(</div>
+<div class="line"><a name="l00793"></a><span class="lineno">  793</span>&#160;    AdjListType adj_list_type)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00794"></a><span class="lineno">  794</span>&#160;  CHECK_HAS_ADJ_LIST_TYPE(adj_list_type);</div>
+<div class="line"><a name="l00795"></a><span class="lineno">  795</span>&#160;  <span class="keywordtype">int</span> i = impl_-&gt;adjacent_list_type_to_index_.at(adj_list_type);</div>
+<div class="line"><a name="l00796"></a><span class="lineno">  796</span>&#160;  <span class="keywordflow">return</span> BuildPath({impl_-&gt;prefix_, impl_-&gt;adjacent_lists_[i]-&gt;GetPrefix()}) +</div>
+<div class="line"><a name="l00797"></a><span class="lineno">  797</span>&#160;         <span class="stringliteral">&quot;adj_list/&quot;</span>;</div>
+<div class="line"><a name="l00798"></a><span class="lineno">  798</span>&#160;}</div>
+<div class="line"><a name="l00799"></a><span class="lineno">  799</span>&#160; </div>
+<div class="line"><a name="l00800"></a><span class="lineno"><a class="line" href="classgraphar_1_1_edge_info.html#a615fe3ed78f35af9aef598287cb89a27">  800</a></span>&#160;Result&lt;std::string&gt; <a class="code" href="classgraphar_1_1_edge_info.html#a615fe3ed78f35af9aef598287cb89a27">EdgeInfo::GetAdjListOffsetFilePath</a>(</div>
+<div class="line"><a name="l00801"></a><span class="lineno">  801</span>&#160;    IdType vertex_chunk_index, AdjListType adj_list_type)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00802"></a><span class="lineno">  802</span>&#160;  CHECK_HAS_ADJ_LIST_TYPE(adj_list_type);</div>
+<div class="line"><a name="l00803"></a><span class="lineno">  803</span>&#160;  <span class="keywordtype">int</span> i = impl_-&gt;adjacent_list_type_to_index_.at(adj_list_type);</div>
+<div class="line"><a name="l00804"></a><span class="lineno">  804</span>&#160;  <span class="keywordflow">return</span> BuildPath({impl_-&gt;prefix_, impl_-&gt;adjacent_lists_[i]-&gt;GetPrefix()}) +</div>
+<div class="line"><a name="l00805"></a><span class="lineno">  805</span>&#160;         <span class="stringliteral">&quot;offset/chunk&quot;</span> + std::to_string(vertex_chunk_index);</div>
+<div class="line"><a name="l00806"></a><span class="lineno">  806</span>&#160;}</div>
+<div class="line"><a name="l00807"></a><span class="lineno">  807</span>&#160; </div>
+<div class="line"><a name="l00808"></a><span class="lineno"><a class="line" href="classgraphar_1_1_edge_info.html#aab2032669c9e9dcf11275fdd4cb2c1fa">  808</a></span>&#160;Result&lt;std::string&gt; <a class="code" href="classgraphar_1_1_edge_info.html#aab2032669c9e9dcf11275fdd4cb2c1fa">EdgeInfo::GetOffsetPathPrefix</a>(</div>
+<div class="line"><a name="l00809"></a><span class="lineno">  809</span>&#160;    AdjListType adj_list_type)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00810"></a><span class="lineno">  810</span>&#160;  CHECK_HAS_ADJ_LIST_TYPE(adj_list_type);</div>
+<div class="line"><a name="l00811"></a><span class="lineno">  811</span>&#160;  <span class="keywordtype">int</span> i = impl_-&gt;adjacent_list_type_to_index_.at(adj_list_type);</div>
+<div class="line"><a name="l00812"></a><span class="lineno">  812</span>&#160;  <span class="keywordflow">return</span> BuildPath({impl_-&gt;prefix_, impl_-&gt;adjacent_lists_[i]-&gt;GetPrefix()}) +</div>
+<div class="line"><a name="l00813"></a><span class="lineno">  813</span>&#160;         <span class="stringliteral">&quot;offset/&quot;</span>;</div>
 <div class="line"><a name="l00814"></a><span class="lineno">  814</span>&#160;}</div>
 <div class="line"><a name="l00815"></a><span class="lineno">  815</span>&#160; </div>
-<div class="line"><a name="l00816"></a><span class="lineno"><a class="line" href="classgraphar_1_1_edge_info.html#a5bd430ba21f5dfb230b978e03c4020ef">  816</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classgraphar_1_1_edge_info.html#a5bd430ba21f5dfb230b978e03c4020ef">EdgeInfo::IsPrimaryKey</a>(<span class="keyword">const</span> std::string&amp; property_name)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00817"></a><span class="lineno">  817</span>&#160;  <span class="keyword">auto</span> it = impl_-&gt;property_name_to_primary_.find(property_name);</div>
-<div class="line"><a name="l00818"></a><span class="lineno">  818</span>&#160;  <span class="keywordflow">if</span> (it == impl_-&gt;property_name_to_primary_.end()) {</div>
-<div class="line"><a name="l00819"></a><span class="lineno">  819</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00820"></a><span class="lineno">  820</span>&#160;  }</div>
-<div class="line"><a name="l00821"></a><span class="lineno">  821</span>&#160;  <span class="keywordflow">return</span> it-&gt;second;</div>
-<div class="line"><a name="l00822"></a><span class="lineno">  822</span>&#160;}</div>
-<div class="line"><a name="l00823"></a><span class="lineno">  823</span>&#160; </div>
-<div class="line"><a name="l00824"></a><span class="lineno"><a class="line" href="classgraphar_1_1_edge_info.html#a80b00d930f22870d00331a639c9cc26e">  824</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classgraphar_1_1_edge_info.html#a80b00d930f22870d00331a639c9cc26e">EdgeInfo::IsNullableKey</a>(<span class="keyword">const</span> std::string&amp; property_name)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00825"></a><span class="lineno">  825</span>&#160;  <span class="keyword">auto</span> it = impl_-&gt;property_name_to_nullable_.find(property_name);</div>
-<div class="line"><a name="l00826"></a><span class="lineno">  826</span>&#160;  <span class="keywordflow">if</span> (it == impl_-&gt;property_name_to_nullable_.end()) {</div>
-<div class="line"><a name="l00827"></a><span class="lineno">  827</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00828"></a><span class="lineno">  828</span>&#160;  }</div>
-<div class="line"><a name="l00829"></a><span class="lineno">  829</span>&#160;  <span class="keywordflow">return</span> it-&gt;second;</div>
-<div class="line"><a name="l00830"></a><span class="lineno">  830</span>&#160;}</div>
-<div class="line"><a name="l00831"></a><span class="lineno">  831</span>&#160; </div>
-<div class="line"><a name="l00832"></a><span class="lineno"><a class="line" href="classgraphar_1_1_edge_info.html#a6e5b4fdc98d8399564396fb63955c62a">  832</a></span>&#160;Result&lt;std::shared_ptr&lt;EdgeInfo&gt;&gt; <a class="code" href="classgraphar_1_1_edge_info.html#a6e5b4fdc98d8399564396fb63955c62a">EdgeInfo::AddAdjacentList</a>(</div>
-<div class="line"><a name="l00833"></a><span class="lineno">  833</span>&#160;    std::shared_ptr&lt;AdjacentList&gt; adj_list)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00834"></a><span class="lineno">  834</span>&#160;  <span class="keywordflow">if</span> (adj_list == <span class="keyword">nullptr</span>) {</div>
-<div class="line"><a name="l00835"></a><span class="lineno">  835</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#a9ca4be37aae8dfea7e6ef54920e0073f">Status::Invalid</a>(<span class="stringliteral">&quot;adj list is nullptr&quot;</span>);</div>
+<div class="line"><a name="l00816"></a><span class="lineno"><a class="line" href="classgraphar_1_1_edge_info.html#abfcba5aed61cdfaf91f98e649b370722">  816</a></span>&#160;Result&lt;std::string&gt; <a class="code" href="classgraphar_1_1_edge_info.html#abfcba5aed61cdfaf91f98e649b370722">EdgeInfo::GetPropertyFilePath</a>(</div>
+<div class="line"><a name="l00817"></a><span class="lineno">  817</span>&#160;    <span class="keyword">const</span> std::shared_ptr&lt;PropertyGroup&gt;&amp; property_group,</div>
+<div class="line"><a name="l00818"></a><span class="lineno">  818</span>&#160;    AdjListType adj_list_type, IdType vertex_chunk_index,</div>
+<div class="line"><a name="l00819"></a><span class="lineno">  819</span>&#160;    IdType edge_chunk_index)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00820"></a><span class="lineno">  820</span>&#160;  <span class="keywordflow">if</span> (property_group == <span class="keyword">nullptr</span>) {</div>
+<div class="line"><a name="l00821"></a><span class="lineno">  821</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#a9ca4be37aae8dfea7e6ef54920e0073f">Status::Invalid</a>(<span class="stringliteral">&quot;property group is nullptr&quot;</span>);</div>
+<div class="line"><a name="l00822"></a><span class="lineno">  822</span>&#160;  }</div>
+<div class="line"><a name="l00823"></a><span class="lineno">  823</span>&#160;  CHECK_HAS_ADJ_LIST_TYPE(adj_list_type);</div>
+<div class="line"><a name="l00824"></a><span class="lineno">  824</span>&#160;  <span class="keywordtype">int</span> i = impl_-&gt;adjacent_list_type_to_index_.at(adj_list_type);</div>
+<div class="line"><a name="l00825"></a><span class="lineno">  825</span>&#160;  <span class="keywordflow">return</span> BuildPath({impl_-&gt;prefix_, impl_-&gt;adjacent_lists_[i]-&gt;GetPrefix(),</div>
+<div class="line"><a name="l00826"></a><span class="lineno">  826</span>&#160;                    property_group-&gt;GetPrefix()}) +</div>
+<div class="line"><a name="l00827"></a><span class="lineno">  827</span>&#160;         <span class="stringliteral">&quot;part&quot;</span> + std::to_string(vertex_chunk_index) + <span class="stringliteral">&quot;/chunk&quot;</span> +</div>
+<div class="line"><a name="l00828"></a><span class="lineno">  828</span>&#160;         std::to_string(edge_chunk_index);</div>
+<div class="line"><a name="l00829"></a><span class="lineno">  829</span>&#160;}</div>
+<div class="line"><a name="l00830"></a><span class="lineno">  830</span>&#160; </div>
+<div class="line"><a name="l00831"></a><span class="lineno"><a class="line" href="classgraphar_1_1_edge_info.html#a55004cedc30fcb0fa94adf246dcc2702">  831</a></span>&#160;Result&lt;std::string&gt; <a class="code" href="classgraphar_1_1_edge_info.html#a55004cedc30fcb0fa94adf246dcc2702">EdgeInfo::GetPropertyGroupPathPrefix</a>(</div>
+<div class="line"><a name="l00832"></a><span class="lineno">  832</span>&#160;    <span class="keyword">const</span> std::shared_ptr&lt;PropertyGroup&gt;&amp; property_group,</div>
+<div class="line"><a name="l00833"></a><span class="lineno">  833</span>&#160;    AdjListType adj_list_type)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00834"></a><span class="lineno">  834</span>&#160;  <span class="keywordflow">if</span> (property_group == <span class="keyword">nullptr</span>) {</div>
+<div class="line"><a name="l00835"></a><span class="lineno">  835</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#a9ca4be37aae8dfea7e6ef54920e0073f">Status::Invalid</a>(<span class="stringliteral">&quot;property group is nullptr&quot;</span>);</div>
 <div class="line"><a name="l00836"></a><span class="lineno">  836</span>&#160;  }</div>
-<div class="line"><a name="l00837"></a><span class="lineno">  837</span>&#160;  <span class="keywordflow">if</span> (<a class="code" href="classgraphar_1_1_edge_info.html#aaa6633dc8136cec806cbcf42c2cf136d">HasAdjacentListType</a>(adj_list-&gt;GetType())) {</div>
-<div class="line"><a name="l00838"></a><span class="lineno">  838</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#a9ca4be37aae8dfea7e6ef54920e0073f">Status::Invalid</a>(<span class="stringliteral">&quot;adj list type already exists: &quot;</span>,</div>
-<div class="line"><a name="l00839"></a><span class="lineno">  839</span>&#160;                           AdjListTypeToString(adj_list-&gt;GetType()));</div>
-<div class="line"><a name="l00840"></a><span class="lineno">  840</span>&#160;  }</div>
-<div class="line"><a name="l00841"></a><span class="lineno">  841</span>&#160;  <span class="keywordflow">return</span> std::make_shared&lt;EdgeInfo&gt;(</div>
-<div class="line"><a name="l00842"></a><span class="lineno">  842</span>&#160;      impl_-&gt;src_type_, impl_-&gt;edge_type_, impl_-&gt;dst_type_, impl_-&gt;chunk_size_,</div>
-<div class="line"><a name="l00843"></a><span class="lineno">  843</span>&#160;      impl_-&gt;src_chunk_size_, impl_-&gt;dst_chunk_size_, impl_-&gt;directed_,</div>
-<div class="line"><a name="l00844"></a><span class="lineno">  844</span>&#160;      AddVectorElement(impl_-&gt;adjacent_lists_, adj_list),</div>
-<div class="line"><a name="l00845"></a><span class="lineno">  845</span>&#160;      impl_-&gt;property_groups_, impl_-&gt;prefix_, impl_-&gt;version_);</div>
-<div class="line"><a name="l00846"></a><span class="lineno">  846</span>&#160;}</div>
-<div class="line"><a name="l00847"></a><span class="lineno">  847</span>&#160; </div>
-<div class="line"><a name="l00848"></a><span class="lineno"><a class="line" href="classgraphar_1_1_edge_info.html#a9620f838addfdcb892b30e80e2cc4239">  848</a></span>&#160;Result&lt;std::shared_ptr&lt;EdgeInfo&gt;&gt; <a class="code" href="classgraphar_1_1_edge_info.html#a9620f838addfdcb892b30e80e2cc4239">EdgeInfo::AddPropertyGroup</a>(</div>
-<div class="line"><a name="l00849"></a><span class="lineno">  849</span>&#160;    std::shared_ptr&lt;PropertyGroup&gt; property_group)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00850"></a><span class="lineno">  850</span>&#160;  <span class="keywordflow">if</span> (property_group == <span class="keyword">nullptr</span>) {</div>
-<div class="line"><a name="l00851"></a><span class="lineno">  851</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#a9ca4be37aae8dfea7e6ef54920e0073f">Status::Invalid</a>(<span class="stringliteral">&quot;property group is nullptr&quot;</span>);</div>
-<div class="line"><a name="l00852"></a><span class="lineno">  852</span>&#160;  }</div>
-<div class="line"><a name="l00853"></a><span class="lineno">  853</span>&#160;  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; property : property_group-&gt;GetProperties()) {</div>
-<div class="line"><a name="l00854"></a><span class="lineno">  854</span>&#160;    <span class="keywordflow">if</span> (<a class="code" href="classgraphar_1_1_edge_info.html#a69182fa8d45bb0e7d4ac230adb1239b2">HasProperty</a>(property.name)) {</div>
-<div class="line"><a name="l00855"></a><span class="lineno">  855</span>&#160;      <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#a9ca4be37aae8dfea7e6ef54920e0073f">Status::Invalid</a>(<span class="stringliteral">&quot;property in property group already exists: &quot;</span>,</div>
-<div class="line"><a name="l00856"></a><span class="lineno">  856</span>&#160;                             property.name);</div>
-<div class="line"><a name="l00857"></a><span class="lineno">  857</span>&#160;    }</div>
-<div class="line"><a name="l00858"></a><span class="lineno">  858</span>&#160;  }</div>
-<div class="line"><a name="l00859"></a><span class="lineno">  859</span>&#160;  <span class="keywordflow">return</span> std::make_shared&lt;EdgeInfo&gt;(</div>
-<div class="line"><a name="l00860"></a><span class="lineno">  860</span>&#160;      impl_-&gt;src_type_, impl_-&gt;edge_type_, impl_-&gt;dst_type_, impl_-&gt;chunk_size_,</div>
-<div class="line"><a name="l00861"></a><span class="lineno">  861</span>&#160;      impl_-&gt;src_chunk_size_, impl_-&gt;dst_chunk_size_, impl_-&gt;directed_,</div>
-<div class="line"><a name="l00862"></a><span class="lineno">  862</span>&#160;      impl_-&gt;adjacent_lists_,</div>
-<div class="line"><a name="l00863"></a><span class="lineno">  863</span>&#160;      AddVectorElement(impl_-&gt;property_groups_, property_group), impl_-&gt;prefix_,</div>
-<div class="line"><a name="l00864"></a><span class="lineno">  864</span>&#160;      impl_-&gt;version_);</div>
-<div class="line"><a name="l00865"></a><span class="lineno">  865</span>&#160;}</div>
-<div class="line"><a name="l00866"></a><span class="lineno">  866</span>&#160; </div>
-<div class="line"><a name="l00867"></a><span class="lineno"><a class="line" href="classgraphar_1_1_edge_info.html#a3dca57726506375cab4fc43fdef2914f">  867</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classgraphar_1_1_edge_info.html#a3dca57726506375cab4fc43fdef2914f">EdgeInfo::IsValidated</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> impl_-&gt;is_validated(); }</div>
-<div class="line"><a name="l00868"></a><span class="lineno">  868</span>&#160; </div>
-<div class="line"><a name="l00869"></a><span class="lineno">  869</span>&#160;std::shared_ptr&lt;EdgeInfo&gt; CreateEdgeInfo(</div>
-<div class="line"><a name="l00870"></a><span class="lineno">  870</span>&#160;    <span class="keyword">const</span> std::string&amp; src_type, <span class="keyword">const</span> std::string&amp; edge_type,</div>
-<div class="line"><a name="l00871"></a><span class="lineno">  871</span>&#160;    <span class="keyword">const</span> std::string&amp; dst_type, IdType chunk_size, IdType src_chunk_size,</div>
-<div class="line"><a name="l00872"></a><span class="lineno">  872</span>&#160;    IdType dst_chunk_size, <span class="keywordtype">bool</span> directed,</div>
-<div class="line"><a name="l00873"></a><span class="lineno">  873</span>&#160;    <span class="keyword">const</span> AdjacentListVector&amp; adjacent_lists,</div>
-<div class="line"><a name="l00874"></a><span class="lineno">  874</span>&#160;    <span class="keyword">const</span> PropertyGroupVector&amp; property_groups, <span class="keyword">const</span> std::string&amp; prefix,</div>
-<div class="line"><a name="l00875"></a><span class="lineno">  875</span>&#160;    std::shared_ptr&lt;const InfoVersion&gt; version) {</div>
-<div class="line"><a name="l00876"></a><span class="lineno">  876</span>&#160;  <span class="keywordflow">if</span> (src_type.empty() || edge_type.empty() || dst_type.empty() ||</div>
-<div class="line"><a name="l00877"></a><span class="lineno">  877</span>&#160;      chunk_size &lt;= 0 || src_chunk_size &lt;= 0 || dst_chunk_size &lt;= 0 ||</div>
-<div class="line"><a name="l00878"></a><span class="lineno">  878</span>&#160;      adjacent_lists.empty()) {</div>
-<div class="line"><a name="l00879"></a><span class="lineno">  879</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
-<div class="line"><a name="l00880"></a><span class="lineno">  880</span>&#160;  }</div>
-<div class="line"><a name="l00881"></a><span class="lineno">  881</span>&#160;  <span class="keywordflow">return</span> std::make_shared&lt;EdgeInfo&gt;(</div>
-<div class="line"><a name="l00882"></a><span class="lineno">  882</span>&#160;      src_type, edge_type, dst_type, chunk_size, src_chunk_size, dst_chunk_size,</div>
-<div class="line"><a name="l00883"></a><span class="lineno">  883</span>&#160;      directed, adjacent_lists, property_groups, prefix, version);</div>
-<div class="line"><a name="l00884"></a><span class="lineno">  884</span>&#160;}</div>
-<div class="line"><a name="l00885"></a><span class="lineno">  885</span>&#160; </div>
-<div class="line"><a name="l00886"></a><span class="lineno"><a class="line" href="classgraphar_1_1_edge_info.html#a0ac67e1cf3b3fa79b6fcbc054869d0e5">  886</a></span>&#160;Result&lt;std::shared_ptr&lt;EdgeInfo&gt;&gt; <a class="code" href="classgraphar_1_1_edge_info.html#a0ac67e1cf3b3fa79b6fcbc054869d0e5">EdgeInfo::Load</a>(std::shared_ptr&lt;Yaml&gt; yaml) {</div>
-<div class="line"><a name="l00887"></a><span class="lineno">  887</span>&#160;  <span class="keywordflow">if</span> (yaml == <span class="keyword">nullptr</span>) {</div>
-<div class="line"><a name="l00888"></a><span class="lineno">  888</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#a9ca4be37aae8dfea7e6ef54920e0073f">Status::Invalid</a>(<span class="stringliteral">&quot;yaml shared pointer is nullptr.&quot;</span>);</div>
-<div class="line"><a name="l00889"></a><span class="lineno">  889</span>&#160;  }</div>
-<div class="line"><a name="l00890"></a><span class="lineno">  890</span>&#160;  std::string src_type = yaml-&gt;operator[](<span class="stringliteral">&quot;src_type&quot;</span>).As&lt;std::string&gt;();</div>
-<div class="line"><a name="l00891"></a><span class="lineno">  891</span>&#160;  std::string edge_type = yaml-&gt;operator[](<span class="stringliteral">&quot;edge_type&quot;</span>).As&lt;std::string&gt;();</div>
-<div class="line"><a name="l00892"></a><span class="lineno">  892</span>&#160;  std::string dst_type = yaml-&gt;operator[](<span class="stringliteral">&quot;dst_type&quot;</span>).As&lt;std::string&gt;();</div>
-<div class="line"><a name="l00893"></a><span class="lineno">  893</span>&#160;  IdType chunk_size =</div>
-<div class="line"><a name="l00894"></a><span class="lineno">  894</span>&#160;      <span class="keyword">static_cast&lt;</span>IdType<span class="keyword">&gt;</span>(yaml-&gt;operator[](<span class="stringliteral">&quot;chunk_size&quot;</span>).As&lt;int64_t&gt;());</div>
-<div class="line"><a name="l00895"></a><span class="lineno">  895</span>&#160;  IdType src_chunk_size =</div>
-<div class="line"><a name="l00896"></a><span class="lineno">  896</span>&#160;      <span class="keyword">static_cast&lt;</span>IdType<span class="keyword">&gt;</span>(yaml-&gt;operator[](<span class="stringliteral">&quot;src_chunk_size&quot;</span>).As&lt;int64_t&gt;());</div>
-<div class="line"><a name="l00897"></a><span class="lineno">  897</span>&#160;  IdType dst_chunk_size =</div>
-<div class="line"><a name="l00898"></a><span class="lineno">  898</span>&#160;      <span class="keyword">static_cast&lt;</span>IdType<span class="keyword">&gt;</span>(yaml-&gt;operator[](<span class="stringliteral">&quot;dst_chunk_size&quot;</span>).As&lt;int64_t&gt;());</div>
-<div class="line"><a name="l00899"></a><span class="lineno">  899</span>&#160;  <span class="keywordtype">bool</span> directed = yaml-&gt;operator[](<span class="stringliteral">&quot;directed&quot;</span>).As&lt;bool&gt;();</div>
-<div class="line"><a name="l00900"></a><span class="lineno">  900</span>&#160;  std::string prefix;</div>
-<div class="line"><a name="l00901"></a><span class="lineno">  901</span>&#160;  <span class="keywordflow">if</span> (!yaml-&gt;operator[](<span class="stringliteral">&quot;prefix&quot;</span>).IsNone()) {</div>
-<div class="line"><a name="l00902"></a><span class="lineno">  902</span>&#160;    prefix = yaml-&gt;operator[](<span class="stringliteral">&quot;prefix&quot;</span>).As&lt;std::string&gt;();</div>
-<div class="line"><a name="l00903"></a><span class="lineno">  903</span>&#160;  }</div>
-<div class="line"><a name="l00904"></a><span class="lineno">  904</span>&#160;  std::shared_ptr&lt;const InfoVersion&gt; <a class="code" href="classgraphar_1_1_edge_info.html#a9440bef05f4fa689662f26a9ef0117c1">version</a> = <span class="keyword">nullptr</span>;</div>
-<div class="line"><a name="l00905"></a><span class="lineno">  905</span>&#160;  <span class="keywordflow">if</span> (!yaml-&gt;operator[](<span class="stringliteral">&quot;version&quot;</span>).IsNone()) {</div>
-<div class="line"><a name="l00906"></a><span class="lineno">  906</span>&#160;    GAR_ASSIGN_OR_RAISE(</div>
-<div class="line"><a name="l00907"></a><span class="lineno">  907</span>&#160;        <a class="code" href="classgraphar_1_1_edge_info.html#a9440bef05f4fa689662f26a9ef0117c1">version</a>,</div>
-<div class="line"><a name="l00908"></a><span class="lineno">  908</span>&#160;        <a class="code" href="classgraphar_1_1_info_version.html#a6c149bd120118e7c6803dcac71a7a667">InfoVersion::Parse</a>(yaml-&gt;operator[](<span class="stringliteral">&quot;version&quot;</span>).As&lt;std::string&gt;()));</div>
-<div class="line"><a name="l00909"></a><span class="lineno">  909</span>&#160;  }</div>
-<div class="line"><a name="l00910"></a><span class="lineno">  910</span>&#160; </div>
-<div class="line"><a name="l00911"></a><span class="lineno">  911</span>&#160;  AdjacentListVector adjacent_lists;</div>
-<div class="line"><a name="l00912"></a><span class="lineno">  912</span>&#160;  PropertyGroupVector property_groups;</div>
-<div class="line"><a name="l00913"></a><span class="lineno">  913</span>&#160;  <span class="keyword">auto</span> adj_lists_node = yaml-&gt;operator[](<span class="stringliteral">&quot;adj_lists&quot;</span>);</div>
-<div class="line"><a name="l00914"></a><span class="lineno">  914</span>&#160;  <span class="keywordflow">if</span> (adj_lists_node.IsSequence()) {</div>
-<div class="line"><a name="l00915"></a><span class="lineno">  915</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = adj_lists_node.Begin(); it != adj_lists_node.End(); it++) {</div>
-<div class="line"><a name="l00916"></a><span class="lineno">  916</span>&#160;      <span class="keyword">auto</span>&amp; node = (*it).second;</div>
-<div class="line"><a name="l00917"></a><span class="lineno">  917</span>&#160;      <span class="keyword">auto</span> ordered = node[<span class="stringliteral">&quot;ordered&quot;</span>].As&lt;<span class="keywordtype">bool</span>&gt;();</div>
-<div class="line"><a name="l00918"></a><span class="lineno">  918</span>&#160;      <span class="keyword">auto</span> aligned = node[<span class="stringliteral">&quot;aligned_by&quot;</span>].As&lt;std::string&gt;();</div>
-<div class="line"><a name="l00919"></a><span class="lineno">  919</span>&#160;      <span class="keyword">auto</span> adj_list_type = OrderedAlignedToAdjListType(ordered, aligned);</div>
-<div class="line"><a name="l00920"></a><span class="lineno">  920</span>&#160;      <span class="keyword">auto</span> file_type = StringToFileType(node[<span class="stringliteral">&quot;file_type&quot;</span>].As&lt;std::string&gt;());</div>
-<div class="line"><a name="l00921"></a><span class="lineno">  921</span>&#160;      std::string adj_list_prefix;</div>
-<div class="line"><a name="l00922"></a><span class="lineno">  922</span>&#160;      <span class="keywordflow">if</span> (!node[<span class="stringliteral">&quot;prefix&quot;</span>].IsNone()) {</div>
-<div class="line"><a name="l00923"></a><span class="lineno">  923</span>&#160;        adj_list_prefix = node[<span class="stringliteral">&quot;prefix&quot;</span>].As&lt;std::string&gt;();</div>
-<div class="line"><a name="l00924"></a><span class="lineno">  924</span>&#160;      }</div>
-<div class="line"><a name="l00925"></a><span class="lineno">  925</span>&#160;      adjacent_lists.push_back(std::make_shared&lt;AdjacentList&gt;(</div>
-<div class="line"><a name="l00926"></a><span class="lineno">  926</span>&#160;          adj_list_type, file_type, adj_list_prefix));</div>
-<div class="line"><a name="l00927"></a><span class="lineno">  927</span>&#160;    }</div>
-<div class="line"><a name="l00928"></a><span class="lineno">  928</span>&#160;  }</div>
-<div class="line"><a name="l00929"></a><span class="lineno">  929</span>&#160;  <span class="keyword">auto</span> property_groups_node = yaml-&gt;operator[](<span class="stringliteral">&quot;property_groups&quot;</span>);</div>
-<div class="line"><a name="l00930"></a><span class="lineno">  930</span>&#160;  <span class="keywordflow">if</span> (!property_groups_node.IsNone()) {  <span class="comment">// property_groups exist</span></div>
-<div class="line"><a name="l00931"></a><span class="lineno">  931</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">auto</span> pg_it = property_groups_node.Begin();</div>
-<div class="line"><a name="l00932"></a><span class="lineno">  932</span>&#160;         pg_it != property_groups_node.End(); pg_it++) {</div>
-<div class="line"><a name="l00933"></a><span class="lineno">  933</span>&#160;      <span class="keyword">auto</span>&amp; pg_node = (*pg_it).second;</div>
-<div class="line"><a name="l00934"></a><span class="lineno">  934</span>&#160;      std::string pg_prefix;</div>
-<div class="line"><a name="l00935"></a><span class="lineno">  935</span>&#160;      <span class="keywordflow">if</span> (!pg_node[<span class="stringliteral">&quot;prefix&quot;</span>].IsNone()) {</div>
-<div class="line"><a name="l00936"></a><span class="lineno">  936</span>&#160;        pg_prefix = pg_node[<span class="stringliteral">&quot;prefix&quot;</span>].As&lt;std::string&gt;();</div>
-<div class="line"><a name="l00937"></a><span class="lineno">  937</span>&#160;      }</div>
-<div class="line"><a name="l00938"></a><span class="lineno">  938</span>&#160;      <span class="keyword">auto</span> file_type = StringToFileType(pg_node[<span class="stringliteral">&quot;file_type&quot;</span>].As&lt;std::string&gt;());</div>
-<div class="line"><a name="l00939"></a><span class="lineno">  939</span>&#160;      <span class="keyword">auto</span> properties = pg_node[<span class="stringliteral">&quot;properties&quot;</span>];</div>
-<div class="line"><a name="l00940"></a><span class="lineno">  940</span>&#160;      std::vector&lt;Property&gt; property_vec;</div>
-<div class="line"><a name="l00941"></a><span class="lineno">  941</span>&#160;      <span class="keywordflow">for</span> (<span class="keyword">auto</span> p_it = properties.Begin(); p_it != properties.End(); p_it++) {</div>
-<div class="line"><a name="l00942"></a><span class="lineno">  942</span>&#160;        <span class="keyword">auto</span>&amp; p_node = (*p_it).second;</div>
-<div class="line"><a name="l00943"></a><span class="lineno">  943</span>&#160;        <span class="keyword">auto</span> property_name = p_node[<span class="stringliteral">&quot;name&quot;</span>].As&lt;std::string&gt;();</div>
-<div class="line"><a name="l00944"></a><span class="lineno">  944</span>&#160;        <span class="keyword">auto</span> property_type =</div>
-<div class="line"><a name="l00945"></a><span class="lineno">  945</span>&#160;            DataType::TypeNameToDataType(p_node[<span class="stringliteral">&quot;data_type&quot;</span>].As&lt;std::string&gt;());</div>
-<div class="line"><a name="l00946"></a><span class="lineno">  946</span>&#160;        <span class="keywordflow">if</span> (!p_node[<span class="stringliteral">&quot;cardinality&quot;</span>].IsNone() &amp;&amp;</div>
-<div class="line"><a name="l00947"></a><span class="lineno">  947</span>&#160;            StringToCardinality(p_node[<span class="stringliteral">&quot;cardinality&quot;</span>].As&lt;std::string&gt;()) !=</div>
-<div class="line"><a name="l00948"></a><span class="lineno">  948</span>&#160;                Cardinality::SINGLE) {</div>
-<div class="line"><a name="l00949"></a><span class="lineno">  949</span>&#160;          <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#a358b23c7f34efbf14c84cbc2ddbdd6a4">Status::YamlError</a>(</div>
-<div class="line"><a name="l00950"></a><span class="lineno">  950</span>&#160;              <span class="stringliteral">&quot;Unsupported set cardinality for edge property.&quot;</span>);</div>
-<div class="line"><a name="l00951"></a><span class="lineno">  951</span>&#160;        }</div>
-<div class="line"><a name="l00952"></a><span class="lineno">  952</span>&#160;        <span class="keywordtype">bool</span> is_primary = p_node[<span class="stringliteral">&quot;is_primary&quot;</span>].As&lt;<span class="keywordtype">bool</span>&gt;();</div>
-<div class="line"><a name="l00953"></a><span class="lineno">  953</span>&#160;        <span class="keywordtype">bool</span> is_nullable =</div>
-<div class="line"><a name="l00954"></a><span class="lineno">  954</span>&#160;            p_node[<span class="stringliteral">&quot;is_nullable&quot;</span>].IsNone() || p_node[<span class="stringliteral">&quot;is_nullable&quot;</span>].As&lt;<span class="keywordtype">bool</span>&gt;();</div>
-<div class="line"><a name="l00955"></a><span class="lineno">  955</span>&#160;        property_vec.emplace_back(property_name, property_type, is_primary,</div>
-<div class="line"><a name="l00956"></a><span class="lineno">  956</span>&#160;                                  is_nullable);</div>
-<div class="line"><a name="l00957"></a><span class="lineno">  957</span>&#160;      }</div>
-<div class="line"><a name="l00958"></a><span class="lineno">  958</span>&#160;      property_groups.push_back(</div>
-<div class="line"><a name="l00959"></a><span class="lineno">  959</span>&#160;          std::make_shared&lt;PropertyGroup&gt;(property_vec, file_type, pg_prefix));</div>
-<div class="line"><a name="l00960"></a><span class="lineno">  960</span>&#160;    }</div>
-<div class="line"><a name="l00961"></a><span class="lineno">  961</span>&#160;  }</div>
-<div class="line"><a name="l00962"></a><span class="lineno">  962</span>&#160;  <span class="keywordflow">return</span> std::make_shared&lt;EdgeInfo&gt;(</div>
-<div class="line"><a name="l00963"></a><span class="lineno">  963</span>&#160;      src_type, edge_type, dst_type, chunk_size, src_chunk_size, dst_chunk_size,</div>
-<div class="line"><a name="l00964"></a><span class="lineno">  964</span>&#160;      directed, adjacent_lists, property_groups, prefix, <a class="code" href="classgraphar_1_1_edge_info.html#a9440bef05f4fa689662f26a9ef0117c1">version</a>);</div>
-<div class="line"><a name="l00965"></a><span class="lineno">  965</span>&#160;}</div>
-<div class="line"><a name="l00966"></a><span class="lineno">  966</span>&#160; </div>
-<div class="line"><a name="l00967"></a><span class="lineno"><a class="line" href="classgraphar_1_1_edge_info.html#a5840f6d36ba8e8dab30c1f89534a7edf">  967</a></span>&#160;Result&lt;std::shared_ptr&lt;EdgeInfo&gt;&gt; <a class="code" href="classgraphar_1_1_edge_info.html#a0ac67e1cf3b3fa79b6fcbc054869d0e5">EdgeInfo::Load</a>(<span class="keyword">const</span> std::string&amp; input) {</div>
-<div class="line"><a name="l00968"></a><span class="lineno">  968</span>&#160;  GAR_ASSIGN_OR_RAISE(<span class="keyword">auto</span> yaml, <a class="code" href="classgraphar_1_1_yaml.html#a2fff6ba5eaf3e59b489d015f10013179">Yaml::Load</a>(input));</div>
-<div class="line"><a name="l00969"></a><span class="lineno">  969</span>&#160;  <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_edge_info.html#a0ac67e1cf3b3fa79b6fcbc054869d0e5">EdgeInfo::Load</a>(yaml);</div>
-<div class="line"><a name="l00970"></a><span class="lineno">  970</span>&#160;}</div>
-<div class="line"><a name="l00971"></a><span class="lineno">  971</span>&#160; </div>
-<div class="line"><a name="l00972"></a><span class="lineno"><a class="line" href="classgraphar_1_1_edge_info.html#a80004230ddfbc892995732ea59993a27">  972</a></span>&#160;Result&lt;std::string&gt; <a class="code" href="classgraphar_1_1_edge_info.html#a80004230ddfbc892995732ea59993a27">EdgeInfo::Dump</a>() const noexcept {</div>
-<div class="line"><a name="l00973"></a><span class="lineno">  973</span>&#160;  <span class="keywordflow">if</span> (!<a class="code" href="classgraphar_1_1_edge_info.html#a3dca57726506375cab4fc43fdef2914f">IsValidated</a>()) {</div>
-<div class="line"><a name="l00974"></a><span class="lineno">  974</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#a9ca4be37aae8dfea7e6ef54920e0073f">Status::Invalid</a>(<span class="stringliteral">&quot;The edge info is not validated.&quot;</span>);</div>
-<div class="line"><a name="l00975"></a><span class="lineno">  975</span>&#160;  }</div>
-<div class="line"><a name="l00976"></a><span class="lineno">  976</span>&#160;  std::string dump_string;</div>
-<div class="line"><a name="l00977"></a><span class="lineno">  977</span>&#160;  ::Yaml::Node node;</div>
-<div class="line"><a name="l00978"></a><span class="lineno">  978</span>&#160;  <span class="keywordflow">try</span> {</div>
-<div class="line"><a name="l00979"></a><span class="lineno">  979</span>&#160;    node[<span class="stringliteral">&quot;src_type&quot;</span>] = impl_-&gt;src_type_;</div>
-<div class="line"><a name="l00980"></a><span class="lineno">  980</span>&#160;    node[<span class="stringliteral">&quot;edge_type&quot;</span>] = impl_-&gt;edge_type_;</div>
-<div class="line"><a name="l00981"></a><span class="lineno">  981</span>&#160;    node[<span class="stringliteral">&quot;dst_type&quot;</span>] = impl_-&gt;dst_type_;</div>
-<div class="line"><a name="l00982"></a><span class="lineno">  982</span>&#160;    node[<span class="stringliteral">&quot;chunk_size&quot;</span>] = std::to_string(impl_-&gt;chunk_size_);</div>
-<div class="line"><a name="l00983"></a><span class="lineno">  983</span>&#160;    node[<span class="stringliteral">&quot;src_chunk_size&quot;</span>] = std::to_string(impl_-&gt;src_chunk_size_);</div>
-<div class="line"><a name="l00984"></a><span class="lineno">  984</span>&#160;    node[<span class="stringliteral">&quot;dst_chunk_size&quot;</span>] = std::to_string(impl_-&gt;dst_chunk_size_);</div>
-<div class="line"><a name="l00985"></a><span class="lineno">  985</span>&#160;    node[<span class="stringliteral">&quot;prefix&quot;</span>] = impl_-&gt;prefix_;</div>
-<div class="line"><a name="l00986"></a><span class="lineno">  986</span>&#160;    node[<span class="stringliteral">&quot;directed&quot;</span>] = impl_-&gt;directed_ ? <span class="stringliteral">&quot;true&quot;</span> : <span class="stringliteral">&quot;false&quot;</span>;</div>
-<div class="line"><a name="l00987"></a><span class="lineno">  987</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; adjacent_list : impl_-&gt;adjacent_lists_) {</div>
-<div class="line"><a name="l00988"></a><span class="lineno">  988</span>&#160;      ::Yaml::Node adj_list_node;</div>
-<div class="line"><a name="l00989"></a><span class="lineno">  989</span>&#160;      <span class="keyword">auto</span> adj_list_type = adjacent_list-&gt;GetType();</div>
-<div class="line"><a name="l00990"></a><span class="lineno">  990</span>&#160;      <span class="keyword">auto</span> pair = AdjListTypeToOrderedAligned(adj_list_type);</div>
-<div class="line"><a name="l00991"></a><span class="lineno">  991</span>&#160;      adj_list_node[<span class="stringliteral">&quot;ordered&quot;</span>] = pair.first ? <span class="stringliteral">&quot;true&quot;</span> : <span class="stringliteral">&quot;false&quot;</span>;</div>
-<div class="line"><a name="l00992"></a><span class="lineno">  992</span>&#160;      adj_list_node[<span class="stringliteral">&quot;aligned_by&quot;</span>] = pair.second;</div>
-<div class="line"><a name="l00993"></a><span class="lineno">  993</span>&#160;      adj_list_node[<span class="stringliteral">&quot;prefix&quot;</span>] = adjacent_list-&gt;GetPrefix();</div>
-<div class="line"><a name="l00994"></a><span class="lineno">  994</span>&#160;      adj_list_node[<span class="stringliteral">&quot;file_type&quot;</span>] =</div>
-<div class="line"><a name="l00995"></a><span class="lineno">  995</span>&#160;          FileTypeToString(adjacent_list-&gt;GetFileType());</div>
-<div class="line"><a name="l00996"></a><span class="lineno">  996</span>&#160;      node[<span class="stringliteral">&quot;adj_lists&quot;</span>].PushBack();</div>
-<div class="line"><a name="l00997"></a><span class="lineno">  997</span>&#160;      node[<span class="stringliteral">&quot;adj_lists&quot;</span>][node[<span class="stringliteral">&quot;adj_lists&quot;</span>].Size() - 1] = adj_list_node;</div>
-<div class="line"><a name="l00998"></a><span class="lineno">  998</span>&#160;    }</div>
-<div class="line"><a name="l00999"></a><span class="lineno">  999</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; pg : impl_-&gt;property_groups_) {</div>
-<div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160;      ::Yaml::Node pg_node;</div>
-<div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160;      <span class="keywordflow">if</span> (!pg-&gt;GetPrefix().empty()) {</div>
-<div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160;        pg_node[<span class="stringliteral">&quot;prefix&quot;</span>] = pg-&gt;GetPrefix();</div>
-<div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160;      }</div>
-<div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160;      pg_node[<span class="stringliteral">&quot;file_type&quot;</span>] = FileTypeToString(pg-&gt;GetFileType());</div>
-<div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160;      <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; p : pg-&gt;GetProperties()) {</div>
-<div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160;        ::Yaml::Node p_node;</div>
-<div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>&#160;        p_node[<span class="stringliteral">&quot;name&quot;</span>] = p.name;</div>
-<div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>&#160;        p_node[<span class="stringliteral">&quot;data_type&quot;</span>] = p.type-&gt;ToTypeName();</div>
-<div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160;        p_node[<span class="stringliteral">&quot;is_primary&quot;</span>] = p.is_primary ? <span class="stringliteral">&quot;true&quot;</span> : <span class="stringliteral">&quot;false&quot;</span>;</div>
-<div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>&#160;        p_node[<span class="stringliteral">&quot;is_nullable&quot;</span>] = p.is_nullable ? <span class="stringliteral">&quot;true&quot;</span> : <span class="stringliteral">&quot;false&quot;</span>;</div>
-<div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>&#160;        pg_node[<span class="stringliteral">&quot;properties&quot;</span>].PushBack();</div>
-<div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160;        pg_node[<span class="stringliteral">&quot;properties&quot;</span>][pg_node[<span class="stringliteral">&quot;properties&quot;</span>].Size() - 1] = p_node;</div>
-<div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160;      }</div>
-<div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160;      node[<span class="stringliteral">&quot;property_groups&quot;</span>].PushBack();</div>
-<div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160;      node[<span class="stringliteral">&quot;property_groups&quot;</span>][node[<span class="stringliteral">&quot;property_groups&quot;</span>].Size() - 1] = pg_node;</div>
-<div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>&#160;    }</div>
-<div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>&#160;    <span class="keywordflow">if</span> (impl_-&gt;version_ != <span class="keyword">nullptr</span>) {</div>
-<div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>&#160;      node[<span class="stringliteral">&quot;version&quot;</span>] = impl_-&gt;version_-&gt;ToString();</div>
-<div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160;    }</div>
-<div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>&#160;    ::Yaml::Serialize(node, dump_string);</div>
-<div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>&#160;  } <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception&amp; e) {</div>
-<div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#a9ca4be37aae8dfea7e6ef54920e0073f">Status::Invalid</a>(<span class="stringliteral">&quot;Failed to dump edge info: &quot;</span>, e.what());</div>
-<div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>&#160;  }</div>
-<div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>&#160;  <span class="keywordflow">return</span> dump_string;</div>
-<div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>&#160;}</div>
-<div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>&#160; </div>
-<div class="line"><a name="l01027"></a><span class="lineno"><a class="line" href="classgraphar_1_1_edge_info.html#a1e95f986bd8c5191f438705b195191e3"> 1027</a></span>&#160;<a class="code" href="classgraphar_1_1_status.html">Status</a> <a class="code" href="classgraphar_1_1_edge_info.html#a1e95f986bd8c5191f438705b195191e3">EdgeInfo::Save</a>(<span class="keyword">const</span> std::string&amp; path)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>&#160;  std::string no_url_path;</div>
-<div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>&#160;  GAR_ASSIGN_OR_RAISE(<span class="keyword">auto</span> fs, FileSystemFromUriOrPath(path, &amp;no_url_path));</div>
-<div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>&#160;  GAR_ASSIGN_OR_RAISE(<span class="keyword">auto</span> yaml_content, this-&gt;<a class="code" href="classgraphar_1_1_edge_info.html#a80004230ddfbc892995732ea59993a27">Dump</a>());</div>
-<div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>&#160;  <span class="keywordflow">return</span> fs-&gt;WriteValueToFile(yaml_content, no_url_path);</div>
-<div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>&#160;}</div>
-<div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>&#160; </div>
-<div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>&#160;<span class="keyword">namespace </span>{</div>
-<div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>&#160; </div>
-<div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>&#160;<span class="keyword">static</span> std::string PathToDirectory(<span class="keyword">const</span> std::string&amp; path) {</div>
-<div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>&#160;  <span class="keywordflow">if</span> (path.rfind(<span class="stringliteral">&quot;s3://&quot;</span>, 0) == 0) {</div>
-<div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>&#160;    <span class="keywordtype">int</span> t = path.find_last_of(<span class="charliteral">&#39;?&#39;</span>);</div>
-<div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>&#160;    std::string prefix = path.substr(0, t);</div>
-<div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>&#160;    std::string suffix = path.substr(t);</div>
-<div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>&#160;    <span class="keyword">const</span> <span class="keywordtype">size_t</span> last_slash_idx = prefix.rfind(<span class="charliteral">&#39;/&#39;</span>);</div>
-<div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>&#160;    <span class="keywordflow">if</span> (std::string::npos != last_slash_idx) {</div>
-<div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>&#160;      <span class="keywordflow">return</span> prefix.substr(0, last_slash_idx + 1) + suffix;</div>
-<div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>&#160;    }</div>
-<div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160;  } <span class="keywordflow">else</span> {</div>
-<div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>&#160;    <span class="keyword">const</span> <span class="keywordtype">size_t</span> last_slash_idx = path.rfind(<span class="charliteral">&#39;/&#39;</span>);</div>
-<div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160;    <span class="keywordflow">if</span> (std::string::npos != last_slash_idx) {</div>
-<div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160;      <span class="keywordflow">return</span> path.substr(0, last_slash_idx + 1);  <span class="comment">// +1 to include the slash</span></div>
-<div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160;    }</div>
-<div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160;  }</div>
-<div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160;  <span class="keywordflow">return</span> path;</div>
-<div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>&#160;}</div>
-<div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>&#160; </div>
-<div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>&#160;<span class="keyword">static</span> Result&lt;std::shared_ptr&lt;GraphInfo&gt;&gt; ConstructGraphInfo(</div>
-<div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>&#160;    std::shared_ptr&lt;Yaml&gt; graph_meta, <span class="keyword">const</span> std::string&amp; default_name,</div>
-<div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>&#160;    <span class="keyword">const</span> std::string&amp; default_prefix, <span class="keyword">const</span> std::shared_ptr&lt;FileSystem&gt; fs,</div>
-<div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>&#160;    <span class="keyword">const</span> std::string&amp; no_url_path) {</div>
-<div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>&#160;  std::string name = default_name;</div>
-<div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>&#160;  std::string prefix = default_prefix;</div>
-<div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>&#160;  <span class="keywordflow">if</span> (!graph_meta-&gt;operator[](<span class="stringliteral">&quot;name&quot;</span>).IsNone()) {</div>
-<div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>&#160;    name = graph_meta-&gt;operator[](<span class="stringliteral">&quot;name&quot;</span>).As&lt;std::string&gt;();</div>
-<div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>&#160;  }</div>
-<div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>&#160;  <span class="keywordflow">if</span> (!graph_meta-&gt;operator[](<span class="stringliteral">&quot;prefix&quot;</span>).IsNone()) {</div>
-<div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>&#160;    prefix = graph_meta-&gt;operator[](<span class="stringliteral">&quot;prefix&quot;</span>).As&lt;std::string&gt;();</div>
-<div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>&#160;  }</div>
-<div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>&#160;  std::shared_ptr&lt;const InfoVersion&gt; version = <span class="keyword">nullptr</span>;</div>
-<div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>&#160;  <span class="keywordflow">if</span> (!graph_meta-&gt;operator[](<span class="stringliteral">&quot;version&quot;</span>).IsNone()) {</div>
-<div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>&#160;    GAR_ASSIGN_OR_RAISE(</div>
-<div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>&#160;        version, <a class="code" href="classgraphar_1_1_info_version.html#a6c149bd120118e7c6803dcac71a7a667">InfoVersion::Parse</a>(</div>
-<div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>&#160;                     graph_meta-&gt;operator[](<span class="stringliteral">&quot;version&quot;</span>).As&lt;std::string&gt;()));</div>
-<div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>&#160;  }</div>
-<div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>&#160;  std::unordered_map&lt;std::string, std::string&gt; extra_info;</div>
-<div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>&#160;  <span class="keywordflow">if</span> (!graph_meta-&gt;operator[](<span class="stringliteral">&quot;extra_info&quot;</span>).IsNone()) {</div>
-<div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160;    <span class="keyword">auto</span>&amp; extra_info_node = graph_meta-&gt;operator[](<span class="stringliteral">&quot;extra_info&quot;</span>);</div>
-<div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = extra_info_node.Begin(); it != extra_info_node.End(); it++) {</div>
-<div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160;      <span class="keyword">auto</span> node = (*it).second;</div>
-<div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>&#160;      <span class="keyword">auto</span> key = node[<span class="stringliteral">&quot;key&quot;</span>].As&lt;std::string&gt;();</div>
-<div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>&#160;      <span class="keyword">auto</span> value = node[<span class="stringliteral">&quot;value&quot;</span>].As&lt;std::string&gt;();</div>
-<div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160;      extra_info.emplace(key, value);</div>
-<div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>&#160;    }</div>
-<div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>&#160;  }</div>
-<div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160; </div>
-<div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160;  VertexInfoVector vertex_infos;</div>
-<div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160;  EdgeInfoVector edge_infos;</div>
-<div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160;  <span class="keyword">const</span> <span class="keyword">auto</span>&amp; vertices = graph_meta-&gt;operator[](<span class="stringliteral">&quot;vertices&quot;</span>);</div>
-<div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160;  <span class="keywordflow">if</span> (vertices.IsSequence()) {</div>
-<div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = vertices.Begin(); it != vertices.End(); it++) {</div>
-<div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160;      std::string vertex_meta_file =</div>
-<div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160;          no_url_path + (*it).second.As&lt;std::string&gt;();</div>
-<div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160;      GAR_ASSIGN_OR_RAISE(<span class="keyword">auto</span> input,</div>
-<div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160;                          fs-&gt;ReadFileToValue&lt;std::string&gt;(vertex_meta_file));</div>
-<div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160;      GAR_ASSIGN_OR_RAISE(<span class="keyword">auto</span> vertex_meta, <a class="code" href="classgraphar_1_1_yaml.html#a2fff6ba5eaf3e59b489d015f10013179">Yaml::Load</a>(input));</div>
-<div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160;      GAR_ASSIGN_OR_RAISE(<span class="keyword">auto</span> vertex_info, <a class="code" href="classgraphar_1_1_vertex_info.html#af1ade1caa6e70e4b7ce60cf4df7ac50c">VertexInfo::Load</a>(vertex_meta));</div>
-<div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160;      vertex_infos.push_back(vertex_info);</div>
-<div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160;    }</div>
-<div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160;  }</div>
-<div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>&#160;  <span class="keyword">const</span> <span class="keyword">auto</span>&amp; edges = graph_meta-&gt;operator[](<span class="stringliteral">&quot;edges&quot;</span>);</div>
-<div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>&#160;  <span class="keywordflow">if</span> (edges.IsSequence()) {</div>
-<div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = edges.Begin(); it != edges.End(); it++) {</div>
-<div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160;      std::string edge_meta_file = no_url_path + (*it).second.As&lt;std::string&gt;();</div>
-<div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160;      GAR_ASSIGN_OR_RAISE(<span class="keyword">auto</span> input,</div>
-<div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160;                          fs-&gt;ReadFileToValue&lt;std::string&gt;(edge_meta_file));</div>
-<div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>&#160;      GAR_ASSIGN_OR_RAISE(<span class="keyword">auto</span> edge_meta, <a class="code" href="classgraphar_1_1_yaml.html#a2fff6ba5eaf3e59b489d015f10013179">Yaml::Load</a>(input));</div>
-<div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160;      GAR_ASSIGN_OR_RAISE(<span class="keyword">auto</span> edge_info, <a class="code" href="classgraphar_1_1_edge_info.html#a0ac67e1cf3b3fa79b6fcbc054869d0e5">EdgeInfo::Load</a>(edge_meta));</div>
-<div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160;      edge_infos.push_back(edge_info);</div>
-<div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160;    }</div>
-<div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160;  }</div>
-<div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160; </div>
-<div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160;  std::vector&lt;std::string&gt; labels;</div>
-<div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>&#160;  <span class="keywordflow">if</span> (!graph_meta-&gt;operator[](<span class="stringliteral">&quot;labels&quot;</span>).IsNone()) {</div>
-<div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160;    <span class="keyword">const</span> <span class="keyword">auto</span>&amp; labels_node = graph_meta-&gt;operator[](<span class="stringliteral">&quot;labels&quot;</span>);</div>
-<div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160;    <span class="keywordflow">if</span> (labels_node.IsSequence()) {</div>
-<div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160;      <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = labels_node.Begin(); it != labels_node.End(); it++) {</div>
-<div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160;        labels.push_back((*it).second.As&lt;std::string&gt;());</div>
-<div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>&#160;      }</div>
-<div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>&#160;    }</div>
-<div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>&#160;  }</div>
-<div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>&#160;  <span class="keywordflow">return</span> std::make_shared&lt;GraphInfo&gt;(name, vertex_infos, edge_infos, labels,</div>
-<div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>&#160;                                     prefix, version, extra_info);</div>
-<div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>&#160;}</div>
-<div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>&#160; </div>
-<div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>&#160;}  <span class="comment">// namespace</span></div>
-<div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>&#160; </div>
-<div class="line"><a name="l01124"></a><span class="lineno"><a class="line" href="classgraphar_1_1_graph_info_1_1_impl.html"> 1124</a></span>&#160;<span class="keyword">class </span><a class="code" href="classgraphar_1_1_graph_info_1_1_impl.html">GraphInfo::Impl</a> {</div>
-<div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160; <span class="keyword">public</span>:</div>
-<div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>&#160;  <a class="code" href="classgraphar_1_1_graph_info_1_1_impl.html">Impl</a>(<span class="keyword">const</span> std::string&amp; graph_name, VertexInfoVector vertex_infos,</div>
-<div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>&#160;       EdgeInfoVector edge_infos, <span class="keyword">const</span> std::vector&lt;std::string&gt;&amp; labels,</div>
-<div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160;       <span class="keyword">const</span> std::string&amp; prefix, std::shared_ptr&lt;const InfoVersion&gt; <a class="code" href="classgraphar_1_1_graph_info.html#aeb68a7550c63365d8093136601a3aeee">version</a>,</div>
-<div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>&#160;       <span class="keyword">const</span> std::unordered_map&lt;std::string, std::string&gt;&amp; extra_info)</div>
-<div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>&#160;      : name_(graph_name),</div>
-<div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>&#160;        vertex_infos_(std::move(vertex_infos)),</div>
-<div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160;        edge_infos_(std::move(edge_infos)),</div>
-<div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>&#160;        labels_(labels),</div>
-<div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>&#160;        prefix_(prefix),</div>
-<div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>&#160;        version_(std::move(<a class="code" href="classgraphar_1_1_graph_info.html#aeb68a7550c63365d8093136601a3aeee">version</a>)),</div>
-<div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>&#160;        extra_info_(extra_info) {</div>
-<div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; vertex_infos_.size(); i++) {</div>
-<div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160;      <span class="keywordflow">if</span> (vertex_infos_[i] != <span class="keyword">nullptr</span>) {</div>
-<div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160;        vtype_to_index_[vertex_infos_[i]-&gt;GetType()] = i;</div>
-<div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160;      }</div>
-<div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>&#160;    }</div>
-<div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; edge_infos_.size(); i++) {</div>
-<div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>&#160;      <span class="keywordflow">if</span> (edge_infos_[i] != <span class="keyword">nullptr</span>) {</div>
-<div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>&#160;        std::string edge_key = ConcatEdgeTriple(edge_infos_[i]-&gt;GetSrcType(),</div>
-<div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>&#160;                                                edge_infos_[i]-&gt;GetEdgeType(),</div>
-<div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160;                                                edge_infos_[i]-&gt;GetDstType());</div>
-<div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160;        etype_to_index_[edge_key] = i;</div>
-<div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>&#160;      }</div>
-<div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>&#160;    }</div>
-<div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160;  }</div>
-<div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>&#160; </div>
-<div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>&#160;  <span class="keywordtype">bool</span> is_validated() <span class="keyword">const</span> noexcept {</div>
-<div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>&#160;    <span class="keywordflow">if</span> (name_.empty() || prefix_.empty()) {</div>
-<div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>&#160;      <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>&#160;    }</div>
-<div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; v : vertex_infos_) {</div>
-<div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>&#160;      <span class="keywordflow">if</span> (!v || !v-&gt;IsValidated()) {</div>
-<div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>&#160;        <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>&#160;      }</div>
+<div class="line"><a name="l00837"></a><span class="lineno">  837</span>&#160;  CHECK_HAS_ADJ_LIST_TYPE(adj_list_type);</div>
+<div class="line"><a name="l00838"></a><span class="lineno">  838</span>&#160;  <span class="keywordtype">int</span> i = impl_-&gt;adjacent_list_type_to_index_.at(adj_list_type);</div>
+<div class="line"><a name="l00839"></a><span class="lineno">  839</span>&#160;  <span class="keywordflow">return</span> BuildPath({impl_-&gt;prefix_, impl_-&gt;adjacent_lists_[i]-&gt;GetPrefix(),</div>
+<div class="line"><a name="l00840"></a><span class="lineno">  840</span>&#160;                    property_group-&gt;GetPrefix()});</div>
+<div class="line"><a name="l00841"></a><span class="lineno">  841</span>&#160;}</div>
+<div class="line"><a name="l00842"></a><span class="lineno">  842</span>&#160; </div>
+<div class="line"><a name="l00843"></a><span class="lineno"><a class="line" href="classgraphar_1_1_edge_info.html#a37fa8536c627a5e5f529e8ee6d3d7506">  843</a></span>&#160;Result&lt;std::shared_ptr&lt;DataType&gt;&gt; <a class="code" href="classgraphar_1_1_edge_info.html#a37fa8536c627a5e5f529e8ee6d3d7506">EdgeInfo::GetPropertyType</a>(</div>
+<div class="line"><a name="l00844"></a><span class="lineno">  844</span>&#160;    <span class="keyword">const</span> std::string&amp; property_name)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00845"></a><span class="lineno">  845</span>&#160;  <span class="keyword">auto</span> it = impl_-&gt;property_name_to_type_.find(property_name);</div>
+<div class="line"><a name="l00846"></a><span class="lineno">  846</span>&#160;  <span class="keywordflow">if</span> (it == impl_-&gt;property_name_to_type_.end()) {</div>
+<div class="line"><a name="l00847"></a><span class="lineno">  847</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#a9ca4be37aae8dfea7e6ef54920e0073f">Status::Invalid</a>(<span class="stringliteral">&quot;property name not found: &quot;</span>, property_name);</div>
+<div class="line"><a name="l00848"></a><span class="lineno">  848</span>&#160;  }</div>
+<div class="line"><a name="l00849"></a><span class="lineno">  849</span>&#160;  <span class="keywordflow">return</span> it-&gt;second;</div>
+<div class="line"><a name="l00850"></a><span class="lineno">  850</span>&#160;}</div>
+<div class="line"><a name="l00851"></a><span class="lineno">  851</span>&#160; </div>
+<div class="line"><a name="l00852"></a><span class="lineno"><a class="line" href="classgraphar_1_1_edge_info.html#a5bd430ba21f5dfb230b978e03c4020ef">  852</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classgraphar_1_1_edge_info.html#a5bd430ba21f5dfb230b978e03c4020ef">EdgeInfo::IsPrimaryKey</a>(<span class="keyword">const</span> std::string&amp; property_name)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00853"></a><span class="lineno">  853</span>&#160;  <span class="keyword">auto</span> it = impl_-&gt;property_name_to_primary_.find(property_name);</div>
+<div class="line"><a name="l00854"></a><span class="lineno">  854</span>&#160;  <span class="keywordflow">if</span> (it == impl_-&gt;property_name_to_primary_.end()) {</div>
+<div class="line"><a name="l00855"></a><span class="lineno">  855</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00856"></a><span class="lineno">  856</span>&#160;  }</div>
+<div class="line"><a name="l00857"></a><span class="lineno">  857</span>&#160;  <span class="keywordflow">return</span> it-&gt;second;</div>
+<div class="line"><a name="l00858"></a><span class="lineno">  858</span>&#160;}</div>
+<div class="line"><a name="l00859"></a><span class="lineno">  859</span>&#160; </div>
+<div class="line"><a name="l00860"></a><span class="lineno"><a class="line" href="classgraphar_1_1_edge_info.html#a80b00d930f22870d00331a639c9cc26e">  860</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classgraphar_1_1_edge_info.html#a80b00d930f22870d00331a639c9cc26e">EdgeInfo::IsNullableKey</a>(<span class="keyword">const</span> std::string&amp; property_name)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00861"></a><span class="lineno">  861</span>&#160;  <span class="keyword">auto</span> it = impl_-&gt;property_name_to_nullable_.find(property_name);</div>
+<div class="line"><a name="l00862"></a><span class="lineno">  862</span>&#160;  <span class="keywordflow">if</span> (it == impl_-&gt;property_name_to_nullable_.end()) {</div>
+<div class="line"><a name="l00863"></a><span class="lineno">  863</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00864"></a><span class="lineno">  864</span>&#160;  }</div>
+<div class="line"><a name="l00865"></a><span class="lineno">  865</span>&#160;  <span class="keywordflow">return</span> it-&gt;second;</div>
+<div class="line"><a name="l00866"></a><span class="lineno">  866</span>&#160;}</div>
+<div class="line"><a name="l00867"></a><span class="lineno">  867</span>&#160; </div>
+<div class="line"><a name="l00868"></a><span class="lineno"><a class="line" href="classgraphar_1_1_edge_info.html#a6e5b4fdc98d8399564396fb63955c62a">  868</a></span>&#160;Result&lt;std::shared_ptr&lt;EdgeInfo&gt;&gt; <a class="code" href="classgraphar_1_1_edge_info.html#a6e5b4fdc98d8399564396fb63955c62a">EdgeInfo::AddAdjacentList</a>(</div>
+<div class="line"><a name="l00869"></a><span class="lineno">  869</span>&#160;    std::shared_ptr&lt;AdjacentList&gt; adj_list)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00870"></a><span class="lineno">  870</span>&#160;  <span class="keywordflow">if</span> (adj_list == <span class="keyword">nullptr</span>) {</div>
+<div class="line"><a name="l00871"></a><span class="lineno">  871</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#a9ca4be37aae8dfea7e6ef54920e0073f">Status::Invalid</a>(<span class="stringliteral">&quot;adj list is nullptr&quot;</span>);</div>
+<div class="line"><a name="l00872"></a><span class="lineno">  872</span>&#160;  }</div>
+<div class="line"><a name="l00873"></a><span class="lineno">  873</span>&#160;  <span class="keywordflow">if</span> (<a class="code" href="classgraphar_1_1_edge_info.html#aaa6633dc8136cec806cbcf42c2cf136d">HasAdjacentListType</a>(adj_list-&gt;GetType())) {</div>
+<div class="line"><a name="l00874"></a><span class="lineno">  874</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#a9ca4be37aae8dfea7e6ef54920e0073f">Status::Invalid</a>(<span class="stringliteral">&quot;adj list type already exists: &quot;</span>,</div>
+<div class="line"><a name="l00875"></a><span class="lineno">  875</span>&#160;                           AdjListTypeToString(adj_list-&gt;GetType()));</div>
+<div class="line"><a name="l00876"></a><span class="lineno">  876</span>&#160;  }</div>
+<div class="line"><a name="l00877"></a><span class="lineno">  877</span>&#160;  <span class="keywordflow">return</span> std::make_shared&lt;EdgeInfo&gt;(</div>
+<div class="line"><a name="l00878"></a><span class="lineno">  878</span>&#160;      impl_-&gt;src_type_, impl_-&gt;edge_type_, impl_-&gt;dst_type_, impl_-&gt;chunk_size_,</div>
+<div class="line"><a name="l00879"></a><span class="lineno">  879</span>&#160;      impl_-&gt;src_chunk_size_, impl_-&gt;dst_chunk_size_, impl_-&gt;directed_,</div>
+<div class="line"><a name="l00880"></a><span class="lineno">  880</span>&#160;      AddVectorElement(impl_-&gt;adjacent_lists_, adj_list),</div>
+<div class="line"><a name="l00881"></a><span class="lineno">  881</span>&#160;      impl_-&gt;property_groups_, impl_-&gt;prefix_, impl_-&gt;version_);</div>
+<div class="line"><a name="l00882"></a><span class="lineno">  882</span>&#160;}</div>
+<div class="line"><a name="l00883"></a><span class="lineno">  883</span>&#160; </div>
+<div class="line"><a name="l00884"></a><span class="lineno"><a class="line" href="classgraphar_1_1_edge_info.html#a7db36496a4cf0eb517b463de5caa125f">  884</a></span>&#160;Result&lt;std::shared_ptr&lt;EdgeInfo&gt;&gt; <a class="code" href="classgraphar_1_1_edge_info.html#a7db36496a4cf0eb517b463de5caa125f">EdgeInfo::RemoveAdjacentList</a>(</div>
+<div class="line"><a name="l00885"></a><span class="lineno">  885</span>&#160;    std::shared_ptr&lt;AdjacentList&gt; adj_list)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00886"></a><span class="lineno">  886</span>&#160;  <span class="keywordflow">if</span> (adj_list == <span class="keyword">nullptr</span>) {</div>
+<div class="line"><a name="l00887"></a><span class="lineno">  887</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#a9ca4be37aae8dfea7e6ef54920e0073f">Status::Invalid</a>(<span class="stringliteral">&quot;adj list is nullptr&quot;</span>);</div>
+<div class="line"><a name="l00888"></a><span class="lineno">  888</span>&#160;  }</div>
+<div class="line"><a name="l00889"></a><span class="lineno">  889</span>&#160;  <span class="keywordtype">int</span> idx = -1;</div>
+<div class="line"><a name="l00890"></a><span class="lineno">  890</span>&#160;  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; impl_-&gt;adjacent_lists_.size(); i++) {</div>
+<div class="line"><a name="l00891"></a><span class="lineno">  891</span>&#160;    <span class="keywordflow">if</span> (impl_-&gt;adjacent_lists_[i]-&gt;GetType() == adj_list-&gt;GetType()) {</div>
+<div class="line"><a name="l00892"></a><span class="lineno">  892</span>&#160;      idx = i;</div>
+<div class="line"><a name="l00893"></a><span class="lineno">  893</span>&#160;      <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00894"></a><span class="lineno">  894</span>&#160;    }</div>
+<div class="line"><a name="l00895"></a><span class="lineno">  895</span>&#160;  }</div>
+<div class="line"><a name="l00896"></a><span class="lineno">  896</span>&#160;  <span class="keywordflow">if</span> (idx == -1) {</div>
+<div class="line"><a name="l00897"></a><span class="lineno">  897</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#a9ca4be37aae8dfea7e6ef54920e0073f">Status::Invalid</a>(<span class="stringliteral">&quot;adj list not found&quot;</span>);</div>
+<div class="line"><a name="l00898"></a><span class="lineno">  898</span>&#160;  }</div>
+<div class="line"><a name="l00899"></a><span class="lineno">  899</span>&#160;  <span class="keywordflow">return</span> std::make_shared&lt;EdgeInfo&gt;(</div>
+<div class="line"><a name="l00900"></a><span class="lineno">  900</span>&#160;      impl_-&gt;src_type_, impl_-&gt;edge_type_, impl_-&gt;dst_type_, impl_-&gt;chunk_size_,</div>
+<div class="line"><a name="l00901"></a><span class="lineno">  901</span>&#160;      impl_-&gt;src_chunk_size_, impl_-&gt;dst_chunk_size_, impl_-&gt;directed_,</div>
+<div class="line"><a name="l00902"></a><span class="lineno">  902</span>&#160;      RemoveVectorElement(impl_-&gt;adjacent_lists_, <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(idx)),</div>
+<div class="line"><a name="l00903"></a><span class="lineno">  903</span>&#160;      impl_-&gt;property_groups_, impl_-&gt;prefix_, impl_-&gt;version_);</div>
+<div class="line"><a name="l00904"></a><span class="lineno">  904</span>&#160;}</div>
+<div class="line"><a name="l00905"></a><span class="lineno">  905</span>&#160; </div>
+<div class="line"><a name="l00906"></a><span class="lineno"><a class="line" href="classgraphar_1_1_edge_info.html#a9620f838addfdcb892b30e80e2cc4239">  906</a></span>&#160;Result&lt;std::shared_ptr&lt;EdgeInfo&gt;&gt; <a class="code" href="classgraphar_1_1_edge_info.html#a9620f838addfdcb892b30e80e2cc4239">EdgeInfo::AddPropertyGroup</a>(</div>
+<div class="line"><a name="l00907"></a><span class="lineno">  907</span>&#160;    std::shared_ptr&lt;PropertyGroup&gt; property_group)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00908"></a><span class="lineno">  908</span>&#160;  <span class="keywordflow">if</span> (property_group == <span class="keyword">nullptr</span>) {</div>
+<div class="line"><a name="l00909"></a><span class="lineno">  909</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#a9ca4be37aae8dfea7e6ef54920e0073f">Status::Invalid</a>(<span class="stringliteral">&quot;property group is nullptr&quot;</span>);</div>
+<div class="line"><a name="l00910"></a><span class="lineno">  910</span>&#160;  }</div>
+<div class="line"><a name="l00911"></a><span class="lineno">  911</span>&#160;  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; property : property_group-&gt;GetProperties()) {</div>
+<div class="line"><a name="l00912"></a><span class="lineno">  912</span>&#160;    <span class="keywordflow">if</span> (<a class="code" href="classgraphar_1_1_edge_info.html#a69182fa8d45bb0e7d4ac230adb1239b2">HasProperty</a>(property.name)) {</div>
+<div class="line"><a name="l00913"></a><span class="lineno">  913</span>&#160;      <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#a9ca4be37aae8dfea7e6ef54920e0073f">Status::Invalid</a>(<span class="stringliteral">&quot;property in property group already exists: &quot;</span>,</div>
+<div class="line"><a name="l00914"></a><span class="lineno">  914</span>&#160;                             property.name);</div>
+<div class="line"><a name="l00915"></a><span class="lineno">  915</span>&#160;    }</div>
+<div class="line"><a name="l00916"></a><span class="lineno">  916</span>&#160;  }</div>
+<div class="line"><a name="l00917"></a><span class="lineno">  917</span>&#160;  <span class="keywordflow">return</span> std::make_shared&lt;EdgeInfo&gt;(</div>
+<div class="line"><a name="l00918"></a><span class="lineno">  918</span>&#160;      impl_-&gt;src_type_, impl_-&gt;edge_type_, impl_-&gt;dst_type_, impl_-&gt;chunk_size_,</div>
+<div class="line"><a name="l00919"></a><span class="lineno">  919</span>&#160;      impl_-&gt;src_chunk_size_, impl_-&gt;dst_chunk_size_, impl_-&gt;directed_,</div>
+<div class="line"><a name="l00920"></a><span class="lineno">  920</span>&#160;      impl_-&gt;adjacent_lists_,</div>
+<div class="line"><a name="l00921"></a><span class="lineno">  921</span>&#160;      AddVectorElement(impl_-&gt;property_groups_, property_group), impl_-&gt;prefix_,</div>
+<div class="line"><a name="l00922"></a><span class="lineno">  922</span>&#160;      impl_-&gt;version_);</div>
+<div class="line"><a name="l00923"></a><span class="lineno">  923</span>&#160;}</div>
+<div class="line"><a name="l00924"></a><span class="lineno">  924</span>&#160; </div>
+<div class="line"><a name="l00925"></a><span class="lineno"><a class="line" href="classgraphar_1_1_edge_info.html#a264853429b84060bbe36c671d5bc8963">  925</a></span>&#160;Result&lt;std::shared_ptr&lt;EdgeInfo&gt;&gt; <a class="code" href="classgraphar_1_1_edge_info.html#a264853429b84060bbe36c671d5bc8963">EdgeInfo::RemovePropertyGroup</a>(</div>
+<div class="line"><a name="l00926"></a><span class="lineno">  926</span>&#160;    std::shared_ptr&lt;PropertyGroup&gt; property_group)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00927"></a><span class="lineno">  927</span>&#160;  <span class="keywordflow">if</span> (property_group == <span class="keyword">nullptr</span>) {</div>
+<div class="line"><a name="l00928"></a><span class="lineno">  928</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#a9ca4be37aae8dfea7e6ef54920e0073f">Status::Invalid</a>(<span class="stringliteral">&quot;property group is nullptr&quot;</span>);</div>
+<div class="line"><a name="l00929"></a><span class="lineno">  929</span>&#160;  }</div>
+<div class="line"><a name="l00930"></a><span class="lineno">  930</span>&#160;  <span class="keywordtype">int</span> idx = -1;</div>
+<div class="line"><a name="l00931"></a><span class="lineno">  931</span>&#160;  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; impl_-&gt;property_groups_.size(); i++) {</div>
+<div class="line"><a name="l00932"></a><span class="lineno">  932</span>&#160;    <span class="keywordflow">if</span> (*(impl_-&gt;property_groups_[i]) == *property_group) {</div>
+<div class="line"><a name="l00933"></a><span class="lineno">  933</span>&#160;      idx = i;</div>
+<div class="line"><a name="l00934"></a><span class="lineno">  934</span>&#160;    }</div>
+<div class="line"><a name="l00935"></a><span class="lineno">  935</span>&#160;  }</div>
+<div class="line"><a name="l00936"></a><span class="lineno">  936</span>&#160;  <span class="keywordflow">if</span> (idx == -1) {</div>
+<div class="line"><a name="l00937"></a><span class="lineno">  937</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#a9ca4be37aae8dfea7e6ef54920e0073f">Status::Invalid</a>(<span class="stringliteral">&quot;property group not found&quot;</span>);</div>
+<div class="line"><a name="l00938"></a><span class="lineno">  938</span>&#160;  }</div>
+<div class="line"><a name="l00939"></a><span class="lineno">  939</span>&#160;  <span class="keywordflow">return</span> std::make_shared&lt;EdgeInfo&gt;(</div>
+<div class="line"><a name="l00940"></a><span class="lineno">  940</span>&#160;      impl_-&gt;src_type_, impl_-&gt;edge_type_, impl_-&gt;dst_type_, impl_-&gt;chunk_size_,</div>
+<div class="line"><a name="l00941"></a><span class="lineno">  941</span>&#160;      impl_-&gt;src_chunk_size_, impl_-&gt;dst_chunk_size_, impl_-&gt;directed_,</div>
+<div class="line"><a name="l00942"></a><span class="lineno">  942</span>&#160;      impl_-&gt;adjacent_lists_,</div>
+<div class="line"><a name="l00943"></a><span class="lineno">  943</span>&#160;      RemoveVectorElement(impl_-&gt;property_groups_, <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(idx)),</div>
+<div class="line"><a name="l00944"></a><span class="lineno">  944</span>&#160;      impl_-&gt;prefix_, impl_-&gt;version_);</div>
+<div class="line"><a name="l00945"></a><span class="lineno">  945</span>&#160;}</div>
+<div class="line"><a name="l00946"></a><span class="lineno">  946</span>&#160; </div>
+<div class="line"><a name="l00947"></a><span class="lineno"><a class="line" href="classgraphar_1_1_edge_info.html#a3dca57726506375cab4fc43fdef2914f">  947</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classgraphar_1_1_edge_info.html#a3dca57726506375cab4fc43fdef2914f">EdgeInfo::IsValidated</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> impl_-&gt;is_validated(); }</div>
+<div class="line"><a name="l00948"></a><span class="lineno">  948</span>&#160; </div>
+<div class="line"><a name="l00949"></a><span class="lineno">  949</span>&#160;std::shared_ptr&lt;EdgeInfo&gt; CreateEdgeInfo(</div>
+<div class="line"><a name="l00950"></a><span class="lineno">  950</span>&#160;    <span class="keyword">const</span> std::string&amp; src_type, <span class="keyword">const</span> std::string&amp; edge_type,</div>
+<div class="line"><a name="l00951"></a><span class="lineno">  951</span>&#160;    <span class="keyword">const</span> std::string&amp; dst_type, IdType chunk_size, IdType src_chunk_size,</div>
+<div class="line"><a name="l00952"></a><span class="lineno">  952</span>&#160;    IdType dst_chunk_size, <span class="keywordtype">bool</span> directed,</div>
+<div class="line"><a name="l00953"></a><span class="lineno">  953</span>&#160;    <span class="keyword">const</span> AdjacentListVector&amp; adjacent_lists,</div>
+<div class="line"><a name="l00954"></a><span class="lineno">  954</span>&#160;    <span class="keyword">const</span> PropertyGroupVector&amp; property_groups, <span class="keyword">const</span> std::string&amp; prefix,</div>
+<div class="line"><a name="l00955"></a><span class="lineno">  955</span>&#160;    std::shared_ptr&lt;const InfoVersion&gt; version) {</div>
+<div class="line"><a name="l00956"></a><span class="lineno">  956</span>&#160;  <span class="keywordflow">if</span> (src_type.empty() || edge_type.empty() || dst_type.empty() ||</div>
+<div class="line"><a name="l00957"></a><span class="lineno">  957</span>&#160;      chunk_size &lt;= 0 || src_chunk_size &lt;= 0 || dst_chunk_size &lt;= 0 ||</div>
+<div class="line"><a name="l00958"></a><span class="lineno">  958</span>&#160;      adjacent_lists.empty()) {</div>
+<div class="line"><a name="l00959"></a><span class="lineno">  959</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
+<div class="line"><a name="l00960"></a><span class="lineno">  960</span>&#160;  }</div>
+<div class="line"><a name="l00961"></a><span class="lineno">  961</span>&#160;  <span class="keywordflow">return</span> std::make_shared&lt;EdgeInfo&gt;(</div>
+<div class="line"><a name="l00962"></a><span class="lineno">  962</span>&#160;      src_type, edge_type, dst_type, chunk_size, src_chunk_size, dst_chunk_size,</div>
+<div class="line"><a name="l00963"></a><span class="lineno">  963</span>&#160;      directed, adjacent_lists, property_groups, prefix, version);</div>
+<div class="line"><a name="l00964"></a><span class="lineno">  964</span>&#160;}</div>
+<div class="line"><a name="l00965"></a><span class="lineno">  965</span>&#160; </div>
+<div class="line"><a name="l00966"></a><span class="lineno"><a class="line" href="classgraphar_1_1_edge_info.html#a0ac67e1cf3b3fa79b6fcbc054869d0e5">  966</a></span>&#160;Result&lt;std::shared_ptr&lt;EdgeInfo&gt;&gt; <a class="code" href="classgraphar_1_1_edge_info.html#a0ac67e1cf3b3fa79b6fcbc054869d0e5">EdgeInfo::Load</a>(std::shared_ptr&lt;Yaml&gt; yaml) {</div>
+<div class="line"><a name="l00967"></a><span class="lineno">  967</span>&#160;  <span class="keywordflow">if</span> (yaml == <span class="keyword">nullptr</span>) {</div>
+<div class="line"><a name="l00968"></a><span class="lineno">  968</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#a9ca4be37aae8dfea7e6ef54920e0073f">Status::Invalid</a>(<span class="stringliteral">&quot;yaml shared pointer is nullptr.&quot;</span>);</div>
+<div class="line"><a name="l00969"></a><span class="lineno">  969</span>&#160;  }</div>
+<div class="line"><a name="l00970"></a><span class="lineno">  970</span>&#160;  std::string src_type = yaml-&gt;operator[](<span class="stringliteral">&quot;src_type&quot;</span>).As&lt;std::string&gt;();</div>
+<div class="line"><a name="l00971"></a><span class="lineno">  971</span>&#160;  std::string edge_type = yaml-&gt;operator[](<span class="stringliteral">&quot;edge_type&quot;</span>).As&lt;std::string&gt;();</div>
+<div class="line"><a name="l00972"></a><span class="lineno">  972</span>&#160;  std::string dst_type = yaml-&gt;operator[](<span class="stringliteral">&quot;dst_type&quot;</span>).As&lt;std::string&gt;();</div>
+<div class="line"><a name="l00973"></a><span class="lineno">  973</span>&#160;  IdType chunk_size =</div>
+<div class="line"><a name="l00974"></a><span class="lineno">  974</span>&#160;      <span class="keyword">static_cast&lt;</span>IdType<span class="keyword">&gt;</span>(yaml-&gt;operator[](<span class="stringliteral">&quot;chunk_size&quot;</span>).As&lt;int64_t&gt;());</div>
+<div class="line"><a name="l00975"></a><span class="lineno">  975</span>&#160;  IdType src_chunk_size =</div>
+<div class="line"><a name="l00976"></a><span class="lineno">  976</span>&#160;      <span class="keyword">static_cast&lt;</span>IdType<span class="keyword">&gt;</span>(yaml-&gt;operator[](<span class="stringliteral">&quot;src_chunk_size&quot;</span>).As&lt;int64_t&gt;());</div>
+<div class="line"><a name="l00977"></a><span class="lineno">  977</span>&#160;  IdType dst_chunk_size =</div>
+<div class="line"><a name="l00978"></a><span class="lineno">  978</span>&#160;      <span class="keyword">static_cast&lt;</span>IdType<span class="keyword">&gt;</span>(yaml-&gt;operator[](<span class="stringliteral">&quot;dst_chunk_size&quot;</span>).As&lt;int64_t&gt;());</div>
+<div class="line"><a name="l00979"></a><span class="lineno">  979</span>&#160;  <span class="keywordtype">bool</span> directed = yaml-&gt;operator[](<span class="stringliteral">&quot;directed&quot;</span>).As&lt;bool&gt;();</div>
+<div class="line"><a name="l00980"></a><span class="lineno">  980</span>&#160;  std::string prefix;</div>
+<div class="line"><a name="l00981"></a><span class="lineno">  981</span>&#160;  <span class="keywordflow">if</span> (!yaml-&gt;operator[](<span class="stringliteral">&quot;prefix&quot;</span>).IsNone()) {</div>
+<div class="line"><a name="l00982"></a><span class="lineno">  982</span>&#160;    prefix = yaml-&gt;operator[](<span class="stringliteral">&quot;prefix&quot;</span>).As&lt;std::string&gt;();</div>
+<div class="line"><a name="l00983"></a><span class="lineno">  983</span>&#160;  }</div>
+<div class="line"><a name="l00984"></a><span class="lineno">  984</span>&#160;  std::shared_ptr&lt;const InfoVersion&gt; <a class="code" href="classgraphar_1_1_edge_info.html#a9440bef05f4fa689662f26a9ef0117c1">version</a> = <span class="keyword">nullptr</span>;</div>
+<div class="line"><a name="l00985"></a><span class="lineno">  985</span>&#160;  <span class="keywordflow">if</span> (!yaml-&gt;operator[](<span class="stringliteral">&quot;version&quot;</span>).IsNone()) {</div>
+<div class="line"><a name="l00986"></a><span class="lineno">  986</span>&#160;    GAR_ASSIGN_OR_RAISE(</div>
+<div class="line"><a name="l00987"></a><span class="lineno">  987</span>&#160;        <a class="code" href="classgraphar_1_1_edge_info.html#a9440bef05f4fa689662f26a9ef0117c1">version</a>,</div>
+<div class="line"><a name="l00988"></a><span class="lineno">  988</span>&#160;        <a class="code" href="classgraphar_1_1_info_version.html#a6c149bd120118e7c6803dcac71a7a667">InfoVersion::Parse</a>(yaml-&gt;operator[](<span class="stringliteral">&quot;version&quot;</span>).As&lt;std::string&gt;()));</div>
+<div class="line"><a name="l00989"></a><span class="lineno">  989</span>&#160;  }</div>
+<div class="line"><a name="l00990"></a><span class="lineno">  990</span>&#160; </div>
+<div class="line"><a name="l00991"></a><span class="lineno">  991</span>&#160;  AdjacentListVector adjacent_lists;</div>
+<div class="line"><a name="l00992"></a><span class="lineno">  992</span>&#160;  PropertyGroupVector property_groups;</div>
+<div class="line"><a name="l00993"></a><span class="lineno">  993</span>&#160;  <span class="keyword">auto</span> adj_lists_node = yaml-&gt;operator[](<span class="stringliteral">&quot;adj_lists&quot;</span>);</div>
+<div class="line"><a name="l00994"></a><span class="lineno">  994</span>&#160;  <span class="keywordflow">if</span> (adj_lists_node.IsSequence()) {</div>
+<div class="line"><a name="l00995"></a><span class="lineno">  995</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = adj_lists_node.Begin(); it != adj_lists_node.End(); it++) {</div>
+<div class="line"><a name="l00996"></a><span class="lineno">  996</span>&#160;      <span class="keyword">auto</span>&amp; node = (*it).second;</div>
+<div class="line"><a name="l00997"></a><span class="lineno">  997</span>&#160;      <span class="keyword">auto</span> ordered = node[<span class="stringliteral">&quot;ordered&quot;</span>].As&lt;<span class="keywordtype">bool</span>&gt;();</div>
+<div class="line"><a name="l00998"></a><span class="lineno">  998</span>&#160;      <span class="keyword">auto</span> aligned = node[<span class="stringliteral">&quot;aligned_by&quot;</span>].As&lt;std::string&gt;();</div>
+<div class="line"><a name="l00999"></a><span class="lineno">  999</span>&#160;      <span class="keyword">auto</span> adj_list_type = OrderedAlignedToAdjListType(ordered, aligned);</div>
+<div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160;      <span class="keyword">auto</span> file_type = StringToFileType(node[<span class="stringliteral">&quot;file_type&quot;</span>].As&lt;std::string&gt;());</div>
+<div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160;      std::string adj_list_prefix;</div>
+<div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160;      <span class="keywordflow">if</span> (!node[<span class="stringliteral">&quot;prefix&quot;</span>].IsNone()) {</div>
+<div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160;        adj_list_prefix = node[<span class="stringliteral">&quot;prefix&quot;</span>].As&lt;std::string&gt;();</div>
+<div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160;      }</div>
+<div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160;      adjacent_lists.push_back(std::make_shared&lt;AdjacentList&gt;(</div>
+<div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160;          adj_list_type, file_type, adj_list_prefix));</div>
+<div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>&#160;    }</div>
+<div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>&#160;  }</div>
+<div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160;  <span class="keyword">auto</span> property_groups_node = yaml-&gt;operator[](<span class="stringliteral">&quot;property_groups&quot;</span>);</div>
+<div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>&#160;  <span class="keywordflow">if</span> (!property_groups_node.IsNone()) {  <span class="comment">// property_groups exist</span></div>
+<div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">auto</span> pg_it = property_groups_node.Begin();</div>
+<div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160;         pg_it != property_groups_node.End(); pg_it++) {</div>
+<div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160;      <span class="keyword">auto</span>&amp; pg_node = (*pg_it).second;</div>
+<div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160;      std::string pg_prefix;</div>
+<div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160;      <span class="keywordflow">if</span> (!pg_node[<span class="stringliteral">&quot;prefix&quot;</span>].IsNone()) {</div>
+<div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>&#160;        pg_prefix = pg_node[<span class="stringliteral">&quot;prefix&quot;</span>].As&lt;std::string&gt;();</div>
+<div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>&#160;      }</div>
+<div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>&#160;      <span class="keyword">auto</span> file_type = StringToFileType(pg_node[<span class="stringliteral">&quot;file_type&quot;</span>].As&lt;std::string&gt;());</div>
+<div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160;      <span class="keyword">auto</span> properties = pg_node[<span class="stringliteral">&quot;properties&quot;</span>];</div>
+<div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>&#160;      std::vector&lt;Property&gt; property_vec;</div>
+<div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>&#160;      <span class="keywordflow">for</span> (<span class="keyword">auto</span> p_it = properties.Begin(); p_it != properties.End(); p_it++) {</div>
+<div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160;        <span class="keyword">auto</span>&amp; p_node = (*p_it).second;</div>
+<div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>&#160;        <span class="keyword">auto</span> property_name = p_node[<span class="stringliteral">&quot;name&quot;</span>].As&lt;std::string&gt;();</div>
+<div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>&#160;        <span class="keyword">auto</span> property_type =</div>
+<div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>&#160;            DataType::TypeNameToDataType(p_node[<span class="stringliteral">&quot;data_type&quot;</span>].As&lt;std::string&gt;());</div>
+<div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>&#160;        <span class="keywordflow">if</span> (!p_node[<span class="stringliteral">&quot;cardinality&quot;</span>].IsNone() &amp;&amp;</div>
+<div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>&#160;            StringToCardinality(p_node[<span class="stringliteral">&quot;cardinality&quot;</span>].As&lt;std::string&gt;()) !=</div>
+<div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>&#160;                Cardinality::SINGLE) {</div>
+<div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>&#160;          <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#a358b23c7f34efbf14c84cbc2ddbdd6a4">Status::YamlError</a>(</div>
+<div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>&#160;              <span class="stringliteral">&quot;Unsupported set cardinality for edge property.&quot;</span>);</div>
+<div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>&#160;        }</div>
+<div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>&#160;        <span class="keywordtype">bool</span> is_primary = p_node[<span class="stringliteral">&quot;is_primary&quot;</span>].As&lt;<span class="keywordtype">bool</span>&gt;();</div>
+<div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>&#160;        <span class="keywordtype">bool</span> is_nullable =</div>
+<div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>&#160;            p_node[<span class="stringliteral">&quot;is_nullable&quot;</span>].IsNone() || p_node[<span class="stringliteral">&quot;is_nullable&quot;</span>].As&lt;<span class="keywordtype">bool</span>&gt;();</div>
+<div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>&#160;        property_vec.emplace_back(property_name, property_type, is_primary,</div>
+<div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>&#160;                                  is_nullable);</div>
+<div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>&#160;      }</div>
+<div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>&#160;      property_groups.push_back(</div>
+<div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>&#160;          std::make_shared&lt;PropertyGroup&gt;(property_vec, file_type, pg_prefix));</div>
+<div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>&#160;    }</div>
+<div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>&#160;  }</div>
+<div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>&#160;  <span class="keywordflow">return</span> std::make_shared&lt;EdgeInfo&gt;(</div>
+<div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>&#160;      src_type, edge_type, dst_type, chunk_size, src_chunk_size, dst_chunk_size,</div>
+<div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>&#160;      directed, adjacent_lists, property_groups, prefix, <a class="code" href="classgraphar_1_1_edge_info.html#a9440bef05f4fa689662f26a9ef0117c1">version</a>);</div>
+<div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160;}</div>
+<div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>&#160; </div>
+<div class="line"><a name="l01047"></a><span class="lineno"><a class="line" href="classgraphar_1_1_edge_info.html#a5840f6d36ba8e8dab30c1f89534a7edf"> 1047</a></span>&#160;Result&lt;std::shared_ptr&lt;EdgeInfo&gt;&gt; <a class="code" href="classgraphar_1_1_edge_info.html#a0ac67e1cf3b3fa79b6fcbc054869d0e5">EdgeInfo::Load</a>(<span class="keyword">const</span> std::string&amp; input) {</div>
+<div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160;  GAR_ASSIGN_OR_RAISE(<span class="keyword">auto</span> yaml, <a class="code" href="classgraphar_1_1_yaml.html#a2fff6ba5eaf3e59b489d015f10013179">Yaml::Load</a>(input));</div>
+<div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160;  <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_edge_info.html#a0ac67e1cf3b3fa79b6fcbc054869d0e5">EdgeInfo::Load</a>(yaml);</div>
+<div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160;}</div>
+<div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160; </div>
+<div class="line"><a name="l01052"></a><span class="lineno"><a class="line" href="classgraphar_1_1_edge_info.html#a80004230ddfbc892995732ea59993a27"> 1052</a></span>&#160;Result&lt;std::string&gt; <a class="code" href="classgraphar_1_1_edge_info.html#a80004230ddfbc892995732ea59993a27">EdgeInfo::Dump</a>() const noexcept {</div>
+<div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>&#160;  <span class="keywordflow">if</span> (!<a class="code" href="classgraphar_1_1_edge_info.html#a3dca57726506375cab4fc43fdef2914f">IsValidated</a>()) {</div>
+<div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#a9ca4be37aae8dfea7e6ef54920e0073f">Status::Invalid</a>(<span class="stringliteral">&quot;The edge info is not validated.&quot;</span>);</div>
+<div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>&#160;  }</div>
+<div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>&#160;  std::string dump_string;</div>
+<div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>&#160;  ::Yaml::Node node;</div>
+<div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>&#160;  <span class="keywordflow">try</span> {</div>
+<div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>&#160;    node[<span class="stringliteral">&quot;src_type&quot;</span>] = impl_-&gt;src_type_;</div>
+<div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>&#160;    node[<span class="stringliteral">&quot;edge_type&quot;</span>] = impl_-&gt;edge_type_;</div>
+<div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>&#160;    node[<span class="stringliteral">&quot;dst_type&quot;</span>] = impl_-&gt;dst_type_;</div>
+<div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>&#160;    node[<span class="stringliteral">&quot;chunk_size&quot;</span>] = std::to_string(impl_-&gt;chunk_size_);</div>
+<div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>&#160;    node[<span class="stringliteral">&quot;src_chunk_size&quot;</span>] = std::to_string(impl_-&gt;src_chunk_size_);</div>
+<div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>&#160;    node[<span class="stringliteral">&quot;dst_chunk_size&quot;</span>] = std::to_string(impl_-&gt;dst_chunk_size_);</div>
+<div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>&#160;    node[<span class="stringliteral">&quot;prefix&quot;</span>] = impl_-&gt;prefix_;</div>
+<div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>&#160;    node[<span class="stringliteral">&quot;directed&quot;</span>] = impl_-&gt;directed_ ? <span class="stringliteral">&quot;true&quot;</span> : <span class="stringliteral">&quot;false&quot;</span>;</div>
+<div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; adjacent_list : impl_-&gt;adjacent_lists_) {</div>
+<div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>&#160;      ::Yaml::Node adj_list_node;</div>
+<div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>&#160;      <span class="keyword">auto</span> adj_list_type = adjacent_list-&gt;GetType();</div>
+<div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>&#160;      <span class="keyword">auto</span> pair = AdjListTypeToOrderedAligned(adj_list_type);</div>
+<div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>&#160;      adj_list_node[<span class="stringliteral">&quot;ordered&quot;</span>] = pair.first ? <span class="stringliteral">&quot;true&quot;</span> : <span class="stringliteral">&quot;false&quot;</span>;</div>
+<div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>&#160;      adj_list_node[<span class="stringliteral">&quot;aligned_by&quot;</span>] = pair.second;</div>
+<div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>&#160;      adj_list_node[<span class="stringliteral">&quot;prefix&quot;</span>] = adjacent_list-&gt;GetPrefix();</div>
+<div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160;      adj_list_node[<span class="stringliteral">&quot;file_type&quot;</span>] =</div>
+<div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160;          FileTypeToString(adjacent_list-&gt;GetFileType());</div>
+<div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160;      node[<span class="stringliteral">&quot;adj_lists&quot;</span>].PushBack();</div>
+<div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>&#160;      node[<span class="stringliteral">&quot;adj_lists&quot;</span>][node[<span class="stringliteral">&quot;adj_lists&quot;</span>].Size() - 1] = adj_list_node;</div>
+<div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>&#160;    }</div>
+<div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; pg : impl_-&gt;property_groups_) {</div>
+<div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>&#160;      ::Yaml::Node pg_node;</div>
+<div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>&#160;      <span class="keywordflow">if</span> (!pg-&gt;GetPrefix().empty()) {</div>
+<div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160;        pg_node[<span class="stringliteral">&quot;prefix&quot;</span>] = pg-&gt;GetPrefix();</div>
+<div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160;      }</div>
+<div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160;      pg_node[<span class="stringliteral">&quot;file_type&quot;</span>] = FileTypeToString(pg-&gt;GetFileType());</div>
+<div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160;      <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; p : pg-&gt;GetProperties()) {</div>
+<div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160;        ::Yaml::Node p_node;</div>
+<div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160;        p_node[<span class="stringliteral">&quot;name&quot;</span>] = p.name;</div>
+<div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160;        p_node[<span class="stringliteral">&quot;data_type&quot;</span>] = p.type-&gt;ToTypeName();</div>
+<div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160;        p_node[<span class="stringliteral">&quot;is_primary&quot;</span>] = p.is_primary ? <span class="stringliteral">&quot;true&quot;</span> : <span class="stringliteral">&quot;false&quot;</span>;</div>
+<div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160;        p_node[<span class="stringliteral">&quot;is_nullable&quot;</span>] = p.is_nullable ? <span class="stringliteral">&quot;true&quot;</span> : <span class="stringliteral">&quot;false&quot;</span>;</div>
+<div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160;        pg_node[<span class="stringliteral">&quot;properties&quot;</span>].PushBack();</div>
+<div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160;        pg_node[<span class="stringliteral">&quot;properties&quot;</span>][pg_node[<span class="stringliteral">&quot;properties&quot;</span>].Size() - 1] = p_node;</div>
+<div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160;      }</div>
+<div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160;      node[<span class="stringliteral">&quot;property_groups&quot;</span>].PushBack();</div>
+<div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160;      node[<span class="stringliteral">&quot;property_groups&quot;</span>][node[<span class="stringliteral">&quot;property_groups&quot;</span>].Size() - 1] = pg_node;</div>
+<div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160;    }</div>
+<div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>&#160;    <span class="keywordflow">if</span> (impl_-&gt;version_ != <span class="keyword">nullptr</span>) {</div>
+<div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>&#160;      node[<span class="stringliteral">&quot;version&quot;</span>] = impl_-&gt;version_-&gt;ToString();</div>
+<div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>&#160;    }</div>
+<div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160;    ::Yaml::Serialize(node, dump_string);</div>
+<div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160;  } <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception&amp; e) {</div>
+<div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#a9ca4be37aae8dfea7e6ef54920e0073f">Status::Invalid</a>(<span class="stringliteral">&quot;Failed to dump edge info: &quot;</span>, e.what());</div>
+<div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>&#160;  }</div>
+<div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160;  <span class="keywordflow">return</span> dump_string;</div>
+<div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160;}</div>
+<div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160; </div>
+<div class="line"><a name="l01107"></a><span class="lineno"><a class="line" href="classgraphar_1_1_edge_info.html#a1e95f986bd8c5191f438705b195191e3"> 1107</a></span>&#160;<a class="code" href="classgraphar_1_1_status.html">Status</a> <a class="code" href="classgraphar_1_1_edge_info.html#a1e95f986bd8c5191f438705b195191e3">EdgeInfo::Save</a>(<span class="keyword">const</span> std::string&amp; path)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160;  std::string no_url_path;</div>
+<div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160;  GAR_ASSIGN_OR_RAISE(<span class="keyword">auto</span> fs, FileSystemFromUriOrPath(path, &amp;no_url_path));</div>
+<div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>&#160;  GAR_ASSIGN_OR_RAISE(<span class="keyword">auto</span> yaml_content, this-&gt;<a class="code" href="classgraphar_1_1_edge_info.html#a80004230ddfbc892995732ea59993a27">Dump</a>());</div>
+<div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160;  <span class="keywordflow">return</span> fs-&gt;WriteValueToFile(yaml_content, no_url_path);</div>
+<div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160;}</div>
+<div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160; </div>
+<div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160;<span class="keyword">namespace </span>{</div>
+<div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>&#160; </div>
+<div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>&#160;<span class="keyword">static</span> std::string PathToDirectory(<span class="keyword">const</span> std::string&amp; path) {</div>
+<div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>&#160;  <span class="keywordflow">if</span> (path.rfind(<span class="stringliteral">&quot;s3://&quot;</span>, 0) == 0) {</div>
+<div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>&#160;    <span class="keywordtype">int</span> t = path.find_last_of(<span class="charliteral">&#39;?&#39;</span>);</div>
+<div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>&#160;    std::string prefix = path.substr(0, t);</div>
+<div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>&#160;    std::string suffix = path.substr(t);</div>
+<div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>&#160;    <span class="keyword">const</span> <span class="keywordtype">size_t</span> last_slash_idx = prefix.rfind(<span class="charliteral">&#39;/&#39;</span>);</div>
+<div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>&#160;    <span class="keywordflow">if</span> (std::string::npos != last_slash_idx) {</div>
+<div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>&#160;      <span class="keywordflow">return</span> prefix.substr(0, last_slash_idx + 1) + suffix;</div>
+<div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>&#160;    }</div>
+<div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160;  } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>&#160;    <span class="keyword">const</span> <span class="keywordtype">size_t</span> last_slash_idx = path.rfind(<span class="charliteral">&#39;/&#39;</span>);</div>
+<div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>&#160;    <span class="keywordflow">if</span> (std::string::npos != last_slash_idx) {</div>
+<div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160;      <span class="keywordflow">return</span> path.substr(0, last_slash_idx + 1);  <span class="comment">// +1 to include the slash</span></div>
+<div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>&#160;    }</div>
+<div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>&#160;  }</div>
+<div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>&#160;  <span class="keywordflow">return</span> path;</div>
+<div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160;}</div>
+<div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>&#160; </div>
+<div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>&#160;<span class="keyword">static</span> Result&lt;std::shared_ptr&lt;GraphInfo&gt;&gt; ConstructGraphInfo(</div>
+<div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>&#160;    std::shared_ptr&lt;Yaml&gt; graph_meta, <span class="keyword">const</span> std::string&amp; default_name,</div>
+<div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>&#160;    <span class="keyword">const</span> std::string&amp; default_prefix, <span class="keyword">const</span> std::shared_ptr&lt;FileSystem&gt; fs,</div>
+<div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>&#160;    <span class="keyword">const</span> std::string&amp; no_url_path) {</div>
+<div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160;  std::string name = default_name;</div>
+<div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160;  std::string prefix = default_prefix;</div>
+<div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160;  <span class="keywordflow">if</span> (!graph_meta-&gt;operator[](<span class="stringliteral">&quot;name&quot;</span>).IsNone()) {</div>
+<div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>&#160;    name = graph_meta-&gt;operator[](<span class="stringliteral">&quot;name&quot;</span>).As&lt;std::string&gt;();</div>
+<div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>&#160;  }</div>
+<div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>&#160;  <span class="keywordflow">if</span> (!graph_meta-&gt;operator[](<span class="stringliteral">&quot;prefix&quot;</span>).IsNone()) {</div>
+<div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>&#160;    prefix = graph_meta-&gt;operator[](<span class="stringliteral">&quot;prefix&quot;</span>).As&lt;std::string&gt;();</div>
+<div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>&#160;  }</div>
+<div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160;  std::shared_ptr&lt;const InfoVersion&gt; version = <span class="keyword">nullptr</span>;</div>
+<div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160;  <span class="keywordflow">if</span> (!graph_meta-&gt;operator[](<span class="stringliteral">&quot;version&quot;</span>).IsNone()) {</div>
+<div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>&#160;    GAR_ASSIGN_OR_RAISE(</div>
+<div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>&#160;        version, <a class="code" href="classgraphar_1_1_info_version.html#a6c149bd120118e7c6803dcac71a7a667">InfoVersion::Parse</a>(</div>
+<div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160;                     graph_meta-&gt;operator[](<span class="stringliteral">&quot;version&quot;</span>).As&lt;std::string&gt;()));</div>
+<div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>&#160;  }</div>
+<div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>&#160;  std::unordered_map&lt;std::string, std::string&gt; extra_info;</div>
+<div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>&#160;  <span class="keywordflow">if</span> (!graph_meta-&gt;operator[](<span class="stringliteral">&quot;extra_info&quot;</span>).IsNone()) {</div>
+<div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>&#160;    <span class="keyword">auto</span>&amp; extra_info_node = graph_meta-&gt;operator[](<span class="stringliteral">&quot;extra_info&quot;</span>);</div>
+<div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = extra_info_node.Begin(); it != extra_info_node.End(); it++) {</div>
+<div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>&#160;      <span class="keyword">auto</span> node = (*it).second;</div>
+<div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>&#160;      <span class="keyword">auto</span> key = node[<span class="stringliteral">&quot;key&quot;</span>].As&lt;std::string&gt;();</div>
+<div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>&#160;      <span class="keyword">auto</span> value = node[<span class="stringliteral">&quot;value&quot;</span>].As&lt;std::string&gt;();</div>
+<div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>&#160;      extra_info.emplace(key, value);</div>
 <div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160;    }</div>
-<div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; e : edge_infos_) {</div>
-<div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>&#160;      <span class="keywordflow">if</span> (!e || !e-&gt;IsValidated()) {</div>
-<div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>&#160;        <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>&#160;      }</div>
-<div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>&#160;    }</div>
-<div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>&#160;    <span class="keywordflow">if</span> (vertex_infos_.size() != vtype_to_index_.size() ||</div>
-<div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>&#160;        edge_infos_.size() != etype_to_index_.size()) {</div>
-<div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>&#160;      <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>&#160;    }</div>
-<div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>&#160;  }</div>
-<div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>&#160; </div>
-<div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>&#160;  std::string name_;</div>
-<div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>&#160;  VertexInfoVector vertex_infos_;</div>
-<div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>&#160;  EdgeInfoVector edge_infos_;</div>
-<div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>&#160;  std::vector&lt;std::string&gt; labels_;</div>
-<div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>&#160;  std::string prefix_;</div>
-<div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>&#160;  std::shared_ptr&lt;const InfoVersion&gt; version_;</div>
-<div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>&#160;  std::unordered_map&lt;std::string, std::string&gt; extra_info_;</div>
-<div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>&#160;  std::unordered_map&lt;std::string, int&gt; vtype_to_index_;</div>
-<div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>&#160;  std::unordered_map&lt;std::string, int&gt; etype_to_index_;</div>
-<div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>&#160;};</div>
-<div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>&#160; </div>
-<div class="line"><a name="l01184"></a><span class="lineno"><a class="line" href="classgraphar_1_1_graph_info.html#a1b473deea923f7b2a57c339dc7e51192"> 1184</a></span>&#160;<a class="code" href="classgraphar_1_1_graph_info.html#a1b473deea923f7b2a57c339dc7e51192">GraphInfo::GraphInfo</a>(</div>
-<div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>&#160;    <span class="keyword">const</span> std::string&amp; graph_name, VertexInfoVector vertex_infos,</div>
-<div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>&#160;    EdgeInfoVector edge_infos, <span class="keyword">const</span> std::vector&lt;std::string&gt;&amp; labels,</div>
-<div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>&#160;    <span class="keyword">const</span> std::string&amp; prefix, std::shared_ptr&lt;const InfoVersion&gt; version,</div>
-<div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>&#160;    <span class="keyword">const</span> std::unordered_map&lt;std::string, std::string&gt;&amp; extra_info)</div>
-<div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>&#160;    : impl_(new <a class="code" href="classgraphar_1_1_graph_info_1_1_impl.html">Impl</a>(graph_name, std::move(vertex_infos), std::move(edge_infos),</div>
-<div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>&#160;                     labels, prefix, version, extra_info)) {}</div>
-<div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>&#160; </div>
-<div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>&#160;GraphInfo::~GraphInfo() = <span class="keywordflow">default</span>;</div>
-<div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>&#160; </div>
-<div class="line"><a name="l01194"></a><span class="lineno"><a class="line" href="classgraphar_1_1_graph_info.html#ab10cb1ceaa01a74d44c1076c43c2fcce"> 1194</a></span>&#160;<span class="keyword">const</span> std::string&amp; <a class="code" href="classgraphar_1_1_graph_info.html#ab10cb1ceaa01a74d44c1076c43c2fcce">GraphInfo::GetName</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> impl_-&gt;name_; }</div>
-<div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>&#160; </div>
-<div class="line"><a name="l01196"></a><span class="lineno"><a class="line" href="classgraphar_1_1_graph_info.html#a8b057bb6c3cfd897b0fb31ecceea40c9"> 1196</a></span>&#160;<span class="keyword">const</span> std::vector&lt;std::string&gt;&amp; <a class="code" href="classgraphar_1_1_graph_info.html#a8b057bb6c3cfd897b0fb31ecceea40c9">GraphInfo::GetLabels</a>()<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>&#160;  <span class="keywordflow">return</span> impl_-&gt;labels_;</div>
-<div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>&#160;}</div>
-<div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>&#160; </div>
-<div class="line"><a name="l01200"></a><span class="lineno"><a class="line" href="classgraphar_1_1_graph_info.html#a53eef3d15830bea15de0bbbe7e11e208"> 1200</a></span>&#160;<span class="keyword">const</span> std::string&amp; <a class="code" href="classgraphar_1_1_graph_info.html#a53eef3d15830bea15de0bbbe7e11e208">GraphInfo::GetPrefix</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> impl_-&gt;prefix_; }</div>
+<div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160;  }</div>
+<div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>&#160; </div>
+<div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>&#160;  VertexInfoVector vertex_infos;</div>
+<div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>&#160;  EdgeInfoVector edge_infos;</div>
+<div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>&#160;  <span class="keyword">const</span> <span class="keyword">auto</span>&amp; vertices = graph_meta-&gt;operator[](<span class="stringliteral">&quot;vertices&quot;</span>);</div>
+<div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>&#160;  <span class="keywordflow">if</span> (vertices.IsSequence()) {</div>
+<div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = vertices.Begin(); it != vertices.End(); it++) {</div>
+<div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>&#160;      std::string vertex_meta_file =</div>
+<div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>&#160;          no_url_path + (*it).second.As&lt;std::string&gt;();</div>
+<div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>&#160;      GAR_ASSIGN_OR_RAISE(<span class="keyword">auto</span> input,</div>
+<div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>&#160;                          fs-&gt;ReadFileToValue&lt;std::string&gt;(vertex_meta_file));</div>
+<div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>&#160;      GAR_ASSIGN_OR_RAISE(<span class="keyword">auto</span> vertex_meta, <a class="code" href="classgraphar_1_1_yaml.html#a2fff6ba5eaf3e59b489d015f10013179">Yaml::Load</a>(input));</div>
+<div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>&#160;      GAR_ASSIGN_OR_RAISE(<span class="keyword">auto</span> vertex_info, <a class="code" href="classgraphar_1_1_vertex_info.html#af1ade1caa6e70e4b7ce60cf4df7ac50c">VertexInfo::Load</a>(vertex_meta));</div>
+<div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>&#160;      vertex_infos.push_back(vertex_info);</div>
+<div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>&#160;    }</div>
+<div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>&#160;  }</div>
+<div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>&#160;  <span class="keyword">const</span> <span class="keyword">auto</span>&amp; edges = graph_meta-&gt;operator[](<span class="stringliteral">&quot;edges&quot;</span>);</div>
+<div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>&#160;  <span class="keywordflow">if</span> (edges.IsSequence()) {</div>
+<div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = edges.Begin(); it != edges.End(); it++) {</div>
+<div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>&#160;      std::string edge_meta_file = no_url_path + (*it).second.As&lt;std::string&gt;();</div>
+<div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>&#160;      GAR_ASSIGN_OR_RAISE(<span class="keyword">auto</span> input,</div>
+<div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>&#160;                          fs-&gt;ReadFileToValue&lt;std::string&gt;(edge_meta_file));</div>
+<div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>&#160;      GAR_ASSIGN_OR_RAISE(<span class="keyword">auto</span> edge_meta, <a class="code" href="classgraphar_1_1_yaml.html#a2fff6ba5eaf3e59b489d015f10013179">Yaml::Load</a>(input));</div>
+<div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>&#160;      GAR_ASSIGN_OR_RAISE(<span class="keyword">auto</span> edge_info, <a class="code" href="classgraphar_1_1_edge_info.html#a0ac67e1cf3b3fa79b6fcbc054869d0e5">EdgeInfo::Load</a>(edge_meta));</div>
+<div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>&#160;      edge_infos.push_back(edge_info);</div>
+<div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>&#160;    }</div>
+<div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>&#160;  }</div>
+<div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>&#160; </div>
+<div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>&#160;  std::vector&lt;std::string&gt; labels;</div>
+<div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>&#160;  <span class="keywordflow">if</span> (!graph_meta-&gt;operator[](<span class="stringliteral">&quot;labels&quot;</span>).IsNone()) {</div>
+<div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>&#160;    <span class="keyword">const</span> <span class="keyword">auto</span>&amp; labels_node = graph_meta-&gt;operator[](<span class="stringliteral">&quot;labels&quot;</span>);</div>
+<div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>&#160;    <span class="keywordflow">if</span> (labels_node.IsSequence()) {</div>
+<div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>&#160;      <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = labels_node.Begin(); it != labels_node.End(); it++) {</div>
+<div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>&#160;        labels.push_back((*it).second.As&lt;std::string&gt;());</div>
+<div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>&#160;      }</div>
+<div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>&#160;    }</div>
+<div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>&#160;  }</div>
+<div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>&#160;  <span class="keywordflow">return</span> std::make_shared&lt;GraphInfo&gt;(name, vertex_infos, edge_infos, labels,</div>
+<div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>&#160;                                     prefix, version, extra_info);</div>
+<div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>&#160;}</div>
 <div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>&#160; </div>
-<div class="line"><a name="l01202"></a><span class="lineno"><a class="line" href="classgraphar_1_1_graph_info.html#aeb68a7550c63365d8093136601a3aeee"> 1202</a></span>&#160;<span class="keyword">const</span> std::shared_ptr&lt;const InfoVersion&gt;&amp; <a class="code" href="classgraphar_1_1_graph_info.html#aeb68a7550c63365d8093136601a3aeee">GraphInfo::version</a>()<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>&#160;  <span class="keywordflow">return</span> impl_-&gt;version_;</div>
-<div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>&#160;}</div>
-<div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>&#160; </div>
-<div class="line"><a name="l01206"></a><span class="lineno"><a class="line" href="classgraphar_1_1_graph_info.html#aa0856ec7ecc8d8d1aac2f7cd51cfe136"> 1206</a></span>&#160;<span class="keyword">const</span> std::unordered_map&lt;std::string, std::string&gt;&amp; <a class="code" href="classgraphar_1_1_graph_info.html#aa0856ec7ecc8d8d1aac2f7cd51cfe136">GraphInfo::GetExtraInfo</a>()<span class="keyword"></span></div>
-<div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>&#160;<span class="keyword">    const </span>{</div>
-<div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>&#160;  <span class="keywordflow">return</span> impl_-&gt;extra_info_;</div>
-<div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>&#160;}</div>
-<div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>&#160; </div>
-<div class="line"><a name="l01211"></a><span class="lineno"><a class="line" href="classgraphar_1_1_graph_info.html#a8799b4b1a2163507a9ddd8f910d4a9d3"> 1211</a></span>&#160;std::shared_ptr&lt;VertexInfo&gt; <a class="code" href="classgraphar_1_1_graph_info.html#a8799b4b1a2163507a9ddd8f910d4a9d3">GraphInfo::GetVertexInfo</a>(</div>
-<div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>&#160;    <span class="keyword">const</span> std::string&amp; type)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>&#160;  <span class="keywordtype">int</span> i = <a class="code" href="classgraphar_1_1_graph_info.html#a0f03270a6ee9c084dab10421cdf69cd5">GetVertexInfoIndex</a>(type);</div>
-<div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>&#160;  <span class="keywordflow">return</span> i == -1 ? nullptr : impl_-&gt;vertex_infos_[i];</div>
-<div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>&#160;}</div>
-<div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>&#160; </div>
-<div class="line"><a name="l01217"></a><span class="lineno"><a class="line" href="classgraphar_1_1_graph_info.html#a0f03270a6ee9c084dab10421cdf69cd5"> 1217</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="classgraphar_1_1_graph_info.html#a0f03270a6ee9c084dab10421cdf69cd5">GraphInfo::GetVertexInfoIndex</a>(<span class="keyword">const</span> std::string&amp; type)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>&#160;  <span class="keywordflow">return</span> LookupKeyIndex(impl_-&gt;vtype_to_index_, type);</div>
-<div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>&#160;}</div>
-<div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>&#160; </div>
-<div class="line"><a name="l01221"></a><span class="lineno"><a class="line" href="classgraphar_1_1_graph_info.html#a7e660710d2e1bd244b5d28bdc68aeab2"> 1221</a></span>&#160;std::shared_ptr&lt;EdgeInfo&gt; <a class="code" href="classgraphar_1_1_graph_info.html#a7e660710d2e1bd244b5d28bdc68aeab2">GraphInfo::GetEdgeInfo</a>(</div>
-<div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>&#160;    <span class="keyword">const</span> std::string&amp; src_type, <span class="keyword">const</span> std::string&amp; edge_type,</div>
-<div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>&#160;    <span class="keyword">const</span> std::string&amp; dst_type)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>&#160;  <span class="keywordtype">int</span> i = <a class="code" href="classgraphar_1_1_graph_info.html#aa2ca1614d499facc76927b5de733b503">GetEdgeInfoIndex</a>(src_type, edge_type, dst_type);</div>
-<div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>&#160;  <span class="keywordflow">return</span> i == -1 ? nullptr : impl_-&gt;edge_infos_[i];</div>
-<div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>&#160;}</div>
-<div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>&#160; </div>
-<div class="line"><a name="l01228"></a><span class="lineno"><a class="line" href="classgraphar_1_1_graph_info.html#aa2ca1614d499facc76927b5de733b503"> 1228</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="classgraphar_1_1_graph_info.html#aa2ca1614d499facc76927b5de733b503">GraphInfo::GetEdgeInfoIndex</a>(<span class="keyword">const</span> std::string&amp; src_type,</div>
-<div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>&#160;                                <span class="keyword">const</span> std::string&amp; edge_type,</div>
-<div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>&#160;                                <span class="keyword">const</span> std::string&amp; dst_type)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>&#160;  std::string edge_key = ConcatEdgeTriple(src_type, edge_type, dst_type);</div>
-<div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>&#160;  <span class="keywordflow">return</span> LookupKeyIndex(impl_-&gt;etype_to_index_, edge_key);</div>
-<div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>&#160;}</div>
-<div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>&#160; </div>
-<div class="line"><a name="l01235"></a><span class="lineno"><a class="line" href="classgraphar_1_1_graph_info.html#aa384328a58c9138b5b77ea6172199d07"> 1235</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="classgraphar_1_1_graph_info.html#aa384328a58c9138b5b77ea6172199d07">GraphInfo::VertexInfoNum</a>()<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>&#160;  <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(impl_-&gt;vertex_infos_.size());</div>
-<div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>&#160;}</div>
-<div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>&#160; </div>
-<div class="line"><a name="l01239"></a><span class="lineno"><a class="line" href="classgraphar_1_1_graph_info.html#a814f2cdeecf58a308ab886a085991fc4"> 1239</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="classgraphar_1_1_graph_info.html#a814f2cdeecf58a308ab886a085991fc4">GraphInfo::EdgeInfoNum</a>()<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>&#160;  <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(impl_-&gt;edge_infos_.size());</div>
-<div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>&#160;}</div>
-<div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>&#160; </div>
-<div class="line"><a name="l01243"></a><span class="lineno"><a class="line" href="classgraphar_1_1_graph_info.html#a3a94e3d0f64a1b4d1b672676940c389f"> 1243</a></span>&#160;<span class="keyword">const</span> std::shared_ptr&lt;VertexInfo&gt; <a class="code" href="classgraphar_1_1_graph_info.html#a3a94e3d0f64a1b4d1b672676940c389f">GraphInfo::GetVertexInfoByIndex</a>(</div>
-<div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>&#160;    <span class="keywordtype">int</span> index)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>&#160;  <span class="keywordflow">if</span> (index &lt; 0 || index &gt;= <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(impl_-&gt;vertex_infos_.size())) {</div>
-<div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
-<div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>&#160;  }</div>
-<div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>&#160;  <span class="keywordflow">return</span> impl_-&gt;vertex_infos_[index];</div>
-<div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>&#160;}</div>
-<div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>&#160; </div>
-<div class="line"><a name="l01251"></a><span class="lineno"><a class="line" href="classgraphar_1_1_graph_info.html#afd61923bd9ff1f5329b1c93ebbcd0278"> 1251</a></span>&#160;<span class="keyword">const</span> std::shared_ptr&lt;EdgeInfo&gt; <a class="code" href="classgraphar_1_1_graph_info.html#afd61923bd9ff1f5329b1c93ebbcd0278">GraphInfo::GetEdgeInfoByIndex</a>(<span class="keywordtype">int</span> index)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>&#160;  <span class="keywordflow">if</span> (index &lt; 0 || index &gt;= <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(impl_-&gt;edge_infos_.size())) {</div>
-<div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
-<div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>&#160;  }</div>
-<div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>&#160;  <span class="keywordflow">return</span> impl_-&gt;edge_infos_[index];</div>
-<div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>&#160;}</div>
-<div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>&#160; </div>
-<div class="line"><a name="l01258"></a><span class="lineno"><a class="line" href="classgraphar_1_1_graph_info.html#a9393d2797ff5d77f66691f84f15007c4"> 1258</a></span>&#160;<span class="keyword">const</span> VertexInfoVector&amp; <a class="code" href="classgraphar_1_1_graph_info.html#a9393d2797ff5d77f66691f84f15007c4">GraphInfo::GetVertexInfos</a>()<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>&#160;  <span class="keywordflow">return</span> impl_-&gt;vertex_infos_;</div>
-<div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>&#160;}</div>
-<div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>&#160; </div>
-<div class="line"><a name="l01262"></a><span class="lineno"><a class="line" href="classgraphar_1_1_graph_info.html#a14dbabaec827198ee822070c1077a570"> 1262</a></span>&#160;<span class="keyword">const</span> EdgeInfoVector&amp; <a class="code" href="classgraphar_1_1_graph_info.html#a14dbabaec827198ee822070c1077a570">GraphInfo::GetEdgeInfos</a>()<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>&#160;  <span class="keywordflow">return</span> impl_-&gt;edge_infos_;</div>
-<div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>&#160;}</div>
-<div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>&#160; </div>
-<div class="line"><a name="l01266"></a><span class="lineno"><a class="line" href="classgraphar_1_1_graph_info.html#a6e848c7015e3b7d4706ff1ac2ffa6dcd"> 1266</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classgraphar_1_1_graph_info.html#a6e848c7015e3b7d4706ff1ac2ffa6dcd">GraphInfo::IsValidated</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> impl_-&gt;is_validated(); }</div>
-<div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>&#160; </div>
-<div class="line"><a name="l01268"></a><span class="lineno"><a class="line" href="classgraphar_1_1_graph_info.html#a44e38c74dc765a56f8f0d200774d8180"> 1268</a></span>&#160;Result&lt;std::shared_ptr&lt;GraphInfo&gt;&gt; <a class="code" href="classgraphar_1_1_graph_info.html#a44e38c74dc765a56f8f0d200774d8180">GraphInfo::AddVertex</a>(</div>
-<div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>&#160;    std::shared_ptr&lt;VertexInfo&gt; vertex_info)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>&#160;  <span class="keywordflow">if</span> (vertex_info == <span class="keyword">nullptr</span>) {</div>
-<div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#a9ca4be37aae8dfea7e6ef54920e0073f">Status::Invalid</a>(<span class="stringliteral">&quot;vertex info is nullptr&quot;</span>);</div>
-<div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>&#160;  }</div>
-<div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>&#160;  <span class="keywordflow">if</span> (<a class="code" href="classgraphar_1_1_graph_info.html#a0f03270a6ee9c084dab10421cdf69cd5">GetVertexInfoIndex</a>(vertex_info-&gt;GetType()) != -1) {</div>
-<div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#a9ca4be37aae8dfea7e6ef54920e0073f">Status::Invalid</a>(<span class="stringliteral">&quot;vertex info already exists&quot;</span>);</div>
-<div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>&#160;  }</div>
-<div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>&#160;  <span class="keywordflow">return</span> std::make_shared&lt;GraphInfo&gt;(</div>
-<div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>&#160;      impl_-&gt;name_, AddVectorElement(impl_-&gt;vertex_infos_, vertex_info),</div>
-<div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>&#160;      impl_-&gt;edge_infos_, impl_-&gt;labels_, impl_-&gt;prefix_, impl_-&gt;version_);</div>
-<div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>&#160;}</div>
-<div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>&#160; </div>
-<div class="line"><a name="l01281"></a><span class="lineno"><a class="line" href="classgraphar_1_1_graph_info.html#a8fdf1ff0ec57e3ca2e66dd4366e390aa"> 1281</a></span>&#160;Result&lt;std::shared_ptr&lt;GraphInfo&gt;&gt; <a class="code" href="classgraphar_1_1_graph_info.html#a8fdf1ff0ec57e3ca2e66dd4366e390aa">GraphInfo::AddEdge</a>(</div>
-<div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>&#160;    std::shared_ptr&lt;EdgeInfo&gt; edge_info)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>&#160;  <span class="keywordflow">if</span> (edge_info == <span class="keyword">nullptr</span>) {</div>
-<div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#a9ca4be37aae8dfea7e6ef54920e0073f">Status::Invalid</a>(<span class="stringliteral">&quot;edge info is nullptr&quot;</span>);</div>
-<div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>&#160;  }</div>
-<div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>&#160;  <span class="keywordflow">if</span> (<a class="code" href="classgraphar_1_1_graph_info.html#aa2ca1614d499facc76927b5de733b503">GetEdgeInfoIndex</a>(edge_info-&gt;GetSrcType(), edge_info-&gt;GetEdgeType(),</div>
-<div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>&#160;                       edge_info-&gt;GetDstType()) != -1) {</div>
-<div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#a9ca4be37aae8dfea7e6ef54920e0073f">Status::Invalid</a>(<span class="stringliteral">&quot;edge info already exists&quot;</span>);</div>
-<div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>&#160;  }</div>
-<div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>&#160;  <span class="keywordflow">return</span> std::make_shared&lt;GraphInfo&gt;(</div>
-<div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>&#160;      impl_-&gt;name_, impl_-&gt;vertex_infos_,</div>
-<div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>&#160;      AddVectorElement(impl_-&gt;edge_infos_, edge_info), impl_-&gt;labels_,</div>
-<div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>&#160;      impl_-&gt;prefix_, impl_-&gt;version_);</div>
-<div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>&#160;}</div>
-<div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>&#160; </div>
-<div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>&#160;std::shared_ptr&lt;GraphInfo&gt; CreateGraphInfo(</div>
-<div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>&#160;    <span class="keyword">const</span> std::string&amp; name, <span class="keyword">const</span> VertexInfoVector&amp; vertex_infos,</div>
-<div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>&#160;    <span class="keyword">const</span> EdgeInfoVector&amp; edge_infos, <span class="keyword">const</span> std::vector&lt;std::string&gt;&amp; labels,</div>
-<div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>&#160;    <span class="keyword">const</span> std::string&amp; prefix, std::shared_ptr&lt;const InfoVersion&gt; version,</div>
-<div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>&#160;    <span class="keyword">const</span> std::unordered_map&lt;std::string, std::string&gt;&amp; extra_info) {</div>
-<div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>&#160;  <span class="keywordflow">if</span> (name.empty()) {</div>
-<div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
-<div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>&#160;  }</div>
-<div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>&#160;  <span class="keywordflow">return</span> std::make_shared&lt;GraphInfo&gt;(name, vertex_infos, edge_infos, labels,</div>
-<div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>&#160;                                     prefix, version, extra_info);</div>
+<div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>&#160;}  <span class="comment">// namespace</span></div>
+<div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>&#160; </div>
+<div class="line"><a name="l01204"></a><span class="lineno"><a class="line" href="classgraphar_1_1_graph_info_1_1_impl.html"> 1204</a></span>&#160;<span class="keyword">class </span><a class="code" href="classgraphar_1_1_graph_info_1_1_impl.html">GraphInfo::Impl</a> {</div>
+<div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>&#160; <span class="keyword">public</span>:</div>
+<div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>&#160;  <a class="code" href="classgraphar_1_1_graph_info_1_1_impl.html">Impl</a>(<span class="keyword">const</span> std::string&amp; graph_name, VertexInfoVector vertex_infos,</div>
+<div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>&#160;       EdgeInfoVector edge_infos, <span class="keyword">const</span> std::vector&lt;std::string&gt;&amp; labels,</div>
+<div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>&#160;       <span class="keyword">const</span> std::string&amp; prefix, std::shared_ptr&lt;const InfoVersion&gt; <a class="code" href="classgraphar_1_1_graph_info.html#aeb68a7550c63365d8093136601a3aeee">version</a>,</div>
+<div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>&#160;       <span class="keyword">const</span> std::unordered_map&lt;std::string, std::string&gt;&amp; extra_info)</div>
+<div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>&#160;      : name_(graph_name),</div>
+<div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>&#160;        vertex_infos_(std::move(vertex_infos)),</div>
+<div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>&#160;        edge_infos_(std::move(edge_infos)),</div>
+<div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>&#160;        labels_(labels),</div>
+<div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>&#160;        prefix_(prefix),</div>
+<div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>&#160;        version_(std::move(<a class="code" href="classgraphar_1_1_graph_info.html#aeb68a7550c63365d8093136601a3aeee">version</a>)),</div>
+<div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>&#160;        extra_info_(extra_info) {</div>
+<div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; vertex_infos_.size(); i++) {</div>
+<div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>&#160;      <span class="keywordflow">if</span> (vertex_infos_[i] != <span class="keyword">nullptr</span>) {</div>
+<div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>&#160;        vtype_to_index_[vertex_infos_[i]-&gt;GetType()] = i;</div>
+<div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>&#160;      }</div>
+<div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>&#160;    }</div>
+<div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; edge_infos_.size(); i++) {</div>
+<div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>&#160;      <span class="keywordflow">if</span> (edge_infos_[i] != <span class="keyword">nullptr</span>) {</div>
+<div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>&#160;        std::string edge_key = ConcatEdgeTriple(edge_infos_[i]-&gt;GetSrcType(),</div>
+<div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>&#160;                                                edge_infos_[i]-&gt;GetEdgeType(),</div>
+<div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>&#160;                                                edge_infos_[i]-&gt;GetDstType());</div>
+<div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>&#160;        etype_to_index_[edge_key] = i;</div>
+<div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>&#160;      }</div>
+<div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>&#160;    }</div>
+<div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>&#160;  }</div>
+<div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>&#160; </div>
+<div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>&#160;  <span class="keywordtype">bool</span> is_validated() <span class="keyword">const</span> noexcept {</div>
+<div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>&#160;    <span class="keywordflow">if</span> (name_.empty() || prefix_.empty()) {</div>
+<div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>&#160;      <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>&#160;    }</div>
+<div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; v : vertex_infos_) {</div>
+<div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>&#160;      <span class="keywordflow">if</span> (!v || !v-&gt;IsValidated()) {</div>
+<div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>&#160;        <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>&#160;      }</div>
+<div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>&#160;    }</div>
+<div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; e : edge_infos_) {</div>
+<div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>&#160;      <span class="keywordflow">if</span> (!e || !e-&gt;IsValidated()) {</div>
+<div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>&#160;        <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>&#160;      }</div>
+<div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>&#160;    }</div>
+<div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>&#160;    <span class="keywordflow">if</span> (vertex_infos_.size() != vtype_to_index_.size() ||</div>
+<div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>&#160;        edge_infos_.size() != etype_to_index_.size()) {</div>
+<div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>&#160;      <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>&#160;    }</div>
+<div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>&#160;  }</div>
+<div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>&#160; </div>
+<div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>&#160;  std::string name_;</div>
+<div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>&#160;  VertexInfoVector vertex_infos_;</div>
+<div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>&#160;  EdgeInfoVector edge_infos_;</div>
+<div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>&#160;  std::vector&lt;std::string&gt; labels_;</div>
+<div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>&#160;  std::string prefix_;</div>
+<div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>&#160;  std::shared_ptr&lt;const InfoVersion&gt; version_;</div>
+<div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>&#160;  std::unordered_map&lt;std::string, std::string&gt; extra_info_;</div>
+<div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>&#160;  std::unordered_map&lt;std::string, int&gt; vtype_to_index_;</div>
+<div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>&#160;  std::unordered_map&lt;std::string, int&gt; etype_to_index_;</div>
+<div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>&#160;};</div>
+<div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>&#160; </div>
+<div class="line"><a name="l01264"></a><span class="lineno"><a class="line" href="classgraphar_1_1_graph_info.html#a1b473deea923f7b2a57c339dc7e51192"> 1264</a></span>&#160;<a class="code" href="classgraphar_1_1_graph_info.html#a1b473deea923f7b2a57c339dc7e51192">GraphInfo::GraphInfo</a>(</div>
+<div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>&#160;    <span class="keyword">const</span> std::string&amp; graph_name, VertexInfoVector vertex_infos,</div>
+<div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>&#160;    EdgeInfoVector edge_infos, <span class="keyword">const</span> std::vector&lt;std::string&gt;&amp; labels,</div>
+<div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>&#160;    <span class="keyword">const</span> std::string&amp; prefix, std::shared_ptr&lt;const InfoVersion&gt; version,</div>
+<div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>&#160;    <span class="keyword">const</span> std::unordered_map&lt;std::string, std::string&gt;&amp; extra_info)</div>
+<div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>&#160;    : impl_(new <a class="code" href="classgraphar_1_1_graph_info_1_1_impl.html">Impl</a>(graph_name, std::move(vertex_infos), std::move(edge_infos),</div>
+<div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>&#160;                     labels, prefix, version, extra_info)) {}</div>
+<div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>&#160; </div>
+<div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>&#160;GraphInfo::~GraphInfo() = <span class="keywordflow">default</span>;</div>
+<div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>&#160; </div>
+<div class="line"><a name="l01274"></a><span class="lineno"><a class="line" href="classgraphar_1_1_graph_info.html#ab10cb1ceaa01a74d44c1076c43c2fcce"> 1274</a></span>&#160;<span class="keyword">const</span> std::string&amp; <a class="code" href="classgraphar_1_1_graph_info.html#ab10cb1ceaa01a74d44c1076c43c2fcce">GraphInfo::GetName</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> impl_-&gt;name_; }</div>
+<div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>&#160; </div>
+<div class="line"><a name="l01276"></a><span class="lineno"><a class="line" href="classgraphar_1_1_graph_info.html#a8b057bb6c3cfd897b0fb31ecceea40c9"> 1276</a></span>&#160;<span class="keyword">const</span> std::vector&lt;std::string&gt;&amp; <a class="code" href="classgraphar_1_1_graph_info.html#a8b057bb6c3cfd897b0fb31ecceea40c9">GraphInfo::GetLabels</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>&#160;  <span class="keywordflow">return</span> impl_-&gt;labels_;</div>
+<div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>&#160;}</div>
+<div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>&#160; </div>
+<div class="line"><a name="l01280"></a><span class="lineno"><a class="line" href="classgraphar_1_1_graph_info.html#a53eef3d15830bea15de0bbbe7e11e208"> 1280</a></span>&#160;<span class="keyword">const</span> std::string&amp; <a class="code" href="classgraphar_1_1_graph_info.html#a53eef3d15830bea15de0bbbe7e11e208">GraphInfo::GetPrefix</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> impl_-&gt;prefix_; }</div>
+<div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>&#160; </div>
+<div class="line"><a name="l01282"></a><span class="lineno"><a class="line" href="classgraphar_1_1_graph_info.html#aeb68a7550c63365d8093136601a3aeee"> 1282</a></span>&#160;<span class="keyword">const</span> std::shared_ptr&lt;const InfoVersion&gt;&amp; <a class="code" href="classgraphar_1_1_graph_info.html#aeb68a7550c63365d8093136601a3aeee">GraphInfo::version</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>&#160;  <span class="keywordflow">return</span> impl_-&gt;version_;</div>
+<div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>&#160;}</div>
+<div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>&#160; </div>
+<div class="line"><a name="l01286"></a><span class="lineno"><a class="line" href="classgraphar_1_1_graph_info.html#aa0856ec7ecc8d8d1aac2f7cd51cfe136"> 1286</a></span>&#160;<span class="keyword">const</span> std::unordered_map&lt;std::string, std::string&gt;&amp; <a class="code" href="classgraphar_1_1_graph_info.html#aa0856ec7ecc8d8d1aac2f7cd51cfe136">GraphInfo::GetExtraInfo</a>()<span class="keyword"></span></div>
+<div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>&#160;<span class="keyword">    const </span>{</div>
+<div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>&#160;  <span class="keywordflow">return</span> impl_-&gt;extra_info_;</div>
+<div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>&#160;}</div>
+<div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>&#160; </div>
+<div class="line"><a name="l01291"></a><span class="lineno"><a class="line" href="classgraphar_1_1_graph_info.html#a8799b4b1a2163507a9ddd8f910d4a9d3"> 1291</a></span>&#160;std::shared_ptr&lt;VertexInfo&gt; <a class="code" href="classgraphar_1_1_graph_info.html#a8799b4b1a2163507a9ddd8f910d4a9d3">GraphInfo::GetVertexInfo</a>(</div>
+<div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>&#160;    <span class="keyword">const</span> std::string&amp; type)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>&#160;  <span class="keywordtype">int</span> i = <a class="code" href="classgraphar_1_1_graph_info.html#a0f03270a6ee9c084dab10421cdf69cd5">GetVertexInfoIndex</a>(type);</div>
+<div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>&#160;  <span class="keywordflow">return</span> i == -1 ? nullptr : impl_-&gt;vertex_infos_[i];</div>
+<div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>&#160;}</div>
+<div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>&#160; </div>
+<div class="line"><a name="l01297"></a><span class="lineno"><a class="line" href="classgraphar_1_1_graph_info.html#a0f03270a6ee9c084dab10421cdf69cd5"> 1297</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="classgraphar_1_1_graph_info.html#a0f03270a6ee9c084dab10421cdf69cd5">GraphInfo::GetVertexInfoIndex</a>(<span class="keyword">const</span> std::string&amp; type)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>&#160;  <span class="keywordflow">return</span> LookupKeyIndex(impl_-&gt;vtype_to_index_, type);</div>
+<div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>&#160;}</div>
+<div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>&#160; </div>
+<div class="line"><a name="l01301"></a><span class="lineno"><a class="line" href="classgraphar_1_1_graph_info.html#a7e660710d2e1bd244b5d28bdc68aeab2"> 1301</a></span>&#160;std::shared_ptr&lt;EdgeInfo&gt; <a class="code" href="classgraphar_1_1_graph_info.html#a7e660710d2e1bd244b5d28bdc68aeab2">GraphInfo::GetEdgeInfo</a>(</div>
+<div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>&#160;    <span class="keyword">const</span> std::string&amp; src_type, <span class="keyword">const</span> std::string&amp; edge_type,</div>
+<div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>&#160;    <span class="keyword">const</span> std::string&amp; dst_type)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>&#160;  <span class="keywordtype">int</span> i = <a class="code" href="classgraphar_1_1_graph_info.html#aa2ca1614d499facc76927b5de733b503">GetEdgeInfoIndex</a>(src_type, edge_type, dst_type);</div>
+<div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>&#160;  <span class="keywordflow">return</span> i == -1 ? nullptr : impl_-&gt;edge_infos_[i];</div>
 <div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>&#160;}</div>
 <div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>&#160; </div>
-<div class="line"><a name="l01308"></a><span class="lineno"><a class="line" href="classgraphar_1_1_graph_info.html#a63dbd61d6575fe783b3287f391f651ed"> 1308</a></span>&#160;Result&lt;std::shared_ptr&lt;GraphInfo&gt;&gt; <a class="code" href="classgraphar_1_1_graph_info.html#a63dbd61d6575fe783b3287f391f651ed">GraphInfo::Load</a>(<span class="keyword">const</span> std::string&amp; path) {</div>
-<div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>&#160;  std::string no_url_path;</div>
-<div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>&#160;  GAR_ASSIGN_OR_RAISE(<span class="keyword">auto</span> fs, FileSystemFromUriOrPath(path, &amp;no_url_path));</div>
-<div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>&#160;  GAR_ASSIGN_OR_RAISE(<span class="keyword">auto</span> yaml_content,</div>
-<div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>&#160;                      fs-&gt;ReadFileToValue&lt;std::string&gt;(no_url_path));</div>
-<div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>&#160;  GAR_ASSIGN_OR_RAISE(<span class="keyword">auto</span> graph_meta, <a class="code" href="classgraphar_1_1_yaml.html#a2fff6ba5eaf3e59b489d015f10013179">Yaml::Load</a>(yaml_content));</div>
-<div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>&#160;  std::string default_name = <span class="stringliteral">&quot;graph&quot;</span>;</div>
-<div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>&#160;  std::string default_prefix = PathToDirectory(path);</div>
-<div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>&#160;  no_url_path = PathToDirectory(no_url_path);</div>
-<div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>&#160;  <span class="keywordflow">return</span> ConstructGraphInfo(graph_meta, default_name, default_prefix, fs,</div>
-<div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>&#160;                            no_url_path);</div>
-<div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>&#160;}</div>
-<div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>&#160; </div>
-<div class="line"><a name="l01321"></a><span class="lineno"><a class="line" href="classgraphar_1_1_graph_info.html#acf6ef4ce04b70184f596be59dbb58318"> 1321</a></span>&#160;Result&lt;std::shared_ptr&lt;GraphInfo&gt;&gt; <a class="code" href="classgraphar_1_1_graph_info.html#a63dbd61d6575fe783b3287f391f651ed">GraphInfo::Load</a>(</div>
-<div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>&#160;    <span class="keyword">const</span> std::string&amp; input, <span class="keyword">const</span> std::string&amp; relative_location) {</div>
-<div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>&#160;  GAR_ASSIGN_OR_RAISE(<span class="keyword">auto</span> graph_meta, <a class="code" href="classgraphar_1_1_yaml.html#a2fff6ba5eaf3e59b489d015f10013179">Yaml::Load</a>(input));</div>
-<div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>&#160;  std::string default_name = <span class="stringliteral">&quot;graph&quot;</span>;</div>
-<div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>&#160;  std::string default_prefix =</div>
-<div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>&#160;      relative_location;  <span class="comment">// default chunk file prefix is relative location</span></div>
-<div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>&#160;  std::string no_url_path;</div>
-<div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>&#160;  GAR_ASSIGN_OR_RAISE(<span class="keyword">auto</span> fs,</div>
-<div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>&#160;                      FileSystemFromUriOrPath(relative_location, &amp;no_url_path));</div>
-<div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>&#160;  <span class="keywordflow">return</span> ConstructGraphInfo(graph_meta, default_name, default_prefix, fs,</div>
-<div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>&#160;                            no_url_path);</div>
-<div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>&#160;}</div>
-<div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>&#160; </div>
-<div class="line"><a name="l01334"></a><span class="lineno"><a class="line" href="classgraphar_1_1_graph_info.html#a71646413e64620af1ca83f404e7150ea"> 1334</a></span>&#160;Result&lt;std::string&gt; <a class="code" href="classgraphar_1_1_graph_info.html#a71646413e64620af1ca83f404e7150ea">GraphInfo::Dump</a>()<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>&#160;  <span class="keywordflow">if</span> (!<a class="code" href="classgraphar_1_1_graph_info.html#a6e848c7015e3b7d4706ff1ac2ffa6dcd">IsValidated</a>()) {</div>
-<div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#a9ca4be37aae8dfea7e6ef54920e0073f">Status::Invalid</a>(<span class="stringliteral">&quot;The graph info is not validated.&quot;</span>);</div>
-<div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>&#160;  }</div>
-<div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>&#160;  ::Yaml::Node node;</div>
-<div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>&#160;  std::string dump_string;</div>
-<div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>&#160;  <span class="keywordflow">try</span> {</div>
-<div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>&#160;    node[<span class="stringliteral">&quot;name&quot;</span>] = impl_-&gt;name_;</div>
-<div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>&#160;    node[<span class="stringliteral">&quot;prefix&quot;</span>] = impl_-&gt;prefix_;</div>
-<div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>&#160;    node[<span class="stringliteral">&quot;vertices&quot;</span>];</div>
-<div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>&#160;    node[<span class="stringliteral">&quot;edges&quot;</span>];</div>
-<div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; vertex : <a class="code" href="classgraphar_1_1_graph_info.html#a9393d2797ff5d77f66691f84f15007c4">GetVertexInfos</a>()) {</div>
-<div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>&#160;      node[<span class="stringliteral">&quot;vertices&quot;</span>].PushBack();</div>
-<div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>&#160;      node[<span class="stringliteral">&quot;vertices&quot;</span>][node[<span class="stringliteral">&quot;vertices&quot;</span>].Size() - 1] =</div>
-<div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>&#160;          vertex-&gt;GetType() + <span class="stringliteral">&quot;.vertex.yaml&quot;</span>;</div>
-<div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>&#160;    }</div>
-<div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; edge : <a class="code" href="classgraphar_1_1_graph_info.html#a14dbabaec827198ee822070c1077a570">GetEdgeInfos</a>()) {</div>
-<div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>&#160;      node[<span class="stringliteral">&quot;edges&quot;</span>].PushBack();</div>
-<div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>&#160;      node[<span class="stringliteral">&quot;edges&quot;</span>][node[<span class="stringliteral">&quot;edges&quot;</span>].Size() - 1] =</div>
-<div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>&#160;          ConcatEdgeTriple(edge-&gt;GetSrcType(), edge-&gt;GetEdgeType(),</div>
-<div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>&#160;                           edge-&gt;GetDstType()) +</div>
-<div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>&#160;          <span class="stringliteral">&quot;.edge.yaml&quot;</span>;</div>
-<div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>&#160;    }</div>
-<div class="line"><a name="l01357"></a><span class="lineno"> 1357</span>&#160;    <span class="keywordflow">if</span> (impl_-&gt;labels_.size() &gt; 0) {</div>
-<div class="line"><a name="l01358"></a><span class="lineno"> 1358</span>&#160;      node[<span class="stringliteral">&quot;labels&quot;</span>];</div>
-<div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>&#160;      <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; label : impl_-&gt;labels_) {</div>
-<div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>&#160;        node[<span class="stringliteral">&quot;labels&quot;</span>].PushBack();</div>
-<div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>&#160;        node[<span class="stringliteral">&quot;labels&quot;</span>][node[<span class="stringliteral">&quot;labels&quot;</span>].Size() - 1] = label;</div>
-<div class="line"><a name="l01362"></a><span class="lineno"> 1362</span>&#160;      }</div>
-<div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>&#160;    }</div>
-<div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>&#160;    <span class="keywordflow">if</span> (impl_-&gt;version_ != <span class="keyword">nullptr</span>) {</div>
-<div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>&#160;      node[<span class="stringliteral">&quot;version&quot;</span>] = impl_-&gt;version_-&gt;ToString();</div>
-<div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>&#160;    }</div>
-<div class="line"><a name="l01367"></a><span class="lineno"> 1367</span>&#160;    <span class="keywordflow">if</span> (impl_-&gt;extra_info_.size() &gt; 0) {</div>
-<div class="line"><a name="l01368"></a><span class="lineno"> 1368</span>&#160;      node[<span class="stringliteral">&quot;extra_info&quot;</span>];</div>
-<div class="line"><a name="l01369"></a><span class="lineno"> 1369</span>&#160;      <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; pair : impl_-&gt;extra_info_) {</div>
-<div class="line"><a name="l01370"></a><span class="lineno"> 1370</span>&#160;        ::Yaml::Node extra_info_node;</div>
-<div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>&#160;        extra_info_node[<span class="stringliteral">&quot;key&quot;</span>] = pair.first;</div>
-<div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>&#160;        extra_info_node[<span class="stringliteral">&quot;value&quot;</span>] = pair.second;</div>
-<div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>&#160;        node[<span class="stringliteral">&quot;extra_info&quot;</span>].PushBack();</div>
-<div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>&#160;        node[<span class="stringliteral">&quot;extra_info&quot;</span>][node[<span class="stringliteral">&quot;extra_info&quot;</span>].Size() - 1] = extra_info_node;</div>
-<div class="line"><a name="l01375"></a><span class="lineno"> 1375</span>&#160;      }</div>
-<div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>&#160;    }</div>
-<div class="line"><a name="l01377"></a><span class="lineno"> 1377</span>&#160;    ::Yaml::Serialize(node, dump_string);</div>
-<div class="line"><a name="l01378"></a><span class="lineno"> 1378</span>&#160;  } <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception&amp; e) {</div>
-<div class="line"><a name="l01379"></a><span class="lineno"> 1379</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#a9ca4be37aae8dfea7e6ef54920e0073f">Status::Invalid</a>(<span class="stringliteral">&quot;Failed to dump graph info: &quot;</span>, e.what());</div>
-<div class="line"><a name="l01380"></a><span class="lineno"> 1380</span>&#160;  }</div>
-<div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>&#160;  <span class="keywordflow">return</span> dump_string;</div>
-<div class="line"><a name="l01382"></a><span class="lineno"> 1382</span>&#160;}</div>
-<div class="line"><a name="l01383"></a><span class="lineno"> 1383</span>&#160; </div>
-<div class="line"><a name="l01384"></a><span class="lineno"><a class="line" href="classgraphar_1_1_graph_info.html#a339f08f5a1427aadc91d30d41dccced3"> 1384</a></span>&#160;<a class="code" href="classgraphar_1_1_status.html">Status</a> <a class="code" href="classgraphar_1_1_graph_info.html#a339f08f5a1427aadc91d30d41dccced3">GraphInfo::Save</a>(<span class="keyword">const</span> std::string&amp; path)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l01385"></a><span class="lineno"> 1385</span>&#160;  std::string no_url_path;</div>
-<div class="line"><a name="l01386"></a><span class="lineno"> 1386</span>&#160;  GAR_ASSIGN_OR_RAISE(<span class="keyword">auto</span> fs, FileSystemFromUriOrPath(path, &amp;no_url_path));</div>
-<div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>&#160;  GAR_ASSIGN_OR_RAISE(<span class="keyword">auto</span> yaml_content, this-&gt;<a class="code" href="classgraphar_1_1_graph_info.html#a71646413e64620af1ca83f404e7150ea">Dump</a>());</div>
-<div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>&#160;  <span class="keywordflow">return</span> fs-&gt;WriteValueToFile(yaml_content, no_url_path);</div>
-<div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>&#160;}</div>
-<div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>&#160; </div>
-<div class="line"><a name="l01391"></a><span class="lineno"> 1391</span>&#160;}  <span class="comment">// namespace graphar</span></div>
-<div class="ttc" id="aclassgraphar_1_1_adjacent_list_html_a592ba95843997b321f5545e950f03a57"><div class="ttname"><a href="classgraphar_1_1_adjacent_list.html#a592ba95843997b321f5545e950f03a57">graphar::AdjacentList::IsValidated</a></div><div class="ttdeci">bool IsValidated() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00176">graph_info.cc:176</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_adjacent_list_html_ab31cbdbaae74305f7bf3ffbd76c93efc"><div class="ttname"><a href="classgraphar_1_1_adjacent_list.html#ab31cbdbaae74305f7bf3ffbd76c93efc">graphar::AdjacentList::AdjacentList</a></div><div class="ttdeci">AdjacentList(AdjListType type, FileType file_type, const std::string &amp;prefix=&quot;&quot;)</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00168">graph_info.cc:168</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_edge_info_1_1_impl_html"><div class="ttname"><a href="classgraphar_1_1_edge_info_1_1_impl.html">graphar::EdgeInfo::Impl</a></div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00537">graph_info.cc:537</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a03c9b4f4b0edcf47f2e5746e8f9f6db0"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a03c9b4f4b0edcf47f2e5746e8f9f6db0">graphar::EdgeInfo::GetEdgeType</a></div><div class="ttdeci">const std::string &amp; GetEdgeType() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00658">graph_info.cc:658</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a0ac67e1cf3b3fa79b6fcbc054869d0e5"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a0ac67e1cf3b3fa79b6fcbc054869d0e5">graphar::EdgeInfo::Load</a></div><div class="ttdeci">static Result&lt; std::shared_ptr&lt; EdgeInfo &gt; &gt; Load(std::shared_ptr&lt; Yaml &gt; yaml)</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00886">graph_info.cc:886</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a0eb9f0ff282c73f5c90a8c3940f1929e"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a0eb9f0ff282c73f5c90a8c3940f1929e">graphar::EdgeInfo::GetAdjListFilePath</a></div><div class="ttdeci">Result&lt; std::string &gt; GetAdjListFilePath(IdType vertex_chunk_index, IdType edge_chunk_index, AdjListType adj_list_type) const</div><div class="ttdoc">Get the file path of adj list topology chunk.</div><div class="ttdef"><b>Definition: [...]
-<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a1e95f986bd8c5191f438705b195191e3"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a1e95f986bd8c5191f438705b195191e3">graphar::EdgeInfo::Save</a></div><div class="ttdeci">Status Save(const std::string &amp;file_name) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l01027">graph_info.cc:1027</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a37fa8536c627a5e5f529e8ee6d3d7506"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a37fa8536c627a5e5f529e8ee6d3d7506">graphar::EdgeInfo::GetPropertyType</a></div><div class="ttdeci">Result&lt; std::shared_ptr&lt; DataType &gt; &gt; GetPropertyType(const std::string &amp;property_name) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00807">graph_info.cc:807</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a3dca57726506375cab4fc43fdef2914f"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a3dca57726506375cab4fc43fdef2914f">graphar::EdgeInfo::IsValidated</a></div><div class="ttdeci">bool IsValidated() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00867">graph_info.cc:867</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a4ec8810a54411f9a8aba35b2faf29acb"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a4ec8810a54411f9a8aba35b2faf29acb">graphar::EdgeInfo::GetPrefix</a></div><div class="ttdeci">const std::string &amp; GetPrefix() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00668">graph_info.cc:668</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a4f2c7fedc68dce8f1c7fb90eede9906f"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a4f2c7fedc68dce8f1c7fb90eede9906f">graphar::EdgeInfo::GetEdgesNumFilePath</a></div><div class="ttdeci">Result&lt; std::string &gt; GetEdgesNumFilePath(IdType vertex_chunk_index, AdjListType adj_list_type) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00738">graph_info.cc:738</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a55004cedc30fcb0fa94adf246dcc2702"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a55004cedc30fcb0fa94adf246dcc2702">graphar::EdgeInfo::GetPropertyGroupPathPrefix</a></div><div class="ttdeci">Result&lt; std::string &gt; GetPropertyGroupPathPrefix(const std::shared_ptr&lt; PropertyGroup &gt; &amp;property_group, AdjListType adj_list_type) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.htm [...]
-<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a5bd430ba21f5dfb230b978e03c4020ef"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a5bd430ba21f5dfb230b978e03c4020ef">graphar::EdgeInfo::IsPrimaryKey</a></div><div class="ttdeci">bool IsPrimaryKey(const std::string &amp;property_name) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00816">graph_info.cc:816</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a615fe3ed78f35af9aef598287cb89a27"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a615fe3ed78f35af9aef598287cb89a27">graphar::EdgeInfo::GetAdjListOffsetFilePath</a></div><div class="ttdeci">Result&lt; std::string &gt; GetAdjListOffsetFilePath(IdType vertex_chunk_index, AdjListType adj_list_type) const</div><div class="ttdoc">Get the adjacency list offset chunk file path of vertex chunk the offset chunks is aligned with t [...]
-<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a62c2300185c0655df9b44db39b0a399b"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a62c2300185c0655df9b44db39b0a399b">graphar::EdgeInfo::GetChunkSize</a></div><div class="ttdeci">IdType GetChunkSize() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00662">graph_info.cc:662</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a69182fa8d45bb0e7d4ac230adb1239b2"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a69182fa8d45bb0e7d4ac230adb1239b2">graphar::EdgeInfo::HasProperty</a></div><div class="ttdeci">bool HasProperty(const std::string &amp;property_name) const</div><div class="ttdoc">Returns whether the edge info contains the given property.</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00681">graph_info.cc:6 [...]
-<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a6e5b4fdc98d8399564396fb63955c62a"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a6e5b4fdc98d8399564396fb63955c62a">graphar::EdgeInfo::AddAdjacentList</a></div><div class="ttdeci">Result&lt; std::shared_ptr&lt; EdgeInfo &gt; &gt; AddAdjacentList(std::shared_ptr&lt; AdjacentList &gt; adj_list) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00832">graph_info.cc:832</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a80004230ddfbc892995732ea59993a27"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a80004230ddfbc892995732ea59993a27">graphar::EdgeInfo::Dump</a></div><div class="ttdeci">Result&lt; std::string &gt; Dump() const noexcept</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00972">graph_info.cc:972</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a80b00d930f22870d00331a639c9cc26e"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a80b00d930f22870d00331a639c9cc26e">graphar::EdgeInfo::IsNullableKey</a></div><div class="ttdeci">bool IsNullableKey(const std::string &amp;property_name) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00824">graph_info.cc:824</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a8551959066b19885b9ce15262b5cb3db"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a8551959066b19885b9ce15262b5cb3db">graphar::EdgeInfo::GetPropertyGroupByIndex</a></div><div class="ttdeci">std::shared_ptr&lt; PropertyGroup &gt; GetPropertyGroupByIndex(int index) const</div><div class="ttdoc">Get the property group at the specified index.</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l007 [...]
-<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a857bb686e5d7f579ac0e2a889a53f829"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a857bb686e5d7f579ac0e2a889a53f829">graphar::EdgeInfo::HasPropertyGroup</a></div><div class="ttdeci">bool HasPropertyGroup(const std::shared_ptr&lt; PropertyGroup &gt; &amp;property_group) const</div><div class="ttdoc">Returns whether the edge info contains the given property group.</div><div class="ttdef"><b>Definition:</b> <a href="graph__ [...]
-<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a9440bef05f4fa689662f26a9ef0117c1"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a9440bef05f4fa689662f26a9ef0117c1">graphar::EdgeInfo::version</a></div><div class="ttdeci">const std::shared_ptr&lt; const InfoVersion &gt; &amp; version() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00672">graph_info.cc:672</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a9620f838addfdcb892b30e80e2cc4239"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a9620f838addfdcb892b30e80e2cc4239">graphar::EdgeInfo::AddPropertyGroup</a></div><div class="ttdeci">Result&lt; std::shared_ptr&lt; EdgeInfo &gt; &gt; AddPropertyGroup(std::shared_ptr&lt; PropertyGroup &gt; property_group) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00848">graph_info.cc:848</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a994023f50f2f952cc1361b0f9928dec4"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a994023f50f2f952cc1361b0f9928dec4">graphar::EdgeInfo::GetSrcType</a></div><div class="ttdeci">const std::string &amp; GetSrcType() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00656">graph_info.cc:656</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_edge_info_html_aaa6633dc8136cec806cbcf42c2cf136d"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#aaa6633dc8136cec806cbcf42c2cf136d">graphar::EdgeInfo::HasAdjacentListType</a></div><div class="ttdeci">bool HasAdjacentListType(AdjListType adj_list_type) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00676">graph_info.cc:676</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_edge_info_html_aab2032669c9e9dcf11275fdd4cb2c1fa"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#aab2032669c9e9dcf11275fdd4cb2c1fa">graphar::EdgeInfo::GetOffsetPathPrefix</a></div><div class="ttdeci">Result&lt; std::string &gt; GetOffsetPathPrefix(AdjListType adj_list_type) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00772">graph_info.cc:772</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_edge_info_html_aad31af465d41c026a35c20828915922e"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#aad31af465d41c026a35c20828915922e">graphar::EdgeInfo::IsDirected</a></div><div class="ttdeci">bool IsDirected() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00670">graph_info.cc:670</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_edge_info_html_ab39f63f0aa7284c510a7e0d61b0942d3"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#ab39f63f0aa7284c510a7e0d61b0942d3">graphar::EdgeInfo::GetAdjListPathPrefix</a></div><div class="ttdeci">Result&lt; std::string &gt; GetAdjListPathPrefix(AdjListType adj_list_type) const</div><div class="ttdoc">Get the path prefix of the adjacency list topology chunk for the given adjacency list type.</div><div class="ttdef"><b>Definition:</ [...]
-<div class="ttc" id="aclassgraphar_1_1_edge_info_html_ab3c32f3112dcf08304676eeb95545b55"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#ab3c32f3112dcf08304676eeb95545b55">graphar::EdgeInfo::EdgeInfo</a></div><div class="ttdeci">EdgeInfo(const std::string &amp;src_type, const std::string &amp;edge_type, const std::string &amp;dst_type, IdType chunk_size, IdType src_chunk_size, IdType dst_chunk_size, bool directed, const AdjacentListVector &amp;adjacent_lists, const PropertyG [...]
-<div class="ttc" id="aclassgraphar_1_1_edge_info_html_abe0fc6672a3fbb5fbd0b5e8775cb8dac"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#abe0fc6672a3fbb5fbd0b5e8775cb8dac">graphar::EdgeInfo::GetDstChunkSize</a></div><div class="ttdeci">IdType GetDstChunkSize() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00666">graph_info.cc:666</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_edge_info_html_abfcba5aed61cdfaf91f98e649b370722"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#abfcba5aed61cdfaf91f98e649b370722">graphar::EdgeInfo::GetPropertyFilePath</a></div><div class="ttdeci">Result&lt; std::string &gt; GetPropertyFilePath(const std::shared_ptr&lt; PropertyGroup &gt; &amp;property_group, AdjListType adj_list_type, IdType vertex_chunk_index, IdType edge_chunk_index) const</div><div class="ttdoc">Get the chunk fi [...]
-<div class="ttc" id="aclassgraphar_1_1_edge_info_html_ac03180737adf29c79196bbe729b3c929"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#ac03180737adf29c79196bbe729b3c929">graphar::EdgeInfo::GetDstType</a></div><div class="ttdeci">const std::string &amp; GetDstType() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00660">graph_info.cc:660</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_edge_info_html_ac07ad975e8ecbdb779038388e3def59e"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#ac07ad975e8ecbdb779038388e3def59e">graphar::EdgeInfo::GetSrcChunkSize</a></div><div class="ttdeci">IdType GetSrcChunkSize() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00664">graph_info.cc:664</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_edge_info_html_ad56107001dcbadac71ae8063cd25b58f"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#ad56107001dcbadac71ae8063cd25b58f">graphar::EdgeInfo::GetPropertyGroups</a></div><div class="ttdeci">const PropertyGroupVector &amp; GetPropertyGroups() const</div><div class="ttdoc">Get the property groups.</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00712">graph_info.cc:712</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_edge_info_html_aec1a622c83b14d62b26e7143850a3cf1"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#aec1a622c83b14d62b26e7143850a3cf1">graphar::EdgeInfo::GetVerticesNumFilePath</a></div><div class="ttdeci">Result&lt; std::string &gt; GetVerticesNumFilePath(AdjListType adj_list_type) const</div><div class="ttdoc">Get the file path for the number of vertices.</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l0 [...]
-<div class="ttc" id="aclassgraphar_1_1_edge_info_html_aec1bdf018d5b209f722dbf293ef14dd6"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#aec1bdf018d5b209f722dbf293ef14dd6">graphar::EdgeInfo::GetPropertyGroup</a></div><div class="ttdeci">std::shared_ptr&lt; PropertyGroup &gt; GetPropertyGroup(const std::string &amp;property) const</div><div class="ttdoc">Get the property group containing the given property.</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_s [...]
-<div class="ttc" id="aclassgraphar_1_1_edge_info_html_aee914f2c4adf773c048daed0e93dbe32"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#aee914f2c4adf773c048daed0e93dbe32">graphar::EdgeInfo::PropertyGroupNum</a></div><div class="ttdeci">int PropertyGroupNum() const</div><div class="ttdoc">Get the number of property groups.</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00708">graph_info.cc:708</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_graph_info_1_1_impl_html"><div class="ttname"><a href="classgraphar_1_1_graph_info_1_1_impl.html">graphar::GraphInfo::Impl</a></div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l01124">graph_info.cc:1124</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_graph_info_html_a0f03270a6ee9c084dab10421cdf69cd5"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#a0f03270a6ee9c084dab10421cdf69cd5">graphar::GraphInfo::GetVertexInfoIndex</a></div><div class="ttdeci">int GetVertexInfoIndex(const std::string &amp;type) const</div><div class="ttdoc">Get the vertex info index with the given type.</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l01217">graph_info.cc:1217</ [...]
-<div class="ttc" id="aclassgraphar_1_1_graph_info_html_a14dbabaec827198ee822070c1077a570"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#a14dbabaec827198ee822070c1077a570">graphar::GraphInfo::GetEdgeInfos</a></div><div class="ttdeci">const EdgeInfoVector &amp; GetEdgeInfos() const</div><div class="ttdoc">Get the edge infos of graph info.</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l01262">graph_info.cc:1262</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_graph_info_html_a1b473deea923f7b2a57c339dc7e51192"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#a1b473deea923f7b2a57c339dc7e51192">graphar::GraphInfo::GraphInfo</a></div><div class="ttdeci">GraphInfo(const std::string &amp;graph_name, VertexInfoVector vertex_infos, EdgeInfoVector edge_infos, const std::vector&lt; std::string &gt; &amp;labels={}, const std::string &amp;prefix=&quot;./&quot;, std::shared_ptr&lt; const InfoVersion &gt; [...]
-<div class="ttc" id="aclassgraphar_1_1_graph_info_html_a339f08f5a1427aadc91d30d41dccced3"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#a339f08f5a1427aadc91d30d41dccced3">graphar::GraphInfo::Save</a></div><div class="ttdeci">Status Save(const std::string &amp;path) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l01384">graph_info.cc:1384</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_graph_info_html_a3a94e3d0f64a1b4d1b672676940c389f"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#a3a94e3d0f64a1b4d1b672676940c389f">graphar::GraphInfo::GetVertexInfoByIndex</a></div><div class="ttdeci">const std::shared_ptr&lt; VertexInfo &gt; GetVertexInfoByIndex(int index) const</div><div class="ttdoc">Get the vertex info at the specified index.</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l01243" [...]
-<div class="ttc" id="aclassgraphar_1_1_graph_info_html_a44e38c74dc765a56f8f0d200774d8180"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#a44e38c74dc765a56f8f0d200774d8180">graphar::GraphInfo::AddVertex</a></div><div class="ttdeci">Result&lt; std::shared_ptr&lt; GraphInfo &gt; &gt; AddVertex(std::shared_ptr&lt; VertexInfo &gt; vertex_info) const</div><div class="ttdoc">Adds a vertex info to the GraphInfo instance and returns a new GraphInfo.</div><div class="ttdef"><b>Defin [...]
-<div class="ttc" id="aclassgraphar_1_1_graph_info_html_a53eef3d15830bea15de0bbbe7e11e208"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#a53eef3d15830bea15de0bbbe7e11e208">graphar::GraphInfo::GetPrefix</a></div><div class="ttdeci">const std::string &amp; GetPrefix() const</div><div class="ttdoc">Get the absolute path prefix of the chunk files.</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l01200">graph_info.cc:1200</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_graph_info_html_a63dbd61d6575fe783b3287f391f651ed"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#a63dbd61d6575fe783b3287f391f651ed">graphar::GraphInfo::Load</a></div><div class="ttdeci">static Result&lt; std::shared_ptr&lt; GraphInfo &gt; &gt; Load(const std::string &amp;path)</div><div class="ttdoc">Loads the input file as a GraphInfo instance.</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l01308">g [...]
-<div class="ttc" id="aclassgraphar_1_1_graph_info_html_a6e848c7015e3b7d4706ff1ac2ffa6dcd"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#a6e848c7015e3b7d4706ff1ac2ffa6dcd">graphar::GraphInfo::IsValidated</a></div><div class="ttdeci">bool IsValidated() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l01266">graph_info.cc:1266</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_graph_info_html_a71646413e64620af1ca83f404e7150ea"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#a71646413e64620af1ca83f404e7150ea">graphar::GraphInfo::Dump</a></div><div class="ttdeci">Result&lt; std::string &gt; Dump() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l01334">graph_info.cc:1334</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_graph_info_html_a7e660710d2e1bd244b5d28bdc68aeab2"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#a7e660710d2e1bd244b5d28bdc68aeab2">graphar::GraphInfo::GetEdgeInfo</a></div><div class="ttdeci">std::shared_ptr&lt; EdgeInfo &gt; GetEdgeInfo(const std::string &amp;src_type, const std::string &amp;edge_type, const std::string &amp;dst_type) const</div><div class="ttdoc">Get the edge info with the given source vertex type, edge type, and  [...]
-<div class="ttc" id="aclassgraphar_1_1_graph_info_html_a814f2cdeecf58a308ab886a085991fc4"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#a814f2cdeecf58a308ab886a085991fc4">graphar::GraphInfo::EdgeInfoNum</a></div><div class="ttdeci">int EdgeInfoNum() const</div><div class="ttdoc">Get the number of edge infos.</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l01239">graph_info.cc:1239</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_graph_info_html_a8799b4b1a2163507a9ddd8f910d4a9d3"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#a8799b4b1a2163507a9ddd8f910d4a9d3">graphar::GraphInfo::GetVertexInfo</a></div><div class="ttdeci">std::shared_ptr&lt; VertexInfo &gt; GetVertexInfo(const std::string &amp;type) const</div><div class="ttdoc">Get the vertex info with the given type.</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l01211">grap [...]
-<div class="ttc" id="aclassgraphar_1_1_graph_info_html_a8b057bb6c3cfd897b0fb31ecceea40c9"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#a8b057bb6c3cfd897b0fb31ecceea40c9">graphar::GraphInfo::GetLabels</a></div><div class="ttdeci">const std::vector&lt; std::string &gt; &amp; GetLabels() const</div><div class="ttdoc">Get the vertex labels of the graph.</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l01196">graph_info.cc:1196</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_graph_info_html_a8fdf1ff0ec57e3ca2e66dd4366e390aa"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#a8fdf1ff0ec57e3ca2e66dd4366e390aa">graphar::GraphInfo::AddEdge</a></div><div class="ttdeci">Result&lt; std::shared_ptr&lt; GraphInfo &gt; &gt; AddEdge(std::shared_ptr&lt; EdgeInfo &gt; edge_info) const</div><div class="ttdoc">Adds an edge info to the GraphInfo instance and returns a new GraphInfo.</div><div class="ttdef"><b>Definition:</b [...]
-<div class="ttc" id="aclassgraphar_1_1_graph_info_html_a9393d2797ff5d77f66691f84f15007c4"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#a9393d2797ff5d77f66691f84f15007c4">graphar::GraphInfo::GetVertexInfos</a></div><div class="ttdeci">const VertexInfoVector &amp; GetVertexInfos() const</div><div class="ttdoc">Get the vertex infos of graph info.</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l01258">graph_info.cc:1258</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_graph_info_html_aa0856ec7ecc8d8d1aac2f7cd51cfe136"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#aa0856ec7ecc8d8d1aac2f7cd51cfe136">graphar::GraphInfo::GetExtraInfo</a></div><div class="ttdeci">const std::unordered_map&lt; std::string, std::string &gt; &amp; GetExtraInfo() const</div><div class="ttdoc">Get the extra metadata of the graph info object.</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l012 [...]
-<div class="ttc" id="aclassgraphar_1_1_graph_info_html_aa2ca1614d499facc76927b5de733b503"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#aa2ca1614d499facc76927b5de733b503">graphar::GraphInfo::GetEdgeInfoIndex</a></div><div class="ttdeci">int GetEdgeInfoIndex(const std::string &amp;src_type, const std::string &amp;edge_type, const std::string &amp;dst_type) const</div><div class="ttdoc">Get the edge info index with the given source vertex type, edge type, and destination ty [...]
-<div class="ttc" id="aclassgraphar_1_1_graph_info_html_aa384328a58c9138b5b77ea6172199d07"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#aa384328a58c9138b5b77ea6172199d07">graphar::GraphInfo::VertexInfoNum</a></div><div class="ttdeci">int VertexInfoNum() const</div><div class="ttdoc">Get the number of vertex infos.</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l01235">graph_info.cc:1235</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_graph_info_html_ab10cb1ceaa01a74d44c1076c43c2fcce"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#ab10cb1ceaa01a74d44c1076c43c2fcce">graphar::GraphInfo::GetName</a></div><div class="ttdeci">const std::string &amp; GetName() const</div><div class="ttdoc">Get the name of the graph.</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l01194">graph_info.cc:1194</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_graph_info_html_aeb68a7550c63365d8093136601a3aeee"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#aeb68a7550c63365d8093136601a3aeee">graphar::GraphInfo::version</a></div><div class="ttdeci">const std::shared_ptr&lt; const InfoVersion &gt; &amp; version() const</div><div class="ttdoc">Get the version info of the graph info object.</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l01202">graph_info.cc:1202 [...]
-<div class="ttc" id="aclassgraphar_1_1_graph_info_html_afd61923bd9ff1f5329b1c93ebbcd0278"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#afd61923bd9ff1f5329b1c93ebbcd0278">graphar::GraphInfo::GetEdgeInfoByIndex</a></div><div class="ttdeci">const std::shared_ptr&lt; EdgeInfo &gt; GetEdgeInfoByIndex(int index) const</div><div class="ttdoc">Get the edge info at the specified index.</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l01251">graph_i [...]
+<div class="line"><a name="l01308"></a><span class="lineno"><a class="line" href="classgraphar_1_1_graph_info.html#aa2ca1614d499facc76927b5de733b503"> 1308</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="classgraphar_1_1_graph_info.html#aa2ca1614d499facc76927b5de733b503">GraphInfo::GetEdgeInfoIndex</a>(<span class="keyword">const</span> std::string&amp; src_type,</div>
+<div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>&#160;                                <span class="keyword">const</span> std::string&amp; edge_type,</div>
+<div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>&#160;                                <span class="keyword">const</span> std::string&amp; dst_type)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>&#160;  std::string edge_key = ConcatEdgeTriple(src_type, edge_type, dst_type);</div>
+<div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>&#160;  <span class="keywordflow">return</span> LookupKeyIndex(impl_-&gt;etype_to_index_, edge_key);</div>
+<div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>&#160;}</div>
+<div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>&#160; </div>
+<div class="line"><a name="l01315"></a><span class="lineno"><a class="line" href="classgraphar_1_1_graph_info.html#aa384328a58c9138b5b77ea6172199d07"> 1315</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="classgraphar_1_1_graph_info.html#aa384328a58c9138b5b77ea6172199d07">GraphInfo::VertexInfoNum</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>&#160;  <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(impl_-&gt;vertex_infos_.size());</div>
+<div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>&#160;}</div>
+<div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>&#160; </div>
+<div class="line"><a name="l01319"></a><span class="lineno"><a class="line" href="classgraphar_1_1_graph_info.html#a814f2cdeecf58a308ab886a085991fc4"> 1319</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="classgraphar_1_1_graph_info.html#a814f2cdeecf58a308ab886a085991fc4">GraphInfo::EdgeInfoNum</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>&#160;  <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(impl_-&gt;edge_infos_.size());</div>
+<div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>&#160;}</div>
+<div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>&#160; </div>
+<div class="line"><a name="l01323"></a><span class="lineno"><a class="line" href="classgraphar_1_1_graph_info.html#a3a94e3d0f64a1b4d1b672676940c389f"> 1323</a></span>&#160;<span class="keyword">const</span> std::shared_ptr&lt;VertexInfo&gt; <a class="code" href="classgraphar_1_1_graph_info.html#a3a94e3d0f64a1b4d1b672676940c389f">GraphInfo::GetVertexInfoByIndex</a>(</div>
+<div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>&#160;    <span class="keywordtype">int</span> index)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>&#160;  <span class="keywordflow">if</span> (index &lt; 0 || index &gt;= <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(impl_-&gt;vertex_infos_.size())) {</div>
+<div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
+<div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>&#160;  }</div>
+<div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>&#160;  <span class="keywordflow">return</span> impl_-&gt;vertex_infos_[index];</div>
+<div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>&#160;}</div>
+<div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>&#160; </div>
+<div class="line"><a name="l01331"></a><span class="lineno"><a class="line" href="classgraphar_1_1_graph_info.html#afd61923bd9ff1f5329b1c93ebbcd0278"> 1331</a></span>&#160;<span class="keyword">const</span> std::shared_ptr&lt;EdgeInfo&gt; <a class="code" href="classgraphar_1_1_graph_info.html#afd61923bd9ff1f5329b1c93ebbcd0278">GraphInfo::GetEdgeInfoByIndex</a>(<span class="keywordtype">int</span> index)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>&#160;  <span class="keywordflow">if</span> (index &lt; 0 || index &gt;= <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(impl_-&gt;edge_infos_.size())) {</div>
+<div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
+<div class="line"><a name="l01334"></a><span class="lineno"> 1334</span>&#160;  }</div>
+<div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>&#160;  <span class="keywordflow">return</span> impl_-&gt;edge_infos_[index];</div>
+<div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>&#160;}</div>
+<div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>&#160; </div>
+<div class="line"><a name="l01338"></a><span class="lineno"><a class="line" href="classgraphar_1_1_graph_info.html#a9393d2797ff5d77f66691f84f15007c4"> 1338</a></span>&#160;<span class="keyword">const</span> VertexInfoVector&amp; <a class="code" href="classgraphar_1_1_graph_info.html#a9393d2797ff5d77f66691f84f15007c4">GraphInfo::GetVertexInfos</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>&#160;  <span class="keywordflow">return</span> impl_-&gt;vertex_infos_;</div>
+<div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>&#160;}</div>
+<div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>&#160; </div>
+<div class="line"><a name="l01342"></a><span class="lineno"><a class="line" href="classgraphar_1_1_graph_info.html#a14dbabaec827198ee822070c1077a570"> 1342</a></span>&#160;<span class="keyword">const</span> EdgeInfoVector&amp; <a class="code" href="classgraphar_1_1_graph_info.html#a14dbabaec827198ee822070c1077a570">GraphInfo::GetEdgeInfos</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>&#160;  <span class="keywordflow">return</span> impl_-&gt;edge_infos_;</div>
+<div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>&#160;}</div>
+<div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>&#160; </div>
+<div class="line"><a name="l01346"></a><span class="lineno"><a class="line" href="classgraphar_1_1_graph_info.html#a6e848c7015e3b7d4706ff1ac2ffa6dcd"> 1346</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classgraphar_1_1_graph_info.html#a6e848c7015e3b7d4706ff1ac2ffa6dcd">GraphInfo::IsValidated</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> impl_-&gt;is_validated(); }</div>
+<div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>&#160; </div>
+<div class="line"><a name="l01348"></a><span class="lineno"><a class="line" href="classgraphar_1_1_graph_info.html#a44e38c74dc765a56f8f0d200774d8180"> 1348</a></span>&#160;Result&lt;std::shared_ptr&lt;GraphInfo&gt;&gt; <a class="code" href="classgraphar_1_1_graph_info.html#a44e38c74dc765a56f8f0d200774d8180">GraphInfo::AddVertex</a>(</div>
+<div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>&#160;    std::shared_ptr&lt;VertexInfo&gt; vertex_info)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>&#160;  <span class="keywordflow">if</span> (vertex_info == <span class="keyword">nullptr</span>) {</div>
+<div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#a9ca4be37aae8dfea7e6ef54920e0073f">Status::Invalid</a>(<span class="stringliteral">&quot;vertex info is nullptr&quot;</span>);</div>
+<div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>&#160;  }</div>
+<div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>&#160;  <span class="keywordflow">if</span> (<a class="code" href="classgraphar_1_1_graph_info.html#a0f03270a6ee9c084dab10421cdf69cd5">GetVertexInfoIndex</a>(vertex_info-&gt;GetType()) != -1) {</div>
+<div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#a9ca4be37aae8dfea7e6ef54920e0073f">Status::Invalid</a>(<span class="stringliteral">&quot;vertex info already exists&quot;</span>);</div>
+<div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>&#160;  }</div>
+<div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>&#160;  <span class="keywordflow">return</span> std::make_shared&lt;GraphInfo&gt;(</div>
+<div class="line"><a name="l01357"></a><span class="lineno"> 1357</span>&#160;      impl_-&gt;name_, AddVectorElement(impl_-&gt;vertex_infos_, vertex_info),</div>
+<div class="line"><a name="l01358"></a><span class="lineno"> 1358</span>&#160;      impl_-&gt;edge_infos_, impl_-&gt;labels_, impl_-&gt;prefix_, impl_-&gt;version_);</div>
+<div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>&#160;}</div>
+<div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>&#160; </div>
+<div class="line"><a name="l01361"></a><span class="lineno"><a class="line" href="classgraphar_1_1_graph_info.html#ad64a71966ca197ae14ea21ff8787b769"> 1361</a></span>&#160;Result&lt;std::shared_ptr&lt;GraphInfo&gt;&gt; <a class="code" href="classgraphar_1_1_graph_info.html#ad64a71966ca197ae14ea21ff8787b769">GraphInfo::RemoveVertex</a>(</div>
+<div class="line"><a name="l01362"></a><span class="lineno"> 1362</span>&#160;    std::shared_ptr&lt;VertexInfo&gt; vertex_info)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>&#160;  <span class="keywordflow">if</span> (vertex_info == <span class="keyword">nullptr</span>) {</div>
+<div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#a9ca4be37aae8dfea7e6ef54920e0073f">Status::Invalid</a>(<span class="stringliteral">&quot;vertex info is nullptr&quot;</span>);</div>
+<div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>&#160;  }</div>
+<div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>&#160;  <span class="keywordtype">int</span> idx = <a class="code" href="classgraphar_1_1_graph_info.html#a0f03270a6ee9c084dab10421cdf69cd5">GetVertexInfoIndex</a>(vertex_info-&gt;GetType());</div>
+<div class="line"><a name="l01367"></a><span class="lineno"> 1367</span>&#160;  <span class="keywordflow">if</span> (idx == -1) {</div>
+<div class="line"><a name="l01368"></a><span class="lineno"> 1368</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#a9ca4be37aae8dfea7e6ef54920e0073f">Status::Invalid</a>(<span class="stringliteral">&quot;vertex info not found&quot;</span>);</div>
+<div class="line"><a name="l01369"></a><span class="lineno"> 1369</span>&#160;  }</div>
+<div class="line"><a name="l01370"></a><span class="lineno"> 1370</span>&#160;  <span class="keywordflow">return</span> std::make_shared&lt;GraphInfo&gt;(</div>
+<div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>&#160;      impl_-&gt;name_,</div>
+<div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>&#160;      RemoveVectorElement(impl_-&gt;vertex_infos_, <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(idx)),</div>
+<div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>&#160;      impl_-&gt;edge_infos_, impl_-&gt;labels_, impl_-&gt;prefix_, impl_-&gt;version_,</div>
+<div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>&#160;      impl_-&gt;extra_info_);</div>
+<div class="line"><a name="l01375"></a><span class="lineno"> 1375</span>&#160;}</div>
+<div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>&#160; </div>
+<div class="line"><a name="l01377"></a><span class="lineno"><a class="line" href="classgraphar_1_1_graph_info.html#a8fdf1ff0ec57e3ca2e66dd4366e390aa"> 1377</a></span>&#160;Result&lt;std::shared_ptr&lt;GraphInfo&gt;&gt; <a class="code" href="classgraphar_1_1_graph_info.html#a8fdf1ff0ec57e3ca2e66dd4366e390aa">GraphInfo::AddEdge</a>(</div>
+<div class="line"><a name="l01378"></a><span class="lineno"> 1378</span>&#160;    std::shared_ptr&lt;EdgeInfo&gt; edge_info)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01379"></a><span class="lineno"> 1379</span>&#160;  <span class="keywordflow">if</span> (edge_info == <span class="keyword">nullptr</span>) {</div>
+<div class="line"><a name="l01380"></a><span class="lineno"> 1380</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#a9ca4be37aae8dfea7e6ef54920e0073f">Status::Invalid</a>(<span class="stringliteral">&quot;edge info is nullptr&quot;</span>);</div>
+<div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>&#160;  }</div>
+<div class="line"><a name="l01382"></a><span class="lineno"> 1382</span>&#160;  <span class="keywordflow">if</span> (<a class="code" href="classgraphar_1_1_graph_info.html#aa2ca1614d499facc76927b5de733b503">GetEdgeInfoIndex</a>(edge_info-&gt;GetSrcType(), edge_info-&gt;GetEdgeType(),</div>
+<div class="line"><a name="l01383"></a><span class="lineno"> 1383</span>&#160;                       edge_info-&gt;GetDstType()) != -1) {</div>
+<div class="line"><a name="l01384"></a><span class="lineno"> 1384</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#a9ca4be37aae8dfea7e6ef54920e0073f">Status::Invalid</a>(<span class="stringliteral">&quot;edge info already exists&quot;</span>);</div>
+<div class="line"><a name="l01385"></a><span class="lineno"> 1385</span>&#160;  }</div>
+<div class="line"><a name="l01386"></a><span class="lineno"> 1386</span>&#160;  <span class="keywordflow">return</span> std::make_shared&lt;GraphInfo&gt;(</div>
+<div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>&#160;      impl_-&gt;name_, impl_-&gt;vertex_infos_,</div>
+<div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>&#160;      AddVectorElement(impl_-&gt;edge_infos_, edge_info), impl_-&gt;labels_,</div>
+<div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>&#160;      impl_-&gt;prefix_, impl_-&gt;version_);</div>
+<div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>&#160;}</div>
+<div class="line"><a name="l01391"></a><span class="lineno"> 1391</span>&#160; </div>
+<div class="line"><a name="l01392"></a><span class="lineno"><a class="line" href="classgraphar_1_1_graph_info.html#acc0e018222ae59e749a52b3678e6529a"> 1392</a></span>&#160;Result&lt;std::shared_ptr&lt;GraphInfo&gt;&gt; <a class="code" href="classgraphar_1_1_graph_info.html#acc0e018222ae59e749a52b3678e6529a">GraphInfo::RemoveEdge</a>(</div>
+<div class="line"><a name="l01393"></a><span class="lineno"> 1393</span>&#160;    std::shared_ptr&lt;EdgeInfo&gt; edge_info)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01394"></a><span class="lineno"> 1394</span>&#160;  <span class="keywordflow">if</span> (edge_info == <span class="keyword">nullptr</span>) {</div>
+<div class="line"><a name="l01395"></a><span class="lineno"> 1395</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#a9ca4be37aae8dfea7e6ef54920e0073f">Status::Invalid</a>(<span class="stringliteral">&quot;edge info is nullptr&quot;</span>);</div>
+<div class="line"><a name="l01396"></a><span class="lineno"> 1396</span>&#160;  }</div>
+<div class="line"><a name="l01397"></a><span class="lineno"> 1397</span>&#160;  <span class="keywordtype">int</span> idx = <a class="code" href="classgraphar_1_1_graph_info.html#aa2ca1614d499facc76927b5de733b503">GetEdgeInfoIndex</a>(edge_info-&gt;GetSrcType(), edge_info-&gt;GetEdgeType(),</div>
+<div class="line"><a name="l01398"></a><span class="lineno"> 1398</span>&#160;                             edge_info-&gt;GetDstType());</div>
+<div class="line"><a name="l01399"></a><span class="lineno"> 1399</span>&#160;  <span class="keywordflow">if</span> (idx == -1) {</div>
+<div class="line"><a name="l01400"></a><span class="lineno"> 1400</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#a9ca4be37aae8dfea7e6ef54920e0073f">Status::Invalid</a>(<span class="stringliteral">&quot;edge info not found&quot;</span>);</div>
+<div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>&#160;  }</div>
+<div class="line"><a name="l01402"></a><span class="lineno"> 1402</span>&#160;  <span class="keywordflow">return</span> std::make_shared&lt;GraphInfo&gt;(</div>
+<div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>&#160;      impl_-&gt;name_, impl_-&gt;vertex_infos_,</div>
+<div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>&#160;      RemoveVectorElement(impl_-&gt;edge_infos_, <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(idx)),</div>
+<div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>&#160;      impl_-&gt;labels_, impl_-&gt;prefix_, impl_-&gt;version_, impl_-&gt;extra_info_);</div>
+<div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>&#160;}</div>
+<div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>&#160; </div>
+<div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>&#160;std::shared_ptr&lt;GraphInfo&gt; CreateGraphInfo(</div>
+<div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>&#160;    <span class="keyword">const</span> std::string&amp; name, <span class="keyword">const</span> VertexInfoVector&amp; vertex_infos,</div>
+<div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>&#160;    <span class="keyword">const</span> EdgeInfoVector&amp; edge_infos, <span class="keyword">const</span> std::vector&lt;std::string&gt;&amp; labels,</div>
+<div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>&#160;    <span class="keyword">const</span> std::string&amp; prefix, std::shared_ptr&lt;const InfoVersion&gt; version,</div>
+<div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>&#160;    <span class="keyword">const</span> std::unordered_map&lt;std::string, std::string&gt;&amp; extra_info) {</div>
+<div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>&#160;  <span class="keywordflow">if</span> (name.empty()) {</div>
+<div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
+<div class="line"><a name="l01415"></a><span class="lineno"> 1415</span>&#160;  }</div>
+<div class="line"><a name="l01416"></a><span class="lineno"> 1416</span>&#160;  <span class="keywordflow">return</span> std::make_shared&lt;GraphInfo&gt;(name, vertex_infos, edge_infos, labels,</div>
+<div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>&#160;                                     prefix, version, extra_info);</div>
+<div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>&#160;}</div>
+<div class="line"><a name="l01419"></a><span class="lineno"> 1419</span>&#160; </div>
+<div class="line"><a name="l01420"></a><span class="lineno"><a class="line" href="classgraphar_1_1_graph_info.html#a63dbd61d6575fe783b3287f391f651ed"> 1420</a></span>&#160;Result&lt;std::shared_ptr&lt;GraphInfo&gt;&gt; <a class="code" href="classgraphar_1_1_graph_info.html#a63dbd61d6575fe783b3287f391f651ed">GraphInfo::Load</a>(<span class="keyword">const</span> std::string&amp; path) {</div>
+<div class="line"><a name="l01421"></a><span class="lineno"> 1421</span>&#160;  std::string no_url_path;</div>
+<div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>&#160;  GAR_ASSIGN_OR_RAISE(<span class="keyword">auto</span> fs, FileSystemFromUriOrPath(path, &amp;no_url_path));</div>
+<div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>&#160;  GAR_ASSIGN_OR_RAISE(<span class="keyword">auto</span> yaml_content,</div>
+<div class="line"><a name="l01424"></a><span class="lineno"> 1424</span>&#160;                      fs-&gt;ReadFileToValue&lt;std::string&gt;(no_url_path));</div>
+<div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>&#160;  GAR_ASSIGN_OR_RAISE(<span class="keyword">auto</span> graph_meta, <a class="code" href="classgraphar_1_1_yaml.html#a2fff6ba5eaf3e59b489d015f10013179">Yaml::Load</a>(yaml_content));</div>
+<div class="line"><a name="l01426"></a><span class="lineno"> 1426</span>&#160;  std::string default_name = <span class="stringliteral">&quot;graph&quot;</span>;</div>
+<div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>&#160;  std::string default_prefix = PathToDirectory(path);</div>
+<div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>&#160;  no_url_path = PathToDirectory(no_url_path);</div>
+<div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>&#160;  <span class="keywordflow">return</span> ConstructGraphInfo(graph_meta, default_name, default_prefix, fs,</div>
+<div class="line"><a name="l01430"></a><span class="lineno"> 1430</span>&#160;                            no_url_path);</div>
+<div class="line"><a name="l01431"></a><span class="lineno"> 1431</span>&#160;}</div>
+<div class="line"><a name="l01432"></a><span class="lineno"> 1432</span>&#160; </div>
+<div class="line"><a name="l01433"></a><span class="lineno"><a class="line" href="classgraphar_1_1_graph_info.html#acf6ef4ce04b70184f596be59dbb58318"> 1433</a></span>&#160;Result&lt;std::shared_ptr&lt;GraphInfo&gt;&gt; <a class="code" href="classgraphar_1_1_graph_info.html#a63dbd61d6575fe783b3287f391f651ed">GraphInfo::Load</a>(</div>
+<div class="line"><a name="l01434"></a><span class="lineno"> 1434</span>&#160;    <span class="keyword">const</span> std::string&amp; input, <span class="keyword">const</span> std::string&amp; relative_location) {</div>
+<div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>&#160;  GAR_ASSIGN_OR_RAISE(<span class="keyword">auto</span> graph_meta, <a class="code" href="classgraphar_1_1_yaml.html#a2fff6ba5eaf3e59b489d015f10013179">Yaml::Load</a>(input));</div>
+<div class="line"><a name="l01436"></a><span class="lineno"> 1436</span>&#160;  std::string default_name = <span class="stringliteral">&quot;graph&quot;</span>;</div>
+<div class="line"><a name="l01437"></a><span class="lineno"> 1437</span>&#160;  std::string default_prefix =</div>
+<div class="line"><a name="l01438"></a><span class="lineno"> 1438</span>&#160;      relative_location;  <span class="comment">// default chunk file prefix is relative location</span></div>
+<div class="line"><a name="l01439"></a><span class="lineno"> 1439</span>&#160;  std::string no_url_path;</div>
+<div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>&#160;  GAR_ASSIGN_OR_RAISE(<span class="keyword">auto</span> fs,</div>
+<div class="line"><a name="l01441"></a><span class="lineno"> 1441</span>&#160;                      FileSystemFromUriOrPath(relative_location, &amp;no_url_path));</div>
+<div class="line"><a name="l01442"></a><span class="lineno"> 1442</span>&#160;  <span class="keywordflow">return</span> ConstructGraphInfo(graph_meta, default_name, default_prefix, fs,</div>
+<div class="line"><a name="l01443"></a><span class="lineno"> 1443</span>&#160;                            no_url_path);</div>
+<div class="line"><a name="l01444"></a><span class="lineno"> 1444</span>&#160;}</div>
+<div class="line"><a name="l01445"></a><span class="lineno"> 1445</span>&#160; </div>
+<div class="line"><a name="l01446"></a><span class="lineno"><a class="line" href="classgraphar_1_1_graph_info.html#a71646413e64620af1ca83f404e7150ea"> 1446</a></span>&#160;Result&lt;std::string&gt; <a class="code" href="classgraphar_1_1_graph_info.html#a71646413e64620af1ca83f404e7150ea">GraphInfo::Dump</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>&#160;  <span class="keywordflow">if</span> (!<a class="code" href="classgraphar_1_1_graph_info.html#a6e848c7015e3b7d4706ff1ac2ffa6dcd">IsValidated</a>()) {</div>
+<div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#a9ca4be37aae8dfea7e6ef54920e0073f">Status::Invalid</a>(<span class="stringliteral">&quot;The graph info is not validated.&quot;</span>);</div>
+<div class="line"><a name="l01449"></a><span class="lineno"> 1449</span>&#160;  }</div>
+<div class="line"><a name="l01450"></a><span class="lineno"> 1450</span>&#160;  ::Yaml::Node node;</div>
+<div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>&#160;  std::string dump_string;</div>
+<div class="line"><a name="l01452"></a><span class="lineno"> 1452</span>&#160;  <span class="keywordflow">try</span> {</div>
+<div class="line"><a name="l01453"></a><span class="lineno"> 1453</span>&#160;    node[<span class="stringliteral">&quot;name&quot;</span>] = impl_-&gt;name_;</div>
+<div class="line"><a name="l01454"></a><span class="lineno"> 1454</span>&#160;    node[<span class="stringliteral">&quot;prefix&quot;</span>] = impl_-&gt;prefix_;</div>
+<div class="line"><a name="l01455"></a><span class="lineno"> 1455</span>&#160;    node[<span class="stringliteral">&quot;vertices&quot;</span>];</div>
+<div class="line"><a name="l01456"></a><span class="lineno"> 1456</span>&#160;    node[<span class="stringliteral">&quot;edges&quot;</span>];</div>
+<div class="line"><a name="l01457"></a><span class="lineno"> 1457</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; vertex : <a class="code" href="classgraphar_1_1_graph_info.html#a9393d2797ff5d77f66691f84f15007c4">GetVertexInfos</a>()) {</div>
+<div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>&#160;      node[<span class="stringliteral">&quot;vertices&quot;</span>].PushBack();</div>
+<div class="line"><a name="l01459"></a><span class="lineno"> 1459</span>&#160;      node[<span class="stringliteral">&quot;vertices&quot;</span>][node[<span class="stringliteral">&quot;vertices&quot;</span>].Size() - 1] =</div>
+<div class="line"><a name="l01460"></a><span class="lineno"> 1460</span>&#160;          vertex-&gt;GetType() + <span class="stringliteral">&quot;.vertex.yaml&quot;</span>;</div>
+<div class="line"><a name="l01461"></a><span class="lineno"> 1461</span>&#160;    }</div>
+<div class="line"><a name="l01462"></a><span class="lineno"> 1462</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; edge : <a class="code" href="classgraphar_1_1_graph_info.html#a14dbabaec827198ee822070c1077a570">GetEdgeInfos</a>()) {</div>
+<div class="line"><a name="l01463"></a><span class="lineno"> 1463</span>&#160;      node[<span class="stringliteral">&quot;edges&quot;</span>].PushBack();</div>
+<div class="line"><a name="l01464"></a><span class="lineno"> 1464</span>&#160;      node[<span class="stringliteral">&quot;edges&quot;</span>][node[<span class="stringliteral">&quot;edges&quot;</span>].Size() - 1] =</div>
+<div class="line"><a name="l01465"></a><span class="lineno"> 1465</span>&#160;          ConcatEdgeTriple(edge-&gt;GetSrcType(), edge-&gt;GetEdgeType(),</div>
+<div class="line"><a name="l01466"></a><span class="lineno"> 1466</span>&#160;                           edge-&gt;GetDstType()) +</div>
+<div class="line"><a name="l01467"></a><span class="lineno"> 1467</span>&#160;          <span class="stringliteral">&quot;.edge.yaml&quot;</span>;</div>
+<div class="line"><a name="l01468"></a><span class="lineno"> 1468</span>&#160;    }</div>
+<div class="line"><a name="l01469"></a><span class="lineno"> 1469</span>&#160;    <span class="keywordflow">if</span> (impl_-&gt;labels_.size() &gt; 0) {</div>
+<div class="line"><a name="l01470"></a><span class="lineno"> 1470</span>&#160;      node[<span class="stringliteral">&quot;labels&quot;</span>];</div>
+<div class="line"><a name="l01471"></a><span class="lineno"> 1471</span>&#160;      <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; label : impl_-&gt;labels_) {</div>
+<div class="line"><a name="l01472"></a><span class="lineno"> 1472</span>&#160;        node[<span class="stringliteral">&quot;labels&quot;</span>].PushBack();</div>
+<div class="line"><a name="l01473"></a><span class="lineno"> 1473</span>&#160;        node[<span class="stringliteral">&quot;labels&quot;</span>][node[<span class="stringliteral">&quot;labels&quot;</span>].Size() - 1] = label;</div>
+<div class="line"><a name="l01474"></a><span class="lineno"> 1474</span>&#160;      }</div>
+<div class="line"><a name="l01475"></a><span class="lineno"> 1475</span>&#160;    }</div>
+<div class="line"><a name="l01476"></a><span class="lineno"> 1476</span>&#160;    <span class="keywordflow">if</span> (impl_-&gt;version_ != <span class="keyword">nullptr</span>) {</div>
+<div class="line"><a name="l01477"></a><span class="lineno"> 1477</span>&#160;      node[<span class="stringliteral">&quot;version&quot;</span>] = impl_-&gt;version_-&gt;ToString();</div>
+<div class="line"><a name="l01478"></a><span class="lineno"> 1478</span>&#160;    }</div>
+<div class="line"><a name="l01479"></a><span class="lineno"> 1479</span>&#160;    <span class="keywordflow">if</span> (impl_-&gt;extra_info_.size() &gt; 0) {</div>
+<div class="line"><a name="l01480"></a><span class="lineno"> 1480</span>&#160;      node[<span class="stringliteral">&quot;extra_info&quot;</span>];</div>
+<div class="line"><a name="l01481"></a><span class="lineno"> 1481</span>&#160;      <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; pair : impl_-&gt;extra_info_) {</div>
+<div class="line"><a name="l01482"></a><span class="lineno"> 1482</span>&#160;        ::Yaml::Node extra_info_node;</div>
+<div class="line"><a name="l01483"></a><span class="lineno"> 1483</span>&#160;        extra_info_node[<span class="stringliteral">&quot;key&quot;</span>] = pair.first;</div>
+<div class="line"><a name="l01484"></a><span class="lineno"> 1484</span>&#160;        extra_info_node[<span class="stringliteral">&quot;value&quot;</span>] = pair.second;</div>
+<div class="line"><a name="l01485"></a><span class="lineno"> 1485</span>&#160;        node[<span class="stringliteral">&quot;extra_info&quot;</span>].PushBack();</div>
+<div class="line"><a name="l01486"></a><span class="lineno"> 1486</span>&#160;        node[<span class="stringliteral">&quot;extra_info&quot;</span>][node[<span class="stringliteral">&quot;extra_info&quot;</span>].Size() - 1] = extra_info_node;</div>
+<div class="line"><a name="l01487"></a><span class="lineno"> 1487</span>&#160;      }</div>
+<div class="line"><a name="l01488"></a><span class="lineno"> 1488</span>&#160;    }</div>
+<div class="line"><a name="l01489"></a><span class="lineno"> 1489</span>&#160;    ::Yaml::Serialize(node, dump_string);</div>
+<div class="line"><a name="l01490"></a><span class="lineno"> 1490</span>&#160;  } <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception&amp; e) {</div>
+<div class="line"><a name="l01491"></a><span class="lineno"> 1491</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#a9ca4be37aae8dfea7e6ef54920e0073f">Status::Invalid</a>(<span class="stringliteral">&quot;Failed to dump graph info: &quot;</span>, e.what());</div>
+<div class="line"><a name="l01492"></a><span class="lineno"> 1492</span>&#160;  }</div>
+<div class="line"><a name="l01493"></a><span class="lineno"> 1493</span>&#160;  <span class="keywordflow">return</span> dump_string;</div>
+<div class="line"><a name="l01494"></a><span class="lineno"> 1494</span>&#160;}</div>
+<div class="line"><a name="l01495"></a><span class="lineno"> 1495</span>&#160; </div>
+<div class="line"><a name="l01496"></a><span class="lineno"><a class="line" href="classgraphar_1_1_graph_info.html#a339f08f5a1427aadc91d30d41dccced3"> 1496</a></span>&#160;<a class="code" href="classgraphar_1_1_status.html">Status</a> <a class="code" href="classgraphar_1_1_graph_info.html#a339f08f5a1427aadc91d30d41dccced3">GraphInfo::Save</a>(<span class="keyword">const</span> std::string&amp; path)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01497"></a><span class="lineno"> 1497</span>&#160;  std::string no_url_path;</div>
+<div class="line"><a name="l01498"></a><span class="lineno"> 1498</span>&#160;  GAR_ASSIGN_OR_RAISE(<span class="keyword">auto</span> fs, FileSystemFromUriOrPath(path, &amp;no_url_path));</div>
+<div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>&#160;  GAR_ASSIGN_OR_RAISE(<span class="keyword">auto</span> yaml_content, this-&gt;<a class="code" href="classgraphar_1_1_graph_info.html#a71646413e64620af1ca83f404e7150ea">Dump</a>());</div>
+<div class="line"><a name="l01500"></a><span class="lineno"> 1500</span>&#160;  <span class="keywordflow">return</span> fs-&gt;WriteValueToFile(yaml_content, no_url_path);</div>
+<div class="line"><a name="l01501"></a><span class="lineno"> 1501</span>&#160;}</div>
+<div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>&#160; </div>
+<div class="line"><a name="l01503"></a><span class="lineno"> 1503</span>&#160;}  <span class="comment">// namespace graphar</span></div>
+<div class="ttc" id="aclassgraphar_1_1_adjacent_list_html_a592ba95843997b321f5545e950f03a57"><div class="ttname"><a href="classgraphar_1_1_adjacent_list.html#a592ba95843997b321f5545e950f03a57">graphar::AdjacentList::IsValidated</a></div><div class="ttdeci">bool IsValidated() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00191">graph_info.cc:191</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_adjacent_list_html_ab31cbdbaae74305f7bf3ffbd76c93efc"><div class="ttname"><a href="classgraphar_1_1_adjacent_list.html#ab31cbdbaae74305f7bf3ffbd76c93efc">graphar::AdjacentList::AdjacentList</a></div><div class="ttdeci">AdjacentList(AdjListType type, FileType file_type, const std::string &amp;prefix=&quot;&quot;)</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00183">graph_info.cc:183</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_edge_info_1_1_impl_html"><div class="ttname"><a href="classgraphar_1_1_edge_info_1_1_impl.html">graphar::EdgeInfo::Impl</a></div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00573">graph_info.cc:573</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a03c9b4f4b0edcf47f2e5746e8f9f6db0"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a03c9b4f4b0edcf47f2e5746e8f9f6db0">graphar::EdgeInfo::GetEdgeType</a></div><div class="ttdeci">const std::string &amp; GetEdgeType() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00694">graph_info.cc:694</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a0ac67e1cf3b3fa79b6fcbc054869d0e5"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a0ac67e1cf3b3fa79b6fcbc054869d0e5">graphar::EdgeInfo::Load</a></div><div class="ttdeci">static Result&lt; std::shared_ptr&lt; EdgeInfo &gt; &gt; Load(std::shared_ptr&lt; Yaml &gt; yaml)</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00966">graph_info.cc:966</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a0eb9f0ff282c73f5c90a8c3940f1929e"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a0eb9f0ff282c73f5c90a8c3940f1929e">graphar::EdgeInfo::GetAdjListFilePath</a></div><div class="ttdeci">Result&lt; std::string &gt; GetAdjListFilePath(IdType vertex_chunk_index, IdType edge_chunk_index, AdjListType adj_list_type) const</div><div class="ttdoc">Get the file path of adj list topology chunk.</div><div class="ttdef"><b>Definition: [...]
+<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a1e95f986bd8c5191f438705b195191e3"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a1e95f986bd8c5191f438705b195191e3">graphar::EdgeInfo::Save</a></div><div class="ttdeci">Status Save(const std::string &amp;file_name) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l01107">graph_info.cc:1107</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a264853429b84060bbe36c671d5bc8963"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a264853429b84060bbe36c671d5bc8963">graphar::EdgeInfo::RemovePropertyGroup</a></div><div class="ttdeci">Result&lt; std::shared_ptr&lt; EdgeInfo &gt; &gt; RemovePropertyGroup(std::shared_ptr&lt; PropertyGroup &gt; property_group) const</div><div class="ttdoc">Removes a property group from the EdgeInfo instance and returns a new EdgeInfo.</div [...]
+<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a37fa8536c627a5e5f529e8ee6d3d7506"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a37fa8536c627a5e5f529e8ee6d3d7506">graphar::EdgeInfo::GetPropertyType</a></div><div class="ttdeci">Result&lt; std::shared_ptr&lt; DataType &gt; &gt; GetPropertyType(const std::string &amp;property_name) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00843">graph_info.cc:843</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a3dca57726506375cab4fc43fdef2914f"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a3dca57726506375cab4fc43fdef2914f">graphar::EdgeInfo::IsValidated</a></div><div class="ttdeci">bool IsValidated() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00947">graph_info.cc:947</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a4ec8810a54411f9a8aba35b2faf29acb"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a4ec8810a54411f9a8aba35b2faf29acb">graphar::EdgeInfo::GetPrefix</a></div><div class="ttdeci">const std::string &amp; GetPrefix() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00704">graph_info.cc:704</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a4f2c7fedc68dce8f1c7fb90eede9906f"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a4f2c7fedc68dce8f1c7fb90eede9906f">graphar::EdgeInfo::GetEdgesNumFilePath</a></div><div class="ttdeci">Result&lt; std::string &gt; GetEdgesNumFilePath(IdType vertex_chunk_index, AdjListType adj_list_type) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00774">graph_info.cc:774</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a55004cedc30fcb0fa94adf246dcc2702"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a55004cedc30fcb0fa94adf246dcc2702">graphar::EdgeInfo::GetPropertyGroupPathPrefix</a></div><div class="ttdeci">Result&lt; std::string &gt; GetPropertyGroupPathPrefix(const std::shared_ptr&lt; PropertyGroup &gt; &amp;property_group, AdjListType adj_list_type) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.htm [...]
+<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a5bd430ba21f5dfb230b978e03c4020ef"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a5bd430ba21f5dfb230b978e03c4020ef">graphar::EdgeInfo::IsPrimaryKey</a></div><div class="ttdeci">bool IsPrimaryKey(const std::string &amp;property_name) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00852">graph_info.cc:852</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a615fe3ed78f35af9aef598287cb89a27"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a615fe3ed78f35af9aef598287cb89a27">graphar::EdgeInfo::GetAdjListOffsetFilePath</a></div><div class="ttdeci">Result&lt; std::string &gt; GetAdjListOffsetFilePath(IdType vertex_chunk_index, AdjListType adj_list_type) const</div><div class="ttdoc">Get the adjacency list offset chunk file path of vertex chunk the offset chunks is aligned with t [...]
+<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a62c2300185c0655df9b44db39b0a399b"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a62c2300185c0655df9b44db39b0a399b">graphar::EdgeInfo::GetChunkSize</a></div><div class="ttdeci">IdType GetChunkSize() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00698">graph_info.cc:698</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a69182fa8d45bb0e7d4ac230adb1239b2"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a69182fa8d45bb0e7d4ac230adb1239b2">graphar::EdgeInfo::HasProperty</a></div><div class="ttdeci">bool HasProperty(const std::string &amp;property_name) const</div><div class="ttdoc">Returns whether the edge info contains the given property.</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00717">graph_info.cc:7 [...]
+<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a6e5b4fdc98d8399564396fb63955c62a"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a6e5b4fdc98d8399564396fb63955c62a">graphar::EdgeInfo::AddAdjacentList</a></div><div class="ttdeci">Result&lt; std::shared_ptr&lt; EdgeInfo &gt; &gt; AddAdjacentList(std::shared_ptr&lt; AdjacentList &gt; adj_list) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00868">graph_info.cc:868</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a7db36496a4cf0eb517b463de5caa125f"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a7db36496a4cf0eb517b463de5caa125f">graphar::EdgeInfo::RemoveAdjacentList</a></div><div class="ttdeci">Result&lt; std::shared_ptr&lt; EdgeInfo &gt; &gt; RemoveAdjacentList(std::shared_ptr&lt; AdjacentList &gt; adj_list) const</div><div class="ttdoc">Removes an adjacency list from the EdgeInfo instance and returns a new EdgeInfo.</div><div cl [...]
+<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a80004230ddfbc892995732ea59993a27"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a80004230ddfbc892995732ea59993a27">graphar::EdgeInfo::Dump</a></div><div class="ttdeci">Result&lt; std::string &gt; Dump() const noexcept</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l01052">graph_info.cc:1052</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a80b00d930f22870d00331a639c9cc26e"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a80b00d930f22870d00331a639c9cc26e">graphar::EdgeInfo::IsNullableKey</a></div><div class="ttdeci">bool IsNullableKey(const std::string &amp;property_name) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00860">graph_info.cc:860</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a8551959066b19885b9ce15262b5cb3db"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a8551959066b19885b9ce15262b5cb3db">graphar::EdgeInfo::GetPropertyGroupByIndex</a></div><div class="ttdeci">std::shared_ptr&lt; PropertyGroup &gt; GetPropertyGroupByIndex(int index) const</div><div class="ttdoc">Get the property group at the specified index.</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l007 [...]
+<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a857bb686e5d7f579ac0e2a889a53f829"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a857bb686e5d7f579ac0e2a889a53f829">graphar::EdgeInfo::HasPropertyGroup</a></div><div class="ttdeci">bool HasPropertyGroup(const std::shared_ptr&lt; PropertyGroup &gt; &amp;property_group) const</div><div class="ttdoc">Returns whether the edge info contains the given property group.</div><div class="ttdef"><b>Definition:</b> <a href="graph__ [...]
+<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a9440bef05f4fa689662f26a9ef0117c1"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a9440bef05f4fa689662f26a9ef0117c1">graphar::EdgeInfo::version</a></div><div class="ttdeci">const std::shared_ptr&lt; const InfoVersion &gt; &amp; version() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00708">graph_info.cc:708</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a9620f838addfdcb892b30e80e2cc4239"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a9620f838addfdcb892b30e80e2cc4239">graphar::EdgeInfo::AddPropertyGroup</a></div><div class="ttdeci">Result&lt; std::shared_ptr&lt; EdgeInfo &gt; &gt; AddPropertyGroup(std::shared_ptr&lt; PropertyGroup &gt; property_group) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00906">graph_info.cc:906</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a994023f50f2f952cc1361b0f9928dec4"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a994023f50f2f952cc1361b0f9928dec4">graphar::EdgeInfo::GetSrcType</a></div><div class="ttdeci">const std::string &amp; GetSrcType() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00692">graph_info.cc:692</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_edge_info_html_aaa6633dc8136cec806cbcf42c2cf136d"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#aaa6633dc8136cec806cbcf42c2cf136d">graphar::EdgeInfo::HasAdjacentListType</a></div><div class="ttdeci">bool HasAdjacentListType(AdjListType adj_list_type) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00712">graph_info.cc:712</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_edge_info_html_aab2032669c9e9dcf11275fdd4cb2c1fa"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#aab2032669c9e9dcf11275fdd4cb2c1fa">graphar::EdgeInfo::GetOffsetPathPrefix</a></div><div class="ttdeci">Result&lt; std::string &gt; GetOffsetPathPrefix(AdjListType adj_list_type) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00808">graph_info.cc:808</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_edge_info_html_aad31af465d41c026a35c20828915922e"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#aad31af465d41c026a35c20828915922e">graphar::EdgeInfo::IsDirected</a></div><div class="ttdeci">bool IsDirected() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00706">graph_info.cc:706</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_edge_info_html_ab39f63f0aa7284c510a7e0d61b0942d3"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#ab39f63f0aa7284c510a7e0d61b0942d3">graphar::EdgeInfo::GetAdjListPathPrefix</a></div><div class="ttdeci">Result&lt; std::string &gt; GetAdjListPathPrefix(AdjListType adj_list_type) const</div><div class="ttdoc">Get the path prefix of the adjacency list topology chunk for the given adjacency list type.</div><div class="ttdef"><b>Definition:</ [...]
+<div class="ttc" id="aclassgraphar_1_1_edge_info_html_ab3c32f3112dcf08304676eeb95545b55"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#ab3c32f3112dcf08304676eeb95545b55">graphar::EdgeInfo::EdgeInfo</a></div><div class="ttdeci">EdgeInfo(const std::string &amp;src_type, const std::string &amp;edge_type, const std::string &amp;dst_type, IdType chunk_size, IdType src_chunk_size, IdType dst_chunk_size, bool directed, const AdjacentListVector &amp;adjacent_lists, const PropertyG [...]
+<div class="ttc" id="aclassgraphar_1_1_edge_info_html_abe0fc6672a3fbb5fbd0b5e8775cb8dac"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#abe0fc6672a3fbb5fbd0b5e8775cb8dac">graphar::EdgeInfo::GetDstChunkSize</a></div><div class="ttdeci">IdType GetDstChunkSize() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00702">graph_info.cc:702</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_edge_info_html_abfcba5aed61cdfaf91f98e649b370722"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#abfcba5aed61cdfaf91f98e649b370722">graphar::EdgeInfo::GetPropertyFilePath</a></div><div class="ttdeci">Result&lt; std::string &gt; GetPropertyFilePath(const std::shared_ptr&lt; PropertyGroup &gt; &amp;property_group, AdjListType adj_list_type, IdType vertex_chunk_index, IdType edge_chunk_index) const</div><div class="ttdoc">Get the chunk fi [...]
+<div class="ttc" id="aclassgraphar_1_1_edge_info_html_ac03180737adf29c79196bbe729b3c929"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#ac03180737adf29c79196bbe729b3c929">graphar::EdgeInfo::GetDstType</a></div><div class="ttdeci">const std::string &amp; GetDstType() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00696">graph_info.cc:696</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_edge_info_html_ac07ad975e8ecbdb779038388e3def59e"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#ac07ad975e8ecbdb779038388e3def59e">graphar::EdgeInfo::GetSrcChunkSize</a></div><div class="ttdeci">IdType GetSrcChunkSize() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00700">graph_info.cc:700</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_edge_info_html_ad56107001dcbadac71ae8063cd25b58f"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#ad56107001dcbadac71ae8063cd25b58f">graphar::EdgeInfo::GetPropertyGroups</a></div><div class="ttdeci">const PropertyGroupVector &amp; GetPropertyGroups() const</div><div class="ttdoc">Get the property groups.</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00748">graph_info.cc:748</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_edge_info_html_aec1a622c83b14d62b26e7143850a3cf1"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#aec1a622c83b14d62b26e7143850a3cf1">graphar::EdgeInfo::GetVerticesNumFilePath</a></div><div class="ttdeci">Result&lt; std::string &gt; GetVerticesNumFilePath(AdjListType adj_list_type) const</div><div class="ttdoc">Get the file path for the number of vertices.</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l0 [...]
+<div class="ttc" id="aclassgraphar_1_1_edge_info_html_aec1bdf018d5b209f722dbf293ef14dd6"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#aec1bdf018d5b209f722dbf293ef14dd6">graphar::EdgeInfo::GetPropertyGroup</a></div><div class="ttdeci">std::shared_ptr&lt; PropertyGroup &gt; GetPropertyGroup(const std::string &amp;property) const</div><div class="ttdoc">Get the property group containing the given property.</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_s [...]
+<div class="ttc" id="aclassgraphar_1_1_edge_info_html_aee914f2c4adf773c048daed0e93dbe32"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#aee914f2c4adf773c048daed0e93dbe32">graphar::EdgeInfo::PropertyGroupNum</a></div><div class="ttdeci">int PropertyGroupNum() const</div><div class="ttdoc">Get the number of property groups.</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00744">graph_info.cc:744</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_graph_info_1_1_impl_html"><div class="ttname"><a href="classgraphar_1_1_graph_info_1_1_impl.html">graphar::GraphInfo::Impl</a></div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l01204">graph_info.cc:1204</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_graph_info_html_a0f03270a6ee9c084dab10421cdf69cd5"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#a0f03270a6ee9c084dab10421cdf69cd5">graphar::GraphInfo::GetVertexInfoIndex</a></div><div class="ttdeci">int GetVertexInfoIndex(const std::string &amp;type) const</div><div class="ttdoc">Get the vertex info index with the given type.</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l01297">graph_info.cc:1297</ [...]
+<div class="ttc" id="aclassgraphar_1_1_graph_info_html_a14dbabaec827198ee822070c1077a570"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#a14dbabaec827198ee822070c1077a570">graphar::GraphInfo::GetEdgeInfos</a></div><div class="ttdeci">const EdgeInfoVector &amp; GetEdgeInfos() const</div><div class="ttdoc">Get the edge infos of graph info.</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l01342">graph_info.cc:1342</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_graph_info_html_a1b473deea923f7b2a57c339dc7e51192"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#a1b473deea923f7b2a57c339dc7e51192">graphar::GraphInfo::GraphInfo</a></div><div class="ttdeci">GraphInfo(const std::string &amp;graph_name, VertexInfoVector vertex_infos, EdgeInfoVector edge_infos, const std::vector&lt; std::string &gt; &amp;labels={}, const std::string &amp;prefix=&quot;./&quot;, std::shared_ptr&lt; const InfoVersion &gt; [...]
+<div class="ttc" id="aclassgraphar_1_1_graph_info_html_a339f08f5a1427aadc91d30d41dccced3"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#a339f08f5a1427aadc91d30d41dccced3">graphar::GraphInfo::Save</a></div><div class="ttdeci">Status Save(const std::string &amp;path) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l01496">graph_info.cc:1496</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_graph_info_html_a3a94e3d0f64a1b4d1b672676940c389f"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#a3a94e3d0f64a1b4d1b672676940c389f">graphar::GraphInfo::GetVertexInfoByIndex</a></div><div class="ttdeci">const std::shared_ptr&lt; VertexInfo &gt; GetVertexInfoByIndex(int index) const</div><div class="ttdoc">Get the vertex info at the specified index.</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l01323" [...]
+<div class="ttc" id="aclassgraphar_1_1_graph_info_html_a44e38c74dc765a56f8f0d200774d8180"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#a44e38c74dc765a56f8f0d200774d8180">graphar::GraphInfo::AddVertex</a></div><div class="ttdeci">Result&lt; std::shared_ptr&lt; GraphInfo &gt; &gt; AddVertex(std::shared_ptr&lt; VertexInfo &gt; vertex_info) const</div><div class="ttdoc">Adds a vertex info to the GraphInfo instance and returns a new GraphInfo.</div><div class="ttdef"><b>Defin [...]
+<div class="ttc" id="aclassgraphar_1_1_graph_info_html_a53eef3d15830bea15de0bbbe7e11e208"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#a53eef3d15830bea15de0bbbe7e11e208">graphar::GraphInfo::GetPrefix</a></div><div class="ttdeci">const std::string &amp; GetPrefix() const</div><div class="ttdoc">Get the absolute path prefix of the chunk files.</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l01280">graph_info.cc:1280</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_graph_info_html_a63dbd61d6575fe783b3287f391f651ed"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#a63dbd61d6575fe783b3287f391f651ed">graphar::GraphInfo::Load</a></div><div class="ttdeci">static Result&lt; std::shared_ptr&lt; GraphInfo &gt; &gt; Load(const std::string &amp;path)</div><div class="ttdoc">Loads the input file as a GraphInfo instance.</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l01420">g [...]
+<div class="ttc" id="aclassgraphar_1_1_graph_info_html_a6e848c7015e3b7d4706ff1ac2ffa6dcd"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#a6e848c7015e3b7d4706ff1ac2ffa6dcd">graphar::GraphInfo::IsValidated</a></div><div class="ttdeci">bool IsValidated() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l01346">graph_info.cc:1346</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_graph_info_html_a71646413e64620af1ca83f404e7150ea"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#a71646413e64620af1ca83f404e7150ea">graphar::GraphInfo::Dump</a></div><div class="ttdeci">Result&lt; std::string &gt; Dump() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l01446">graph_info.cc:1446</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_graph_info_html_a7e660710d2e1bd244b5d28bdc68aeab2"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#a7e660710d2e1bd244b5d28bdc68aeab2">graphar::GraphInfo::GetEdgeInfo</a></div><div class="ttdeci">std::shared_ptr&lt; EdgeInfo &gt; GetEdgeInfo(const std::string &amp;src_type, const std::string &amp;edge_type, const std::string &amp;dst_type) const</div><div class="ttdoc">Get the edge info with the given source vertex type, edge type, and  [...]
+<div class="ttc" id="aclassgraphar_1_1_graph_info_html_a814f2cdeecf58a308ab886a085991fc4"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#a814f2cdeecf58a308ab886a085991fc4">graphar::GraphInfo::EdgeInfoNum</a></div><div class="ttdeci">int EdgeInfoNum() const</div><div class="ttdoc">Get the number of edge infos.</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l01319">graph_info.cc:1319</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_graph_info_html_a8799b4b1a2163507a9ddd8f910d4a9d3"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#a8799b4b1a2163507a9ddd8f910d4a9d3">graphar::GraphInfo::GetVertexInfo</a></div><div class="ttdeci">std::shared_ptr&lt; VertexInfo &gt; GetVertexInfo(const std::string &amp;type) const</div><div class="ttdoc">Get the vertex info with the given type.</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l01291">grap [...]
+<div class="ttc" id="aclassgraphar_1_1_graph_info_html_a8b057bb6c3cfd897b0fb31ecceea40c9"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#a8b057bb6c3cfd897b0fb31ecceea40c9">graphar::GraphInfo::GetLabels</a></div><div class="ttdeci">const std::vector&lt; std::string &gt; &amp; GetLabels() const</div><div class="ttdoc">Get the vertex labels of the graph.</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l01276">graph_info.cc:1276</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_graph_info_html_a8fdf1ff0ec57e3ca2e66dd4366e390aa"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#a8fdf1ff0ec57e3ca2e66dd4366e390aa">graphar::GraphInfo::AddEdge</a></div><div class="ttdeci">Result&lt; std::shared_ptr&lt; GraphInfo &gt; &gt; AddEdge(std::shared_ptr&lt; EdgeInfo &gt; edge_info) const</div><div class="ttdoc">Adds an edge info to the GraphInfo instance and returns a new GraphInfo.</div><div class="ttdef"><b>Definition:</b [...]
+<div class="ttc" id="aclassgraphar_1_1_graph_info_html_a9393d2797ff5d77f66691f84f15007c4"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#a9393d2797ff5d77f66691f84f15007c4">graphar::GraphInfo::GetVertexInfos</a></div><div class="ttdeci">const VertexInfoVector &amp; GetVertexInfos() const</div><div class="ttdoc">Get the vertex infos of graph info.</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l01338">graph_info.cc:1338</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_graph_info_html_aa0856ec7ecc8d8d1aac2f7cd51cfe136"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#aa0856ec7ecc8d8d1aac2f7cd51cfe136">graphar::GraphInfo::GetExtraInfo</a></div><div class="ttdeci">const std::unordered_map&lt; std::string, std::string &gt; &amp; GetExtraInfo() const</div><div class="ttdoc">Get the extra metadata of the graph info object.</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l012 [...]
+<div class="ttc" id="aclassgraphar_1_1_graph_info_html_aa2ca1614d499facc76927b5de733b503"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#aa2ca1614d499facc76927b5de733b503">graphar::GraphInfo::GetEdgeInfoIndex</a></div><div class="ttdeci">int GetEdgeInfoIndex(const std::string &amp;src_type, const std::string &amp;edge_type, const std::string &amp;dst_type) const</div><div class="ttdoc">Get the edge info index with the given source vertex type, edge type, and destination ty [...]
+<div class="ttc" id="aclassgraphar_1_1_graph_info_html_aa384328a58c9138b5b77ea6172199d07"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#aa384328a58c9138b5b77ea6172199d07">graphar::GraphInfo::VertexInfoNum</a></div><div class="ttdeci">int VertexInfoNum() const</div><div class="ttdoc">Get the number of vertex infos.</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l01315">graph_info.cc:1315</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_graph_info_html_ab10cb1ceaa01a74d44c1076c43c2fcce"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#ab10cb1ceaa01a74d44c1076c43c2fcce">graphar::GraphInfo::GetName</a></div><div class="ttdeci">const std::string &amp; GetName() const</div><div class="ttdoc">Get the name of the graph.</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l01274">graph_info.cc:1274</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_graph_info_html_acc0e018222ae59e749a52b3678e6529a"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#acc0e018222ae59e749a52b3678e6529a">graphar::GraphInfo::RemoveEdge</a></div><div class="ttdeci">Result&lt; std::shared_ptr&lt; GraphInfo &gt; &gt; RemoveEdge(std::shared_ptr&lt; EdgeInfo &gt; edge_info) const</div><div class="ttdoc">Removes an edge info from the GraphInfo instance and returns a new GraphInfo.</div><div class="ttdef"><b>Def [...]
+<div class="ttc" id="aclassgraphar_1_1_graph_info_html_ad64a71966ca197ae14ea21ff8787b769"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#ad64a71966ca197ae14ea21ff8787b769">graphar::GraphInfo::RemoveVertex</a></div><div class="ttdeci">Result&lt; std::shared_ptr&lt; GraphInfo &gt; &gt; RemoveVertex(std::shared_ptr&lt; VertexInfo &gt; vertex_info) const</div><div class="ttdoc">Removes a vertex info from the GraphInfo instance and returns a new GraphInfo.</div><div class="ttde [...]
+<div class="ttc" id="aclassgraphar_1_1_graph_info_html_aeb68a7550c63365d8093136601a3aeee"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#aeb68a7550c63365d8093136601a3aeee">graphar::GraphInfo::version</a></div><div class="ttdeci">const std::shared_ptr&lt; const InfoVersion &gt; &amp; version() const</div><div class="ttdoc">Get the version info of the graph info object.</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l01282">graph_info.cc:1282 [...]
+<div class="ttc" id="aclassgraphar_1_1_graph_info_html_afd61923bd9ff1f5329b1c93ebbcd0278"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#afd61923bd9ff1f5329b1c93ebbcd0278">graphar::GraphInfo::GetEdgeInfoByIndex</a></div><div class="ttdeci">const std::shared_ptr&lt; EdgeInfo &gt; GetEdgeInfoByIndex(int index) const</div><div class="ttdoc">Get the edge info at the specified index.</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l01331">graph_i [...]
 <div class="ttc" id="aclassgraphar_1_1_info_version_html_a6c149bd120118e7c6803dcac71a7a667"><div class="ttname"><a href="classgraphar_1_1_info_version.html#a6c149bd120118e7c6803dcac71a7a667">graphar::InfoVersion::Parse</a></div><div class="ttdeci">static Result&lt; std::shared_ptr&lt; const InfoVersion &gt; &gt; Parse(const std::string &amp;str) noexcept</div><div class="ttdef"><b>Definition:</b> <a href="version__parser_8cc_source.html#l00107">version_parser.cc:107</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_property_group_html_a9a1d4401d81fb2576ae3f3de21eb9e25"><div class="ttname"><a href="classgraphar_1_1_property_group.html#a9a1d4401d81fb2576ae3f3de21eb9e25">graphar::PropertyGroup::IsValidated</a></div><div class="ttdeci">bool IsValidated() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00118">graph_info.cc:118</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_property_group_html_abb84d3d9d16e5efc52c96089a977c60d"><div class="ttname"><a href="classgraphar_1_1_property_group.html#abb84d3d9d16e5efc52c96089a977c60d">graphar::PropertyGroup::PropertyGroup</a></div><div class="ttdeci">PropertyGroup(const std::vector&lt; Property &gt; &amp;properties, FileType file_type, const std::string &amp;prefix=&quot;&quot;)</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00094">graph_info. [...]
-<div class="ttc" id="aclassgraphar_1_1_property_group_html_af090f1d74049ce0222148ad02b26f81a"><div class="ttname"><a href="classgraphar_1_1_property_group.html#af090f1d74049ce0222148ad02b26f81a">graphar::PropertyGroup::GetProperties</a></div><div class="ttdeci">const std::vector&lt; Property &gt; &amp; GetProperties() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00105">graph_info.cc:105</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_property_group_html_a9a1d4401d81fb2576ae3f3de21eb9e25"><div class="ttname"><a href="classgraphar_1_1_property_group.html#a9a1d4401d81fb2576ae3f3de21eb9e25">graphar::PropertyGroup::IsValidated</a></div><div class="ttdeci">bool IsValidated() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00133">graph_info.cc:133</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_property_group_html_abb84d3d9d16e5efc52c96089a977c60d"><div class="ttname"><a href="classgraphar_1_1_property_group.html#abb84d3d9d16e5efc52c96089a977c60d">graphar::PropertyGroup::PropertyGroup</a></div><div class="ttdeci">PropertyGroup(const std::vector&lt; Property &gt; &amp;properties, FileType file_type, const std::string &amp;prefix=&quot;&quot;)</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00109">graph_info. [...]
+<div class="ttc" id="aclassgraphar_1_1_property_group_html_af090f1d74049ce0222148ad02b26f81a"><div class="ttname"><a href="classgraphar_1_1_property_group.html#af090f1d74049ce0222148ad02b26f81a">graphar::PropertyGroup::GetProperties</a></div><div class="ttdeci">const std::vector&lt; Property &gt; &amp; GetProperties() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00120">graph_info.cc:120</a></div></div>
 <div class="ttc" id="aclassgraphar_1_1_status_html"><div class="ttname"><a href="classgraphar_1_1_status.html">graphar::Status</a></div><div class="ttdoc">Status outcome object (success or error)</div><div class="ttdef"><b>Definition:</b> <a href="status_8h_source.html#l00123">status.h:123</a></div></div>
 <div class="ttc" id="aclassgraphar_1_1_status_html_a358b23c7f34efbf14c84cbc2ddbdd6a4"><div class="ttname"><a href="classgraphar_1_1_status.html#a358b23c7f34efbf14c84cbc2ddbdd6a4">graphar::Status::YamlError</a></div><div class="ttdeci">static Status YamlError(Args &amp;&amp;... args)</div><div class="ttdef"><b>Definition:</b> <a href="status_8h_source.html#l00204">status.h:204</a></div></div>
 <div class="ttc" id="aclassgraphar_1_1_status_html_a9ca4be37aae8dfea7e6ef54920e0073f"><div class="ttname"><a href="classgraphar_1_1_status.html#a9ca4be37aae8dfea7e6ef54920e0073f">graphar::Status::Invalid</a></div><div class="ttdeci">static Status Invalid(Args &amp;&amp;... args)</div><div class="ttdef"><b>Definition:</b> <a href="status_8h_source.html#l00188">status.h:188</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_vertex_info_1_1_impl_html"><div class="ttname"><a href="classgraphar_1_1_vertex_info_1_1_impl.html">graphar::VertexInfo::Impl</a></div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00197">graph_info.cc:197</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_a2364ef208346bbd4d468ee78cfc6a1a3"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#a2364ef208346bbd4d468ee78cfc6a1a3">graphar::VertexInfo::GetType</a></div><div class="ttdeci">const std::string &amp; GetType() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00275">graph_info.cc:275</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_a2a4cc44b7db8784bdb0e9691c7ad0fba"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#a2a4cc44b7db8784bdb0e9691c7ad0fba">graphar::VertexInfo::GetPropertyGroup</a></div><div class="ttdeci">std::shared_ptr&lt; PropertyGroup &gt; GetPropertyGroup(const std::string &amp;property_name) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00314">graph_info.cc:314</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_a3214a62ac41be6cb53c22894d2926710"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#a3214a62ac41be6cb53c22894d2926710">graphar::VertexInfo::GetPathPrefix</a></div><div class="ttdeci">Result&lt; std::string &gt; GetPathPrefix(std::shared_ptr&lt; PropertyGroup &gt; property_group) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00298">graph_info.cc:298</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_a34a49ce4905632889db3f969986cbe75"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#a34a49ce4905632889db3f969986cbe75">graphar::VertexInfo::GetLabels</a></div><div class="ttdeci">const std::vector&lt; std::string &gt; &amp; GetLabels() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00281">graph_info.cc:281</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_a39a607d51da7e73a0fae473e90a61825"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#a39a607d51da7e73a0fae473e90a61825">graphar::VertexInfo::GetChunkSize</a></div><div class="ttdeci">IdType GetChunkSize() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00277">graph_info.cc:277</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_a47c84aab28674b5250a26c97806f2f48"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#a47c84aab28674b5250a26c97806f2f48">graphar::VertexInfo::version</a></div><div class="ttdeci">const std::shared_ptr&lt; const InfoVersion &gt; &amp; version() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00285">graph_info.cc:285</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_a4a70be2aa82d5c435b3271ae766bb54d"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#a4a70be2aa82d5c435b3271ae766bb54d">graphar::VertexInfo::AddPropertyGroup</a></div><div class="ttdeci">Result&lt; std::shared_ptr&lt; VertexInfo &gt; &gt; AddPropertyGroup(std::shared_ptr&lt; PropertyGroup &gt; property_group) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00384">graph_info.cc:384< [...]
-<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_a5d42bec7d8cdb67f1e04b921f484e328"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#a5d42bec7d8cdb67f1e04b921f484e328">graphar::VertexInfo::HasProperty</a></div><div class="ttdeci">bool HasProperty(const std::string &amp;property_name) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00348">graph_info.cc:348</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_a64aca915578185662b4429e5ed265322"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#a64aca915578185662b4429e5ed265322">graphar::VertexInfo::HasPropertyGroup</a></div><div class="ttdeci">bool HasPropertyGroup(const std::shared_ptr&lt; PropertyGroup &gt; &amp;property_group) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00353">graph_info.cc:353</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_a65faa894acf765eae9c7d4e34dff6306"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#a65faa894acf765eae9c7d4e34dff6306">graphar::VertexInfo::GetFilePath</a></div><div class="ttdeci">Result&lt; std::string &gt; GetFilePath(std::shared_ptr&lt; PropertyGroup &gt; property_group, IdType chunk_index) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00289">graph_info.cc:289</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_a68f7407348b39115e0fa4d44750e9d37"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#a68f7407348b39115e0fa4d44750e9d37">graphar::VertexInfo::IsPrimaryKey</a></div><div class="ttdeci">bool IsPrimaryKey(const std::string &amp;property_name) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00332">graph_info.cc:332</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_a70d2cb4637d4b2909bd34045a39568af"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#a70d2cb4637d4b2909bd34045a39568af">graphar::VertexInfo::IsValidated</a></div><div class="ttdeci">bool IsValidated() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00401">graph_info.cc:401</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_a7917824d18f7c84a02859f18b47e77fe"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#a7917824d18f7c84a02859f18b47e77fe">graphar::VertexInfo::PropertyGroupNum</a></div><div class="ttdeci">int PropertyGroupNum() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00310">graph_info.cc:310</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_a8fb76a180c2fb8192961a27862f5aa69"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#a8fb76a180c2fb8192961a27862f5aa69">graphar::VertexInfo::GetPrefix</a></div><div class="ttdeci">const std::string &amp; GetPrefix() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00279">graph_info.cc:279</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_aad61b0a40a4bef344fad93cb1332d97d"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#aad61b0a40a4bef344fad93cb1332d97d">graphar::VertexInfo::GetVerticesNumFilePath</a></div><div class="ttdeci">Result&lt; std::string &gt; GetVerticesNumFilePath() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00306">graph_info.cc:306</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_acbeedc2afc98e53155bb1f75c9cb465c"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#acbeedc2afc98e53155bb1f75c9cb465c">graphar::VertexInfo::GetPropertyType</a></div><div class="ttdeci">Result&lt; std::shared_ptr&lt; DataType &gt; &gt; GetPropertyType(const std::string &amp;property_name) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00366">graph_info.cc:366</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_acddb12cfcf7c6bfe1f1937f984828312"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#acddb12cfcf7c6bfe1f1937f984828312">graphar::VertexInfo::VertexInfo</a></div><div class="ttdeci">VertexInfo(const std::string &amp;type, IdType chunk_size, const PropertyGroupVector &amp;property_groups, const std::vector&lt; std::string &gt; &amp;labels={}, const std::string &amp;prefix=&quot;&quot;, std::shared_ptr&lt; const InfoVersio [...]
-<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_ad6bc3cbb3ed0c5eaa7fd50298e106a78"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#ad6bc3cbb3ed0c5eaa7fd50298e106a78">graphar::VertexInfo::IsNullableKey</a></div><div class="ttdeci">bool IsNullableKey(const std::string &amp;property_name) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00340">graph_info.cc:340</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_adc0a253c371a004324ffae6e8abbdbc7"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#adc0a253c371a004324ffae6e8abbdbc7">graphar::VertexInfo::Dump</a></div><div class="ttdeci">Result&lt; std::string &gt; Dump() const noexcept</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00482">graph_info.cc:482</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_af1ade1caa6e70e4b7ce60cf4df7ac50c"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#af1ade1caa6e70e4b7ce60cf4df7ac50c">graphar::VertexInfo::Load</a></div><div class="ttdeci">static Result&lt; std::shared_ptr&lt; VertexInfo &gt; &gt; Load(std::shared_ptr&lt; Yaml &gt; yaml)</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00415">graph_info.cc:415</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_af6106f8fa90d876a0e97f58c7c39db33"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#af6106f8fa90d876a0e97f58c7c39db33">graphar::VertexInfo::GetPropertyGroupByIndex</a></div><div class="ttdeci">std::shared_ptr&lt; PropertyGroup &gt; GetPropertyGroupByIndex(int index) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00320">graph_info.cc:320</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_afd42b99a43507a9edb1825e7e104d1e7"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#afd42b99a43507a9edb1825e7e104d1e7">graphar::VertexInfo::Save</a></div><div class="ttdeci">Status Save(const std::string &amp;file_name) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00530">graph_info.cc:530</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_aff9aadd406180802facb14d6a4b5e72e"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#aff9aadd406180802facb14d6a4b5e72e">graphar::VertexInfo::GetPropertyGroups</a></div><div class="ttdeci">const PropertyGroupVector &amp; GetPropertyGroups() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00328">graph_info.cc:328</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_vertex_info_1_1_impl_html"><div class="ttname"><a href="classgraphar_1_1_vertex_info_1_1_impl.html">graphar::VertexInfo::Impl</a></div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00212">graph_info.cc:212</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_a2364ef208346bbd4d468ee78cfc6a1a3"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#a2364ef208346bbd4d468ee78cfc6a1a3">graphar::VertexInfo::GetType</a></div><div class="ttdeci">const std::string &amp; GetType() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00290">graph_info.cc:290</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_a2a4cc44b7db8784bdb0e9691c7ad0fba"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#a2a4cc44b7db8784bdb0e9691c7ad0fba">graphar::VertexInfo::GetPropertyGroup</a></div><div class="ttdeci">std::shared_ptr&lt; PropertyGroup &gt; GetPropertyGroup(const std::string &amp;property_name) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00329">graph_info.cc:329</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_a3214a62ac41be6cb53c22894d2926710"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#a3214a62ac41be6cb53c22894d2926710">graphar::VertexInfo::GetPathPrefix</a></div><div class="ttdeci">Result&lt; std::string &gt; GetPathPrefix(std::shared_ptr&lt; PropertyGroup &gt; property_group) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00313">graph_info.cc:313</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_a34a49ce4905632889db3f969986cbe75"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#a34a49ce4905632889db3f969986cbe75">graphar::VertexInfo::GetLabels</a></div><div class="ttdeci">const std::vector&lt; std::string &gt; &amp; GetLabels() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00296">graph_info.cc:296</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_a39a607d51da7e73a0fae473e90a61825"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#a39a607d51da7e73a0fae473e90a61825">graphar::VertexInfo::GetChunkSize</a></div><div class="ttdeci">IdType GetChunkSize() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00292">graph_info.cc:292</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_a47c84aab28674b5250a26c97806f2f48"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#a47c84aab28674b5250a26c97806f2f48">graphar::VertexInfo::version</a></div><div class="ttdeci">const std::shared_ptr&lt; const InfoVersion &gt; &amp; version() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00300">graph_info.cc:300</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_a4a70be2aa82d5c435b3271ae766bb54d"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#a4a70be2aa82d5c435b3271ae766bb54d">graphar::VertexInfo::AddPropertyGroup</a></div><div class="ttdeci">Result&lt; std::shared_ptr&lt; VertexInfo &gt; &gt; AddPropertyGroup(std::shared_ptr&lt; PropertyGroup &gt; property_group) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00399">graph_info.cc:399< [...]
+<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_a5d42bec7d8cdb67f1e04b921f484e328"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#a5d42bec7d8cdb67f1e04b921f484e328">graphar::VertexInfo::HasProperty</a></div><div class="ttdeci">bool HasProperty(const std::string &amp;property_name) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00363">graph_info.cc:363</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_a64aca915578185662b4429e5ed265322"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#a64aca915578185662b4429e5ed265322">graphar::VertexInfo::HasPropertyGroup</a></div><div class="ttdeci">bool HasPropertyGroup(const std::shared_ptr&lt; PropertyGroup &gt; &amp;property_group) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00368">graph_info.cc:368</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_a65faa894acf765eae9c7d4e34dff6306"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#a65faa894acf765eae9c7d4e34dff6306">graphar::VertexInfo::GetFilePath</a></div><div class="ttdeci">Result&lt; std::string &gt; GetFilePath(std::shared_ptr&lt; PropertyGroup &gt; property_group, IdType chunk_index) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00304">graph_info.cc:304</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_a68f7407348b39115e0fa4d44750e9d37"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#a68f7407348b39115e0fa4d44750e9d37">graphar::VertexInfo::IsPrimaryKey</a></div><div class="ttdeci">bool IsPrimaryKey(const std::string &amp;property_name) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00347">graph_info.cc:347</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_a70d2cb4637d4b2909bd34045a39568af"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#a70d2cb4637d4b2909bd34045a39568af">graphar::VertexInfo::IsValidated</a></div><div class="ttdeci">bool IsValidated() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00437">graph_info.cc:437</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_a7917824d18f7c84a02859f18b47e77fe"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#a7917824d18f7c84a02859f18b47e77fe">graphar::VertexInfo::PropertyGroupNum</a></div><div class="ttdeci">int PropertyGroupNum() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00325">graph_info.cc:325</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_a8432977087cbb207f65b91debc240119"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#a8432977087cbb207f65b91debc240119">graphar::VertexInfo::RemovePropertyGroup</a></div><div class="ttdeci">Result&lt; std::shared_ptr&lt; VertexInfo &gt; &gt; RemovePropertyGroup(std::shared_ptr&lt; PropertyGroup &gt; property_group) const</div><div class="ttdoc">Removes a property group from the VertexInfo instance and returns a new Vert [...]
+<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_a8fb76a180c2fb8192961a27862f5aa69"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#a8fb76a180c2fb8192961a27862f5aa69">graphar::VertexInfo::GetPrefix</a></div><div class="ttdeci">const std::string &amp; GetPrefix() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00294">graph_info.cc:294</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_aad61b0a40a4bef344fad93cb1332d97d"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#aad61b0a40a4bef344fad93cb1332d97d">graphar::VertexInfo::GetVerticesNumFilePath</a></div><div class="ttdeci">Result&lt; std::string &gt; GetVerticesNumFilePath() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00321">graph_info.cc:321</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_acbeedc2afc98e53155bb1f75c9cb465c"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#acbeedc2afc98e53155bb1f75c9cb465c">graphar::VertexInfo::GetPropertyType</a></div><div class="ttdeci">Result&lt; std::shared_ptr&lt; DataType &gt; &gt; GetPropertyType(const std::string &amp;property_name) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00381">graph_info.cc:381</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_acddb12cfcf7c6bfe1f1937f984828312"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#acddb12cfcf7c6bfe1f1937f984828312">graphar::VertexInfo::VertexInfo</a></div><div class="ttdeci">VertexInfo(const std::string &amp;type, IdType chunk_size, const PropertyGroupVector &amp;property_groups, const std::vector&lt; std::string &gt; &amp;labels={}, const std::string &amp;prefix=&quot;&quot;, std::shared_ptr&lt; const InfoVersio [...]
+<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_ad6bc3cbb3ed0c5eaa7fd50298e106a78"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#ad6bc3cbb3ed0c5eaa7fd50298e106a78">graphar::VertexInfo::IsNullableKey</a></div><div class="ttdeci">bool IsNullableKey(const std::string &amp;property_name) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00355">graph_info.cc:355</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_adc0a253c371a004324ffae6e8abbdbc7"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#adc0a253c371a004324ffae6e8abbdbc7">graphar::VertexInfo::Dump</a></div><div class="ttdeci">Result&lt; std::string &gt; Dump() const noexcept</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00518">graph_info.cc:518</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_af1ade1caa6e70e4b7ce60cf4df7ac50c"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#af1ade1caa6e70e4b7ce60cf4df7ac50c">graphar::VertexInfo::Load</a></div><div class="ttdeci">static Result&lt; std::shared_ptr&lt; VertexInfo &gt; &gt; Load(std::shared_ptr&lt; Yaml &gt; yaml)</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00451">graph_info.cc:451</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_af6106f8fa90d876a0e97f58c7c39db33"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#af6106f8fa90d876a0e97f58c7c39db33">graphar::VertexInfo::GetPropertyGroupByIndex</a></div><div class="ttdeci">std::shared_ptr&lt; PropertyGroup &gt; GetPropertyGroupByIndex(int index) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00335">graph_info.cc:335</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_afd42b99a43507a9edb1825e7e104d1e7"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#afd42b99a43507a9edb1825e7e104d1e7">graphar::VertexInfo::Save</a></div><div class="ttdeci">Status Save(const std::string &amp;file_name) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00566">graph_info.cc:566</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_aff9aadd406180802facb14d6a4b5e72e"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#aff9aadd406180802facb14d6a4b5e72e">graphar::VertexInfo::GetPropertyGroups</a></div><div class="ttdeci">const PropertyGroupVector &amp; GetPropertyGroups() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00343">graph_info.cc:343</a></div></div>
 <div class="ttc" id="aclassgraphar_1_1_yaml_html_a2fff6ba5eaf3e59b489d015f10013179"><div class="ttname"><a href="classgraphar_1_1_yaml.html#a2fff6ba5eaf3e59b489d015f10013179">graphar::Yaml::Load</a></div><div class="ttdeci">static Result&lt; std::shared_ptr&lt; Yaml &gt; &gt; Load(const std::string &amp;input)</div><div class="ttdef"><b>Definition:</b> <a href="yaml_8cc_source.html#l00034">yaml.cc:34</a></div></div>
 </div><!-- fragment --></div><!-- contents -->
 <!--
diff --git a/docs/cpp/graph__info_8h_source.html b/docs/cpp/graph__info_8h_source.html
index 5855079..3932e4e 100644
--- a/docs/cpp/graph__info_8h_source.html
+++ b/docs/cpp/graph__info_8h_source.html
@@ -190,330 +190,350 @@ $(function() {
 <div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;  Result&lt;std::shared_ptr&lt;VertexInfo&gt;&gt; <a class="code" href="classgraphar_1_1_vertex_info.html#a4a70be2aa82d5c435b3271ae766bb54d">AddPropertyGroup</a>(</div>
 <div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;      std::shared_ptr&lt;PropertyGroup&gt; property_group) <span class="keyword">const</span>;</div>
 <div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160; </div>
-<div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;  <span class="keyword">const</span> std::string&amp; <a class="code" href="classgraphar_1_1_vertex_info.html#a2364ef208346bbd4d468ee78cfc6a1a3">GetType</a>() <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160; </div>
-<div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;  IdType <a class="code" href="classgraphar_1_1_vertex_info.html#a39a607d51da7e73a0fae473e90a61825">GetChunkSize</a>() <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160; </div>
-<div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;  <span class="keyword">const</span> std::string&amp; <a class="code" href="classgraphar_1_1_vertex_info.html#a8fb76a180c2fb8192961a27862f5aa69">GetPrefix</a>() <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160; </div>
-<div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;  <span class="keyword">const</span> std::shared_ptr&lt;const InfoVersion&gt;&amp; <a class="code" href="classgraphar_1_1_vertex_info.html#a47c84aab28674b5250a26c97806f2f48">version</a>() <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160; </div>
-<div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;  <span class="keyword">const</span> std::vector&lt;std::string&gt;&amp; <a class="code" href="classgraphar_1_1_vertex_info.html#a34a49ce4905632889db3f969986cbe75">GetLabels</a>() <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160; </div>
-<div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;  <span class="keywordtype">int</span> <a class="code" href="classgraphar_1_1_vertex_info.html#a7917824d18f7c84a02859f18b47e77fe">PropertyGroupNum</a>() <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160; </div>
-<div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;  <span class="keyword">const</span> PropertyGroupVector&amp; <a class="code" href="classgraphar_1_1_vertex_info.html#aff9aadd406180802facb14d6a4b5e72e">GetPropertyGroups</a>() <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160; </div>
-<div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;  std::shared_ptr&lt;PropertyGroup&gt; <a class="code" href="classgraphar_1_1_vertex_info.html#a2a4cc44b7db8784bdb0e9691c7ad0fba">GetPropertyGroup</a>(</div>
-<div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;      <span class="keyword">const</span> std::string&amp; property_name) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160; </div>
-<div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;  std::shared_ptr&lt;PropertyGroup&gt; <a class="code" href="classgraphar_1_1_vertex_info.html#af6106f8fa90d876a0e97f58c7c39db33">GetPropertyGroupByIndex</a>(<span class="keywordtype">int</span> index) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00272"></a><span class="lineno">  272</span>&#160; </div>
-<div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160;  Result&lt;std::shared_ptr&lt;DataType&gt;&gt; <a class="code" href="classgraphar_1_1_vertex_info.html#acbeedc2afc98e53155bb1f75c9cb465c">GetPropertyType</a>(</div>
-<div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;      <span class="keyword">const</span> std::string&amp; property_name) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;  Result&lt;std::shared_ptr&lt;VertexInfo&gt;&gt; <a class="code" href="classgraphar_1_1_vertex_info.html#a8432977087cbb207f65b91debc240119">RemovePropertyGroup</a>(</div>
+<div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;      std::shared_ptr&lt;PropertyGroup&gt; property_group) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160; </div>
+<div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;  <span class="keyword">const</span> std::string&amp; <a class="code" href="classgraphar_1_1_vertex_info.html#a2364ef208346bbd4d468ee78cfc6a1a3">GetType</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160; </div>
+<div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;  IdType <a class="code" href="classgraphar_1_1_vertex_info.html#a39a607d51da7e73a0fae473e90a61825">GetChunkSize</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160; </div>
+<div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;  <span class="keyword">const</span> std::string&amp; <a class="code" href="classgraphar_1_1_vertex_info.html#a8fb76a180c2fb8192961a27862f5aa69">GetPrefix</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160; </div>
+<div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;  <span class="keyword">const</span> std::shared_ptr&lt;const InfoVersion&gt;&amp; <a class="code" href="classgraphar_1_1_vertex_info.html#a47c84aab28674b5250a26c97806f2f48">version</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160; </div>
+<div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;  <span class="keyword">const</span> std::vector&lt;std::string&gt;&amp; <a class="code" href="classgraphar_1_1_vertex_info.html#a34a49ce4905632889db3f969986cbe75">GetLabels</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160; </div>
+<div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;  <span class="keywordtype">int</span> <a class="code" href="classgraphar_1_1_vertex_info.html#a7917824d18f7c84a02859f18b47e77fe">PropertyGroupNum</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00260"></a><span class="lineno">  260</span>&#160; </div>
+<div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;  <span class="keyword">const</span> PropertyGroupVector&amp; <a class="code" href="classgraphar_1_1_vertex_info.html#aff9aadd406180802facb14d6a4b5e72e">GetPropertyGroups</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160; </div>
+<div class="line"><a name="l00272"></a><span class="lineno">  272</span>&#160;  std::shared_ptr&lt;PropertyGroup&gt; <a class="code" href="classgraphar_1_1_vertex_info.html#a2a4cc44b7db8784bdb0e9691c7ad0fba">GetPropertyGroup</a>(</div>
+<div class="line"><a name="l00273"></a><span class="lineno">  273</span>&#160;      <span class="keyword">const</span> std::string&amp; property_name) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00274"></a><span class="lineno">  274</span>&#160; </div>
+<div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;  std::shared_ptr&lt;PropertyGroup&gt; <a class="code" href="classgraphar_1_1_vertex_info.html#af6106f8fa90d876a0e97f58c7c39db33">GetPropertyGroupByIndex</a>(<span class="keywordtype">int</span> index) <span class="keyword">const</span>;</div>
 <div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160; </div>
-<div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160;  Result&lt;Cardinality&gt; GetPropertyCardinality(</div>
-<div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;      <span class="keyword">const</span> std::string&amp; property_name) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="classgraphar_1_1_vertex_info.html#a5d42bec7d8cdb67f1e04b921f484e328">HasProperty</a>(<span class="keyword">const</span> std::string&amp; property_name) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00290"></a><span class="lineno">  290</span>&#160;  Result&lt;std::shared_ptr&lt;DataType&gt;&gt; <a class="code" href="classgraphar_1_1_vertex_info.html#acbeedc2afc98e53155bb1f75c9cb465c">GetPropertyType</a>(</div>
+<div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;      <span class="keyword">const</span> std::string&amp; property_name) <span class="keyword">const</span>;</div>
 <div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160; </div>
-<div class="line"><a name="l00299"></a><span class="lineno">  299</span>&#160;  <a class="code" href="classgraphar_1_1_status.html">Status</a> <a class="code" href="classgraphar_1_1_vertex_info.html#afd42b99a43507a9edb1825e7e104d1e7">Save</a>(<span class="keyword">const</span> std::string&amp; file_name) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00300"></a><span class="lineno">  300</span>&#160; </div>
-<div class="line"><a name="l00307"></a><span class="lineno">  307</span>&#160;  Result&lt;std::string&gt; <a class="code" href="classgraphar_1_1_vertex_info.html#adc0a253c371a004324ffae6e8abbdbc7">Dump</a>() <span class="keyword">const</span> noexcept;</div>
-<div class="line"><a name="l00308"></a><span class="lineno">  308</span>&#160; </div>
-<div class="line"><a name="l00315"></a><span class="lineno">  315</span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="classgraphar_1_1_vertex_info.html#a68f7407348b39115e0fa4d44750e9d37">IsPrimaryKey</a>(<span class="keyword">const</span> std::string&amp; property_name) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00316"></a><span class="lineno">  316</span>&#160; </div>
-<div class="line"><a name="l00323"></a><span class="lineno">  323</span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="classgraphar_1_1_vertex_info.html#ad6bc3cbb3ed0c5eaa7fd50298e106a78">IsNullableKey</a>(<span class="keyword">const</span> std::string&amp; property_name) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160; </div>
-<div class="line"><a name="l00332"></a><span class="lineno">  332</span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="classgraphar_1_1_vertex_info.html#a64aca915578185662b4429e5ed265322">HasPropertyGroup</a>(</div>
-<div class="line"><a name="l00333"></a><span class="lineno">  333</span>&#160;      <span class="keyword">const</span> std::shared_ptr&lt;PropertyGroup&gt;&amp; property_group) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00293"></a><span class="lineno">  293</span>&#160;  Result&lt;Cardinality&gt; GetPropertyCardinality(</div>
+<div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;      <span class="keyword">const</span> std::string&amp; property_name) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00301"></a><span class="lineno">  301</span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="classgraphar_1_1_vertex_info.html#a5d42bec7d8cdb67f1e04b921f484e328">HasProperty</a>(<span class="keyword">const</span> std::string&amp; property_name) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00302"></a><span class="lineno">  302</span>&#160; </div>
+<div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160;  <a class="code" href="classgraphar_1_1_status.html">Status</a> <a class="code" href="classgraphar_1_1_vertex_info.html#afd42b99a43507a9edb1825e7e104d1e7">Save</a>(<span class="keyword">const</span> std::string&amp; file_name) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160; </div>
+<div class="line"><a name="l00317"></a><span class="lineno">  317</span>&#160;  Result&lt;std::string&gt; <a class="code" href="classgraphar_1_1_vertex_info.html#adc0a253c371a004324ffae6e8abbdbc7">Dump</a>() <span class="keyword">const</span> noexcept;</div>
+<div class="line"><a name="l00318"></a><span class="lineno">  318</span>&#160; </div>
+<div class="line"><a name="l00325"></a><span class="lineno">  325</span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="classgraphar_1_1_vertex_info.html#a68f7407348b39115e0fa4d44750e9d37">IsPrimaryKey</a>(<span class="keyword">const</span> std::string&amp; property_name) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00326"></a><span class="lineno">  326</span>&#160; </div>
+<div class="line"><a name="l00333"></a><span class="lineno">  333</span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="classgraphar_1_1_vertex_info.html#ad6bc3cbb3ed0c5eaa7fd50298e106a78">IsNullableKey</a>(<span class="keyword">const</span> std::string&amp; property_name) <span class="keyword">const</span>;</div>
 <div class="line"><a name="l00334"></a><span class="lineno">  334</span>&#160; </div>
-<div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;  Result&lt;std::string&gt; <a class="code" href="classgraphar_1_1_vertex_info.html#a65faa894acf765eae9c7d4e34dff6306">GetFilePath</a>(std::shared_ptr&lt;PropertyGroup&gt; property_group,</div>
-<div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160;                                  IdType chunk_index) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00345"></a><span class="lineno">  345</span>&#160; </div>
-<div class="line"><a name="l00353"></a><span class="lineno">  353</span>&#160;  Result&lt;std::string&gt; <a class="code" href="classgraphar_1_1_vertex_info.html#a3214a62ac41be6cb53c22894d2926710">GetPathPrefix</a>(</div>
-<div class="line"><a name="l00354"></a><span class="lineno">  354</span>&#160;      std::shared_ptr&lt;PropertyGroup&gt; property_group) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="classgraphar_1_1_vertex_info.html#a64aca915578185662b4429e5ed265322">HasPropertyGroup</a>(</div>
+<div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;      <span class="keyword">const</span> std::shared_ptr&lt;PropertyGroup&gt;&amp; property_group) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160; </div>
+<div class="line"><a name="l00353"></a><span class="lineno">  353</span>&#160;  Result&lt;std::string&gt; <a class="code" href="classgraphar_1_1_vertex_info.html#a65faa894acf765eae9c7d4e34dff6306">GetFilePath</a>(std::shared_ptr&lt;PropertyGroup&gt; property_group,</div>
+<div class="line"><a name="l00354"></a><span class="lineno">  354</span>&#160;                                  IdType chunk_index) <span class="keyword">const</span>;</div>
 <div class="line"><a name="l00355"></a><span class="lineno">  355</span>&#160; </div>
-<div class="line"><a name="l00361"></a><span class="lineno">  361</span>&#160;  Result&lt;std::string&gt; <a class="code" href="classgraphar_1_1_vertex_info.html#aad61b0a40a4bef344fad93cb1332d97d">GetVerticesNumFilePath</a>() <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00362"></a><span class="lineno">  362</span>&#160; </div>
-<div class="line"><a name="l00368"></a><span class="lineno">  368</span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="classgraphar_1_1_vertex_info.html#a70d2cb4637d4b2909bd34045a39568af">IsValidated</a>() <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00369"></a><span class="lineno">  369</span>&#160; </div>
-<div class="line"><a name="l00377"></a><span class="lineno">  377</span>&#160;  <span class="keyword">static</span> Result&lt;std::shared_ptr&lt;VertexInfo&gt;&gt; <a class="code" href="classgraphar_1_1_vertex_info.html#af1ade1caa6e70e4b7ce60cf4df7ac50c">Load</a>(std::shared_ptr&lt;Yaml&gt; yaml);</div>
-<div class="line"><a name="l00378"></a><span class="lineno">  378</span>&#160; </div>
-<div class="line"><a name="l00385"></a><span class="lineno">  385</span>&#160;  <span class="keyword">static</span> Result&lt;std::shared_ptr&lt;VertexInfo&gt;&gt; <a class="code" href="classgraphar_1_1_vertex_info.html#af1ade1caa6e70e4b7ce60cf4df7ac50c">Load</a>(<span class="keyword">const</span> std::string&amp; input);</div>
-<div class="line"><a name="l00386"></a><span class="lineno">  386</span>&#160; </div>
-<div class="line"><a name="l00387"></a><span class="lineno">  387</span>&#160; <span class="keyword">private</span>:</div>
-<div class="line"><a name="l00388"></a><span class="lineno">  388</span>&#160;  <span class="keyword">class </span><a class="code" href="classgraphar_1_1_vertex_info_1_1_impl.html">Impl</a>;</div>
-<div class="line"><a name="l00389"></a><span class="lineno">  389</span>&#160;  std::unique_ptr&lt;Impl&gt; impl_;</div>
-<div class="line"><a name="l00390"></a><span class="lineno">  390</span>&#160;};</div>
-<div class="line"><a name="l00391"></a><span class="lineno">  391</span>&#160; </div>
-<div class="line"><a name="l00398"></a><span class="lineno"><a class="line" href="classgraphar_1_1_edge_info.html">  398</a></span>&#160;<span class="keyword">class </span><a class="code" href="classgraphar_1_1_edge_info.html">EdgeInfo</a> {</div>
-<div class="line"><a name="l00399"></a><span class="lineno">  399</span>&#160; <span class="keyword">public</span>:</div>
-<div class="line"><a name="l00417"></a><span class="lineno">  417</span>&#160;  <span class="keyword">explicit</span> <a class="code" href="classgraphar_1_1_edge_info.html#ab3c32f3112dcf08304676eeb95545b55">EdgeInfo</a>(<span class="keyword">const</span> std::string&amp; src_type, <span class="keyword">const</span> std::string&amp; edge_type,</div>
-<div class="line"><a name="l00418"></a><span class="lineno">  418</span>&#160;                    <span class="keyword">const</span> std::string&amp; dst_type, IdType chunk_size,</div>
-<div class="line"><a name="l00419"></a><span class="lineno">  419</span>&#160;                    IdType src_chunk_size, IdType dst_chunk_size, <span class="keywordtype">bool</span> directed,</div>
-<div class="line"><a name="l00420"></a><span class="lineno">  420</span>&#160;                    <span class="keyword">const</span> AdjacentListVector&amp; adjacent_lists,</div>
-<div class="line"><a name="l00421"></a><span class="lineno">  421</span>&#160;                    <span class="keyword">const</span> PropertyGroupVector&amp; property_groups,</div>
-<div class="line"><a name="l00422"></a><span class="lineno">  422</span>&#160;                    <span class="keyword">const</span> std::string&amp; prefix = <span class="stringliteral">&quot;&quot;</span>,</div>
-<div class="line"><a name="l00423"></a><span class="lineno">  423</span>&#160;                    std::shared_ptr&lt;const InfoVersion&gt; <a class="code" href="classgraphar_1_1_edge_info.html#a9440bef05f4fa689662f26a9ef0117c1">version</a> = <span class="keyword">nullptr</span>);</div>
-<div class="line"><a name="l00424"></a><span class="lineno">  424</span>&#160; </div>
-<div class="line"><a name="l00425"></a><span class="lineno">  425</span>&#160;  ~<a class="code" href="classgraphar_1_1_edge_info.html">EdgeInfo</a>();</div>
-<div class="line"><a name="l00426"></a><span class="lineno">  426</span>&#160; </div>
-<div class="line"><a name="l00434"></a><span class="lineno">  434</span>&#160;  Result&lt;std::shared_ptr&lt;EdgeInfo&gt;&gt; <a class="code" href="classgraphar_1_1_edge_info.html#a6e5b4fdc98d8399564396fb63955c62a">AddAdjacentList</a>(</div>
-<div class="line"><a name="l00435"></a><span class="lineno">  435</span>&#160;      std::shared_ptr&lt;AdjacentList&gt; adj_list) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00363"></a><span class="lineno">  363</span>&#160;  Result&lt;std::string&gt; <a class="code" href="classgraphar_1_1_vertex_info.html#a3214a62ac41be6cb53c22894d2926710">GetPathPrefix</a>(</div>
+<div class="line"><a name="l00364"></a><span class="lineno">  364</span>&#160;      std::shared_ptr&lt;PropertyGroup&gt; property_group) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00365"></a><span class="lineno">  365</span>&#160; </div>
+<div class="line"><a name="l00371"></a><span class="lineno">  371</span>&#160;  Result&lt;std::string&gt; <a class="code" href="classgraphar_1_1_vertex_info.html#aad61b0a40a4bef344fad93cb1332d97d">GetVerticesNumFilePath</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00372"></a><span class="lineno">  372</span>&#160; </div>
+<div class="line"><a name="l00378"></a><span class="lineno">  378</span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="classgraphar_1_1_vertex_info.html#a70d2cb4637d4b2909bd34045a39568af">IsValidated</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00379"></a><span class="lineno">  379</span>&#160; </div>
+<div class="line"><a name="l00387"></a><span class="lineno">  387</span>&#160;  <span class="keyword">static</span> Result&lt;std::shared_ptr&lt;VertexInfo&gt;&gt; <a class="code" href="classgraphar_1_1_vertex_info.html#af1ade1caa6e70e4b7ce60cf4df7ac50c">Load</a>(std::shared_ptr&lt;Yaml&gt; yaml);</div>
+<div class="line"><a name="l00388"></a><span class="lineno">  388</span>&#160; </div>
+<div class="line"><a name="l00395"></a><span class="lineno">  395</span>&#160;  <span class="keyword">static</span> Result&lt;std::shared_ptr&lt;VertexInfo&gt;&gt; <a class="code" href="classgraphar_1_1_vertex_info.html#af1ade1caa6e70e4b7ce60cf4df7ac50c">Load</a>(<span class="keyword">const</span> std::string&amp; input);</div>
+<div class="line"><a name="l00396"></a><span class="lineno">  396</span>&#160; </div>
+<div class="line"><a name="l00397"></a><span class="lineno">  397</span>&#160; <span class="keyword">private</span>:</div>
+<div class="line"><a name="l00398"></a><span class="lineno">  398</span>&#160;  <span class="keyword">class </span><a class="code" href="classgraphar_1_1_vertex_info_1_1_impl.html">Impl</a>;</div>
+<div class="line"><a name="l00399"></a><span class="lineno">  399</span>&#160;  std::unique_ptr&lt;Impl&gt; impl_;</div>
+<div class="line"><a name="l00400"></a><span class="lineno">  400</span>&#160;};</div>
+<div class="line"><a name="l00401"></a><span class="lineno">  401</span>&#160; </div>
+<div class="line"><a name="l00408"></a><span class="lineno"><a class="line" href="classgraphar_1_1_edge_info.html">  408</a></span>&#160;<span class="keyword">class </span><a class="code" href="classgraphar_1_1_edge_info.html">EdgeInfo</a> {</div>
+<div class="line"><a name="l00409"></a><span class="lineno">  409</span>&#160; <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00427"></a><span class="lineno">  427</span>&#160;  <span class="keyword">explicit</span> <a class="code" href="classgraphar_1_1_edge_info.html#ab3c32f3112dcf08304676eeb95545b55">EdgeInfo</a>(<span class="keyword">const</span> std::string&amp; src_type, <span class="keyword">const</span> std::string&amp; edge_type,</div>
+<div class="line"><a name="l00428"></a><span class="lineno">  428</span>&#160;                    <span class="keyword">const</span> std::string&amp; dst_type, IdType chunk_size,</div>
+<div class="line"><a name="l00429"></a><span class="lineno">  429</span>&#160;                    IdType src_chunk_size, IdType dst_chunk_size, <span class="keywordtype">bool</span> directed,</div>
+<div class="line"><a name="l00430"></a><span class="lineno">  430</span>&#160;                    <span class="keyword">const</span> AdjacentListVector&amp; adjacent_lists,</div>
+<div class="line"><a name="l00431"></a><span class="lineno">  431</span>&#160;                    <span class="keyword">const</span> PropertyGroupVector&amp; property_groups,</div>
+<div class="line"><a name="l00432"></a><span class="lineno">  432</span>&#160;                    <span class="keyword">const</span> std::string&amp; prefix = <span class="stringliteral">&quot;&quot;</span>,</div>
+<div class="line"><a name="l00433"></a><span class="lineno">  433</span>&#160;                    std::shared_ptr&lt;const InfoVersion&gt; <a class="code" href="classgraphar_1_1_edge_info.html#a9440bef05f4fa689662f26a9ef0117c1">version</a> = <span class="keyword">nullptr</span>);</div>
+<div class="line"><a name="l00434"></a><span class="lineno">  434</span>&#160; </div>
+<div class="line"><a name="l00435"></a><span class="lineno">  435</span>&#160;  ~<a class="code" href="classgraphar_1_1_edge_info.html">EdgeInfo</a>();</div>
 <div class="line"><a name="l00436"></a><span class="lineno">  436</span>&#160; </div>
-<div class="line"><a name="l00442"></a><span class="lineno">  442</span>&#160;  Result&lt;std::shared_ptr&lt;EdgeInfo&gt;&gt; <a class="code" href="classgraphar_1_1_edge_info.html#a9620f838addfdcb892b30e80e2cc4239">AddPropertyGroup</a>(</div>
-<div class="line"><a name="l00443"></a><span class="lineno">  443</span>&#160;      std::shared_ptr&lt;PropertyGroup&gt; property_group) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00444"></a><span class="lineno">  444</span>&#160; </div>
-<div class="line"><a name="l00449"></a><span class="lineno">  449</span>&#160;  <span class="keyword">const</span> std::string&amp; <a class="code" href="classgraphar_1_1_edge_info.html#a994023f50f2f952cc1361b0f9928dec4">GetSrcType</a>() <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00450"></a><span class="lineno">  450</span>&#160; </div>
-<div class="line"><a name="l00455"></a><span class="lineno">  455</span>&#160;  <span class="keyword">const</span> std::string&amp; <a class="code" href="classgraphar_1_1_edge_info.html#a03c9b4f4b0edcf47f2e5746e8f9f6db0">GetEdgeType</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00444"></a><span class="lineno">  444</span>&#160;  Result&lt;std::shared_ptr&lt;EdgeInfo&gt;&gt; <a class="code" href="classgraphar_1_1_edge_info.html#a6e5b4fdc98d8399564396fb63955c62a">AddAdjacentList</a>(</div>
+<div class="line"><a name="l00445"></a><span class="lineno">  445</span>&#160;      std::shared_ptr&lt;AdjacentList&gt; adj_list) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00446"></a><span class="lineno">  446</span>&#160; </div>
+<div class="line"><a name="l00454"></a><span class="lineno">  454</span>&#160;  Result&lt;std::shared_ptr&lt;EdgeInfo&gt;&gt; <a class="code" href="classgraphar_1_1_edge_info.html#a7db36496a4cf0eb517b463de5caa125f">RemoveAdjacentList</a>(</div>
+<div class="line"><a name="l00455"></a><span class="lineno">  455</span>&#160;      std::shared_ptr&lt;AdjacentList&gt; adj_list) <span class="keyword">const</span>;</div>
 <div class="line"><a name="l00456"></a><span class="lineno">  456</span>&#160; </div>
-<div class="line"><a name="l00461"></a><span class="lineno">  461</span>&#160;  <span class="keyword">const</span> std::string&amp; <a class="code" href="classgraphar_1_1_edge_info.html#ac03180737adf29c79196bbe729b3c929">GetDstType</a>() <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00462"></a><span class="lineno">  462</span>&#160; </div>
-<div class="line"><a name="l00467"></a><span class="lineno">  467</span>&#160;  IdType <a class="code" href="classgraphar_1_1_edge_info.html#a62c2300185c0655df9b44db39b0a399b">GetChunkSize</a>() <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00468"></a><span class="lineno">  468</span>&#160; </div>
-<div class="line"><a name="l00473"></a><span class="lineno">  473</span>&#160;  IdType <a class="code" href="classgraphar_1_1_edge_info.html#ac07ad975e8ecbdb779038388e3def59e">GetSrcChunkSize</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00462"></a><span class="lineno">  462</span>&#160;  Result&lt;std::shared_ptr&lt;EdgeInfo&gt;&gt; <a class="code" href="classgraphar_1_1_edge_info.html#a9620f838addfdcb892b30e80e2cc4239">AddPropertyGroup</a>(</div>
+<div class="line"><a name="l00463"></a><span class="lineno">  463</span>&#160;      std::shared_ptr&lt;PropertyGroup&gt; property_group) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00464"></a><span class="lineno">  464</span>&#160; </div>
+<div class="line"><a name="l00472"></a><span class="lineno">  472</span>&#160;  Result&lt;std::shared_ptr&lt;EdgeInfo&gt;&gt; <a class="code" href="classgraphar_1_1_edge_info.html#a264853429b84060bbe36c671d5bc8963">RemovePropertyGroup</a>(</div>
+<div class="line"><a name="l00473"></a><span class="lineno">  473</span>&#160;      std::shared_ptr&lt;PropertyGroup&gt; property_group) <span class="keyword">const</span>;</div>
 <div class="line"><a name="l00474"></a><span class="lineno">  474</span>&#160; </div>
-<div class="line"><a name="l00479"></a><span class="lineno">  479</span>&#160;  IdType <a class="code" href="classgraphar_1_1_edge_info.html#abe0fc6672a3fbb5fbd0b5e8775cb8dac">GetDstChunkSize</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00479"></a><span class="lineno">  479</span>&#160;  <span class="keyword">const</span> std::string&amp; <a class="code" href="classgraphar_1_1_edge_info.html#a994023f50f2f952cc1361b0f9928dec4">GetSrcType</a>() <span class="keyword">const</span>;</div>
 <div class="line"><a name="l00480"></a><span class="lineno">  480</span>&#160; </div>
-<div class="line"><a name="l00485"></a><span class="lineno">  485</span>&#160;  <span class="keyword">const</span> std::string&amp; <a class="code" href="classgraphar_1_1_edge_info.html#a4ec8810a54411f9a8aba35b2faf29acb">GetPrefix</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00485"></a><span class="lineno">  485</span>&#160;  <span class="keyword">const</span> std::string&amp; <a class="code" href="classgraphar_1_1_edge_info.html#a03c9b4f4b0edcf47f2e5746e8f9f6db0">GetEdgeType</a>() <span class="keyword">const</span>;</div>
 <div class="line"><a name="l00486"></a><span class="lineno">  486</span>&#160; </div>
-<div class="line"><a name="l00491"></a><span class="lineno">  491</span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="classgraphar_1_1_edge_info.html#aad31af465d41c026a35c20828915922e">IsDirected</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00491"></a><span class="lineno">  491</span>&#160;  <span class="keyword">const</span> std::string&amp; <a class="code" href="classgraphar_1_1_edge_info.html#ac03180737adf29c79196bbe729b3c929">GetDstType</a>() <span class="keyword">const</span>;</div>
 <div class="line"><a name="l00492"></a><span class="lineno">  492</span>&#160; </div>
-<div class="line"><a name="l00497"></a><span class="lineno">  497</span>&#160;  <span class="keyword">const</span> std::shared_ptr&lt;const InfoVersion&gt;&amp; <a class="code" href="classgraphar_1_1_edge_info.html#a9440bef05f4fa689662f26a9ef0117c1">version</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00497"></a><span class="lineno">  497</span>&#160;  IdType <a class="code" href="classgraphar_1_1_edge_info.html#a62c2300185c0655df9b44db39b0a399b">GetChunkSize</a>() <span class="keyword">const</span>;</div>
 <div class="line"><a name="l00498"></a><span class="lineno">  498</span>&#160; </div>
-<div class="line"><a name="l00506"></a><span class="lineno">  506</span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="classgraphar_1_1_edge_info.html#aaa6633dc8136cec806cbcf42c2cf136d">HasAdjacentListType</a>(AdjListType adj_list_type) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00507"></a><span class="lineno">  507</span>&#160; </div>
-<div class="line"><a name="l00514"></a><span class="lineno">  514</span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="classgraphar_1_1_edge_info.html#a69182fa8d45bb0e7d4ac230adb1239b2">HasProperty</a>(<span class="keyword">const</span> std::string&amp; property_name) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00515"></a><span class="lineno">  515</span>&#160; </div>
-<div class="line"><a name="l00519"></a><span class="lineno">  519</span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="classgraphar_1_1_edge_info.html#a857bb686e5d7f579ac0e2a889a53f829">HasPropertyGroup</a>(</div>
-<div class="line"><a name="l00520"></a><span class="lineno">  520</span>&#160;      <span class="keyword">const</span> std::shared_ptr&lt;PropertyGroup&gt;&amp; property_group) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00521"></a><span class="lineno">  521</span>&#160; </div>
-<div class="line"><a name="l00522"></a><span class="lineno">  522</span>&#160;  std::shared_ptr&lt;AdjacentList&gt; GetAdjacentList(</div>
-<div class="line"><a name="l00523"></a><span class="lineno">  523</span>&#160;      AdjListType adj_list_type) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00524"></a><span class="lineno">  524</span>&#160; </div>
-<div class="line"><a name="l00528"></a><span class="lineno">  528</span>&#160;  <span class="keywordtype">int</span> <a class="code" href="classgraphar_1_1_edge_info.html#aee914f2c4adf773c048daed0e93dbe32">PropertyGroupNum</a>() <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00529"></a><span class="lineno">  529</span>&#160; </div>
-<div class="line"><a name="l00534"></a><span class="lineno">  534</span>&#160;  <span class="keyword">const</span> PropertyGroupVector&amp; <a class="code" href="classgraphar_1_1_edge_info.html#ad56107001dcbadac71ae8063cd25b58f">GetPropertyGroups</a>() <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00535"></a><span class="lineno">  535</span>&#160; </div>
-<div class="line"><a name="l00542"></a><span class="lineno">  542</span>&#160;  std::shared_ptr&lt;PropertyGroup&gt; <a class="code" href="classgraphar_1_1_edge_info.html#aec1bdf018d5b209f722dbf293ef14dd6">GetPropertyGroup</a>(</div>
-<div class="line"><a name="l00543"></a><span class="lineno">  543</span>&#160;      <span class="keyword">const</span> std::string&amp; property) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00544"></a><span class="lineno">  544</span>&#160; </div>
-<div class="line"><a name="l00551"></a><span class="lineno">  551</span>&#160;  std::shared_ptr&lt;PropertyGroup&gt; <a class="code" href="classgraphar_1_1_edge_info.html#a8551959066b19885b9ce15262b5cb3db">GetPropertyGroupByIndex</a>(<span class="keywordtype">int</span> index) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00552"></a><span class="lineno">  552</span>&#160; </div>
-<div class="line"><a name="l00560"></a><span class="lineno">  560</span>&#160;  Result&lt;std::string&gt; <a class="code" href="classgraphar_1_1_edge_info.html#aec1a622c83b14d62b26e7143850a3cf1">GetVerticesNumFilePath</a>(AdjListType adj_list_type) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00561"></a><span class="lineno">  561</span>&#160; </div>
-<div class="line"><a name="l00570"></a><span class="lineno">  570</span>&#160;  Result&lt;std::string&gt; <a class="code" href="classgraphar_1_1_edge_info.html#a4f2c7fedc68dce8f1c7fb90eede9906f">GetEdgesNumFilePath</a>(IdType vertex_chunk_index,</div>
-<div class="line"><a name="l00571"></a><span class="lineno">  571</span>&#160;                                          AdjListType adj_list_type) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00572"></a><span class="lineno">  572</span>&#160; </div>
-<div class="line"><a name="l00580"></a><span class="lineno">  580</span>&#160;  Result&lt;std::string&gt; <a class="code" href="classgraphar_1_1_edge_info.html#a0eb9f0ff282c73f5c90a8c3940f1929e">GetAdjListFilePath</a>(IdType vertex_chunk_index,</div>
-<div class="line"><a name="l00581"></a><span class="lineno">  581</span>&#160;                                         IdType edge_chunk_index,</div>
-<div class="line"><a name="l00582"></a><span class="lineno">  582</span>&#160;                                         AdjListType adj_list_type) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00583"></a><span class="lineno">  583</span>&#160; </div>
-<div class="line"><a name="l00591"></a><span class="lineno">  591</span>&#160;  Result&lt;std::string&gt; <a class="code" href="classgraphar_1_1_edge_info.html#ab39f63f0aa7284c510a7e0d61b0942d3">GetAdjListPathPrefix</a>(AdjListType adj_list_type) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00592"></a><span class="lineno">  592</span>&#160; </div>
-<div class="line"><a name="l00600"></a><span class="lineno">  600</span>&#160;  Result&lt;std::string&gt; <a class="code" href="classgraphar_1_1_edge_info.html#a615fe3ed78f35af9aef598287cb89a27">GetAdjListOffsetFilePath</a>(IdType vertex_chunk_index,</div>
-<div class="line"><a name="l00601"></a><span class="lineno">  601</span>&#160;                                               AdjListType adj_list_type) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00503"></a><span class="lineno">  503</span>&#160;  IdType <a class="code" href="classgraphar_1_1_edge_info.html#ac07ad975e8ecbdb779038388e3def59e">GetSrcChunkSize</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00504"></a><span class="lineno">  504</span>&#160; </div>
+<div class="line"><a name="l00509"></a><span class="lineno">  509</span>&#160;  IdType <a class="code" href="classgraphar_1_1_edge_info.html#abe0fc6672a3fbb5fbd0b5e8775cb8dac">GetDstChunkSize</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00510"></a><span class="lineno">  510</span>&#160; </div>
+<div class="line"><a name="l00515"></a><span class="lineno">  515</span>&#160;  <span class="keyword">const</span> std::string&amp; <a class="code" href="classgraphar_1_1_edge_info.html#a4ec8810a54411f9a8aba35b2faf29acb">GetPrefix</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00516"></a><span class="lineno">  516</span>&#160; </div>
+<div class="line"><a name="l00521"></a><span class="lineno">  521</span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="classgraphar_1_1_edge_info.html#aad31af465d41c026a35c20828915922e">IsDirected</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00522"></a><span class="lineno">  522</span>&#160; </div>
+<div class="line"><a name="l00527"></a><span class="lineno">  527</span>&#160;  <span class="keyword">const</span> std::shared_ptr&lt;const InfoVersion&gt;&amp; <a class="code" href="classgraphar_1_1_edge_info.html#a9440bef05f4fa689662f26a9ef0117c1">version</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00528"></a><span class="lineno">  528</span>&#160; </div>
+<div class="line"><a name="l00536"></a><span class="lineno">  536</span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="classgraphar_1_1_edge_info.html#aaa6633dc8136cec806cbcf42c2cf136d">HasAdjacentListType</a>(AdjListType adj_list_type) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00537"></a><span class="lineno">  537</span>&#160; </div>
+<div class="line"><a name="l00544"></a><span class="lineno">  544</span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="classgraphar_1_1_edge_info.html#a69182fa8d45bb0e7d4ac230adb1239b2">HasProperty</a>(<span class="keyword">const</span> std::string&amp; property_name) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00545"></a><span class="lineno">  545</span>&#160; </div>
+<div class="line"><a name="l00549"></a><span class="lineno">  549</span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="classgraphar_1_1_edge_info.html#a857bb686e5d7f579ac0e2a889a53f829">HasPropertyGroup</a>(</div>
+<div class="line"><a name="l00550"></a><span class="lineno">  550</span>&#160;      <span class="keyword">const</span> std::shared_ptr&lt;PropertyGroup&gt;&amp; property_group) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00551"></a><span class="lineno">  551</span>&#160; </div>
+<div class="line"><a name="l00552"></a><span class="lineno">  552</span>&#160;  std::shared_ptr&lt;AdjacentList&gt; GetAdjacentList(</div>
+<div class="line"><a name="l00553"></a><span class="lineno">  553</span>&#160;      AdjListType adj_list_type) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00554"></a><span class="lineno">  554</span>&#160; </div>
+<div class="line"><a name="l00558"></a><span class="lineno">  558</span>&#160;  <span class="keywordtype">int</span> <a class="code" href="classgraphar_1_1_edge_info.html#aee914f2c4adf773c048daed0e93dbe32">PropertyGroupNum</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00559"></a><span class="lineno">  559</span>&#160; </div>
+<div class="line"><a name="l00564"></a><span class="lineno">  564</span>&#160;  <span class="keyword">const</span> PropertyGroupVector&amp; <a class="code" href="classgraphar_1_1_edge_info.html#ad56107001dcbadac71ae8063cd25b58f">GetPropertyGroups</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00565"></a><span class="lineno">  565</span>&#160; </div>
+<div class="line"><a name="l00572"></a><span class="lineno">  572</span>&#160;  std::shared_ptr&lt;PropertyGroup&gt; <a class="code" href="classgraphar_1_1_edge_info.html#aec1bdf018d5b209f722dbf293ef14dd6">GetPropertyGroup</a>(</div>
+<div class="line"><a name="l00573"></a><span class="lineno">  573</span>&#160;      <span class="keyword">const</span> std::string&amp; property) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00574"></a><span class="lineno">  574</span>&#160; </div>
+<div class="line"><a name="l00581"></a><span class="lineno">  581</span>&#160;  std::shared_ptr&lt;PropertyGroup&gt; <a class="code" href="classgraphar_1_1_edge_info.html#a8551959066b19885b9ce15262b5cb3db">GetPropertyGroupByIndex</a>(<span class="keywordtype">int</span> index) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00582"></a><span class="lineno">  582</span>&#160; </div>
+<div class="line"><a name="l00590"></a><span class="lineno">  590</span>&#160;  Result&lt;std::string&gt; <a class="code" href="classgraphar_1_1_edge_info.html#aec1a622c83b14d62b26e7143850a3cf1">GetVerticesNumFilePath</a>(AdjListType adj_list_type) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00591"></a><span class="lineno">  591</span>&#160; </div>
+<div class="line"><a name="l00600"></a><span class="lineno">  600</span>&#160;  Result&lt;std::string&gt; <a class="code" href="classgraphar_1_1_edge_info.html#a4f2c7fedc68dce8f1c7fb90eede9906f">GetEdgesNumFilePath</a>(IdType vertex_chunk_index,</div>
+<div class="line"><a name="l00601"></a><span class="lineno">  601</span>&#160;                                          AdjListType adj_list_type) <span class="keyword">const</span>;</div>
 <div class="line"><a name="l00602"></a><span class="lineno">  602</span>&#160; </div>
-<div class="line"><a name="l00610"></a><span class="lineno">  610</span>&#160;  Result&lt;std::string&gt; <a class="code" href="classgraphar_1_1_edge_info.html#aab2032669c9e9dcf11275fdd4cb2c1fa">GetOffsetPathPrefix</a>(AdjListType adj_list_type) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00611"></a><span class="lineno">  611</span>&#160; </div>
-<div class="line"><a name="l00622"></a><span class="lineno">  622</span>&#160;  Result&lt;std::string&gt; <a class="code" href="classgraphar_1_1_edge_info.html#abfcba5aed61cdfaf91f98e649b370722">GetPropertyFilePath</a>(</div>
-<div class="line"><a name="l00623"></a><span class="lineno">  623</span>&#160;      <span class="keyword">const</span> std::shared_ptr&lt;PropertyGroup&gt;&amp; property_group,</div>
-<div class="line"><a name="l00624"></a><span class="lineno">  624</span>&#160;      AdjListType adj_list_type, IdType vertex_chunk_index,</div>
-<div class="line"><a name="l00625"></a><span class="lineno">  625</span>&#160;      IdType edge_chunk_index) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00626"></a><span class="lineno">  626</span>&#160; </div>
-<div class="line"><a name="l00635"></a><span class="lineno">  635</span>&#160;  Result&lt;std::string&gt; <a class="code" href="classgraphar_1_1_edge_info.html#a55004cedc30fcb0fa94adf246dcc2702">GetPropertyGroupPathPrefix</a>(</div>
-<div class="line"><a name="l00636"></a><span class="lineno">  636</span>&#160;      <span class="keyword">const</span> std::shared_ptr&lt;PropertyGroup&gt;&amp; property_group,</div>
-<div class="line"><a name="l00637"></a><span class="lineno">  637</span>&#160;      AdjListType adj_list_type) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00638"></a><span class="lineno">  638</span>&#160; </div>
-<div class="line"><a name="l00646"></a><span class="lineno">  646</span>&#160;  Result&lt;std::shared_ptr&lt;DataType&gt;&gt; <a class="code" href="classgraphar_1_1_edge_info.html#a37fa8536c627a5e5f529e8ee6d3d7506">GetPropertyType</a>(</div>
-<div class="line"><a name="l00647"></a><span class="lineno">  647</span>&#160;      <span class="keyword">const</span> std::string&amp; property_name) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00654"></a><span class="lineno">  654</span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="classgraphar_1_1_edge_info.html#a5bd430ba21f5dfb230b978e03c4020ef">IsPrimaryKey</a>(<span class="keyword">const</span> std::string&amp; property_name) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00655"></a><span class="lineno">  655</span>&#160; </div>
-<div class="line"><a name="l00662"></a><span class="lineno">  662</span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="classgraphar_1_1_edge_info.html#a80b00d930f22870d00331a639c9cc26e">IsNullableKey</a>(<span class="keyword">const</span> std::string&amp; property_name) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00663"></a><span class="lineno">  663</span>&#160; </div>
-<div class="line"><a name="l00670"></a><span class="lineno">  670</span>&#160;  <a class="code" href="classgraphar_1_1_status.html">Status</a> <a class="code" href="classgraphar_1_1_edge_info.html#a1e95f986bd8c5191f438705b195191e3">Save</a>(<span class="keyword">const</span> std::string&amp; file_name) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00671"></a><span class="lineno">  671</span>&#160; </div>
-<div class="line"><a name="l00678"></a><span class="lineno">  678</span>&#160;  Result&lt;std::string&gt; <a class="code" href="classgraphar_1_1_edge_info.html#a80004230ddfbc892995732ea59993a27">Dump</a>() <span class="keyword">const</span> noexcept;</div>
-<div class="line"><a name="l00679"></a><span class="lineno">  679</span>&#160; </div>
-<div class="line"><a name="l00685"></a><span class="lineno">  685</span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="classgraphar_1_1_edge_info.html#a3dca57726506375cab4fc43fdef2914f">IsValidated</a>() <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00686"></a><span class="lineno">  686</span>&#160; </div>
-<div class="line"><a name="l00688"></a><span class="lineno">  688</span>&#160;  <span class="keyword">static</span> Result&lt;std::shared_ptr&lt;EdgeInfo&gt;&gt; <a class="code" href="classgraphar_1_1_edge_info.html#a0ac67e1cf3b3fa79b6fcbc054869d0e5">Load</a>(std::shared_ptr&lt;Yaml&gt; yaml);</div>
-<div class="line"><a name="l00689"></a><span class="lineno">  689</span>&#160; </div>
-<div class="line"><a name="l00696"></a><span class="lineno">  696</span>&#160;  <span class="keyword">static</span> Result&lt;std::shared_ptr&lt;EdgeInfo&gt;&gt; <a class="code" href="classgraphar_1_1_edge_info.html#a0ac67e1cf3b3fa79b6fcbc054869d0e5">Load</a>(<span class="keyword">const</span> std::string&amp; input);</div>
-<div class="line"><a name="l00697"></a><span class="lineno">  697</span>&#160; </div>
-<div class="line"><a name="l00698"></a><span class="lineno">  698</span>&#160; <span class="keyword">private</span>:</div>
-<div class="line"><a name="l00699"></a><span class="lineno">  699</span>&#160;  <span class="keyword">class </span><a class="code" href="classgraphar_1_1_edge_info_1_1_impl.html">Impl</a>;</div>
-<div class="line"><a name="l00700"></a><span class="lineno">  700</span>&#160;  std::unique_ptr&lt;Impl&gt; impl_;</div>
-<div class="line"><a name="l00701"></a><span class="lineno">  701</span>&#160;};</div>
-<div class="line"><a name="l00702"></a><span class="lineno">  702</span>&#160; </div>
-<div class="line"><a name="l00706"></a><span class="lineno"><a class="line" href="classgraphar_1_1_graph_info.html">  706</a></span>&#160;<span class="keyword">class </span><a class="code" href="classgraphar_1_1_graph_info.html">GraphInfo</a> {</div>
-<div class="line"><a name="l00707"></a><span class="lineno">  707</span>&#160; <span class="keyword">public</span>:</div>
-<div class="line"><a name="l00719"></a><span class="lineno">  719</span>&#160;  <span class="keyword">explicit</span> <a class="code" href="classgraphar_1_1_graph_info.html#a1b473deea923f7b2a57c339dc7e51192">GraphInfo</a>(</div>
-<div class="line"><a name="l00720"></a><span class="lineno">  720</span>&#160;      <span class="keyword">const</span> std::string&amp; graph_name, VertexInfoVector vertex_infos,</div>
-<div class="line"><a name="l00721"></a><span class="lineno">  721</span>&#160;      EdgeInfoVector edge_infos, <span class="keyword">const</span> std::vector&lt;std::string&gt;&amp; labels = {},</div>
-<div class="line"><a name="l00722"></a><span class="lineno">  722</span>&#160;      <span class="keyword">const</span> std::string&amp; prefix = <span class="stringliteral">&quot;./&quot;</span>,</div>
-<div class="line"><a name="l00723"></a><span class="lineno">  723</span>&#160;      std::shared_ptr&lt;const InfoVersion&gt; <a class="code" href="classgraphar_1_1_graph_info.html#aeb68a7550c63365d8093136601a3aeee">version</a> = <span class="keyword">nullptr</span>,</div>
-<div class="line"><a name="l00724"></a><span class="lineno">  724</span>&#160;      <span class="keyword">const</span> std::unordered_map&lt;std::string, std::string&gt;&amp; extra_info = {});</div>
-<div class="line"><a name="l00725"></a><span class="lineno">  725</span>&#160; </div>
-<div class="line"><a name="l00726"></a><span class="lineno">  726</span>&#160;  ~<a class="code" href="classgraphar_1_1_graph_info.html">GraphInfo</a>();</div>
+<div class="line"><a name="l00610"></a><span class="lineno">  610</span>&#160;  Result&lt;std::string&gt; <a class="code" href="classgraphar_1_1_edge_info.html#a0eb9f0ff282c73f5c90a8c3940f1929e">GetAdjListFilePath</a>(IdType vertex_chunk_index,</div>
+<div class="line"><a name="l00611"></a><span class="lineno">  611</span>&#160;                                         IdType edge_chunk_index,</div>
+<div class="line"><a name="l00612"></a><span class="lineno">  612</span>&#160;                                         AdjListType adj_list_type) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00613"></a><span class="lineno">  613</span>&#160; </div>
+<div class="line"><a name="l00621"></a><span class="lineno">  621</span>&#160;  Result&lt;std::string&gt; <a class="code" href="classgraphar_1_1_edge_info.html#ab39f63f0aa7284c510a7e0d61b0942d3">GetAdjListPathPrefix</a>(AdjListType adj_list_type) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00622"></a><span class="lineno">  622</span>&#160; </div>
+<div class="line"><a name="l00630"></a><span class="lineno">  630</span>&#160;  Result&lt;std::string&gt; <a class="code" href="classgraphar_1_1_edge_info.html#a615fe3ed78f35af9aef598287cb89a27">GetAdjListOffsetFilePath</a>(IdType vertex_chunk_index,</div>
+<div class="line"><a name="l00631"></a><span class="lineno">  631</span>&#160;                                               AdjListType adj_list_type) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00632"></a><span class="lineno">  632</span>&#160; </div>
+<div class="line"><a name="l00640"></a><span class="lineno">  640</span>&#160;  Result&lt;std::string&gt; <a class="code" href="classgraphar_1_1_edge_info.html#aab2032669c9e9dcf11275fdd4cb2c1fa">GetOffsetPathPrefix</a>(AdjListType adj_list_type) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00641"></a><span class="lineno">  641</span>&#160; </div>
+<div class="line"><a name="l00652"></a><span class="lineno">  652</span>&#160;  Result&lt;std::string&gt; <a class="code" href="classgraphar_1_1_edge_info.html#abfcba5aed61cdfaf91f98e649b370722">GetPropertyFilePath</a>(</div>
+<div class="line"><a name="l00653"></a><span class="lineno">  653</span>&#160;      <span class="keyword">const</span> std::shared_ptr&lt;PropertyGroup&gt;&amp; property_group,</div>
+<div class="line"><a name="l00654"></a><span class="lineno">  654</span>&#160;      AdjListType adj_list_type, IdType vertex_chunk_index,</div>
+<div class="line"><a name="l00655"></a><span class="lineno">  655</span>&#160;      IdType edge_chunk_index) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00656"></a><span class="lineno">  656</span>&#160; </div>
+<div class="line"><a name="l00665"></a><span class="lineno">  665</span>&#160;  Result&lt;std::string&gt; <a class="code" href="classgraphar_1_1_edge_info.html#a55004cedc30fcb0fa94adf246dcc2702">GetPropertyGroupPathPrefix</a>(</div>
+<div class="line"><a name="l00666"></a><span class="lineno">  666</span>&#160;      <span class="keyword">const</span> std::shared_ptr&lt;PropertyGroup&gt;&amp; property_group,</div>
+<div class="line"><a name="l00667"></a><span class="lineno">  667</span>&#160;      AdjListType adj_list_type) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00668"></a><span class="lineno">  668</span>&#160; </div>
+<div class="line"><a name="l00676"></a><span class="lineno">  676</span>&#160;  Result&lt;std::shared_ptr&lt;DataType&gt;&gt; <a class="code" href="classgraphar_1_1_edge_info.html#a37fa8536c627a5e5f529e8ee6d3d7506">GetPropertyType</a>(</div>
+<div class="line"><a name="l00677"></a><span class="lineno">  677</span>&#160;      <span class="keyword">const</span> std::string&amp; property_name) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00684"></a><span class="lineno">  684</span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="classgraphar_1_1_edge_info.html#a5bd430ba21f5dfb230b978e03c4020ef">IsPrimaryKey</a>(<span class="keyword">const</span> std::string&amp; property_name) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00685"></a><span class="lineno">  685</span>&#160; </div>
+<div class="line"><a name="l00692"></a><span class="lineno">  692</span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="classgraphar_1_1_edge_info.html#a80b00d930f22870d00331a639c9cc26e">IsNullableKey</a>(<span class="keyword">const</span> std::string&amp; property_name) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00693"></a><span class="lineno">  693</span>&#160; </div>
+<div class="line"><a name="l00700"></a><span class="lineno">  700</span>&#160;  <a class="code" href="classgraphar_1_1_status.html">Status</a> <a class="code" href="classgraphar_1_1_edge_info.html#a1e95f986bd8c5191f438705b195191e3">Save</a>(<span class="keyword">const</span> std::string&amp; file_name) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00701"></a><span class="lineno">  701</span>&#160; </div>
+<div class="line"><a name="l00708"></a><span class="lineno">  708</span>&#160;  Result&lt;std::string&gt; <a class="code" href="classgraphar_1_1_edge_info.html#a80004230ddfbc892995732ea59993a27">Dump</a>() <span class="keyword">const</span> noexcept;</div>
+<div class="line"><a name="l00709"></a><span class="lineno">  709</span>&#160; </div>
+<div class="line"><a name="l00715"></a><span class="lineno">  715</span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="classgraphar_1_1_edge_info.html#a3dca57726506375cab4fc43fdef2914f">IsValidated</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00716"></a><span class="lineno">  716</span>&#160; </div>
+<div class="line"><a name="l00718"></a><span class="lineno">  718</span>&#160;  <span class="keyword">static</span> Result&lt;std::shared_ptr&lt;EdgeInfo&gt;&gt; <a class="code" href="classgraphar_1_1_edge_info.html#a0ac67e1cf3b3fa79b6fcbc054869d0e5">Load</a>(std::shared_ptr&lt;Yaml&gt; yaml);</div>
+<div class="line"><a name="l00719"></a><span class="lineno">  719</span>&#160; </div>
+<div class="line"><a name="l00726"></a><span class="lineno">  726</span>&#160;  <span class="keyword">static</span> Result&lt;std::shared_ptr&lt;EdgeInfo&gt;&gt; <a class="code" href="classgraphar_1_1_edge_info.html#a0ac67e1cf3b3fa79b6fcbc054869d0e5">Load</a>(<span class="keyword">const</span> std::string&amp; input);</div>
 <div class="line"><a name="l00727"></a><span class="lineno">  727</span>&#160; </div>
-<div class="line"><a name="l00734"></a><span class="lineno">  734</span>&#160;  <span class="keyword">static</span> Result&lt;std::shared_ptr&lt;GraphInfo&gt;&gt; <a class="code" href="classgraphar_1_1_graph_info.html#a63dbd61d6575fe783b3287f391f651ed">Load</a>(<span class="keyword">const</span> std::string&amp; path);</div>
-<div class="line"><a name="l00735"></a><span class="lineno">  735</span>&#160; </div>
-<div class="line"><a name="l00743"></a><span class="lineno">  743</span>&#160;  <span class="keyword">static</span> Result&lt;std::shared_ptr&lt;GraphInfo&gt;&gt; <a class="code" href="classgraphar_1_1_graph_info.html#a63dbd61d6575fe783b3287f391f651ed">Load</a>(</div>
-<div class="line"><a name="l00744"></a><span class="lineno">  744</span>&#160;      <span class="keyword">const</span> std::string&amp; input, <span class="keyword">const</span> std::string&amp; relative_path);</div>
-<div class="line"><a name="l00745"></a><span class="lineno">  745</span>&#160; </div>
-<div class="line"><a name="l00754"></a><span class="lineno">  754</span>&#160;  Result&lt;std::shared_ptr&lt;GraphInfo&gt;&gt; <a class="code" href="classgraphar_1_1_graph_info.html#a44e38c74dc765a56f8f0d200774d8180">AddVertex</a>(</div>
-<div class="line"><a name="l00755"></a><span class="lineno">  755</span>&#160;      std::shared_ptr&lt;VertexInfo&gt; vertex_info) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00756"></a><span class="lineno">  756</span>&#160; </div>
-<div class="line"><a name="l00765"></a><span class="lineno">  765</span>&#160;  Result&lt;std::shared_ptr&lt;GraphInfo&gt;&gt; <a class="code" href="classgraphar_1_1_graph_info.html#a8fdf1ff0ec57e3ca2e66dd4366e390aa">AddEdge</a>(</div>
-<div class="line"><a name="l00766"></a><span class="lineno">  766</span>&#160;      std::shared_ptr&lt;EdgeInfo&gt; edge_info) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00767"></a><span class="lineno">  767</span>&#160; </div>
-<div class="line"><a name="l00772"></a><span class="lineno">  772</span>&#160;  <span class="keyword">const</span> std::string&amp; <a class="code" href="classgraphar_1_1_graph_info.html#ab10cb1ceaa01a74d44c1076c43c2fcce">GetName</a>() <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00773"></a><span class="lineno">  773</span>&#160; </div>
-<div class="line"><a name="l00778"></a><span class="lineno">  778</span>&#160;  <span class="keyword">const</span> std::vector&lt;std::string&gt;&amp; <a class="code" href="classgraphar_1_1_graph_info.html#a8b057bb6c3cfd897b0fb31ecceea40c9">GetLabels</a>() <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00779"></a><span class="lineno">  779</span>&#160; </div>
-<div class="line"><a name="l00784"></a><span class="lineno">  784</span>&#160;  <span class="keyword">const</span> std::string&amp; <a class="code" href="classgraphar_1_1_graph_info.html#a53eef3d15830bea15de0bbbe7e11e208">GetPrefix</a>() <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00785"></a><span class="lineno">  785</span>&#160; </div>
-<div class="line"><a name="l00791"></a><span class="lineno">  791</span>&#160;  <span class="keyword">const</span> std::shared_ptr&lt;const InfoVersion&gt;&amp; <a class="code" href="classgraphar_1_1_graph_info.html#aeb68a7550c63365d8093136601a3aeee">version</a>() <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00792"></a><span class="lineno">  792</span>&#160; </div>
-<div class="line"><a name="l00798"></a><span class="lineno">  798</span>&#160;  <span class="keyword">const</span> std::unordered_map&lt;std::string, std::string&gt;&amp; <a class="code" href="classgraphar_1_1_graph_info.html#aa0856ec7ecc8d8d1aac2f7cd51cfe136">GetExtraInfo</a>() <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00799"></a><span class="lineno">  799</span>&#160; </div>
-<div class="line"><a name="l00805"></a><span class="lineno">  805</span>&#160;  std::shared_ptr&lt;VertexInfo&gt; <a class="code" href="classgraphar_1_1_graph_info.html#a8799b4b1a2163507a9ddd8f910d4a9d3">GetVertexInfo</a>(<span class="keyword">const</span> std::string&amp; type) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00806"></a><span class="lineno">  806</span>&#160; </div>
-<div class="line"><a name="l00815"></a><span class="lineno">  815</span>&#160;  std::shared_ptr&lt;EdgeInfo&gt; <a class="code" href="classgraphar_1_1_graph_info.html#a7e660710d2e1bd244b5d28bdc68aeab2">GetEdgeInfo</a>(<span class="keyword">const</span> std::string&amp; src_type,</div>
-<div class="line"><a name="l00816"></a><span class="lineno">  816</span>&#160;                                        <span class="keyword">const</span> std::string&amp; edge_type,</div>
-<div class="line"><a name="l00817"></a><span class="lineno">  817</span>&#160;                                        <span class="keyword">const</span> std::string&amp; dst_type) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00818"></a><span class="lineno">  818</span>&#160; </div>
-<div class="line"><a name="l00822"></a><span class="lineno">  822</span>&#160;  <span class="keywordtype">int</span> <a class="code" href="classgraphar_1_1_graph_info.html#a0f03270a6ee9c084dab10421cdf69cd5">GetVertexInfoIndex</a>(<span class="keyword">const</span> std::string&amp; type) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00728"></a><span class="lineno">  728</span>&#160; <span class="keyword">private</span>:</div>
+<div class="line"><a name="l00729"></a><span class="lineno">  729</span>&#160;  <span class="keyword">class </span><a class="code" href="classgraphar_1_1_edge_info_1_1_impl.html">Impl</a>;</div>
+<div class="line"><a name="l00730"></a><span class="lineno">  730</span>&#160;  std::unique_ptr&lt;Impl&gt; impl_;</div>
+<div class="line"><a name="l00731"></a><span class="lineno">  731</span>&#160;};</div>
+<div class="line"><a name="l00732"></a><span class="lineno">  732</span>&#160; </div>
+<div class="line"><a name="l00736"></a><span class="lineno"><a class="line" href="classgraphar_1_1_graph_info.html">  736</a></span>&#160;<span class="keyword">class </span><a class="code" href="classgraphar_1_1_graph_info.html">GraphInfo</a> {</div>
+<div class="line"><a name="l00737"></a><span class="lineno">  737</span>&#160; <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00749"></a><span class="lineno">  749</span>&#160;  <span class="keyword">explicit</span> <a class="code" href="classgraphar_1_1_graph_info.html#a1b473deea923f7b2a57c339dc7e51192">GraphInfo</a>(</div>
+<div class="line"><a name="l00750"></a><span class="lineno">  750</span>&#160;      <span class="keyword">const</span> std::string&amp; graph_name, VertexInfoVector vertex_infos,</div>
+<div class="line"><a name="l00751"></a><span class="lineno">  751</span>&#160;      EdgeInfoVector edge_infos, <span class="keyword">const</span> std::vector&lt;std::string&gt;&amp; labels = {},</div>
+<div class="line"><a name="l00752"></a><span class="lineno">  752</span>&#160;      <span class="keyword">const</span> std::string&amp; prefix = <span class="stringliteral">&quot;./&quot;</span>,</div>
+<div class="line"><a name="l00753"></a><span class="lineno">  753</span>&#160;      std::shared_ptr&lt;const InfoVersion&gt; <a class="code" href="classgraphar_1_1_graph_info.html#aeb68a7550c63365d8093136601a3aeee">version</a> = <span class="keyword">nullptr</span>,</div>
+<div class="line"><a name="l00754"></a><span class="lineno">  754</span>&#160;      <span class="keyword">const</span> std::unordered_map&lt;std::string, std::string&gt;&amp; extra_info = {});</div>
+<div class="line"><a name="l00755"></a><span class="lineno">  755</span>&#160; </div>
+<div class="line"><a name="l00756"></a><span class="lineno">  756</span>&#160;  ~<a class="code" href="classgraphar_1_1_graph_info.html">GraphInfo</a>();</div>
+<div class="line"><a name="l00757"></a><span class="lineno">  757</span>&#160; </div>
+<div class="line"><a name="l00764"></a><span class="lineno">  764</span>&#160;  <span class="keyword">static</span> Result&lt;std::shared_ptr&lt;GraphInfo&gt;&gt; <a class="code" href="classgraphar_1_1_graph_info.html#a63dbd61d6575fe783b3287f391f651ed">Load</a>(<span class="keyword">const</span> std::string&amp; path);</div>
+<div class="line"><a name="l00765"></a><span class="lineno">  765</span>&#160; </div>
+<div class="line"><a name="l00773"></a><span class="lineno">  773</span>&#160;  <span class="keyword">static</span> Result&lt;std::shared_ptr&lt;GraphInfo&gt;&gt; <a class="code" href="classgraphar_1_1_graph_info.html#a63dbd61d6575fe783b3287f391f651ed">Load</a>(</div>
+<div class="line"><a name="l00774"></a><span class="lineno">  774</span>&#160;      <span class="keyword">const</span> std::string&amp; input, <span class="keyword">const</span> std::string&amp; relative_path);</div>
+<div class="line"><a name="l00775"></a><span class="lineno">  775</span>&#160; </div>
+<div class="line"><a name="l00784"></a><span class="lineno">  784</span>&#160;  Result&lt;std::shared_ptr&lt;GraphInfo&gt;&gt; <a class="code" href="classgraphar_1_1_graph_info.html#a44e38c74dc765a56f8f0d200774d8180">AddVertex</a>(</div>
+<div class="line"><a name="l00785"></a><span class="lineno">  785</span>&#160;      std::shared_ptr&lt;VertexInfo&gt; vertex_info) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00786"></a><span class="lineno">  786</span>&#160; </div>
+<div class="line"><a name="l00794"></a><span class="lineno">  794</span>&#160;  Result&lt;std::shared_ptr&lt;GraphInfo&gt;&gt; <a class="code" href="classgraphar_1_1_graph_info.html#ad64a71966ca197ae14ea21ff8787b769">RemoveVertex</a>(</div>
+<div class="line"><a name="l00795"></a><span class="lineno">  795</span>&#160;      std::shared_ptr&lt;VertexInfo&gt; vertex_info) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00796"></a><span class="lineno">  796</span>&#160; </div>
+<div class="line"><a name="l00805"></a><span class="lineno">  805</span>&#160;  Result&lt;std::shared_ptr&lt;GraphInfo&gt;&gt; <a class="code" href="classgraphar_1_1_graph_info.html#a8fdf1ff0ec57e3ca2e66dd4366e390aa">AddEdge</a>(</div>
+<div class="line"><a name="l00806"></a><span class="lineno">  806</span>&#160;      std::shared_ptr&lt;EdgeInfo&gt; edge_info) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00807"></a><span class="lineno">  807</span>&#160; </div>
+<div class="line"><a name="l00815"></a><span class="lineno">  815</span>&#160;  Result&lt;std::shared_ptr&lt;GraphInfo&gt;&gt; <a class="code" href="classgraphar_1_1_graph_info.html#acc0e018222ae59e749a52b3678e6529a">RemoveEdge</a>(</div>
+<div class="line"><a name="l00816"></a><span class="lineno">  816</span>&#160;      std::shared_ptr&lt;EdgeInfo&gt; edge_info) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00817"></a><span class="lineno">  817</span>&#160; </div>
+<div class="line"><a name="l00822"></a><span class="lineno">  822</span>&#160;  <span class="keyword">const</span> std::string&amp; <a class="code" href="classgraphar_1_1_graph_info.html#ab10cb1ceaa01a74d44c1076c43c2fcce">GetName</a>() <span class="keyword">const</span>;</div>
 <div class="line"><a name="l00823"></a><span class="lineno">  823</span>&#160; </div>
-<div class="line"><a name="l00828"></a><span class="lineno">  828</span>&#160;  <span class="keywordtype">int</span> <a class="code" href="classgraphar_1_1_graph_info.html#aa2ca1614d499facc76927b5de733b503">GetEdgeInfoIndex</a>(<span class="keyword">const</span> std::string&amp; src_type,</div>
-<div class="line"><a name="l00829"></a><span class="lineno">  829</span>&#160;                       <span class="keyword">const</span> std::string&amp; edge_type,</div>
-<div class="line"><a name="l00830"></a><span class="lineno">  830</span>&#160;                       <span class="keyword">const</span> std::string&amp; dst_type) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00831"></a><span class="lineno">  831</span>&#160; </div>
-<div class="line"><a name="l00835"></a><span class="lineno">  835</span>&#160;  <span class="keywordtype">int</span> <a class="code" href="classgraphar_1_1_graph_info.html#aa384328a58c9138b5b77ea6172199d07">VertexInfoNum</a>() <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00836"></a><span class="lineno">  836</span>&#160; </div>
-<div class="line"><a name="l00840"></a><span class="lineno">  840</span>&#160;  <span class="keywordtype">int</span> <a class="code" href="classgraphar_1_1_graph_info.html#a814f2cdeecf58a308ab886a085991fc4">EdgeInfoNum</a>() <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00841"></a><span class="lineno">  841</span>&#160; </div>
-<div class="line"><a name="l00848"></a><span class="lineno">  848</span>&#160;  <span class="keyword">const</span> std::shared_ptr&lt;VertexInfo&gt; <a class="code" href="classgraphar_1_1_graph_info.html#a3a94e3d0f64a1b4d1b672676940c389f">GetVertexInfoByIndex</a>(<span class="keywordtype">int</span> index) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00828"></a><span class="lineno">  828</span>&#160;  <span class="keyword">const</span> std::vector&lt;std::string&gt;&amp; <a class="code" href="classgraphar_1_1_graph_info.html#a8b057bb6c3cfd897b0fb31ecceea40c9">GetLabels</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00829"></a><span class="lineno">  829</span>&#160; </div>
+<div class="line"><a name="l00834"></a><span class="lineno">  834</span>&#160;  <span class="keyword">const</span> std::string&amp; <a class="code" href="classgraphar_1_1_graph_info.html#a53eef3d15830bea15de0bbbe7e11e208">GetPrefix</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00835"></a><span class="lineno">  835</span>&#160; </div>
+<div class="line"><a name="l00841"></a><span class="lineno">  841</span>&#160;  <span class="keyword">const</span> std::shared_ptr&lt;const InfoVersion&gt;&amp; <a class="code" href="classgraphar_1_1_graph_info.html#aeb68a7550c63365d8093136601a3aeee">version</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00842"></a><span class="lineno">  842</span>&#160; </div>
+<div class="line"><a name="l00848"></a><span class="lineno">  848</span>&#160;  <span class="keyword">const</span> std::unordered_map&lt;std::string, std::string&gt;&amp; <a class="code" href="classgraphar_1_1_graph_info.html#aa0856ec7ecc8d8d1aac2f7cd51cfe136">GetExtraInfo</a>() <span class="keyword">const</span>;</div>
 <div class="line"><a name="l00849"></a><span class="lineno">  849</span>&#160; </div>
-<div class="line"><a name="l00856"></a><span class="lineno">  856</span>&#160;  <span class="keyword">const</span> std::shared_ptr&lt;EdgeInfo&gt; <a class="code" href="classgraphar_1_1_graph_info.html#afd61923bd9ff1f5329b1c93ebbcd0278">GetEdgeInfoByIndex</a>(<span class="keywordtype">int</span> index) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00857"></a><span class="lineno">  857</span>&#160; </div>
-<div class="line"><a name="l00863"></a><span class="lineno">  863</span>&#160;  <span class="keyword">const</span> VertexInfoVector&amp; <a class="code" href="classgraphar_1_1_graph_info.html#a9393d2797ff5d77f66691f84f15007c4">GetVertexInfos</a>() <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00864"></a><span class="lineno">  864</span>&#160; </div>
-<div class="line"><a name="l00870"></a><span class="lineno">  870</span>&#160;  <span class="keyword">const</span> EdgeInfoVector&amp; <a class="code" href="classgraphar_1_1_graph_info.html#a14dbabaec827198ee822070c1077a570">GetEdgeInfos</a>() <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00871"></a><span class="lineno">  871</span>&#160; </div>
-<div class="line"><a name="l00878"></a><span class="lineno">  878</span>&#160;  <a class="code" href="classgraphar_1_1_status.html">Status</a> <a class="code" href="classgraphar_1_1_graph_info.html#a339f08f5a1427aadc91d30d41dccced3">Save</a>(<span class="keyword">const</span> std::string&amp; path) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00879"></a><span class="lineno">  879</span>&#160; </div>
-<div class="line"><a name="l00886"></a><span class="lineno">  886</span>&#160;  Result&lt;std::string&gt; <a class="code" href="classgraphar_1_1_graph_info.html#a71646413e64620af1ca83f404e7150ea">Dump</a>() <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00887"></a><span class="lineno">  887</span>&#160; </div>
-<div class="line"><a name="l00893"></a><span class="lineno">  893</span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="classgraphar_1_1_graph_info.html#a6e848c7015e3b7d4706ff1ac2ffa6dcd">IsValidated</a>() <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00894"></a><span class="lineno">  894</span>&#160; </div>
-<div class="line"><a name="l00895"></a><span class="lineno">  895</span>&#160; <span class="keyword">private</span>:</div>
-<div class="line"><a name="l00896"></a><span class="lineno">  896</span>&#160;  <span class="keyword">class </span><a class="code" href="classgraphar_1_1_graph_info_1_1_impl.html">Impl</a>;</div>
-<div class="line"><a name="l00897"></a><span class="lineno">  897</span>&#160;  std::unique_ptr&lt;Impl&gt; impl_;</div>
-<div class="line"><a name="l00898"></a><span class="lineno">  898</span>&#160;};</div>
+<div class="line"><a name="l00855"></a><span class="lineno">  855</span>&#160;  std::shared_ptr&lt;VertexInfo&gt; <a class="code" href="classgraphar_1_1_graph_info.html#a8799b4b1a2163507a9ddd8f910d4a9d3">GetVertexInfo</a>(<span class="keyword">const</span> std::string&amp; type) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00856"></a><span class="lineno">  856</span>&#160; </div>
+<div class="line"><a name="l00865"></a><span class="lineno">  865</span>&#160;  std::shared_ptr&lt;EdgeInfo&gt; <a class="code" href="classgraphar_1_1_graph_info.html#a7e660710d2e1bd244b5d28bdc68aeab2">GetEdgeInfo</a>(<span class="keyword">const</span> std::string&amp; src_type,</div>
+<div class="line"><a name="l00866"></a><span class="lineno">  866</span>&#160;                                        <span class="keyword">const</span> std::string&amp; edge_type,</div>
+<div class="line"><a name="l00867"></a><span class="lineno">  867</span>&#160;                                        <span class="keyword">const</span> std::string&amp; dst_type) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00868"></a><span class="lineno">  868</span>&#160; </div>
+<div class="line"><a name="l00872"></a><span class="lineno">  872</span>&#160;  <span class="keywordtype">int</span> <a class="code" href="classgraphar_1_1_graph_info.html#a0f03270a6ee9c084dab10421cdf69cd5">GetVertexInfoIndex</a>(<span class="keyword">const</span> std::string&amp; type) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00873"></a><span class="lineno">  873</span>&#160; </div>
+<div class="line"><a name="l00878"></a><span class="lineno">  878</span>&#160;  <span class="keywordtype">int</span> <a class="code" href="classgraphar_1_1_graph_info.html#aa2ca1614d499facc76927b5de733b503">GetEdgeInfoIndex</a>(<span class="keyword">const</span> std::string&amp; src_type,</div>
+<div class="line"><a name="l00879"></a><span class="lineno">  879</span>&#160;                       <span class="keyword">const</span> std::string&amp; edge_type,</div>
+<div class="line"><a name="l00880"></a><span class="lineno">  880</span>&#160;                       <span class="keyword">const</span> std::string&amp; dst_type) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00881"></a><span class="lineno">  881</span>&#160; </div>
+<div class="line"><a name="l00885"></a><span class="lineno">  885</span>&#160;  <span class="keywordtype">int</span> <a class="code" href="classgraphar_1_1_graph_info.html#aa384328a58c9138b5b77ea6172199d07">VertexInfoNum</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00886"></a><span class="lineno">  886</span>&#160; </div>
+<div class="line"><a name="l00890"></a><span class="lineno">  890</span>&#160;  <span class="keywordtype">int</span> <a class="code" href="classgraphar_1_1_graph_info.html#a814f2cdeecf58a308ab886a085991fc4">EdgeInfoNum</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00891"></a><span class="lineno">  891</span>&#160; </div>
+<div class="line"><a name="l00898"></a><span class="lineno">  898</span>&#160;  <span class="keyword">const</span> std::shared_ptr&lt;VertexInfo&gt; <a class="code" href="classgraphar_1_1_graph_info.html#a3a94e3d0f64a1b4d1b672676940c389f">GetVertexInfoByIndex</a>(<span class="keywordtype">int</span> index) <span class="keyword">const</span>;</div>
 <div class="line"><a name="l00899"></a><span class="lineno">  899</span>&#160; </div>
-<div class="line"><a name="l00900"></a><span class="lineno">  900</span>&#160;}  <span class="comment">// namespace graphar</span></div>
+<div class="line"><a name="l00906"></a><span class="lineno">  906</span>&#160;  <span class="keyword">const</span> std::shared_ptr&lt;EdgeInfo&gt; <a class="code" href="classgraphar_1_1_graph_info.html#afd61923bd9ff1f5329b1c93ebbcd0278">GetEdgeInfoByIndex</a>(<span class="keywordtype">int</span> index) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00907"></a><span class="lineno">  907</span>&#160; </div>
+<div class="line"><a name="l00913"></a><span class="lineno">  913</span>&#160;  <span class="keyword">const</span> VertexInfoVector&amp; <a class="code" href="classgraphar_1_1_graph_info.html#a9393d2797ff5d77f66691f84f15007c4">GetVertexInfos</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00914"></a><span class="lineno">  914</span>&#160; </div>
+<div class="line"><a name="l00920"></a><span class="lineno">  920</span>&#160;  <span class="keyword">const</span> EdgeInfoVector&amp; <a class="code" href="classgraphar_1_1_graph_info.html#a14dbabaec827198ee822070c1077a570">GetEdgeInfos</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00921"></a><span class="lineno">  921</span>&#160; </div>
+<div class="line"><a name="l00928"></a><span class="lineno">  928</span>&#160;  <a class="code" href="classgraphar_1_1_status.html">Status</a> <a class="code" href="classgraphar_1_1_graph_info.html#a339f08f5a1427aadc91d30d41dccced3">Save</a>(<span class="keyword">const</span> std::string&amp; path) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00929"></a><span class="lineno">  929</span>&#160; </div>
+<div class="line"><a name="l00936"></a><span class="lineno">  936</span>&#160;  Result&lt;std::string&gt; <a class="code" href="classgraphar_1_1_graph_info.html#a71646413e64620af1ca83f404e7150ea">Dump</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00937"></a><span class="lineno">  937</span>&#160; </div>
+<div class="line"><a name="l00943"></a><span class="lineno">  943</span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="classgraphar_1_1_graph_info.html#a6e848c7015e3b7d4706ff1ac2ffa6dcd">IsValidated</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00944"></a><span class="lineno">  944</span>&#160; </div>
+<div class="line"><a name="l00945"></a><span class="lineno">  945</span>&#160; <span class="keyword">private</span>:</div>
+<div class="line"><a name="l00946"></a><span class="lineno">  946</span>&#160;  <span class="keyword">class </span><a class="code" href="classgraphar_1_1_graph_info_1_1_impl.html">Impl</a>;</div>
+<div class="line"><a name="l00947"></a><span class="lineno">  947</span>&#160;  std::unique_ptr&lt;Impl&gt; impl_;</div>
+<div class="line"><a name="l00948"></a><span class="lineno">  948</span>&#160;};</div>
+<div class="line"><a name="l00949"></a><span class="lineno">  949</span>&#160; </div>
+<div class="line"><a name="l00950"></a><span class="lineno">  950</span>&#160;}  <span class="comment">// namespace graphar</span></div>
 <div class="ttc" id="aclassgraphar_1_1_adjacent_list_html"><div class="ttname"><a href="classgraphar_1_1_adjacent_list.html">graphar::AdjacentList</a></div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8h_source.html#l00127">graph_info.h:127</a></div></div>
 <div class="ttc" id="aclassgraphar_1_1_adjacent_list_html_a277e5b1c9356f7bdcfe891e043459a3a"><div class="ttname"><a href="classgraphar_1_1_adjacent_list.html#a277e5b1c9356f7bdcfe891e043459a3a">graphar::AdjacentList::GetPrefix</a></div><div class="ttdeci">const std::string &amp; GetPrefix() const</div><div class="ttdoc">Get the prefix of adjacent list.</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8h_source.html#l00160">graph_info.h:160</a></div></div>
 <div class="ttc" id="aclassgraphar_1_1_adjacent_list_html_a2b9f1829c1a5a7cfff7ee96ec7ac4bed"><div class="ttname"><a href="classgraphar_1_1_adjacent_list.html#a2b9f1829c1a5a7cfff7ee96ec7ac4bed">graphar::AdjacentList::GetFileType</a></div><div class="ttdeci">FileType GetFileType() const</div><div class="ttdoc">Get the file type of adjacent list.</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8h_source.html#l00153">graph_info.h:153</a></div></div>
 <div class="ttc" id="aclassgraphar_1_1_adjacent_list_html_a3d4b038f759cceb75cd38c30414c444b"><div class="ttname"><a href="classgraphar_1_1_adjacent_list.html#a3d4b038f759cceb75cd38c30414c444b">graphar::AdjacentList::GetType</a></div><div class="ttdeci">AdjListType GetType() const</div><div class="ttdoc">Get the type of adjacent list.</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8h_source.html#l00146">graph_info.h:146</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_adjacent_list_html_a592ba95843997b321f5545e950f03a57"><div class="ttname"><a href="classgraphar_1_1_adjacent_list.html#a592ba95843997b321f5545e950f03a57">graphar::AdjacentList::IsValidated</a></div><div class="ttdeci">bool IsValidated() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00176">graph_info.cc:176</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_adjacent_list_html_ab31cbdbaae74305f7bf3ffbd76c93efc"><div class="ttname"><a href="classgraphar_1_1_adjacent_list.html#ab31cbdbaae74305f7bf3ffbd76c93efc">graphar::AdjacentList::AdjacentList</a></div><div class="ttdeci">AdjacentList(AdjListType type, FileType file_type, const std::string &amp;prefix=&quot;&quot;)</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00168">graph_info.cc:168</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_edge_info_1_1_impl_html"><div class="ttname"><a href="classgraphar_1_1_edge_info_1_1_impl.html">graphar::EdgeInfo::Impl</a></div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00537">graph_info.cc:537</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_edge_info_html"><div class="ttname"><a href="classgraphar_1_1_edge_info.html">graphar::EdgeInfo</a></div><div class="ttdoc">EdgeInfo is a class to describe the edge information, including the source vertex type,...</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8h_source.html#l00398">graph_info.h:398</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a03c9b4f4b0edcf47f2e5746e8f9f6db0"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a03c9b4f4b0edcf47f2e5746e8f9f6db0">graphar::EdgeInfo::GetEdgeType</a></div><div class="ttdeci">const std::string &amp; GetEdgeType() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00658">graph_info.cc:658</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a0ac67e1cf3b3fa79b6fcbc054869d0e5"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a0ac67e1cf3b3fa79b6fcbc054869d0e5">graphar::EdgeInfo::Load</a></div><div class="ttdeci">static Result&lt; std::shared_ptr&lt; EdgeInfo &gt; &gt; Load(std::shared_ptr&lt; Yaml &gt; yaml)</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00886">graph_info.cc:886</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a0eb9f0ff282c73f5c90a8c3940f1929e"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a0eb9f0ff282c73f5c90a8c3940f1929e">graphar::EdgeInfo::GetAdjListFilePath</a></div><div class="ttdeci">Result&lt; std::string &gt; GetAdjListFilePath(IdType vertex_chunk_index, IdType edge_chunk_index, AdjListType adj_list_type) const</div><div class="ttdoc">Get the file path of adj list topology chunk.</div><div class="ttdef"><b>Definition: [...]
-<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a1e95f986bd8c5191f438705b195191e3"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a1e95f986bd8c5191f438705b195191e3">graphar::EdgeInfo::Save</a></div><div class="ttdeci">Status Save(const std::string &amp;file_name) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l01027">graph_info.cc:1027</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a37fa8536c627a5e5f529e8ee6d3d7506"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a37fa8536c627a5e5f529e8ee6d3d7506">graphar::EdgeInfo::GetPropertyType</a></div><div class="ttdeci">Result&lt; std::shared_ptr&lt; DataType &gt; &gt; GetPropertyType(const std::string &amp;property_name) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00807">graph_info.cc:807</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a3dca57726506375cab4fc43fdef2914f"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a3dca57726506375cab4fc43fdef2914f">graphar::EdgeInfo::IsValidated</a></div><div class="ttdeci">bool IsValidated() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00867">graph_info.cc:867</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a4ec8810a54411f9a8aba35b2faf29acb"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a4ec8810a54411f9a8aba35b2faf29acb">graphar::EdgeInfo::GetPrefix</a></div><div class="ttdeci">const std::string &amp; GetPrefix() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00668">graph_info.cc:668</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a4f2c7fedc68dce8f1c7fb90eede9906f"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a4f2c7fedc68dce8f1c7fb90eede9906f">graphar::EdgeInfo::GetEdgesNumFilePath</a></div><div class="ttdeci">Result&lt; std::string &gt; GetEdgesNumFilePath(IdType vertex_chunk_index, AdjListType adj_list_type) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00738">graph_info.cc:738</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a55004cedc30fcb0fa94adf246dcc2702"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a55004cedc30fcb0fa94adf246dcc2702">graphar::EdgeInfo::GetPropertyGroupPathPrefix</a></div><div class="ttdeci">Result&lt; std::string &gt; GetPropertyGroupPathPrefix(const std::shared_ptr&lt; PropertyGroup &gt; &amp;property_group, AdjListType adj_list_type) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.htm [...]
-<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a5bd430ba21f5dfb230b978e03c4020ef"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a5bd430ba21f5dfb230b978e03c4020ef">graphar::EdgeInfo::IsPrimaryKey</a></div><div class="ttdeci">bool IsPrimaryKey(const std::string &amp;property_name) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00816">graph_info.cc:816</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a615fe3ed78f35af9aef598287cb89a27"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a615fe3ed78f35af9aef598287cb89a27">graphar::EdgeInfo::GetAdjListOffsetFilePath</a></div><div class="ttdeci">Result&lt; std::string &gt; GetAdjListOffsetFilePath(IdType vertex_chunk_index, AdjListType adj_list_type) const</div><div class="ttdoc">Get the adjacency list offset chunk file path of vertex chunk the offset chunks is aligned with t [...]
-<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a62c2300185c0655df9b44db39b0a399b"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a62c2300185c0655df9b44db39b0a399b">graphar::EdgeInfo::GetChunkSize</a></div><div class="ttdeci">IdType GetChunkSize() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00662">graph_info.cc:662</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a69182fa8d45bb0e7d4ac230adb1239b2"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a69182fa8d45bb0e7d4ac230adb1239b2">graphar::EdgeInfo::HasProperty</a></div><div class="ttdeci">bool HasProperty(const std::string &amp;property_name) const</div><div class="ttdoc">Returns whether the edge info contains the given property.</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00681">graph_info.cc:6 [...]
-<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a6e5b4fdc98d8399564396fb63955c62a"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a6e5b4fdc98d8399564396fb63955c62a">graphar::EdgeInfo::AddAdjacentList</a></div><div class="ttdeci">Result&lt; std::shared_ptr&lt; EdgeInfo &gt; &gt; AddAdjacentList(std::shared_ptr&lt; AdjacentList &gt; adj_list) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00832">graph_info.cc:832</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a80004230ddfbc892995732ea59993a27"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a80004230ddfbc892995732ea59993a27">graphar::EdgeInfo::Dump</a></div><div class="ttdeci">Result&lt; std::string &gt; Dump() const noexcept</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00972">graph_info.cc:972</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a80b00d930f22870d00331a639c9cc26e"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a80b00d930f22870d00331a639c9cc26e">graphar::EdgeInfo::IsNullableKey</a></div><div class="ttdeci">bool IsNullableKey(const std::string &amp;property_name) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00824">graph_info.cc:824</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a8551959066b19885b9ce15262b5cb3db"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a8551959066b19885b9ce15262b5cb3db">graphar::EdgeInfo::GetPropertyGroupByIndex</a></div><div class="ttdeci">std::shared_ptr&lt; PropertyGroup &gt; GetPropertyGroupByIndex(int index) const</div><div class="ttdoc">Get the property group at the specified index.</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l007 [...]
-<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a857bb686e5d7f579ac0e2a889a53f829"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a857bb686e5d7f579ac0e2a889a53f829">graphar::EdgeInfo::HasPropertyGroup</a></div><div class="ttdeci">bool HasPropertyGroup(const std::shared_ptr&lt; PropertyGroup &gt; &amp;property_group) const</div><div class="ttdoc">Returns whether the edge info contains the given property group.</div><div class="ttdef"><b>Definition:</b> <a href="graph__ [...]
-<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a9440bef05f4fa689662f26a9ef0117c1"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a9440bef05f4fa689662f26a9ef0117c1">graphar::EdgeInfo::version</a></div><div class="ttdeci">const std::shared_ptr&lt; const InfoVersion &gt; &amp; version() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00672">graph_info.cc:672</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a9620f838addfdcb892b30e80e2cc4239"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a9620f838addfdcb892b30e80e2cc4239">graphar::EdgeInfo::AddPropertyGroup</a></div><div class="ttdeci">Result&lt; std::shared_ptr&lt; EdgeInfo &gt; &gt; AddPropertyGroup(std::shared_ptr&lt; PropertyGroup &gt; property_group) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00848">graph_info.cc:848</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a994023f50f2f952cc1361b0f9928dec4"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a994023f50f2f952cc1361b0f9928dec4">graphar::EdgeInfo::GetSrcType</a></div><div class="ttdeci">const std::string &amp; GetSrcType() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00656">graph_info.cc:656</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_edge_info_html_aaa6633dc8136cec806cbcf42c2cf136d"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#aaa6633dc8136cec806cbcf42c2cf136d">graphar::EdgeInfo::HasAdjacentListType</a></div><div class="ttdeci">bool HasAdjacentListType(AdjListType adj_list_type) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00676">graph_info.cc:676</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_edge_info_html_aab2032669c9e9dcf11275fdd4cb2c1fa"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#aab2032669c9e9dcf11275fdd4cb2c1fa">graphar::EdgeInfo::GetOffsetPathPrefix</a></div><div class="ttdeci">Result&lt; std::string &gt; GetOffsetPathPrefix(AdjListType adj_list_type) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00772">graph_info.cc:772</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_edge_info_html_aad31af465d41c026a35c20828915922e"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#aad31af465d41c026a35c20828915922e">graphar::EdgeInfo::IsDirected</a></div><div class="ttdeci">bool IsDirected() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00670">graph_info.cc:670</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_edge_info_html_ab39f63f0aa7284c510a7e0d61b0942d3"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#ab39f63f0aa7284c510a7e0d61b0942d3">graphar::EdgeInfo::GetAdjListPathPrefix</a></div><div class="ttdeci">Result&lt; std::string &gt; GetAdjListPathPrefix(AdjListType adj_list_type) const</div><div class="ttdoc">Get the path prefix of the adjacency list topology chunk for the given adjacency list type.</div><div class="ttdef"><b>Definition:</ [...]
-<div class="ttc" id="aclassgraphar_1_1_edge_info_html_ab3c32f3112dcf08304676eeb95545b55"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#ab3c32f3112dcf08304676eeb95545b55">graphar::EdgeInfo::EdgeInfo</a></div><div class="ttdeci">EdgeInfo(const std::string &amp;src_type, const std::string &amp;edge_type, const std::string &amp;dst_type, IdType chunk_size, IdType src_chunk_size, IdType dst_chunk_size, bool directed, const AdjacentListVector &amp;adjacent_lists, const PropertyG [...]
-<div class="ttc" id="aclassgraphar_1_1_edge_info_html_abe0fc6672a3fbb5fbd0b5e8775cb8dac"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#abe0fc6672a3fbb5fbd0b5e8775cb8dac">graphar::EdgeInfo::GetDstChunkSize</a></div><div class="ttdeci">IdType GetDstChunkSize() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00666">graph_info.cc:666</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_edge_info_html_abfcba5aed61cdfaf91f98e649b370722"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#abfcba5aed61cdfaf91f98e649b370722">graphar::EdgeInfo::GetPropertyFilePath</a></div><div class="ttdeci">Result&lt; std::string &gt; GetPropertyFilePath(const std::shared_ptr&lt; PropertyGroup &gt; &amp;property_group, AdjListType adj_list_type, IdType vertex_chunk_index, IdType edge_chunk_index) const</div><div class="ttdoc">Get the chunk fi [...]
-<div class="ttc" id="aclassgraphar_1_1_edge_info_html_ac03180737adf29c79196bbe729b3c929"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#ac03180737adf29c79196bbe729b3c929">graphar::EdgeInfo::GetDstType</a></div><div class="ttdeci">const std::string &amp; GetDstType() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00660">graph_info.cc:660</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_edge_info_html_ac07ad975e8ecbdb779038388e3def59e"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#ac07ad975e8ecbdb779038388e3def59e">graphar::EdgeInfo::GetSrcChunkSize</a></div><div class="ttdeci">IdType GetSrcChunkSize() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00664">graph_info.cc:664</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_edge_info_html_ad56107001dcbadac71ae8063cd25b58f"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#ad56107001dcbadac71ae8063cd25b58f">graphar::EdgeInfo::GetPropertyGroups</a></div><div class="ttdeci">const PropertyGroupVector &amp; GetPropertyGroups() const</div><div class="ttdoc">Get the property groups.</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00712">graph_info.cc:712</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_edge_info_html_aec1a622c83b14d62b26e7143850a3cf1"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#aec1a622c83b14d62b26e7143850a3cf1">graphar::EdgeInfo::GetVerticesNumFilePath</a></div><div class="ttdeci">Result&lt; std::string &gt; GetVerticesNumFilePath(AdjListType adj_list_type) const</div><div class="ttdoc">Get the file path for the number of vertices.</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l0 [...]
-<div class="ttc" id="aclassgraphar_1_1_edge_info_html_aec1bdf018d5b209f722dbf293ef14dd6"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#aec1bdf018d5b209f722dbf293ef14dd6">graphar::EdgeInfo::GetPropertyGroup</a></div><div class="ttdeci">std::shared_ptr&lt; PropertyGroup &gt; GetPropertyGroup(const std::string &amp;property) const</div><div class="ttdoc">Get the property group containing the given property.</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_s [...]
-<div class="ttc" id="aclassgraphar_1_1_edge_info_html_aee914f2c4adf773c048daed0e93dbe32"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#aee914f2c4adf773c048daed0e93dbe32">graphar::EdgeInfo::PropertyGroupNum</a></div><div class="ttdeci">int PropertyGroupNum() const</div><div class="ttdoc">Get the number of property groups.</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00708">graph_info.cc:708</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_graph_info_1_1_impl_html"><div class="ttname"><a href="classgraphar_1_1_graph_info_1_1_impl.html">graphar::GraphInfo::Impl</a></div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l01124">graph_info.cc:1124</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_graph_info_html"><div class="ttname"><a href="classgraphar_1_1_graph_info.html">graphar::GraphInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8h_source.html#l00706">graph_info.h:706</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_graph_info_html_a0f03270a6ee9c084dab10421cdf69cd5"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#a0f03270a6ee9c084dab10421cdf69cd5">graphar::GraphInfo::GetVertexInfoIndex</a></div><div class="ttdeci">int GetVertexInfoIndex(const std::string &amp;type) const</div><div class="ttdoc">Get the vertex info index with the given type.</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l01217">graph_info.cc:1217</ [...]
-<div class="ttc" id="aclassgraphar_1_1_graph_info_html_a14dbabaec827198ee822070c1077a570"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#a14dbabaec827198ee822070c1077a570">graphar::GraphInfo::GetEdgeInfos</a></div><div class="ttdeci">const EdgeInfoVector &amp; GetEdgeInfos() const</div><div class="ttdoc">Get the edge infos of graph info.</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l01262">graph_info.cc:1262</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_graph_info_html_a1b473deea923f7b2a57c339dc7e51192"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#a1b473deea923f7b2a57c339dc7e51192">graphar::GraphInfo::GraphInfo</a></div><div class="ttdeci">GraphInfo(const std::string &amp;graph_name, VertexInfoVector vertex_infos, EdgeInfoVector edge_infos, const std::vector&lt; std::string &gt; &amp;labels={}, const std::string &amp;prefix=&quot;./&quot;, std::shared_ptr&lt; const InfoVersion &gt; [...]
-<div class="ttc" id="aclassgraphar_1_1_graph_info_html_a339f08f5a1427aadc91d30d41dccced3"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#a339f08f5a1427aadc91d30d41dccced3">graphar::GraphInfo::Save</a></div><div class="ttdeci">Status Save(const std::string &amp;path) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l01384">graph_info.cc:1384</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_graph_info_html_a3a94e3d0f64a1b4d1b672676940c389f"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#a3a94e3d0f64a1b4d1b672676940c389f">graphar::GraphInfo::GetVertexInfoByIndex</a></div><div class="ttdeci">const std::shared_ptr&lt; VertexInfo &gt; GetVertexInfoByIndex(int index) const</div><div class="ttdoc">Get the vertex info at the specified index.</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l01243" [...]
-<div class="ttc" id="aclassgraphar_1_1_graph_info_html_a44e38c74dc765a56f8f0d200774d8180"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#a44e38c74dc765a56f8f0d200774d8180">graphar::GraphInfo::AddVertex</a></div><div class="ttdeci">Result&lt; std::shared_ptr&lt; GraphInfo &gt; &gt; AddVertex(std::shared_ptr&lt; VertexInfo &gt; vertex_info) const</div><div class="ttdoc">Adds a vertex info to the GraphInfo instance and returns a new GraphInfo.</div><div class="ttdef"><b>Defin [...]
-<div class="ttc" id="aclassgraphar_1_1_graph_info_html_a53eef3d15830bea15de0bbbe7e11e208"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#a53eef3d15830bea15de0bbbe7e11e208">graphar::GraphInfo::GetPrefix</a></div><div class="ttdeci">const std::string &amp; GetPrefix() const</div><div class="ttdoc">Get the absolute path prefix of the chunk files.</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l01200">graph_info.cc:1200</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_graph_info_html_a63dbd61d6575fe783b3287f391f651ed"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#a63dbd61d6575fe783b3287f391f651ed">graphar::GraphInfo::Load</a></div><div class="ttdeci">static Result&lt; std::shared_ptr&lt; GraphInfo &gt; &gt; Load(const std::string &amp;path)</div><div class="ttdoc">Loads the input file as a GraphInfo instance.</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l01308">g [...]
-<div class="ttc" id="aclassgraphar_1_1_graph_info_html_a6e848c7015e3b7d4706ff1ac2ffa6dcd"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#a6e848c7015e3b7d4706ff1ac2ffa6dcd">graphar::GraphInfo::IsValidated</a></div><div class="ttdeci">bool IsValidated() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l01266">graph_info.cc:1266</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_graph_info_html_a71646413e64620af1ca83f404e7150ea"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#a71646413e64620af1ca83f404e7150ea">graphar::GraphInfo::Dump</a></div><div class="ttdeci">Result&lt; std::string &gt; Dump() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l01334">graph_info.cc:1334</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_graph_info_html_a7e660710d2e1bd244b5d28bdc68aeab2"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#a7e660710d2e1bd244b5d28bdc68aeab2">graphar::GraphInfo::GetEdgeInfo</a></div><div class="ttdeci">std::shared_ptr&lt; EdgeInfo &gt; GetEdgeInfo(const std::string &amp;src_type, const std::string &amp;edge_type, const std::string &amp;dst_type) const</div><div class="ttdoc">Get the edge info with the given source vertex type, edge type, and  [...]
-<div class="ttc" id="aclassgraphar_1_1_graph_info_html_a814f2cdeecf58a308ab886a085991fc4"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#a814f2cdeecf58a308ab886a085991fc4">graphar::GraphInfo::EdgeInfoNum</a></div><div class="ttdeci">int EdgeInfoNum() const</div><div class="ttdoc">Get the number of edge infos.</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l01239">graph_info.cc:1239</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_graph_info_html_a8799b4b1a2163507a9ddd8f910d4a9d3"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#a8799b4b1a2163507a9ddd8f910d4a9d3">graphar::GraphInfo::GetVertexInfo</a></div><div class="ttdeci">std::shared_ptr&lt; VertexInfo &gt; GetVertexInfo(const std::string &amp;type) const</div><div class="ttdoc">Get the vertex info with the given type.</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l01211">grap [...]
-<div class="ttc" id="aclassgraphar_1_1_graph_info_html_a8b057bb6c3cfd897b0fb31ecceea40c9"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#a8b057bb6c3cfd897b0fb31ecceea40c9">graphar::GraphInfo::GetLabels</a></div><div class="ttdeci">const std::vector&lt; std::string &gt; &amp; GetLabels() const</div><div class="ttdoc">Get the vertex labels of the graph.</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l01196">graph_info.cc:1196</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_graph_info_html_a8fdf1ff0ec57e3ca2e66dd4366e390aa"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#a8fdf1ff0ec57e3ca2e66dd4366e390aa">graphar::GraphInfo::AddEdge</a></div><div class="ttdeci">Result&lt; std::shared_ptr&lt; GraphInfo &gt; &gt; AddEdge(std::shared_ptr&lt; EdgeInfo &gt; edge_info) const</div><div class="ttdoc">Adds an edge info to the GraphInfo instance and returns a new GraphInfo.</div><div class="ttdef"><b>Definition:</b [...]
-<div class="ttc" id="aclassgraphar_1_1_graph_info_html_a9393d2797ff5d77f66691f84f15007c4"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#a9393d2797ff5d77f66691f84f15007c4">graphar::GraphInfo::GetVertexInfos</a></div><div class="ttdeci">const VertexInfoVector &amp; GetVertexInfos() const</div><div class="ttdoc">Get the vertex infos of graph info.</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l01258">graph_info.cc:1258</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_graph_info_html_aa0856ec7ecc8d8d1aac2f7cd51cfe136"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#aa0856ec7ecc8d8d1aac2f7cd51cfe136">graphar::GraphInfo::GetExtraInfo</a></div><div class="ttdeci">const std::unordered_map&lt; std::string, std::string &gt; &amp; GetExtraInfo() const</div><div class="ttdoc">Get the extra metadata of the graph info object.</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l012 [...]
-<div class="ttc" id="aclassgraphar_1_1_graph_info_html_aa2ca1614d499facc76927b5de733b503"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#aa2ca1614d499facc76927b5de733b503">graphar::GraphInfo::GetEdgeInfoIndex</a></div><div class="ttdeci">int GetEdgeInfoIndex(const std::string &amp;src_type, const std::string &amp;edge_type, const std::string &amp;dst_type) const</div><div class="ttdoc">Get the edge info index with the given source vertex type, edge type, and destination ty [...]
-<div class="ttc" id="aclassgraphar_1_1_graph_info_html_aa384328a58c9138b5b77ea6172199d07"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#aa384328a58c9138b5b77ea6172199d07">graphar::GraphInfo::VertexInfoNum</a></div><div class="ttdeci">int VertexInfoNum() const</div><div class="ttdoc">Get the number of vertex infos.</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l01235">graph_info.cc:1235</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_graph_info_html_ab10cb1ceaa01a74d44c1076c43c2fcce"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#ab10cb1ceaa01a74d44c1076c43c2fcce">graphar::GraphInfo::GetName</a></div><div class="ttdeci">const std::string &amp; GetName() const</div><div class="ttdoc">Get the name of the graph.</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l01194">graph_info.cc:1194</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_graph_info_html_aeb68a7550c63365d8093136601a3aeee"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#aeb68a7550c63365d8093136601a3aeee">graphar::GraphInfo::version</a></div><div class="ttdeci">const std::shared_ptr&lt; const InfoVersion &gt; &amp; version() const</div><div class="ttdoc">Get the version info of the graph info object.</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l01202">graph_info.cc:1202 [...]
-<div class="ttc" id="aclassgraphar_1_1_graph_info_html_afd61923bd9ff1f5329b1c93ebbcd0278"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#afd61923bd9ff1f5329b1c93ebbcd0278">graphar::GraphInfo::GetEdgeInfoByIndex</a></div><div class="ttdeci">const std::shared_ptr&lt; EdgeInfo &gt; GetEdgeInfoByIndex(int index) const</div><div class="ttdoc">Get the edge info at the specified index.</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l01251">graph_i [...]
+<div class="ttc" id="aclassgraphar_1_1_adjacent_list_html_a592ba95843997b321f5545e950f03a57"><div class="ttname"><a href="classgraphar_1_1_adjacent_list.html#a592ba95843997b321f5545e950f03a57">graphar::AdjacentList::IsValidated</a></div><div class="ttdeci">bool IsValidated() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00191">graph_info.cc:191</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_adjacent_list_html_ab31cbdbaae74305f7bf3ffbd76c93efc"><div class="ttname"><a href="classgraphar_1_1_adjacent_list.html#ab31cbdbaae74305f7bf3ffbd76c93efc">graphar::AdjacentList::AdjacentList</a></div><div class="ttdeci">AdjacentList(AdjListType type, FileType file_type, const std::string &amp;prefix=&quot;&quot;)</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00183">graph_info.cc:183</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_edge_info_1_1_impl_html"><div class="ttname"><a href="classgraphar_1_1_edge_info_1_1_impl.html">graphar::EdgeInfo::Impl</a></div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00573">graph_info.cc:573</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_edge_info_html"><div class="ttname"><a href="classgraphar_1_1_edge_info.html">graphar::EdgeInfo</a></div><div class="ttdoc">EdgeInfo is a class to describe the edge information, including the source vertex type,...</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8h_source.html#l00408">graph_info.h:408</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a03c9b4f4b0edcf47f2e5746e8f9f6db0"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a03c9b4f4b0edcf47f2e5746e8f9f6db0">graphar::EdgeInfo::GetEdgeType</a></div><div class="ttdeci">const std::string &amp; GetEdgeType() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00694">graph_info.cc:694</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a0ac67e1cf3b3fa79b6fcbc054869d0e5"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a0ac67e1cf3b3fa79b6fcbc054869d0e5">graphar::EdgeInfo::Load</a></div><div class="ttdeci">static Result&lt; std::shared_ptr&lt; EdgeInfo &gt; &gt; Load(std::shared_ptr&lt; Yaml &gt; yaml)</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00966">graph_info.cc:966</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a0eb9f0ff282c73f5c90a8c3940f1929e"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a0eb9f0ff282c73f5c90a8c3940f1929e">graphar::EdgeInfo::GetAdjListFilePath</a></div><div class="ttdeci">Result&lt; std::string &gt; GetAdjListFilePath(IdType vertex_chunk_index, IdType edge_chunk_index, AdjListType adj_list_type) const</div><div class="ttdoc">Get the file path of adj list topology chunk.</div><div class="ttdef"><b>Definition: [...]
+<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a1e95f986bd8c5191f438705b195191e3"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a1e95f986bd8c5191f438705b195191e3">graphar::EdgeInfo::Save</a></div><div class="ttdeci">Status Save(const std::string &amp;file_name) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l01107">graph_info.cc:1107</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a264853429b84060bbe36c671d5bc8963"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a264853429b84060bbe36c671d5bc8963">graphar::EdgeInfo::RemovePropertyGroup</a></div><div class="ttdeci">Result&lt; std::shared_ptr&lt; EdgeInfo &gt; &gt; RemovePropertyGroup(std::shared_ptr&lt; PropertyGroup &gt; property_group) const</div><div class="ttdoc">Removes a property group from the EdgeInfo instance and returns a new EdgeInfo.</div [...]
+<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a37fa8536c627a5e5f529e8ee6d3d7506"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a37fa8536c627a5e5f529e8ee6d3d7506">graphar::EdgeInfo::GetPropertyType</a></div><div class="ttdeci">Result&lt; std::shared_ptr&lt; DataType &gt; &gt; GetPropertyType(const std::string &amp;property_name) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00843">graph_info.cc:843</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a3dca57726506375cab4fc43fdef2914f"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a3dca57726506375cab4fc43fdef2914f">graphar::EdgeInfo::IsValidated</a></div><div class="ttdeci">bool IsValidated() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00947">graph_info.cc:947</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a4ec8810a54411f9a8aba35b2faf29acb"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a4ec8810a54411f9a8aba35b2faf29acb">graphar::EdgeInfo::GetPrefix</a></div><div class="ttdeci">const std::string &amp; GetPrefix() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00704">graph_info.cc:704</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a4f2c7fedc68dce8f1c7fb90eede9906f"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a4f2c7fedc68dce8f1c7fb90eede9906f">graphar::EdgeInfo::GetEdgesNumFilePath</a></div><div class="ttdeci">Result&lt; std::string &gt; GetEdgesNumFilePath(IdType vertex_chunk_index, AdjListType adj_list_type) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00774">graph_info.cc:774</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a55004cedc30fcb0fa94adf246dcc2702"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a55004cedc30fcb0fa94adf246dcc2702">graphar::EdgeInfo::GetPropertyGroupPathPrefix</a></div><div class="ttdeci">Result&lt; std::string &gt; GetPropertyGroupPathPrefix(const std::shared_ptr&lt; PropertyGroup &gt; &amp;property_group, AdjListType adj_list_type) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.htm [...]
+<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a5bd430ba21f5dfb230b978e03c4020ef"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a5bd430ba21f5dfb230b978e03c4020ef">graphar::EdgeInfo::IsPrimaryKey</a></div><div class="ttdeci">bool IsPrimaryKey(const std::string &amp;property_name) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00852">graph_info.cc:852</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a615fe3ed78f35af9aef598287cb89a27"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a615fe3ed78f35af9aef598287cb89a27">graphar::EdgeInfo::GetAdjListOffsetFilePath</a></div><div class="ttdeci">Result&lt; std::string &gt; GetAdjListOffsetFilePath(IdType vertex_chunk_index, AdjListType adj_list_type) const</div><div class="ttdoc">Get the adjacency list offset chunk file path of vertex chunk the offset chunks is aligned with t [...]
+<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a62c2300185c0655df9b44db39b0a399b"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a62c2300185c0655df9b44db39b0a399b">graphar::EdgeInfo::GetChunkSize</a></div><div class="ttdeci">IdType GetChunkSize() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00698">graph_info.cc:698</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a69182fa8d45bb0e7d4ac230adb1239b2"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a69182fa8d45bb0e7d4ac230adb1239b2">graphar::EdgeInfo::HasProperty</a></div><div class="ttdeci">bool HasProperty(const std::string &amp;property_name) const</div><div class="ttdoc">Returns whether the edge info contains the given property.</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00717">graph_info.cc:7 [...]
+<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a6e5b4fdc98d8399564396fb63955c62a"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a6e5b4fdc98d8399564396fb63955c62a">graphar::EdgeInfo::AddAdjacentList</a></div><div class="ttdeci">Result&lt; std::shared_ptr&lt; EdgeInfo &gt; &gt; AddAdjacentList(std::shared_ptr&lt; AdjacentList &gt; adj_list) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00868">graph_info.cc:868</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a7db36496a4cf0eb517b463de5caa125f"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a7db36496a4cf0eb517b463de5caa125f">graphar::EdgeInfo::RemoveAdjacentList</a></div><div class="ttdeci">Result&lt; std::shared_ptr&lt; EdgeInfo &gt; &gt; RemoveAdjacentList(std::shared_ptr&lt; AdjacentList &gt; adj_list) const</div><div class="ttdoc">Removes an adjacency list from the EdgeInfo instance and returns a new EdgeInfo.</div><div cl [...]
+<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a80004230ddfbc892995732ea59993a27"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a80004230ddfbc892995732ea59993a27">graphar::EdgeInfo::Dump</a></div><div class="ttdeci">Result&lt; std::string &gt; Dump() const noexcept</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l01052">graph_info.cc:1052</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a80b00d930f22870d00331a639c9cc26e"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a80b00d930f22870d00331a639c9cc26e">graphar::EdgeInfo::IsNullableKey</a></div><div class="ttdeci">bool IsNullableKey(const std::string &amp;property_name) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00860">graph_info.cc:860</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a8551959066b19885b9ce15262b5cb3db"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a8551959066b19885b9ce15262b5cb3db">graphar::EdgeInfo::GetPropertyGroupByIndex</a></div><div class="ttdeci">std::shared_ptr&lt; PropertyGroup &gt; GetPropertyGroupByIndex(int index) const</div><div class="ttdoc">Get the property group at the specified index.</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l007 [...]
+<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a857bb686e5d7f579ac0e2a889a53f829"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a857bb686e5d7f579ac0e2a889a53f829">graphar::EdgeInfo::HasPropertyGroup</a></div><div class="ttdeci">bool HasPropertyGroup(const std::shared_ptr&lt; PropertyGroup &gt; &amp;property_group) const</div><div class="ttdoc">Returns whether the edge info contains the given property group.</div><div class="ttdef"><b>Definition:</b> <a href="graph__ [...]
+<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a9440bef05f4fa689662f26a9ef0117c1"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a9440bef05f4fa689662f26a9ef0117c1">graphar::EdgeInfo::version</a></div><div class="ttdeci">const std::shared_ptr&lt; const InfoVersion &gt; &amp; version() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00708">graph_info.cc:708</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a9620f838addfdcb892b30e80e2cc4239"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a9620f838addfdcb892b30e80e2cc4239">graphar::EdgeInfo::AddPropertyGroup</a></div><div class="ttdeci">Result&lt; std::shared_ptr&lt; EdgeInfo &gt; &gt; AddPropertyGroup(std::shared_ptr&lt; PropertyGroup &gt; property_group) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00906">graph_info.cc:906</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_edge_info_html_a994023f50f2f952cc1361b0f9928dec4"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#a994023f50f2f952cc1361b0f9928dec4">graphar::EdgeInfo::GetSrcType</a></div><div class="ttdeci">const std::string &amp; GetSrcType() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00692">graph_info.cc:692</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_edge_info_html_aaa6633dc8136cec806cbcf42c2cf136d"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#aaa6633dc8136cec806cbcf42c2cf136d">graphar::EdgeInfo::HasAdjacentListType</a></div><div class="ttdeci">bool HasAdjacentListType(AdjListType adj_list_type) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00712">graph_info.cc:712</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_edge_info_html_aab2032669c9e9dcf11275fdd4cb2c1fa"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#aab2032669c9e9dcf11275fdd4cb2c1fa">graphar::EdgeInfo::GetOffsetPathPrefix</a></div><div class="ttdeci">Result&lt; std::string &gt; GetOffsetPathPrefix(AdjListType adj_list_type) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00808">graph_info.cc:808</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_edge_info_html_aad31af465d41c026a35c20828915922e"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#aad31af465d41c026a35c20828915922e">graphar::EdgeInfo::IsDirected</a></div><div class="ttdeci">bool IsDirected() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00706">graph_info.cc:706</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_edge_info_html_ab39f63f0aa7284c510a7e0d61b0942d3"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#ab39f63f0aa7284c510a7e0d61b0942d3">graphar::EdgeInfo::GetAdjListPathPrefix</a></div><div class="ttdeci">Result&lt; std::string &gt; GetAdjListPathPrefix(AdjListType adj_list_type) const</div><div class="ttdoc">Get the path prefix of the adjacency list topology chunk for the given adjacency list type.</div><div class="ttdef"><b>Definition:</ [...]
+<div class="ttc" id="aclassgraphar_1_1_edge_info_html_ab3c32f3112dcf08304676eeb95545b55"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#ab3c32f3112dcf08304676eeb95545b55">graphar::EdgeInfo::EdgeInfo</a></div><div class="ttdeci">EdgeInfo(const std::string &amp;src_type, const std::string &amp;edge_type, const std::string &amp;dst_type, IdType chunk_size, IdType src_chunk_size, IdType dst_chunk_size, bool directed, const AdjacentListVector &amp;adjacent_lists, const PropertyG [...]
+<div class="ttc" id="aclassgraphar_1_1_edge_info_html_abe0fc6672a3fbb5fbd0b5e8775cb8dac"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#abe0fc6672a3fbb5fbd0b5e8775cb8dac">graphar::EdgeInfo::GetDstChunkSize</a></div><div class="ttdeci">IdType GetDstChunkSize() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00702">graph_info.cc:702</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_edge_info_html_abfcba5aed61cdfaf91f98e649b370722"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#abfcba5aed61cdfaf91f98e649b370722">graphar::EdgeInfo::GetPropertyFilePath</a></div><div class="ttdeci">Result&lt; std::string &gt; GetPropertyFilePath(const std::shared_ptr&lt; PropertyGroup &gt; &amp;property_group, AdjListType adj_list_type, IdType vertex_chunk_index, IdType edge_chunk_index) const</div><div class="ttdoc">Get the chunk fi [...]
+<div class="ttc" id="aclassgraphar_1_1_edge_info_html_ac03180737adf29c79196bbe729b3c929"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#ac03180737adf29c79196bbe729b3c929">graphar::EdgeInfo::GetDstType</a></div><div class="ttdeci">const std::string &amp; GetDstType() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00696">graph_info.cc:696</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_edge_info_html_ac07ad975e8ecbdb779038388e3def59e"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#ac07ad975e8ecbdb779038388e3def59e">graphar::EdgeInfo::GetSrcChunkSize</a></div><div class="ttdeci">IdType GetSrcChunkSize() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00700">graph_info.cc:700</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_edge_info_html_ad56107001dcbadac71ae8063cd25b58f"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#ad56107001dcbadac71ae8063cd25b58f">graphar::EdgeInfo::GetPropertyGroups</a></div><div class="ttdeci">const PropertyGroupVector &amp; GetPropertyGroups() const</div><div class="ttdoc">Get the property groups.</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00748">graph_info.cc:748</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_edge_info_html_aec1a622c83b14d62b26e7143850a3cf1"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#aec1a622c83b14d62b26e7143850a3cf1">graphar::EdgeInfo::GetVerticesNumFilePath</a></div><div class="ttdeci">Result&lt; std::string &gt; GetVerticesNumFilePath(AdjListType adj_list_type) const</div><div class="ttdoc">Get the file path for the number of vertices.</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l0 [...]
+<div class="ttc" id="aclassgraphar_1_1_edge_info_html_aec1bdf018d5b209f722dbf293ef14dd6"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#aec1bdf018d5b209f722dbf293ef14dd6">graphar::EdgeInfo::GetPropertyGroup</a></div><div class="ttdeci">std::shared_ptr&lt; PropertyGroup &gt; GetPropertyGroup(const std::string &amp;property) const</div><div class="ttdoc">Get the property group containing the given property.</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_s [...]
+<div class="ttc" id="aclassgraphar_1_1_edge_info_html_aee914f2c4adf773c048daed0e93dbe32"><div class="ttname"><a href="classgraphar_1_1_edge_info.html#aee914f2c4adf773c048daed0e93dbe32">graphar::EdgeInfo::PropertyGroupNum</a></div><div class="ttdeci">int PropertyGroupNum() const</div><div class="ttdoc">Get the number of property groups.</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00744">graph_info.cc:744</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_graph_info_1_1_impl_html"><div class="ttname"><a href="classgraphar_1_1_graph_info_1_1_impl.html">graphar::GraphInfo::Impl</a></div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l01204">graph_info.cc:1204</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_graph_info_html"><div class="ttname"><a href="classgraphar_1_1_graph_info.html">graphar::GraphInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8h_source.html#l00736">graph_info.h:736</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_graph_info_html_a0f03270a6ee9c084dab10421cdf69cd5"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#a0f03270a6ee9c084dab10421cdf69cd5">graphar::GraphInfo::GetVertexInfoIndex</a></div><div class="ttdeci">int GetVertexInfoIndex(const std::string &amp;type) const</div><div class="ttdoc">Get the vertex info index with the given type.</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l01297">graph_info.cc:1297</ [...]
+<div class="ttc" id="aclassgraphar_1_1_graph_info_html_a14dbabaec827198ee822070c1077a570"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#a14dbabaec827198ee822070c1077a570">graphar::GraphInfo::GetEdgeInfos</a></div><div class="ttdeci">const EdgeInfoVector &amp; GetEdgeInfos() const</div><div class="ttdoc">Get the edge infos of graph info.</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l01342">graph_info.cc:1342</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_graph_info_html_a1b473deea923f7b2a57c339dc7e51192"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#a1b473deea923f7b2a57c339dc7e51192">graphar::GraphInfo::GraphInfo</a></div><div class="ttdeci">GraphInfo(const std::string &amp;graph_name, VertexInfoVector vertex_infos, EdgeInfoVector edge_infos, const std::vector&lt; std::string &gt; &amp;labels={}, const std::string &amp;prefix=&quot;./&quot;, std::shared_ptr&lt; const InfoVersion &gt; [...]
+<div class="ttc" id="aclassgraphar_1_1_graph_info_html_a339f08f5a1427aadc91d30d41dccced3"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#a339f08f5a1427aadc91d30d41dccced3">graphar::GraphInfo::Save</a></div><div class="ttdeci">Status Save(const std::string &amp;path) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l01496">graph_info.cc:1496</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_graph_info_html_a3a94e3d0f64a1b4d1b672676940c389f"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#a3a94e3d0f64a1b4d1b672676940c389f">graphar::GraphInfo::GetVertexInfoByIndex</a></div><div class="ttdeci">const std::shared_ptr&lt; VertexInfo &gt; GetVertexInfoByIndex(int index) const</div><div class="ttdoc">Get the vertex info at the specified index.</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l01323" [...]
+<div class="ttc" id="aclassgraphar_1_1_graph_info_html_a44e38c74dc765a56f8f0d200774d8180"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#a44e38c74dc765a56f8f0d200774d8180">graphar::GraphInfo::AddVertex</a></div><div class="ttdeci">Result&lt; std::shared_ptr&lt; GraphInfo &gt; &gt; AddVertex(std::shared_ptr&lt; VertexInfo &gt; vertex_info) const</div><div class="ttdoc">Adds a vertex info to the GraphInfo instance and returns a new GraphInfo.</div><div class="ttdef"><b>Defin [...]
+<div class="ttc" id="aclassgraphar_1_1_graph_info_html_a53eef3d15830bea15de0bbbe7e11e208"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#a53eef3d15830bea15de0bbbe7e11e208">graphar::GraphInfo::GetPrefix</a></div><div class="ttdeci">const std::string &amp; GetPrefix() const</div><div class="ttdoc">Get the absolute path prefix of the chunk files.</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l01280">graph_info.cc:1280</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_graph_info_html_a63dbd61d6575fe783b3287f391f651ed"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#a63dbd61d6575fe783b3287f391f651ed">graphar::GraphInfo::Load</a></div><div class="ttdeci">static Result&lt; std::shared_ptr&lt; GraphInfo &gt; &gt; Load(const std::string &amp;path)</div><div class="ttdoc">Loads the input file as a GraphInfo instance.</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l01420">g [...]
+<div class="ttc" id="aclassgraphar_1_1_graph_info_html_a6e848c7015e3b7d4706ff1ac2ffa6dcd"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#a6e848c7015e3b7d4706ff1ac2ffa6dcd">graphar::GraphInfo::IsValidated</a></div><div class="ttdeci">bool IsValidated() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l01346">graph_info.cc:1346</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_graph_info_html_a71646413e64620af1ca83f404e7150ea"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#a71646413e64620af1ca83f404e7150ea">graphar::GraphInfo::Dump</a></div><div class="ttdeci">Result&lt; std::string &gt; Dump() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l01446">graph_info.cc:1446</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_graph_info_html_a7e660710d2e1bd244b5d28bdc68aeab2"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#a7e660710d2e1bd244b5d28bdc68aeab2">graphar::GraphInfo::GetEdgeInfo</a></div><div class="ttdeci">std::shared_ptr&lt; EdgeInfo &gt; GetEdgeInfo(const std::string &amp;src_type, const std::string &amp;edge_type, const std::string &amp;dst_type) const</div><div class="ttdoc">Get the edge info with the given source vertex type, edge type, and  [...]
+<div class="ttc" id="aclassgraphar_1_1_graph_info_html_a814f2cdeecf58a308ab886a085991fc4"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#a814f2cdeecf58a308ab886a085991fc4">graphar::GraphInfo::EdgeInfoNum</a></div><div class="ttdeci">int EdgeInfoNum() const</div><div class="ttdoc">Get the number of edge infos.</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l01319">graph_info.cc:1319</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_graph_info_html_a8799b4b1a2163507a9ddd8f910d4a9d3"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#a8799b4b1a2163507a9ddd8f910d4a9d3">graphar::GraphInfo::GetVertexInfo</a></div><div class="ttdeci">std::shared_ptr&lt; VertexInfo &gt; GetVertexInfo(const std::string &amp;type) const</div><div class="ttdoc">Get the vertex info with the given type.</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l01291">grap [...]
+<div class="ttc" id="aclassgraphar_1_1_graph_info_html_a8b057bb6c3cfd897b0fb31ecceea40c9"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#a8b057bb6c3cfd897b0fb31ecceea40c9">graphar::GraphInfo::GetLabels</a></div><div class="ttdeci">const std::vector&lt; std::string &gt; &amp; GetLabels() const</div><div class="ttdoc">Get the vertex labels of the graph.</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l01276">graph_info.cc:1276</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_graph_info_html_a8fdf1ff0ec57e3ca2e66dd4366e390aa"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#a8fdf1ff0ec57e3ca2e66dd4366e390aa">graphar::GraphInfo::AddEdge</a></div><div class="ttdeci">Result&lt; std::shared_ptr&lt; GraphInfo &gt; &gt; AddEdge(std::shared_ptr&lt; EdgeInfo &gt; edge_info) const</div><div class="ttdoc">Adds an edge info to the GraphInfo instance and returns a new GraphInfo.</div><div class="ttdef"><b>Definition:</b [...]
+<div class="ttc" id="aclassgraphar_1_1_graph_info_html_a9393d2797ff5d77f66691f84f15007c4"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#a9393d2797ff5d77f66691f84f15007c4">graphar::GraphInfo::GetVertexInfos</a></div><div class="ttdeci">const VertexInfoVector &amp; GetVertexInfos() const</div><div class="ttdoc">Get the vertex infos of graph info.</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l01338">graph_info.cc:1338</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_graph_info_html_aa0856ec7ecc8d8d1aac2f7cd51cfe136"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#aa0856ec7ecc8d8d1aac2f7cd51cfe136">graphar::GraphInfo::GetExtraInfo</a></div><div class="ttdeci">const std::unordered_map&lt; std::string, std::string &gt; &amp; GetExtraInfo() const</div><div class="ttdoc">Get the extra metadata of the graph info object.</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l012 [...]
+<div class="ttc" id="aclassgraphar_1_1_graph_info_html_aa2ca1614d499facc76927b5de733b503"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#aa2ca1614d499facc76927b5de733b503">graphar::GraphInfo::GetEdgeInfoIndex</a></div><div class="ttdeci">int GetEdgeInfoIndex(const std::string &amp;src_type, const std::string &amp;edge_type, const std::string &amp;dst_type) const</div><div class="ttdoc">Get the edge info index with the given source vertex type, edge type, and destination ty [...]
+<div class="ttc" id="aclassgraphar_1_1_graph_info_html_aa384328a58c9138b5b77ea6172199d07"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#aa384328a58c9138b5b77ea6172199d07">graphar::GraphInfo::VertexInfoNum</a></div><div class="ttdeci">int VertexInfoNum() const</div><div class="ttdoc">Get the number of vertex infos.</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l01315">graph_info.cc:1315</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_graph_info_html_ab10cb1ceaa01a74d44c1076c43c2fcce"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#ab10cb1ceaa01a74d44c1076c43c2fcce">graphar::GraphInfo::GetName</a></div><div class="ttdeci">const std::string &amp; GetName() const</div><div class="ttdoc">Get the name of the graph.</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l01274">graph_info.cc:1274</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_graph_info_html_acc0e018222ae59e749a52b3678e6529a"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#acc0e018222ae59e749a52b3678e6529a">graphar::GraphInfo::RemoveEdge</a></div><div class="ttdeci">Result&lt; std::shared_ptr&lt; GraphInfo &gt; &gt; RemoveEdge(std::shared_ptr&lt; EdgeInfo &gt; edge_info) const</div><div class="ttdoc">Removes an edge info from the GraphInfo instance and returns a new GraphInfo.</div><div class="ttdef"><b>Def [...]
+<div class="ttc" id="aclassgraphar_1_1_graph_info_html_ad64a71966ca197ae14ea21ff8787b769"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#ad64a71966ca197ae14ea21ff8787b769">graphar::GraphInfo::RemoveVertex</a></div><div class="ttdeci">Result&lt; std::shared_ptr&lt; GraphInfo &gt; &gt; RemoveVertex(std::shared_ptr&lt; VertexInfo &gt; vertex_info) const</div><div class="ttdoc">Removes a vertex info from the GraphInfo instance and returns a new GraphInfo.</div><div class="ttde [...]
+<div class="ttc" id="aclassgraphar_1_1_graph_info_html_aeb68a7550c63365d8093136601a3aeee"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#aeb68a7550c63365d8093136601a3aeee">graphar::GraphInfo::version</a></div><div class="ttdeci">const std::shared_ptr&lt; const InfoVersion &gt; &amp; version() const</div><div class="ttdoc">Get the version info of the graph info object.</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l01282">graph_info.cc:1282 [...]
+<div class="ttc" id="aclassgraphar_1_1_graph_info_html_afd61923bd9ff1f5329b1c93ebbcd0278"><div class="ttname"><a href="classgraphar_1_1_graph_info.html#afd61923bd9ff1f5329b1c93ebbcd0278">graphar::GraphInfo::GetEdgeInfoByIndex</a></div><div class="ttdeci">const std::shared_ptr&lt; EdgeInfo &gt; GetEdgeInfoByIndex(int index) const</div><div class="ttdoc">Get the edge info at the specified index.</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l01331">graph_i [...]
 <div class="ttc" id="aclassgraphar_1_1_property_group_html"><div class="ttname"><a href="classgraphar_1_1_property_group.html">graphar::PropertyGroup</a></div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8h_source.html#l00065">graph_info.h:65</a></div></div>
 <div class="ttc" id="aclassgraphar_1_1_property_group_html_a5ec3788a53adc6827d4fbf02fdfab530"><div class="ttname"><a href="classgraphar_1_1_property_group.html#a5ec3788a53adc6827d4fbf02fdfab530">graphar::PropertyGroup::GetPrefix</a></div><div class="ttdeci">const std::string &amp; GetPrefix() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8h_source.html#l00098">graph_info.h:98</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_property_group_html_a9a1d4401d81fb2576ae3f3de21eb9e25"><div class="ttname"><a href="classgraphar_1_1_property_group.html#a9a1d4401d81fb2576ae3f3de21eb9e25">graphar::PropertyGroup::IsValidated</a></div><div class="ttdeci">bool IsValidated() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00118">graph_info.cc:118</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_property_group_html_a9a1d4401d81fb2576ae3f3de21eb9e25"><div class="ttname"><a href="classgraphar_1_1_property_group.html#a9a1d4401d81fb2576ae3f3de21eb9e25">graphar::PropertyGroup::IsValidated</a></div><div class="ttdeci">bool IsValidated() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00133">graph_info.cc:133</a></div></div>
 <div class="ttc" id="aclassgraphar_1_1_property_group_html_aa4fb424c0c1ef0051ff1029600221c22"><div class="ttname"><a href="classgraphar_1_1_property_group.html#aa4fb424c0c1ef0051ff1029600221c22">graphar::PropertyGroup::GetFileType</a></div><div class="ttdeci">FileType GetFileType() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8h_source.html#l00092">graph_info.h:92</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_property_group_html_abb84d3d9d16e5efc52c96089a977c60d"><div class="ttname"><a href="classgraphar_1_1_property_group.html#abb84d3d9d16e5efc52c96089a977c60d">graphar::PropertyGroup::PropertyGroup</a></div><div class="ttdeci">PropertyGroup(const std::vector&lt; Property &gt; &amp;properties, FileType file_type, const std::string &amp;prefix=&quot;&quot;)</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00094">graph_info. [...]
-<div class="ttc" id="aclassgraphar_1_1_property_group_html_af090f1d74049ce0222148ad02b26f81a"><div class="ttname"><a href="classgraphar_1_1_property_group.html#af090f1d74049ce0222148ad02b26f81a">graphar::PropertyGroup::GetProperties</a></div><div class="ttdeci">const std::vector&lt; Property &gt; &amp; GetProperties() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00105">graph_info.cc:105</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_property_group_html_abb84d3d9d16e5efc52c96089a977c60d"><div class="ttname"><a href="classgraphar_1_1_property_group.html#abb84d3d9d16e5efc52c96089a977c60d">graphar::PropertyGroup::PropertyGroup</a></div><div class="ttdeci">PropertyGroup(const std::vector&lt; Property &gt; &amp;properties, FileType file_type, const std::string &amp;prefix=&quot;&quot;)</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00109">graph_info. [...]
+<div class="ttc" id="aclassgraphar_1_1_property_group_html_af090f1d74049ce0222148ad02b26f81a"><div class="ttname"><a href="classgraphar_1_1_property_group.html#af090f1d74049ce0222148ad02b26f81a">graphar::PropertyGroup::GetProperties</a></div><div class="ttdeci">const std::vector&lt; Property &gt; &amp; GetProperties() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00120">graph_info.cc:120</a></div></div>
 <div class="ttc" id="aclassgraphar_1_1_property_html"><div class="ttname"><a href="classgraphar_1_1_property.html">graphar::Property</a></div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8h_source.html#l00034">graph_info.h:34</a></div></div>
 <div class="ttc" id="aclassgraphar_1_1_status_html"><div class="ttname"><a href="classgraphar_1_1_status.html">graphar::Status</a></div><div class="ttdoc">Status outcome object (success or error)</div><div class="ttdef"><b>Definition:</b> <a href="status_8h_source.html#l00123">status.h:123</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_vertex_info_1_1_impl_html"><div class="ttname"><a href="classgraphar_1_1_vertex_info_1_1_impl.html">graphar::VertexInfo::Impl</a></div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00197">graph_info.cc:197</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_vertex_info_1_1_impl_html"><div class="ttname"><a href="classgraphar_1_1_vertex_info_1_1_impl.html">graphar::VertexInfo::Impl</a></div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00212">graph_info.cc:212</a></div></div>
 <div class="ttc" id="aclassgraphar_1_1_vertex_info_html"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html">graphar::VertexInfo</a></div><div class="ttdoc">VertexInfo is a class to describe the vertex information, including the vertex type,...</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8h_source.html#l00180">graph_info.h:180</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_a2364ef208346bbd4d468ee78cfc6a1a3"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#a2364ef208346bbd4d468ee78cfc6a1a3">graphar::VertexInfo::GetType</a></div><div class="ttdeci">const std::string &amp; GetType() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00275">graph_info.cc:275</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_a2a4cc44b7db8784bdb0e9691c7ad0fba"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#a2a4cc44b7db8784bdb0e9691c7ad0fba">graphar::VertexInfo::GetPropertyGroup</a></div><div class="ttdeci">std::shared_ptr&lt; PropertyGroup &gt; GetPropertyGroup(const std::string &amp;property_name) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00314">graph_info.cc:314</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_a3214a62ac41be6cb53c22894d2926710"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#a3214a62ac41be6cb53c22894d2926710">graphar::VertexInfo::GetPathPrefix</a></div><div class="ttdeci">Result&lt; std::string &gt; GetPathPrefix(std::shared_ptr&lt; PropertyGroup &gt; property_group) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00298">graph_info.cc:298</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_a34a49ce4905632889db3f969986cbe75"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#a34a49ce4905632889db3f969986cbe75">graphar::VertexInfo::GetLabels</a></div><div class="ttdeci">const std::vector&lt; std::string &gt; &amp; GetLabels() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00281">graph_info.cc:281</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_a39a607d51da7e73a0fae473e90a61825"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#a39a607d51da7e73a0fae473e90a61825">graphar::VertexInfo::GetChunkSize</a></div><div class="ttdeci">IdType GetChunkSize() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00277">graph_info.cc:277</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_a47c84aab28674b5250a26c97806f2f48"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#a47c84aab28674b5250a26c97806f2f48">graphar::VertexInfo::version</a></div><div class="ttdeci">const std::shared_ptr&lt; const InfoVersion &gt; &amp; version() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00285">graph_info.cc:285</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_a4a70be2aa82d5c435b3271ae766bb54d"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#a4a70be2aa82d5c435b3271ae766bb54d">graphar::VertexInfo::AddPropertyGroup</a></div><div class="ttdeci">Result&lt; std::shared_ptr&lt; VertexInfo &gt; &gt; AddPropertyGroup(std::shared_ptr&lt; PropertyGroup &gt; property_group) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00384">graph_info.cc:384< [...]
-<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_a5d42bec7d8cdb67f1e04b921f484e328"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#a5d42bec7d8cdb67f1e04b921f484e328">graphar::VertexInfo::HasProperty</a></div><div class="ttdeci">bool HasProperty(const std::string &amp;property_name) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00348">graph_info.cc:348</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_a64aca915578185662b4429e5ed265322"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#a64aca915578185662b4429e5ed265322">graphar::VertexInfo::HasPropertyGroup</a></div><div class="ttdeci">bool HasPropertyGroup(const std::shared_ptr&lt; PropertyGroup &gt; &amp;property_group) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00353">graph_info.cc:353</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_a65faa894acf765eae9c7d4e34dff6306"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#a65faa894acf765eae9c7d4e34dff6306">graphar::VertexInfo::GetFilePath</a></div><div class="ttdeci">Result&lt; std::string &gt; GetFilePath(std::shared_ptr&lt; PropertyGroup &gt; property_group, IdType chunk_index) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00289">graph_info.cc:289</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_a68f7407348b39115e0fa4d44750e9d37"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#a68f7407348b39115e0fa4d44750e9d37">graphar::VertexInfo::IsPrimaryKey</a></div><div class="ttdeci">bool IsPrimaryKey(const std::string &amp;property_name) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00332">graph_info.cc:332</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_a70d2cb4637d4b2909bd34045a39568af"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#a70d2cb4637d4b2909bd34045a39568af">graphar::VertexInfo::IsValidated</a></div><div class="ttdeci">bool IsValidated() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00401">graph_info.cc:401</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_a7917824d18f7c84a02859f18b47e77fe"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#a7917824d18f7c84a02859f18b47e77fe">graphar::VertexInfo::PropertyGroupNum</a></div><div class="ttdeci">int PropertyGroupNum() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00310">graph_info.cc:310</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_a8fb76a180c2fb8192961a27862f5aa69"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#a8fb76a180c2fb8192961a27862f5aa69">graphar::VertexInfo::GetPrefix</a></div><div class="ttdeci">const std::string &amp; GetPrefix() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00279">graph_info.cc:279</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_aad61b0a40a4bef344fad93cb1332d97d"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#aad61b0a40a4bef344fad93cb1332d97d">graphar::VertexInfo::GetVerticesNumFilePath</a></div><div class="ttdeci">Result&lt; std::string &gt; GetVerticesNumFilePath() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00306">graph_info.cc:306</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_acbeedc2afc98e53155bb1f75c9cb465c"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#acbeedc2afc98e53155bb1f75c9cb465c">graphar::VertexInfo::GetPropertyType</a></div><div class="ttdeci">Result&lt; std::shared_ptr&lt; DataType &gt; &gt; GetPropertyType(const std::string &amp;property_name) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00366">graph_info.cc:366</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_acddb12cfcf7c6bfe1f1937f984828312"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#acddb12cfcf7c6bfe1f1937f984828312">graphar::VertexInfo::VertexInfo</a></div><div class="ttdeci">VertexInfo(const std::string &amp;type, IdType chunk_size, const PropertyGroupVector &amp;property_groups, const std::vector&lt; std::string &gt; &amp;labels={}, const std::string &amp;prefix=&quot;&quot;, std::shared_ptr&lt; const InfoVersio [...]
-<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_ad6bc3cbb3ed0c5eaa7fd50298e106a78"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#ad6bc3cbb3ed0c5eaa7fd50298e106a78">graphar::VertexInfo::IsNullableKey</a></div><div class="ttdeci">bool IsNullableKey(const std::string &amp;property_name) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00340">graph_info.cc:340</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_adc0a253c371a004324ffae6e8abbdbc7"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#adc0a253c371a004324ffae6e8abbdbc7">graphar::VertexInfo::Dump</a></div><div class="ttdeci">Result&lt; std::string &gt; Dump() const noexcept</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00482">graph_info.cc:482</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_af1ade1caa6e70e4b7ce60cf4df7ac50c"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#af1ade1caa6e70e4b7ce60cf4df7ac50c">graphar::VertexInfo::Load</a></div><div class="ttdeci">static Result&lt; std::shared_ptr&lt; VertexInfo &gt; &gt; Load(std::shared_ptr&lt; Yaml &gt; yaml)</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00415">graph_info.cc:415</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_af6106f8fa90d876a0e97f58c7c39db33"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#af6106f8fa90d876a0e97f58c7c39db33">graphar::VertexInfo::GetPropertyGroupByIndex</a></div><div class="ttdeci">std::shared_ptr&lt; PropertyGroup &gt; GetPropertyGroupByIndex(int index) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00320">graph_info.cc:320</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_afd42b99a43507a9edb1825e7e104d1e7"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#afd42b99a43507a9edb1825e7e104d1e7">graphar::VertexInfo::Save</a></div><div class="ttdeci">Status Save(const std::string &amp;file_name) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00530">graph_info.cc:530</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_aff9aadd406180802facb14d6a4b5e72e"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#aff9aadd406180802facb14d6a4b5e72e">graphar::VertexInfo::GetPropertyGroups</a></div><div class="ttdeci">const PropertyGroupVector &amp; GetPropertyGroups() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00328">graph_info.cc:328</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_a2364ef208346bbd4d468ee78cfc6a1a3"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#a2364ef208346bbd4d468ee78cfc6a1a3">graphar::VertexInfo::GetType</a></div><div class="ttdeci">const std::string &amp; GetType() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00290">graph_info.cc:290</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_a2a4cc44b7db8784bdb0e9691c7ad0fba"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#a2a4cc44b7db8784bdb0e9691c7ad0fba">graphar::VertexInfo::GetPropertyGroup</a></div><div class="ttdeci">std::shared_ptr&lt; PropertyGroup &gt; GetPropertyGroup(const std::string &amp;property_name) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00329">graph_info.cc:329</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_a3214a62ac41be6cb53c22894d2926710"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#a3214a62ac41be6cb53c22894d2926710">graphar::VertexInfo::GetPathPrefix</a></div><div class="ttdeci">Result&lt; std::string &gt; GetPathPrefix(std::shared_ptr&lt; PropertyGroup &gt; property_group) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00313">graph_info.cc:313</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_a34a49ce4905632889db3f969986cbe75"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#a34a49ce4905632889db3f969986cbe75">graphar::VertexInfo::GetLabels</a></div><div class="ttdeci">const std::vector&lt; std::string &gt; &amp; GetLabels() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00296">graph_info.cc:296</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_a39a607d51da7e73a0fae473e90a61825"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#a39a607d51da7e73a0fae473e90a61825">graphar::VertexInfo::GetChunkSize</a></div><div class="ttdeci">IdType GetChunkSize() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00292">graph_info.cc:292</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_a47c84aab28674b5250a26c97806f2f48"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#a47c84aab28674b5250a26c97806f2f48">graphar::VertexInfo::version</a></div><div class="ttdeci">const std::shared_ptr&lt; const InfoVersion &gt; &amp; version() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00300">graph_info.cc:300</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_a4a70be2aa82d5c435b3271ae766bb54d"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#a4a70be2aa82d5c435b3271ae766bb54d">graphar::VertexInfo::AddPropertyGroup</a></div><div class="ttdeci">Result&lt; std::shared_ptr&lt; VertexInfo &gt; &gt; AddPropertyGroup(std::shared_ptr&lt; PropertyGroup &gt; property_group) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00399">graph_info.cc:399< [...]
+<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_a5d42bec7d8cdb67f1e04b921f484e328"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#a5d42bec7d8cdb67f1e04b921f484e328">graphar::VertexInfo::HasProperty</a></div><div class="ttdeci">bool HasProperty(const std::string &amp;property_name) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00363">graph_info.cc:363</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_a64aca915578185662b4429e5ed265322"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#a64aca915578185662b4429e5ed265322">graphar::VertexInfo::HasPropertyGroup</a></div><div class="ttdeci">bool HasPropertyGroup(const std::shared_ptr&lt; PropertyGroup &gt; &amp;property_group) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00368">graph_info.cc:368</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_a65faa894acf765eae9c7d4e34dff6306"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#a65faa894acf765eae9c7d4e34dff6306">graphar::VertexInfo::GetFilePath</a></div><div class="ttdeci">Result&lt; std::string &gt; GetFilePath(std::shared_ptr&lt; PropertyGroup &gt; property_group, IdType chunk_index) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00304">graph_info.cc:304</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_a68f7407348b39115e0fa4d44750e9d37"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#a68f7407348b39115e0fa4d44750e9d37">graphar::VertexInfo::IsPrimaryKey</a></div><div class="ttdeci">bool IsPrimaryKey(const std::string &amp;property_name) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00347">graph_info.cc:347</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_a70d2cb4637d4b2909bd34045a39568af"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#a70d2cb4637d4b2909bd34045a39568af">graphar::VertexInfo::IsValidated</a></div><div class="ttdeci">bool IsValidated() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00437">graph_info.cc:437</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_a7917824d18f7c84a02859f18b47e77fe"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#a7917824d18f7c84a02859f18b47e77fe">graphar::VertexInfo::PropertyGroupNum</a></div><div class="ttdeci">int PropertyGroupNum() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00325">graph_info.cc:325</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_a8432977087cbb207f65b91debc240119"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#a8432977087cbb207f65b91debc240119">graphar::VertexInfo::RemovePropertyGroup</a></div><div class="ttdeci">Result&lt; std::shared_ptr&lt; VertexInfo &gt; &gt; RemovePropertyGroup(std::shared_ptr&lt; PropertyGroup &gt; property_group) const</div><div class="ttdoc">Removes a property group from the VertexInfo instance and returns a new Vert [...]
+<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_a8fb76a180c2fb8192961a27862f5aa69"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#a8fb76a180c2fb8192961a27862f5aa69">graphar::VertexInfo::GetPrefix</a></div><div class="ttdeci">const std::string &amp; GetPrefix() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00294">graph_info.cc:294</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_aad61b0a40a4bef344fad93cb1332d97d"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#aad61b0a40a4bef344fad93cb1332d97d">graphar::VertexInfo::GetVerticesNumFilePath</a></div><div class="ttdeci">Result&lt; std::string &gt; GetVerticesNumFilePath() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00321">graph_info.cc:321</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_acbeedc2afc98e53155bb1f75c9cb465c"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#acbeedc2afc98e53155bb1f75c9cb465c">graphar::VertexInfo::GetPropertyType</a></div><div class="ttdeci">Result&lt; std::shared_ptr&lt; DataType &gt; &gt; GetPropertyType(const std::string &amp;property_name) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00381">graph_info.cc:381</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_acddb12cfcf7c6bfe1f1937f984828312"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#acddb12cfcf7c6bfe1f1937f984828312">graphar::VertexInfo::VertexInfo</a></div><div class="ttdeci">VertexInfo(const std::string &amp;type, IdType chunk_size, const PropertyGroupVector &amp;property_groups, const std::vector&lt; std::string &gt; &amp;labels={}, const std::string &amp;prefix=&quot;&quot;, std::shared_ptr&lt; const InfoVersio [...]
+<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_ad6bc3cbb3ed0c5eaa7fd50298e106a78"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#ad6bc3cbb3ed0c5eaa7fd50298e106a78">graphar::VertexInfo::IsNullableKey</a></div><div class="ttdeci">bool IsNullableKey(const std::string &amp;property_name) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00355">graph_info.cc:355</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_adc0a253c371a004324ffae6e8abbdbc7"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#adc0a253c371a004324ffae6e8abbdbc7">graphar::VertexInfo::Dump</a></div><div class="ttdeci">Result&lt; std::string &gt; Dump() const noexcept</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00518">graph_info.cc:518</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_af1ade1caa6e70e4b7ce60cf4df7ac50c"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#af1ade1caa6e70e4b7ce60cf4df7ac50c">graphar::VertexInfo::Load</a></div><div class="ttdeci">static Result&lt; std::shared_ptr&lt; VertexInfo &gt; &gt; Load(std::shared_ptr&lt; Yaml &gt; yaml)</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00451">graph_info.cc:451</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_af6106f8fa90d876a0e97f58c7c39db33"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#af6106f8fa90d876a0e97f58c7c39db33">graphar::VertexInfo::GetPropertyGroupByIndex</a></div><div class="ttdeci">std::shared_ptr&lt; PropertyGroup &gt; GetPropertyGroupByIndex(int index) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00335">graph_info.cc:335</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_afd42b99a43507a9edb1825e7e104d1e7"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#afd42b99a43507a9edb1825e7e104d1e7">graphar::VertexInfo::Save</a></div><div class="ttdeci">Status Save(const std::string &amp;file_name) const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00566">graph_info.cc:566</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_vertex_info_html_aff9aadd406180802facb14d6a4b5e72e"><div class="ttname"><a href="classgraphar_1_1_vertex_info.html#aff9aadd406180802facb14d6a4b5e72e">graphar::VertexInfo::GetPropertyGroups</a></div><div class="ttdeci">const PropertyGroupVector &amp; GetPropertyGroups() const</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8cc_source.html#l00343">graph_info.cc:343</a></div></div>
 </div><!-- fragment --></div><!-- contents -->
 <!--
     Licensed to the Apache Software Foundation (ASF) under one
diff --git a/docs/cpp/graph__reader_8h_source.html b/docs/cpp/graph__reader_8h_source.html
index 261cc52..9aee9cb 100644
--- a/docs/cpp/graph__reader_8h_source.html
+++ b/docs/cpp/graph__reader_8h_source.html
@@ -990,7 +990,7 @@ $(function() {
 <div class="ttc" id="aclassgraphar_1_1_edge_html_a5350088ffa4fab0a11fbece2a6d5c413"><div class="ttname"><a href="classgraphar_1_1_edge.html#a5350088ffa4fab0a11fbece2a6d5c413">graphar::Edge::destination</a></div><div class="ttdeci">IdType destination() const noexcept</div><div class="ttdoc">Get destination id of the edge.</div><div class="ttdef"><b>Definition:</b> <a href="graph__reader_8h_source.html#l00133">graph_reader.h:133</a></div></div>
 <div class="ttc" id="aclassgraphar_1_1_edge_html_aa717cc7bec930a6aa97ee860825648b5"><div class="ttname"><a href="classgraphar_1_1_edge.html#aa717cc7bec930a6aa97ee860825648b5">graphar::Edge::IsValid</a></div><div class="ttdeci">bool IsValid(const std::string &amp;property) const</div><div class="ttdoc">Return true if value at the property is valid (not null).</div><div class="ttdef"><b>Definition:</b> <a href="graph__reader_8h_source.html#l00150">graph_reader.h:150</a></div></div>
 <div class="ttc" id="aclassgraphar_1_1_edge_html_ad746d8f83ef691a52368e4b519d40027"><div class="ttname"><a href="classgraphar_1_1_edge.html#ad746d8f83ef691a52368e4b519d40027">graphar::Edge::property</a></div><div class="ttdeci">Result&lt; T &gt; property(const std::string &amp;property) const</div><div class="ttdoc">Get the property value of the edge.</div><div class="ttdef"><b>Definition:</b> <a href="graph__reader_8cc_source.html#l00603">graph_reader.cc:603</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_edge_info_html"><div class="ttname"><a href="classgraphar_1_1_edge_info.html">graphar::EdgeInfo</a></div><div class="ttdoc">EdgeInfo is a class to describe the edge information, including the source vertex type,...</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8h_source.html#l00398">graph_info.h:398</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_edge_info_html"><div class="ttname"><a href="classgraphar_1_1_edge_info.html">graphar::EdgeInfo</a></div><div class="ttdoc">EdgeInfo is a class to describe the edge information, including the source vertex type,...</div><div class="ttdef"><b>Definition:</b> <a href="graph__info_8h_source.html#l00408">graph_info.h:408</a></div></div>
 <div class="ttc" id="aclassgraphar_1_1_edge_iter_html"><div class="ttname"><a href="classgraphar_1_1_edge_iter.html">graphar::EdgeIter</a></div><div class="ttdoc">The iterator for traversing a type of edges.</div><div class="ttdef"><b>Definition:</b> <a href="graph__reader_8h_source.html#l00491">graph_reader.h:491</a></div></div>
 <div class="ttc" id="aclassgraphar_1_1_edge_iter_html_a0288483d16ed0b62a7a1d1f79f923a6e"><div class="ttname"><a href="classgraphar_1_1_edge_iter.html#a0288483d16ed0b62a7a1d1f79f923a6e">graphar::EdgeIter::next_src</a></div><div class="ttdeci">bool next_src()</div><div class="ttdef"><b>Definition:</b> <a href="graph__reader_8h_source.html#l00716">graph_reader.h:716</a></div></div>
 <div class="ttc" id="aclassgraphar_1_1_edge_iter_html_a04ab347b43542948dafd64f52185619a"><div class="ttname"><a href="classgraphar_1_1_edge_iter.html#a04ab347b43542948dafd64f52185619a">graphar::EdgeIter::source</a></div><div class="ttdeci">IdType source()</div><div class="ttdef"><b>Definition:</b> <a href="graph__reader_8cc_source.html#l00698">graph_reader.cc:698</a></div></div>
diff --git a/docs/cpp/search/all_10.js b/docs/cpp/search/all_10.js
index 30cf918..d331b32 100644
--- a/docs/cpp/search/all_10.js
+++ b/docs/cpp/search/all_10.js
@@ -1,18 +1,18 @@
 var searchData=
 [
-  ['save_170',['Save',['../classgraphar_1_1_vertex_info.html#afd42b99a43507a9edb1825e7e104d1e7',1,'graphar::VertexInfo::Save()'],['../classgraphar_1_1_edge_info.html#a1e95f986bd8c5191f438705b195191e3',1,'graphar::EdgeInfo::Save()'],['../classgraphar_1_1_graph_info.html#a339f08f5a1427aadc91d30d41dccced3',1,'graphar::GraphInfo::Save()']]],
-  ['seek_171',['seek',['../classgraphar_1_1_adj_list_chunk_info_reader.html#a4112f153ae93b5177d0d09e63dd3a83a',1,'graphar::AdjListChunkInfoReader::seek()'],['../classgraphar_1_1_adj_list_property_chunk_info_reader.html#a07835b2495f819c5dc1419933d66d61b',1,'graphar::AdjListPropertyChunkInfoReader::seek()'],['../classgraphar_1_1_adj_list_offset_chunk_info_reader.html#a2bc492ab3433d429ca24742d5057704d',1,'graphar::AdjListOffsetChunkInfoReader::seek()'],['../classgraphar_1_1_vertex_property_ [...]
-  ['seek_5fchunk_5findex_172',['seek_chunk_index',['../classgraphar_1_1_adj_list_arrow_chunk_reader.html#aa18bd4c0daba0b681702a4e79b688b1f',1,'graphar::AdjListArrowChunkReader::seek_chunk_index()'],['../classgraphar_1_1_adj_list_property_arrow_chunk_reader.html#a43f9942247308265666c351c5c19e52b',1,'graphar::AdjListPropertyArrowChunkReader::seek_chunk_index()']]],
-  ['seek_5fdst_173',['seek_dst',['../classgraphar_1_1_adj_list_arrow_chunk_reader.html#af9aed01c37c9b588bca7c16d3e744c0e',1,'graphar::AdjListArrowChunkReader::seek_dst()'],['../classgraphar_1_1_adj_list_property_arrow_chunk_reader.html#a1adc64854a6ee06781a559e6c1a87618',1,'graphar::AdjListPropertyArrowChunkReader::seek_dst()'],['../classgraphar_1_1_adj_list_chunk_info_reader.html#a031d114f5f7de849902168ae3a25ae59',1,'graphar::AdjListChunkInfoReader::seek_dst()'],['../classgraphar_1_1_adj [...]
-  ['seek_5fsrc_174',['seek_src',['../classgraphar_1_1_adj_list_property_chunk_info_reader.html#a35abb7c994c7692b909f08973ced5bce',1,'graphar::AdjListPropertyChunkInfoReader::seek_src()'],['../classgraphar_1_1_adj_list_chunk_info_reader.html#a4f8cf5d9910f57c68575a69a4c6eb1dc',1,'graphar::AdjListChunkInfoReader::seek_src()'],['../classgraphar_1_1_adj_list_arrow_chunk_reader.html#a05ec017e937e1ac8367af0bf3b0533a9',1,'graphar::AdjListArrowChunkReader::seek_src()'],['../classgraphar_1_1_adj_l [...]
-  ['select_175',['Select',['../classgraphar_1_1_vertex_property_arrow_chunk_reader.html#abbd481e5ab71e536e878ec5aad9ff185',1,'graphar::VertexPropertyArrowChunkReader::Select()'],['../classgraphar_1_1_adj_list_property_arrow_chunk_reader.html#af44cd0428593d424c30c991b6cfeac96',1,'graphar::AdjListPropertyArrowChunkReader::Select()']]],
-  ['setid_176',['SetId',['../classgraphar_1_1builder_1_1_vertex.html#a0e9a9b63017733934286cd99507d7268',1,'graphar::builder::Vertex']]],
-  ['setvalidatelevel_177',['SetValidateLevel',['../classgraphar_1_1_vertex_property_writer.html#a9ef1eba6f5508f5a83423bbe8bb12c9b',1,'graphar::VertexPropertyWriter::SetValidateLevel()'],['../classgraphar_1_1_edge_chunk_writer.html#a1f66533c5776b9d83a53afaf2bed5985',1,'graphar::EdgeChunkWriter::SetValidateLevel()'],['../classgraphar_1_1builder_1_1_edges_builder.html#a6b32c705b64b306b80ab037875ef05bf',1,'graphar::builder::EdgesBuilder::SetValidateLevel()'],['../classgraphar_1_1builder_1_1_ [...]
-  ['setwriteroptions_178',['SetWriterOptions',['../classgraphar_1_1builder_1_1_edges_builder.html#ab95a819d161c98ff26a1a7b3744f4d5d',1,'graphar::builder::EdgesBuilder::SetWriterOptions()'],['../classgraphar_1_1builder_1_1_vertices_builder.html#a71995d500d250dcde4a720fc7784b4c4',1,'graphar::builder::VerticesBuilder::SetWriterOptions()']]],
-  ['size_179',['size',['../classgraphar_1_1_vertices_collection.html#aa748d07fd3a49b8383d99bf34f2eb559',1,'graphar::VerticesCollection::size()'],['../classgraphar_1_1_edges_collection.html#a7daf9ec4ef2b713e4e90b9abd5bacfa3',1,'graphar::EdgesCollection::size()']]],
-  ['sortandwriteadjlisttable_180',['SortAndWriteAdjListTable',['../classgraphar_1_1_edge_chunk_writer.html#a69144b6a4bd4087b7401787d641ca772',1,'graphar::EdgeChunkWriter']]],
-  ['sortandwritepropertytable_181',['SortAndWritePropertyTable',['../classgraphar_1_1_edge_chunk_writer.html#ab859c5eb1f10b88c5d0af6ab71e0ec79',1,'graphar::EdgeChunkWriter::SortAndWritePropertyTable(const std::shared_ptr&lt; arrow::Table &gt; &amp;input_table, const std::shared_ptr&lt; PropertyGroup &gt; &amp;property_group, IdType vertex_chunk_index, IdType start_chunk_index=0, ValidateLevel validate_level=ValidateLevel::default_validate) const'],['../classgraphar_1_1_edge_chunk_writer. [...]
-  ['sortandwritetable_182',['SortAndWriteTable',['../classgraphar_1_1_edge_chunk_writer.html#aadbd1ad5299ab867d099ffc85528268a',1,'graphar::EdgeChunkWriter']]],
-  ['source_183',['source',['../classgraphar_1_1_edge.html#a145a461cfb96e4c468bc7840324ef109',1,'graphar::Edge::source()'],['../classgraphar_1_1_edge_iter.html#a04ab347b43542948dafd64f52185619a',1,'graphar::EdgeIter::source()']]],
-  ['status_184',['Status',['../classgraphar_1_1_status.html',1,'graphar::Status'],['../classgraphar_1_1_status.html#a0a860f829759c387e55e5d72e2253e36',1,'graphar::Status::Status() noexcept'],['../classgraphar_1_1_status.html#a003d78f26f5cbad3615e2ee5944b76bb',1,'graphar::Status::Status(StatusCode code, const std::string &amp;msg)'],['../classgraphar_1_1_status.html#ad2e06c777504a46a8d4dd959aa46f106',1,'graphar::Status::Status(const Status &amp;s)'],['../classgraphar_1_1_status.html#adb3d [...]
+  ['save_174',['Save',['../classgraphar_1_1_vertex_info.html#afd42b99a43507a9edb1825e7e104d1e7',1,'graphar::VertexInfo::Save()'],['../classgraphar_1_1_edge_info.html#a1e95f986bd8c5191f438705b195191e3',1,'graphar::EdgeInfo::Save()'],['../classgraphar_1_1_graph_info.html#a339f08f5a1427aadc91d30d41dccced3',1,'graphar::GraphInfo::Save()']]],
+  ['seek_175',['seek',['../classgraphar_1_1_adj_list_chunk_info_reader.html#a4112f153ae93b5177d0d09e63dd3a83a',1,'graphar::AdjListChunkInfoReader::seek()'],['../classgraphar_1_1_adj_list_property_chunk_info_reader.html#a07835b2495f819c5dc1419933d66d61b',1,'graphar::AdjListPropertyChunkInfoReader::seek()'],['../classgraphar_1_1_adj_list_offset_chunk_info_reader.html#a2bc492ab3433d429ca24742d5057704d',1,'graphar::AdjListOffsetChunkInfoReader::seek()'],['../classgraphar_1_1_vertex_property_ [...]
+  ['seek_5fchunk_5findex_176',['seek_chunk_index',['../classgraphar_1_1_adj_list_arrow_chunk_reader.html#aa18bd4c0daba0b681702a4e79b688b1f',1,'graphar::AdjListArrowChunkReader::seek_chunk_index()'],['../classgraphar_1_1_adj_list_property_arrow_chunk_reader.html#a43f9942247308265666c351c5c19e52b',1,'graphar::AdjListPropertyArrowChunkReader::seek_chunk_index()']]],
+  ['seek_5fdst_177',['seek_dst',['../classgraphar_1_1_adj_list_arrow_chunk_reader.html#af9aed01c37c9b588bca7c16d3e744c0e',1,'graphar::AdjListArrowChunkReader::seek_dst()'],['../classgraphar_1_1_adj_list_property_arrow_chunk_reader.html#a1adc64854a6ee06781a559e6c1a87618',1,'graphar::AdjListPropertyArrowChunkReader::seek_dst()'],['../classgraphar_1_1_adj_list_chunk_info_reader.html#a031d114f5f7de849902168ae3a25ae59',1,'graphar::AdjListChunkInfoReader::seek_dst()'],['../classgraphar_1_1_adj [...]
+  ['seek_5fsrc_178',['seek_src',['../classgraphar_1_1_adj_list_property_chunk_info_reader.html#a35abb7c994c7692b909f08973ced5bce',1,'graphar::AdjListPropertyChunkInfoReader::seek_src()'],['../classgraphar_1_1_adj_list_chunk_info_reader.html#a4f8cf5d9910f57c68575a69a4c6eb1dc',1,'graphar::AdjListChunkInfoReader::seek_src()'],['../classgraphar_1_1_adj_list_arrow_chunk_reader.html#a05ec017e937e1ac8367af0bf3b0533a9',1,'graphar::AdjListArrowChunkReader::seek_src()'],['../classgraphar_1_1_adj_l [...]
+  ['select_179',['Select',['../classgraphar_1_1_vertex_property_arrow_chunk_reader.html#abbd481e5ab71e536e878ec5aad9ff185',1,'graphar::VertexPropertyArrowChunkReader::Select()'],['../classgraphar_1_1_adj_list_property_arrow_chunk_reader.html#af44cd0428593d424c30c991b6cfeac96',1,'graphar::AdjListPropertyArrowChunkReader::Select()']]],
+  ['setid_180',['SetId',['../classgraphar_1_1builder_1_1_vertex.html#a0e9a9b63017733934286cd99507d7268',1,'graphar::builder::Vertex']]],
+  ['setvalidatelevel_181',['SetValidateLevel',['../classgraphar_1_1_vertex_property_writer.html#a9ef1eba6f5508f5a83423bbe8bb12c9b',1,'graphar::VertexPropertyWriter::SetValidateLevel()'],['../classgraphar_1_1_edge_chunk_writer.html#a1f66533c5776b9d83a53afaf2bed5985',1,'graphar::EdgeChunkWriter::SetValidateLevel()'],['../classgraphar_1_1builder_1_1_edges_builder.html#a6b32c705b64b306b80ab037875ef05bf',1,'graphar::builder::EdgesBuilder::SetValidateLevel()'],['../classgraphar_1_1builder_1_1_ [...]
+  ['setwriteroptions_182',['SetWriterOptions',['../classgraphar_1_1builder_1_1_edges_builder.html#ab95a819d161c98ff26a1a7b3744f4d5d',1,'graphar::builder::EdgesBuilder::SetWriterOptions()'],['../classgraphar_1_1builder_1_1_vertices_builder.html#a71995d500d250dcde4a720fc7784b4c4',1,'graphar::builder::VerticesBuilder::SetWriterOptions()']]],
+  ['size_183',['size',['../classgraphar_1_1_vertices_collection.html#aa748d07fd3a49b8383d99bf34f2eb559',1,'graphar::VerticesCollection::size()'],['../classgraphar_1_1_edges_collection.html#a7daf9ec4ef2b713e4e90b9abd5bacfa3',1,'graphar::EdgesCollection::size()']]],
+  ['sortandwriteadjlisttable_184',['SortAndWriteAdjListTable',['../classgraphar_1_1_edge_chunk_writer.html#a69144b6a4bd4087b7401787d641ca772',1,'graphar::EdgeChunkWriter']]],
+  ['sortandwritepropertytable_185',['SortAndWritePropertyTable',['../classgraphar_1_1_edge_chunk_writer.html#ab859c5eb1f10b88c5d0af6ab71e0ec79',1,'graphar::EdgeChunkWriter::SortAndWritePropertyTable(const std::shared_ptr&lt; arrow::Table &gt; &amp;input_table, const std::shared_ptr&lt; PropertyGroup &gt; &amp;property_group, IdType vertex_chunk_index, IdType start_chunk_index=0, ValidateLevel validate_level=ValidateLevel::default_validate) const'],['../classgraphar_1_1_edge_chunk_writer. [...]
+  ['sortandwritetable_186',['SortAndWriteTable',['../classgraphar_1_1_edge_chunk_writer.html#aadbd1ad5299ab867d099ffc85528268a',1,'graphar::EdgeChunkWriter']]],
+  ['source_187',['source',['../classgraphar_1_1_edge.html#a145a461cfb96e4c468bc7840324ef109',1,'graphar::Edge::source()'],['../classgraphar_1_1_edge_iter.html#a04ab347b43542948dafd64f52185619a',1,'graphar::EdgeIter::source()']]],
+  ['status_188',['Status',['../classgraphar_1_1_status.html',1,'graphar::Status'],['../classgraphar_1_1_status.html#a0a860f829759c387e55e5d72e2253e36',1,'graphar::Status::Status() noexcept'],['../classgraphar_1_1_status.html#a003d78f26f5cbad3615e2ee5944b76bb',1,'graphar::Status::Status(StatusCode code, const std::string &amp;msg)'],['../classgraphar_1_1_status.html#ad2e06c777504a46a8d4dd959aa46f106',1,'graphar::Status::Status(const Status &amp;s)'],['../classgraphar_1_1_status.html#adb3d [...]
 ];
diff --git a/docs/cpp/search/all_11.js b/docs/cpp/search/all_11.js
index 3213f79..e8c4552 100644
--- a/docs/cpp/search/all_11.js
+++ b/docs/cpp/search/all_11.js
@@ -1,8 +1,8 @@
 var searchData=
 [
-  ['timestamp_185',['Timestamp',['../classgraphar_1_1_timestamp.html',1,'graphar']]],
-  ['to_5fbegin_186',['to_begin',['../classgraphar_1_1_edge_iter.html#a3be552f2d7b060d5f87c2191e35253b8',1,'graphar::EdgeIter']]],
-  ['tostring_187',['ToString',['../classgraphar_1_1_info_version.html#a4e0d219b21a24894964b01bc8ddda3c3',1,'graphar::InfoVersion']]],
-  ['typeerror_188',['TypeError',['../classgraphar_1_1_status.html#a3335cf4bf5cd222d5e29b01fe95e919a',1,'graphar::Status']]],
-  ['typetoarrowtype_189',['TypeToArrowType',['../structgraphar_1_1_type_to_arrow_type.html',1,'graphar']]]
+  ['timestamp_189',['Timestamp',['../classgraphar_1_1_timestamp.html',1,'graphar']]],
+  ['to_5fbegin_190',['to_begin',['../classgraphar_1_1_edge_iter.html#a3be552f2d7b060d5f87c2191e35253b8',1,'graphar::EdgeIter']]],
+  ['tostring_191',['ToString',['../classgraphar_1_1_info_version.html#a4e0d219b21a24894964b01bc8ddda3c3',1,'graphar::InfoVersion']]],
+  ['typeerror_192',['TypeError',['../classgraphar_1_1_status.html#a3335cf4bf5cd222d5e29b01fe95e919a',1,'graphar::Status']]],
+  ['typetoarrowtype_193',['TypeToArrowType',['../structgraphar_1_1_type_to_arrow_type.html',1,'graphar']]]
 ];
diff --git a/docs/cpp/search/all_12.js b/docs/cpp/search/all_12.js
index 51872c1..5ee739a 100644
--- a/docs/cpp/search/all_12.js
+++ b/docs/cpp/search/all_12.js
@@ -1,7 +1,7 @@
 var searchData=
 [
-  ['ubdedgescollection_190',['UBDEdgesCollection',['../classgraphar_1_1_u_b_d_edges_collection.html',1,'graphar::UBDEdgesCollection'],['../classgraphar_1_1_u_b_d_edges_collection.html#aef2d69ca4ae1b6cba62e42417ed80364',1,'graphar::UBDEdgesCollection::UBDEdgesCollection()']]],
-  ['ubsedgescollection_191',['UBSEdgesCollection',['../classgraphar_1_1_u_b_s_edges_collection.html',1,'graphar::UBSEdgesCollection'],['../classgraphar_1_1_u_b_s_edges_collection.html#a78ba5d25060dda524a7c51e591527a1c',1,'graphar::UBSEdgesCollection::UBSEdgesCollection()']]],
-  ['unknownerror_192',['UnknownError',['../classgraphar_1_1_status.html#a4a45918d3b4f77af5a794fd8f2245ab2',1,'graphar::Status']]],
-  ['user_5fdefine_5ftypes_193',['user_define_types',['../classgraphar_1_1_info_version.html#abb46ad5fe0cdb63ca5170ec9671c4e0b',1,'graphar::InfoVersion']]]
+  ['ubdedgescollection_194',['UBDEdgesCollection',['../classgraphar_1_1_u_b_d_edges_collection.html',1,'graphar::UBDEdgesCollection'],['../classgraphar_1_1_u_b_d_edges_collection.html#aef2d69ca4ae1b6cba62e42417ed80364',1,'graphar::UBDEdgesCollection::UBDEdgesCollection()']]],
+  ['ubsedgescollection_195',['UBSEdgesCollection',['../classgraphar_1_1_u_b_s_edges_collection.html',1,'graphar::UBSEdgesCollection'],['../classgraphar_1_1_u_b_s_edges_collection.html#a78ba5d25060dda524a7c51e591527a1c',1,'graphar::UBSEdgesCollection::UBSEdgesCollection()']]],
+  ['unknownerror_196',['UnknownError',['../classgraphar_1_1_status.html#a4a45918d3b4f77af5a794fd8f2245ab2',1,'graphar::Status']]],
+  ['user_5fdefine_5ftypes_197',['user_define_types',['../classgraphar_1_1_info_version.html#abb46ad5fe0cdb63ca5170ec9671c4e0b',1,'graphar::InfoVersion']]]
 ];
diff --git a/docs/cpp/search/all_13.js b/docs/cpp/search/all_13.js
index c4b5f4e..876484a 100644
--- a/docs/cpp/search/all_13.js
+++ b/docs/cpp/search/all_13.js
@@ -1,18 +1,18 @@
 var searchData=
 [
-  ['valuegetter_194',['ValueGetter',['../structgraphar_1_1util_1_1_value_getter.html',1,'graphar::util']]],
-  ['valuegetter_3c_20std_3a_3astring_20_3e_195',['ValueGetter&lt; std::string &gt;',['../structgraphar_1_1util_1_1_value_getter_3_01std_1_1string_01_4.html',1,'graphar::util']]],
-  ['version_196',['version',['../classgraphar_1_1_info_version.html#adf3934d5a05e1f86a5096e0ff9a09b78',1,'graphar::InfoVersion::version()'],['../classgraphar_1_1_graph_info.html#aeb68a7550c63365d8093136601a3aeee',1,'graphar::GraphInfo::version()'],['../classgraphar_1_1_edge_info.html#a9440bef05f4fa689662f26a9ef0117c1',1,'graphar::EdgeInfo::version()'],['../classgraphar_1_1_vertex_info.html#a47c84aab28674b5250a26c97806f2f48',1,'graphar::VertexInfo::version()']]],
-  ['vertex_197',['Vertex',['../classgraphar_1_1builder_1_1_vertex.html',1,'graphar::builder::Vertex'],['../classgraphar_1_1_vertex.html',1,'graphar::Vertex'],['../classgraphar_1_1builder_1_1_vertex.html#ad4b0c92a74322ce0be53523fd254382f',1,'graphar::builder::Vertex::Vertex()'],['../classgraphar_1_1_vertex.html#aff8224ea52a0a08c3e07d07d1184ccaf',1,'graphar::Vertex::Vertex()']]],
-  ['vertexchunkinfowriter_198',['VertexChunkInfoWriter',['../classgraphar_1_1_vertex_chunk_info_writer.html',1,'graphar::VertexChunkInfoWriter'],['../classgraphar_1_1_vertex_chunk_info_writer.html#af7f075dd7412ad38175eb1e09de9158d',1,'graphar::VertexChunkInfoWriter::VertexChunkInfoWriter()']]],
-  ['vertexinfo_199',['VertexInfo',['../classgraphar_1_1_vertex_info.html',1,'graphar::VertexInfo'],['../classgraphar_1_1_vertex_info.html#acddb12cfcf7c6bfe1f1937f984828312',1,'graphar::VertexInfo::VertexInfo()']]],
-  ['vertexinfonum_200',['VertexInfoNum',['../classgraphar_1_1_graph_info.html#aa384328a58c9138b5b77ea6172199d07',1,'graphar::GraphInfo']]],
-  ['vertexiter_201',['VertexIter',['../classgraphar_1_1_vertex_iter.html',1,'graphar::VertexIter'],['../classgraphar_1_1_vertex_iter.html#a1c6d6fa3d58931f929f7e2cd75b67da5',1,'graphar::VertexIter::VertexIter(const std::shared_ptr&lt; VertexInfo &gt; &amp;vertex_info, const std::string &amp;prefix, IdType offset, const std::vector&lt; std::string &gt; &amp;labels, const bool &amp;is_filtered=false, const std::vector&lt; IdType &gt; &amp;filtered_ids={}) noexcept'],['../classgraphar_1_1_ve [...]
-  ['vertexpropertyarrowchunkreader_202',['VertexPropertyArrowChunkReader',['../classgraphar_1_1_vertex_property_arrow_chunk_reader.html',1,'graphar::VertexPropertyArrowChunkReader'],['../classgraphar_1_1_vertex_property_arrow_chunk_reader.html#a34726efe4d561e9d0b44c5f0d573f4fe',1,'graphar::VertexPropertyArrowChunkReader::VertexPropertyArrowChunkReader(const std::shared_ptr&lt; VertexInfo &gt; &amp;vertex_info, const std::vector&lt; std::string &gt; &amp;labels, const std::string &amp;pre [...]
-  ['vertexpropertychunkinforeader_203',['VertexPropertyChunkInfoReader',['../classgraphar_1_1_vertex_property_chunk_info_reader.html',1,'graphar::VertexPropertyChunkInfoReader'],['../classgraphar_1_1_vertex_property_chunk_info_reader.html#a3ebfb96e4e9b0042d0cb0aa65fbc95a8',1,'graphar::VertexPropertyChunkInfoReader::VertexPropertyChunkInfoReader()']]],
-  ['vertexpropertywriter_204',['VertexPropertyWriter',['../classgraphar_1_1_vertex_property_writer.html',1,'graphar::VertexPropertyWriter'],['../classgraphar_1_1_vertex_property_writer.html#a47e13b7e46a9c1dacc069ca4f789b74f',1,'graphar::VertexPropertyWriter::VertexPropertyWriter()']]],
-  ['verticesbuilder_205',['VerticesBuilder',['../classgraphar_1_1builder_1_1_vertices_builder.html',1,'graphar::builder::VerticesBuilder'],['../classgraphar_1_1builder_1_1_vertices_builder.html#acc85e675bdcdf0e0633a7871bf79bb57',1,'graphar::builder::VerticesBuilder::VerticesBuilder()']]],
-  ['verticescollection_206',['VerticesCollection',['../classgraphar_1_1_vertices_collection.html',1,'graphar::VerticesCollection'],['../classgraphar_1_1_vertices_collection.html#ad69c997aae186d10725bf5c907d1d123',1,'graphar::VerticesCollection::VerticesCollection(const std::shared_ptr&lt; VertexInfo &gt; &amp;vertex_info, const std::string &amp;prefix, const bool is_filtered=false, std::vector&lt; IdType &gt; filtered_ids={})']]],
-  ['verticeswithlabel_207',['verticesWithLabel',['../classgraphar_1_1_vertices_collection.html#a8b65a9581d99b60d66dd6cda82f936f8',1,'graphar::VerticesCollection::verticesWithLabel(const std::string &amp;filter_label, const std::shared_ptr&lt; GraphInfo &gt; &amp;graph_info, const std::string &amp;type)'],['../classgraphar_1_1_vertices_collection.html#a9c1097cbc912a9576125e66c3686c19b',1,'graphar::VerticesCollection::verticesWithLabel(const std::string &amp;filter_label, const std::shared [...]
-  ['verticeswithmultiplelabels_208',['verticesWithMultipleLabels',['../classgraphar_1_1_vertices_collection.html#a82c4485dcd473fed76b8b8fe2d863965',1,'graphar::VerticesCollection::verticesWithMultipleLabels(const std::vector&lt; std::string &gt; &amp;filter_labels, const std::shared_ptr&lt; GraphInfo &gt; &amp;graph_info, const std::string &amp;type)'],['../classgraphar_1_1_vertices_collection.html#a804247ead280d1a8a1c528f49ded9e68',1,'graphar::VerticesCollection::verticesWithMultipleLab [...]
+  ['valuegetter_198',['ValueGetter',['../structgraphar_1_1util_1_1_value_getter.html',1,'graphar::util']]],
+  ['valuegetter_3c_20std_3a_3astring_20_3e_199',['ValueGetter&lt; std::string &gt;',['../structgraphar_1_1util_1_1_value_getter_3_01std_1_1string_01_4.html',1,'graphar::util']]],
+  ['version_200',['version',['../classgraphar_1_1_info_version.html#adf3934d5a05e1f86a5096e0ff9a09b78',1,'graphar::InfoVersion::version()'],['../classgraphar_1_1_graph_info.html#aeb68a7550c63365d8093136601a3aeee',1,'graphar::GraphInfo::version()'],['../classgraphar_1_1_edge_info.html#a9440bef05f4fa689662f26a9ef0117c1',1,'graphar::EdgeInfo::version()'],['../classgraphar_1_1_vertex_info.html#a47c84aab28674b5250a26c97806f2f48',1,'graphar::VertexInfo::version()']]],
+  ['vertex_201',['Vertex',['../classgraphar_1_1builder_1_1_vertex.html',1,'graphar::builder::Vertex'],['../classgraphar_1_1_vertex.html',1,'graphar::Vertex'],['../classgraphar_1_1builder_1_1_vertex.html#ad4b0c92a74322ce0be53523fd254382f',1,'graphar::builder::Vertex::Vertex()'],['../classgraphar_1_1_vertex.html#aff8224ea52a0a08c3e07d07d1184ccaf',1,'graphar::Vertex::Vertex()']]],
+  ['vertexchunkinfowriter_202',['VertexChunkInfoWriter',['../classgraphar_1_1_vertex_chunk_info_writer.html',1,'graphar::VertexChunkInfoWriter'],['../classgraphar_1_1_vertex_chunk_info_writer.html#af7f075dd7412ad38175eb1e09de9158d',1,'graphar::VertexChunkInfoWriter::VertexChunkInfoWriter()']]],
+  ['vertexinfo_203',['VertexInfo',['../classgraphar_1_1_vertex_info.html',1,'graphar::VertexInfo'],['../classgraphar_1_1_vertex_info.html#acddb12cfcf7c6bfe1f1937f984828312',1,'graphar::VertexInfo::VertexInfo()']]],
+  ['vertexinfonum_204',['VertexInfoNum',['../classgraphar_1_1_graph_info.html#aa384328a58c9138b5b77ea6172199d07',1,'graphar::GraphInfo']]],
+  ['vertexiter_205',['VertexIter',['../classgraphar_1_1_vertex_iter.html',1,'graphar::VertexIter'],['../classgraphar_1_1_vertex_iter.html#a1c6d6fa3d58931f929f7e2cd75b67da5',1,'graphar::VertexIter::VertexIter(const std::shared_ptr&lt; VertexInfo &gt; &amp;vertex_info, const std::string &amp;prefix, IdType offset, const std::vector&lt; std::string &gt; &amp;labels, const bool &amp;is_filtered=false, const std::vector&lt; IdType &gt; &amp;filtered_ids={}) noexcept'],['../classgraphar_1_1_ve [...]
+  ['vertexpropertyarrowchunkreader_206',['VertexPropertyArrowChunkReader',['../classgraphar_1_1_vertex_property_arrow_chunk_reader.html',1,'graphar::VertexPropertyArrowChunkReader'],['../classgraphar_1_1_vertex_property_arrow_chunk_reader.html#a34726efe4d561e9d0b44c5f0d573f4fe',1,'graphar::VertexPropertyArrowChunkReader::VertexPropertyArrowChunkReader(const std::shared_ptr&lt; VertexInfo &gt; &amp;vertex_info, const std::vector&lt; std::string &gt; &amp;labels, const std::string &amp;pre [...]
+  ['vertexpropertychunkinforeader_207',['VertexPropertyChunkInfoReader',['../classgraphar_1_1_vertex_property_chunk_info_reader.html',1,'graphar::VertexPropertyChunkInfoReader'],['../classgraphar_1_1_vertex_property_chunk_info_reader.html#a3ebfb96e4e9b0042d0cb0aa65fbc95a8',1,'graphar::VertexPropertyChunkInfoReader::VertexPropertyChunkInfoReader()']]],
+  ['vertexpropertywriter_208',['VertexPropertyWriter',['../classgraphar_1_1_vertex_property_writer.html',1,'graphar::VertexPropertyWriter'],['../classgraphar_1_1_vertex_property_writer.html#a47e13b7e46a9c1dacc069ca4f789b74f',1,'graphar::VertexPropertyWriter::VertexPropertyWriter()']]],
+  ['verticesbuilder_209',['VerticesBuilder',['../classgraphar_1_1builder_1_1_vertices_builder.html',1,'graphar::builder::VerticesBuilder'],['../classgraphar_1_1builder_1_1_vertices_builder.html#acc85e675bdcdf0e0633a7871bf79bb57',1,'graphar::builder::VerticesBuilder::VerticesBuilder()']]],
+  ['verticescollection_210',['VerticesCollection',['../classgraphar_1_1_vertices_collection.html',1,'graphar::VerticesCollection'],['../classgraphar_1_1_vertices_collection.html#ad69c997aae186d10725bf5c907d1d123',1,'graphar::VerticesCollection::VerticesCollection(const std::shared_ptr&lt; VertexInfo &gt; &amp;vertex_info, const std::string &amp;prefix, const bool is_filtered=false, std::vector&lt; IdType &gt; filtered_ids={})']]],
+  ['verticeswithlabel_211',['verticesWithLabel',['../classgraphar_1_1_vertices_collection.html#a8b65a9581d99b60d66dd6cda82f936f8',1,'graphar::VerticesCollection::verticesWithLabel(const std::string &amp;filter_label, const std::shared_ptr&lt; GraphInfo &gt; &amp;graph_info, const std::string &amp;type)'],['../classgraphar_1_1_vertices_collection.html#a9c1097cbc912a9576125e66c3686c19b',1,'graphar::VerticesCollection::verticesWithLabel(const std::string &amp;filter_label, const std::shared [...]
+  ['verticeswithmultiplelabels_212',['verticesWithMultipleLabels',['../classgraphar_1_1_vertices_collection.html#a82c4485dcd473fed76b8b8fe2d863965',1,'graphar::VerticesCollection::verticesWithMultipleLabels(const std::vector&lt; std::string &gt; &amp;filter_labels, const std::shared_ptr&lt; GraphInfo &gt; &amp;graph_info, const std::string &amp;type)'],['../classgraphar_1_1_vertices_collection.html#a804247ead280d1a8a1c528f49ded9e68',1,'graphar::VerticesCollection::verticesWithMultipleLab [...]
 ];
diff --git a/docs/cpp/search/all_14.js b/docs/cpp/search/all_14.js
index f52a65d..2a23376 100644
--- a/docs/cpp/search/all_14.js
+++ b/docs/cpp/search/all_14.js
@@ -1,18 +1,18 @@
 var searchData=
 [
-  ['writeadjlistchunk_209',['WriteAdjListChunk',['../classgraphar_1_1_edge_chunk_writer.html#abbf227f722fcfaf5a330229d92dcc7d0',1,'graphar::EdgeChunkWriter']]],
-  ['writeadjlisttable_210',['WriteAdjListTable',['../classgraphar_1_1_edge_chunk_writer.html#a7197f8501c2205dd6a5456d4bf1769fd',1,'graphar::EdgeChunkWriter']]],
-  ['writechunk_211',['WriteChunk',['../classgraphar_1_1_vertex_property_writer.html#a5bad3bb184de34c951b1dea21cb1dcd5',1,'graphar::VertexPropertyWriter::WriteChunk(const std::shared_ptr&lt; arrow::Table &gt; &amp;input_table, const std::shared_ptr&lt; PropertyGroup &gt; &amp;property_group, IdType chunk_index, ValidateLevel validate_level=ValidateLevel::default_validate) const'],['../classgraphar_1_1_vertex_property_writer.html#a51de0fd2b7444c6a25ae36389b74bfd3',1,'graphar::VertexPropert [...]
-  ['writeedgesnum_212',['WriteEdgesNum',['../classgraphar_1_1_edge_chunk_writer.html#abfa01f956f732e660eead056ce12f7c1',1,'graphar::EdgeChunkWriter']]],
-  ['writelabelchunk_213',['WriteLabelChunk',['../classgraphar_1_1_vertex_property_writer.html#acc8026d1d2eaaf86f9c2d8d49c207f99',1,'graphar::VertexPropertyWriter']]],
-  ['writelabeltable_214',['WriteLabelTable',['../classgraphar_1_1_vertex_property_writer.html#a001d330977bb6830bc78c42219f8c8a0',1,'graphar::VertexPropertyWriter']]],
-  ['writelabeltabletofile_215',['WriteLabelTableToFile',['../classgraphar_1_1_file_system.html#ad48927d2fd542cc737cb16b7e529c0b6',1,'graphar::FileSystem']]],
-  ['writeoffsetchunk_216',['WriteOffsetChunk',['../classgraphar_1_1_edge_chunk_writer.html#a9a9041e72a3d46e9fb8a2f1d2463489c',1,'graphar::EdgeChunkWriter']]],
-  ['writepropertychunk_217',['WritePropertyChunk',['../classgraphar_1_1_edge_chunk_writer.html#a2552448a395acd1e3cc10e9db45ce877',1,'graphar::EdgeChunkWriter::WritePropertyChunk(const std::shared_ptr&lt; arrow::Table &gt; &amp;input_table, const std::shared_ptr&lt; PropertyGroup &gt; &amp;property_group, IdType vertex_chunk_index, IdType chunk_index, ValidateLevel validate_level=ValidateLevel::default_validate) const'],['../classgraphar_1_1_edge_chunk_writer.html#a48f3a7356d603416caf3aef [...]
-  ['writepropertytable_218',['WritePropertyTable',['../classgraphar_1_1_edge_chunk_writer.html#a74d5ff66b247fb94b87db25442f98ee2',1,'graphar::EdgeChunkWriter::WritePropertyTable(const std::shared_ptr&lt; arrow::Table &gt; &amp;input_table, const std::shared_ptr&lt; PropertyGroup &gt; &amp;property_group, IdType vertex_chunk_index, IdType start_chunk_index=0, ValidateLevel validate_level=ValidateLevel::default_validate) const'],['../classgraphar_1_1_edge_chunk_writer.html#ac4d3a559f6508f1 [...]
-  ['writeroptions_219',['WriterOptions',['../classgraphar_1_1_writer_options.html',1,'graphar']]],
-  ['writetable_220',['WriteTable',['../classgraphar_1_1_vertex_property_writer.html#adea3f0326fad64bc061bc5b01790ab47',1,'graphar::VertexPropertyWriter::WriteTable(const std::shared_ptr&lt; arrow::Table &gt; &amp;input_table, const std::shared_ptr&lt; PropertyGroup &gt; &amp;property_group, IdType start_chunk_index, ValidateLevel validate_level=ValidateLevel::default_validate) const'],['../classgraphar_1_1_vertex_property_writer.html#aaa3107eb66941ceeb782280e3038ee4f',1,'graphar::VertexP [...]
-  ['writetabletofile_221',['WriteTableToFile',['../classgraphar_1_1_file_system.html#af5c15ca6b858f7df89eea3e77319decf',1,'graphar::FileSystem']]],
-  ['writevaluetofile_222',['WriteValueToFile',['../classgraphar_1_1_file_system.html#a474b6e6ba28a0114a1d84f4eb06a211b',1,'graphar::FileSystem']]],
-  ['writeverticesnum_223',['WriteVerticesNum',['../classgraphar_1_1_vertex_property_writer.html#addf40fb82fe987af091278e01995b87a',1,'graphar::VertexPropertyWriter::WriteVerticesNum()'],['../classgraphar_1_1_edge_chunk_writer.html#af3796d4dd08e7d876281f53d039dad5f',1,'graphar::EdgeChunkWriter::WriteVerticesNum()']]]
+  ['writeadjlistchunk_213',['WriteAdjListChunk',['../classgraphar_1_1_edge_chunk_writer.html#abbf227f722fcfaf5a330229d92dcc7d0',1,'graphar::EdgeChunkWriter']]],
+  ['writeadjlisttable_214',['WriteAdjListTable',['../classgraphar_1_1_edge_chunk_writer.html#a7197f8501c2205dd6a5456d4bf1769fd',1,'graphar::EdgeChunkWriter']]],
+  ['writechunk_215',['WriteChunk',['../classgraphar_1_1_vertex_property_writer.html#a5bad3bb184de34c951b1dea21cb1dcd5',1,'graphar::VertexPropertyWriter::WriteChunk(const std::shared_ptr&lt; arrow::Table &gt; &amp;input_table, const std::shared_ptr&lt; PropertyGroup &gt; &amp;property_group, IdType chunk_index, ValidateLevel validate_level=ValidateLevel::default_validate) const'],['../classgraphar_1_1_vertex_property_writer.html#a51de0fd2b7444c6a25ae36389b74bfd3',1,'graphar::VertexPropert [...]
+  ['writeedgesnum_216',['WriteEdgesNum',['../classgraphar_1_1_edge_chunk_writer.html#abfa01f956f732e660eead056ce12f7c1',1,'graphar::EdgeChunkWriter']]],
+  ['writelabelchunk_217',['WriteLabelChunk',['../classgraphar_1_1_vertex_property_writer.html#acc8026d1d2eaaf86f9c2d8d49c207f99',1,'graphar::VertexPropertyWriter']]],
+  ['writelabeltable_218',['WriteLabelTable',['../classgraphar_1_1_vertex_property_writer.html#a001d330977bb6830bc78c42219f8c8a0',1,'graphar::VertexPropertyWriter']]],
+  ['writelabeltabletofile_219',['WriteLabelTableToFile',['../classgraphar_1_1_file_system.html#ad48927d2fd542cc737cb16b7e529c0b6',1,'graphar::FileSystem']]],
+  ['writeoffsetchunk_220',['WriteOffsetChunk',['../classgraphar_1_1_edge_chunk_writer.html#a9a9041e72a3d46e9fb8a2f1d2463489c',1,'graphar::EdgeChunkWriter']]],
+  ['writepropertychunk_221',['WritePropertyChunk',['../classgraphar_1_1_edge_chunk_writer.html#a2552448a395acd1e3cc10e9db45ce877',1,'graphar::EdgeChunkWriter::WritePropertyChunk(const std::shared_ptr&lt; arrow::Table &gt; &amp;input_table, const std::shared_ptr&lt; PropertyGroup &gt; &amp;property_group, IdType vertex_chunk_index, IdType chunk_index, ValidateLevel validate_level=ValidateLevel::default_validate) const'],['../classgraphar_1_1_edge_chunk_writer.html#a48f3a7356d603416caf3aef [...]
+  ['writepropertytable_222',['WritePropertyTable',['../classgraphar_1_1_edge_chunk_writer.html#a74d5ff66b247fb94b87db25442f98ee2',1,'graphar::EdgeChunkWriter::WritePropertyTable(const std::shared_ptr&lt; arrow::Table &gt; &amp;input_table, const std::shared_ptr&lt; PropertyGroup &gt; &amp;property_group, IdType vertex_chunk_index, IdType start_chunk_index=0, ValidateLevel validate_level=ValidateLevel::default_validate) const'],['../classgraphar_1_1_edge_chunk_writer.html#ac4d3a559f6508f1 [...]
+  ['writeroptions_223',['WriterOptions',['../classgraphar_1_1_writer_options.html',1,'graphar']]],
+  ['writetable_224',['WriteTable',['../classgraphar_1_1_vertex_property_writer.html#adea3f0326fad64bc061bc5b01790ab47',1,'graphar::VertexPropertyWriter::WriteTable(const std::shared_ptr&lt; arrow::Table &gt; &amp;input_table, const std::shared_ptr&lt; PropertyGroup &gt; &amp;property_group, IdType start_chunk_index, ValidateLevel validate_level=ValidateLevel::default_validate) const'],['../classgraphar_1_1_vertex_property_writer.html#aaa3107eb66941ceeb782280e3038ee4f',1,'graphar::VertexP [...]
+  ['writetabletofile_225',['WriteTableToFile',['../classgraphar_1_1_file_system.html#af5c15ca6b858f7df89eea3e77319decf',1,'graphar::FileSystem']]],
+  ['writevaluetofile_226',['WriteValueToFile',['../classgraphar_1_1_file_system.html#a474b6e6ba28a0114a1d84f4eb06a211b',1,'graphar::FileSystem']]],
+  ['writeverticesnum_227',['WriteVerticesNum',['../classgraphar_1_1_vertex_property_writer.html#addf40fb82fe987af091278e01995b87a',1,'graphar::VertexPropertyWriter::WriteVerticesNum()'],['../classgraphar_1_1_edge_chunk_writer.html#af3796d4dd08e7d876281f53d039dad5f',1,'graphar::EdgeChunkWriter::WriteVerticesNum()']]]
 ];
diff --git a/docs/cpp/search/all_15.js b/docs/cpp/search/all_15.js
index 26c92b2..eaa4a60 100644
--- a/docs/cpp/search/all_15.js
+++ b/docs/cpp/search/all_15.js
@@ -1,5 +1,5 @@
 var searchData=
 [
-  ['yaml_224',['Yaml',['../classgraphar_1_1_yaml.html',1,'graphar']]],
-  ['yamlerror_225',['YamlError',['../classgraphar_1_1_status.html#a358b23c7f34efbf14c84cbc2ddbdd6a4',1,'graphar::Status']]]
+  ['yaml_228',['Yaml',['../classgraphar_1_1_yaml.html',1,'graphar']]],
+  ['yamlerror_229',['YamlError',['../classgraphar_1_1_status.html#a358b23c7f34efbf14c84cbc2ddbdd6a4',1,'graphar::Status']]]
 ];
diff --git a/docs/cpp/search/all_16.js b/docs/cpp/search/all_16.js
index 77783cf..24651d2 100644
--- a/docs/cpp/search/all_16.js
+++ b/docs/cpp/search/all_16.js
@@ -1,4 +1,4 @@
 var searchData=
 [
-  ['_7estatus_226',['~Status',['../classgraphar_1_1_status.html#a1a1973d36a87952ccbbb2c09426d3076',1,'graphar::Status']]]
+  ['_7estatus_230',['~Status',['../classgraphar_1_1_status.html#a1a1973d36a87952ccbbb2c09426d3076',1,'graphar::Status']]]
 ];
diff --git a/docs/cpp/search/all_f.js b/docs/cpp/search/all_f.js
index 8d9f926..16106ea 100644
--- a/docs/cpp/search/all_f.js
+++ b/docs/cpp/search/all_f.js
@@ -1,5 +1,9 @@
 var searchData=
 [
   ['readfiletotable_168',['ReadFileToTable',['../classgraphar_1_1_file_system.html#acfd1a7452cf5d89826ac119b90949956',1,'graphar::FileSystem']]],
-  ['readfiletovalue_169',['ReadFileToValue',['../classgraphar_1_1_file_system.html#aa014a28119399836283a573c9abd97b7',1,'graphar::FileSystem']]]
+  ['readfiletovalue_169',['ReadFileToValue',['../classgraphar_1_1_file_system.html#aa014a28119399836283a573c9abd97b7',1,'graphar::FileSystem']]],
+  ['removeadjacentlist_170',['RemoveAdjacentList',['../classgraphar_1_1_edge_info.html#a7db36496a4cf0eb517b463de5caa125f',1,'graphar::EdgeInfo']]],
+  ['removeedge_171',['RemoveEdge',['../classgraphar_1_1_graph_info.html#acc0e018222ae59e749a52b3678e6529a',1,'graphar::GraphInfo']]],
+  ['removepropertygroup_172',['RemovePropertyGroup',['../classgraphar_1_1_vertex_info.html#a8432977087cbb207f65b91debc240119',1,'graphar::VertexInfo::RemovePropertyGroup()'],['../classgraphar_1_1_edge_info.html#a264853429b84060bbe36c671d5bc8963',1,'graphar::EdgeInfo::RemovePropertyGroup()']]],
+  ['removevertex_173',['RemoveVertex',['../classgraphar_1_1_graph_info.html#ad64a71966ca197ae14ea21ff8787b769',1,'graphar::GraphInfo']]]
 ];
diff --git a/docs/cpp/search/classes_0.js b/docs/cpp/search/classes_0.js
index 55934a8..f8112a3 100644
--- a/docs/cpp/search/classes_0.js
+++ b/docs/cpp/search/classes_0.js
@@ -1,12 +1,12 @@
 var searchData=
 [
-  ['adjacentlist_227',['AdjacentList',['../classgraphar_1_1_adjacent_list.html',1,'graphar']]],
-  ['adjlistarrowchunkreader_228',['AdjListArrowChunkReader',['../classgraphar_1_1_adj_list_arrow_chunk_reader.html',1,'graphar']]],
-  ['adjlistchunkinforeader_229',['AdjListChunkInfoReader',['../classgraphar_1_1_adj_list_chunk_info_reader.html',1,'graphar']]],
-  ['adjlistoffsetarrowchunkreader_230',['AdjListOffsetArrowChunkReader',['../classgraphar_1_1_adj_list_offset_arrow_chunk_reader.html',1,'graphar']]],
-  ['adjlistoffsetchunkinforeader_231',['AdjListOffsetChunkInfoReader',['../classgraphar_1_1_adj_list_offset_chunk_info_reader.html',1,'graphar']]],
-  ['adjlistpropertyarrowchunkreader_232',['AdjListPropertyArrowChunkReader',['../classgraphar_1_1_adj_list_property_arrow_chunk_reader.html',1,'graphar']]],
-  ['adjlistpropertychunkinforeader_233',['AdjListPropertyChunkInfoReader',['../classgraphar_1_1_adj_list_property_chunk_info_reader.html',1,'graphar']]],
-  ['array_234',['Array',['../classgraphar_1_1_array.html',1,'graphar']]],
-  ['array_3c_20std_3a_3astring_5fview_20_3e_235',['Array&lt; std::string_view &gt;',['../classgraphar_1_1_array_3_01std_1_1string__view_01_4.html',1,'graphar']]]
+  ['adjacentlist_231',['AdjacentList',['../classgraphar_1_1_adjacent_list.html',1,'graphar']]],
+  ['adjlistarrowchunkreader_232',['AdjListArrowChunkReader',['../classgraphar_1_1_adj_list_arrow_chunk_reader.html',1,'graphar']]],
+  ['adjlistchunkinforeader_233',['AdjListChunkInfoReader',['../classgraphar_1_1_adj_list_chunk_info_reader.html',1,'graphar']]],
+  ['adjlistoffsetarrowchunkreader_234',['AdjListOffsetArrowChunkReader',['../classgraphar_1_1_adj_list_offset_arrow_chunk_reader.html',1,'graphar']]],
+  ['adjlistoffsetchunkinforeader_235',['AdjListOffsetChunkInfoReader',['../classgraphar_1_1_adj_list_offset_chunk_info_reader.html',1,'graphar']]],
+  ['adjlistpropertyarrowchunkreader_236',['AdjListPropertyArrowChunkReader',['../classgraphar_1_1_adj_list_property_arrow_chunk_reader.html',1,'graphar']]],
+  ['adjlistpropertychunkinforeader_237',['AdjListPropertyChunkInfoReader',['../classgraphar_1_1_adj_list_property_chunk_info_reader.html',1,'graphar']]],
+  ['array_238',['Array',['../classgraphar_1_1_array.html',1,'graphar']]],
+  ['array_3c_20std_3a_3astring_5fview_20_3e_239',['Array&lt; std::string_view &gt;',['../classgraphar_1_1_array_3_01std_1_1string__view_01_4.html',1,'graphar']]]
 ];
diff --git a/docs/cpp/search/classes_1.js b/docs/cpp/search/classes_1.js
index 99d0c54..3b9289b 100644
--- a/docs/cpp/search/classes_1.js
+++ b/docs/cpp/search/classes_1.js
@@ -1,5 +1,5 @@
 var searchData=
 [
-  ['csvoptionbuilder_236',['CSVOptionBuilder',['../classgraphar_1_1_writer_options_1_1_c_s_v_option_builder.html',1,'graphar::WriterOptions']]],
-  ['ctypetoarrowtype_237',['CTypeToArrowType',['../structgraphar_1_1_c_type_to_arrow_type.html',1,'graphar']]]
+  ['csvoptionbuilder_240',['CSVOptionBuilder',['../classgraphar_1_1_writer_options_1_1_c_s_v_option_builder.html',1,'graphar::WriterOptions']]],
+  ['ctypetoarrowtype_241',['CTypeToArrowType',['../structgraphar_1_1_c_type_to_arrow_type.html',1,'graphar']]]
 ];
diff --git a/docs/cpp/search/classes_2.js b/docs/cpp/search/classes_2.js
index 00774bf..5716b81 100644
--- a/docs/cpp/search/classes_2.js
+++ b/docs/cpp/search/classes_2.js
@@ -1,5 +1,5 @@
 var searchData=
 [
-  ['datatype_238',['DataType',['../classgraphar_1_1_data_type.html',1,'graphar']]],
-  ['date_239',['Date',['../classgraphar_1_1_date.html',1,'graphar']]]
+  ['datatype_242',['DataType',['../classgraphar_1_1_data_type.html',1,'graphar']]],
+  ['date_243',['Date',['../classgraphar_1_1_date.html',1,'graphar']]]
 ];
diff --git a/docs/cpp/search/classes_3.js b/docs/cpp/search/classes_3.js
index 3e75e13..b3f3294 100644
--- a/docs/cpp/search/classes_3.js
+++ b/docs/cpp/search/classes_3.js
@@ -1,24 +1,24 @@
 var searchData=
 [
-  ['edge_240',['Edge',['../classgraphar_1_1builder_1_1_edge.html',1,'graphar::builder::Edge'],['../classgraphar_1_1_edge.html',1,'graphar::Edge']]],
-  ['edgechunkinfowriter_241',['EdgeChunkInfoWriter',['../classgraphar_1_1_edge_chunk_info_writer.html',1,'graphar']]],
-  ['edgechunkwriter_242',['EdgeChunkWriter',['../classgraphar_1_1_edge_chunk_writer.html',1,'graphar']]],
-  ['edgeinfo_243',['EdgeInfo',['../classgraphar_1_1_edge_info.html',1,'graphar']]],
-  ['edgeiter_244',['EdgeIter',['../classgraphar_1_1_edge_iter.html',1,'graphar']]],
-  ['edgesbuilder_245',['EdgesBuilder',['../classgraphar_1_1builder_1_1_edges_builder.html',1,'graphar::builder']]],
-  ['edgescollection_246',['EdgesCollection',['../classgraphar_1_1_edges_collection.html',1,'graphar']]],
-  ['expression_247',['Expression',['../classgraphar_1_1_expression.html',1,'graphar']]],
-  ['expressionand_248',['ExpressionAnd',['../classgraphar_1_1_expression_and.html',1,'graphar']]],
-  ['expressionbinaryop_249',['ExpressionBinaryOp',['../classgraphar_1_1_expression_binary_op.html',1,'graphar']]],
-  ['expressionequal_250',['ExpressionEqual',['../classgraphar_1_1_expression_equal.html',1,'graphar']]],
-  ['expressiongreaterequal_251',['ExpressionGreaterEqual',['../classgraphar_1_1_expression_greater_equal.html',1,'graphar']]],
-  ['expressiongreaterthan_252',['ExpressionGreaterThan',['../classgraphar_1_1_expression_greater_than.html',1,'graphar']]],
-  ['expressionlessequal_253',['ExpressionLessEqual',['../classgraphar_1_1_expression_less_equal.html',1,'graphar']]],
-  ['expressionlessthan_254',['ExpressionLessThan',['../classgraphar_1_1_expression_less_than.html',1,'graphar']]],
-  ['expressionliteral_255',['ExpressionLiteral',['../classgraphar_1_1_expression_literal.html',1,'graphar']]],
-  ['expressionnot_256',['ExpressionNot',['../classgraphar_1_1_expression_not.html',1,'graphar']]],
-  ['expressionnotequal_257',['ExpressionNotEqual',['../classgraphar_1_1_expression_not_equal.html',1,'graphar']]],
-  ['expressionor_258',['ExpressionOr',['../classgraphar_1_1_expression_or.html',1,'graphar']]],
-  ['expressionproperty_259',['ExpressionProperty',['../classgraphar_1_1_expression_property.html',1,'graphar']]],
-  ['expressionunaryop_260',['ExpressionUnaryOp',['../classgraphar_1_1_expression_unary_op.html',1,'graphar']]]
+  ['edge_244',['Edge',['../classgraphar_1_1builder_1_1_edge.html',1,'graphar::builder::Edge'],['../classgraphar_1_1_edge.html',1,'graphar::Edge']]],
+  ['edgechunkinfowriter_245',['EdgeChunkInfoWriter',['../classgraphar_1_1_edge_chunk_info_writer.html',1,'graphar']]],
+  ['edgechunkwriter_246',['EdgeChunkWriter',['../classgraphar_1_1_edge_chunk_writer.html',1,'graphar']]],
+  ['edgeinfo_247',['EdgeInfo',['../classgraphar_1_1_edge_info.html',1,'graphar']]],
+  ['edgeiter_248',['EdgeIter',['../classgraphar_1_1_edge_iter.html',1,'graphar']]],
+  ['edgesbuilder_249',['EdgesBuilder',['../classgraphar_1_1builder_1_1_edges_builder.html',1,'graphar::builder']]],
+  ['edgescollection_250',['EdgesCollection',['../classgraphar_1_1_edges_collection.html',1,'graphar']]],
+  ['expression_251',['Expression',['../classgraphar_1_1_expression.html',1,'graphar']]],
+  ['expressionand_252',['ExpressionAnd',['../classgraphar_1_1_expression_and.html',1,'graphar']]],
+  ['expressionbinaryop_253',['ExpressionBinaryOp',['../classgraphar_1_1_expression_binary_op.html',1,'graphar']]],
+  ['expressionequal_254',['ExpressionEqual',['../classgraphar_1_1_expression_equal.html',1,'graphar']]],
+  ['expressiongreaterequal_255',['ExpressionGreaterEqual',['../classgraphar_1_1_expression_greater_equal.html',1,'graphar']]],
+  ['expressiongreaterthan_256',['ExpressionGreaterThan',['../classgraphar_1_1_expression_greater_than.html',1,'graphar']]],
+  ['expressionlessequal_257',['ExpressionLessEqual',['../classgraphar_1_1_expression_less_equal.html',1,'graphar']]],
+  ['expressionlessthan_258',['ExpressionLessThan',['../classgraphar_1_1_expression_less_than.html',1,'graphar']]],
+  ['expressionliteral_259',['ExpressionLiteral',['../classgraphar_1_1_expression_literal.html',1,'graphar']]],
+  ['expressionnot_260',['ExpressionNot',['../classgraphar_1_1_expression_not.html',1,'graphar']]],
+  ['expressionnotequal_261',['ExpressionNotEqual',['../classgraphar_1_1_expression_not_equal.html',1,'graphar']]],
+  ['expressionor_262',['ExpressionOr',['../classgraphar_1_1_expression_or.html',1,'graphar']]],
+  ['expressionproperty_263',['ExpressionProperty',['../classgraphar_1_1_expression_property.html',1,'graphar']]],
+  ['expressionunaryop_264',['ExpressionUnaryOp',['../classgraphar_1_1_expression_unary_op.html',1,'graphar']]]
 ];
diff --git a/docs/cpp/search/classes_4.js b/docs/cpp/search/classes_4.js
index 358c0b7..9462f9d 100644
--- a/docs/cpp/search/classes_4.js
+++ b/docs/cpp/search/classes_4.js
@@ -1,5 +1,5 @@
 var searchData=
 [
-  ['filesystem_261',['FileSystem',['../classgraphar_1_1_file_system.html',1,'graphar']]],
-  ['filteroptions_262',['FilterOptions',['../structgraphar_1_1util_1_1_filter_options.html',1,'graphar::util']]]
+  ['filesystem_265',['FileSystem',['../classgraphar_1_1_file_system.html',1,'graphar']]],
+  ['filteroptions_266',['FilterOptions',['../structgraphar_1_1util_1_1_filter_options.html',1,'graphar::util']]]
 ];
diff --git a/docs/cpp/search/classes_5.js b/docs/cpp/search/classes_5.js
index 75896a0..c124a22 100644
--- a/docs/cpp/search/classes_5.js
+++ b/docs/cpp/search/classes_5.js
@@ -1,5 +1,5 @@
 var searchData=
 [
-  ['generalparams_263',['GeneralParams',['../structgraphar_1_1_general_params.html',1,'graphar']]],
-  ['graphinfo_264',['GraphInfo',['../classgraphar_1_1_graph_info.html',1,'graphar']]]
+  ['generalparams_267',['GeneralParams',['../structgraphar_1_1_general_params.html',1,'graphar']]],
+  ['graphinfo_268',['GraphInfo',['../classgraphar_1_1_graph_info.html',1,'graphar']]]
 ];
diff --git a/docs/cpp/search/classes_6.js b/docs/cpp/search/classes_6.js
index 03759c9..70cb30d 100644
--- a/docs/cpp/search/classes_6.js
+++ b/docs/cpp/search/classes_6.js
@@ -1,7 +1,7 @@
 var searchData=
 [
-  ['impl_265',['Impl',['../classgraphar_1_1_edge_info_1_1_impl.html',1,'graphar::EdgeInfo::Impl'],['../classgraphar_1_1_graph_info_1_1_impl.html',1,'graphar::GraphInfo::Impl'],['../classgraphar_1_1_vertex_info_1_1_impl.html',1,'graphar::VertexInfo::Impl']]],
-  ['indexconverter_266',['IndexConverter',['../structgraphar_1_1util_1_1_index_converter.html',1,'graphar::util']]],
-  ['infoversion_267',['InfoVersion',['../classgraphar_1_1_info_version.html',1,'graphar']]],
-  ['iterator_268',['iterator',['../classgraphar_1_1_array_3_01std_1_1string__view_01_4_1_1iterator.html',1,'graphar::Array&lt; std::string_view &gt;']]]
+  ['impl_269',['Impl',['../classgraphar_1_1_edge_info_1_1_impl.html',1,'graphar::EdgeInfo::Impl'],['../classgraphar_1_1_graph_info_1_1_impl.html',1,'graphar::GraphInfo::Impl'],['../classgraphar_1_1_vertex_info_1_1_impl.html',1,'graphar::VertexInfo::Impl']]],
+  ['indexconverter_270',['IndexConverter',['../structgraphar_1_1util_1_1_index_converter.html',1,'graphar::util']]],
+  ['infoversion_271',['InfoVersion',['../classgraphar_1_1_info_version.html',1,'graphar']]],
+  ['iterator_272',['iterator',['../classgraphar_1_1_array_3_01std_1_1string__view_01_4_1_1iterator.html',1,'graphar::Array&lt; std::string_view &gt;']]]
 ];
diff --git a/docs/cpp/search/classes_7.js b/docs/cpp/search/classes_7.js
index 52668c0..e8e834f 100644
--- a/docs/cpp/search/classes_7.js
+++ b/docs/cpp/search/classes_7.js
@@ -1,6 +1,6 @@
 var searchData=
 [
-  ['obdedgescollection_269',['OBDEdgesCollection',['../classgraphar_1_1_o_b_d_edges_collection.html',1,'graphar']]],
-  ['obsedgecollection_270',['OBSEdgeCollection',['../classgraphar_1_1_o_b_s_edge_collection.html',1,'graphar']]],
-  ['orcoptionbuilder_271',['ORCOptionBuilder',['../classgraphar_1_1_writer_options_1_1_o_r_c_option_builder.html',1,'graphar::WriterOptions']]]
+  ['obdedgescollection_273',['OBDEdgesCollection',['../classgraphar_1_1_o_b_d_edges_collection.html',1,'graphar']]],
+  ['obsedgecollection_274',['OBSEdgeCollection',['../classgraphar_1_1_o_b_s_edge_collection.html',1,'graphar']]],
+  ['orcoptionbuilder_275',['ORCOptionBuilder',['../classgraphar_1_1_writer_options_1_1_o_r_c_option_builder.html',1,'graphar::WriterOptions']]]
 ];
diff --git a/docs/cpp/search/classes_8.js b/docs/cpp/search/classes_8.js
index 29a778c..8e1367f 100644
--- a/docs/cpp/search/classes_8.js
+++ b/docs/cpp/search/classes_8.js
@@ -1,6 +1,6 @@
 var searchData=
 [
-  ['parquetoptionbuilder_272',['ParquetOptionBuilder',['../classgraphar_1_1_writer_options_1_1_parquet_option_builder.html',1,'graphar::WriterOptions']]],
-  ['property_273',['Property',['../classgraphar_1_1_property.html',1,'graphar']]],
-  ['propertygroup_274',['PropertyGroup',['../classgraphar_1_1_property_group.html',1,'graphar']]]
+  ['parquetoptionbuilder_276',['ParquetOptionBuilder',['../classgraphar_1_1_writer_options_1_1_parquet_option_builder.html',1,'graphar::WriterOptions']]],
+  ['property_277',['Property',['../classgraphar_1_1_property.html',1,'graphar']]],
+  ['propertygroup_278',['PropertyGroup',['../classgraphar_1_1_property_group.html',1,'graphar']]]
 ];
diff --git a/docs/cpp/search/classes_9.js b/docs/cpp/search/classes_9.js
index c8c9e86..0be5c84 100644
--- a/docs/cpp/search/classes_9.js
+++ b/docs/cpp/search/classes_9.js
@@ -1,4 +1,4 @@
 var searchData=
 [
-  ['status_275',['Status',['../classgraphar_1_1_status.html',1,'graphar']]]
+  ['status_279',['Status',['../classgraphar_1_1_status.html',1,'graphar']]]
 ];
diff --git a/docs/cpp/search/classes_a.js b/docs/cpp/search/classes_a.js
index 30e3523..63b9a80 100644
--- a/docs/cpp/search/classes_a.js
+++ b/docs/cpp/search/classes_a.js
@@ -1,5 +1,5 @@
 var searchData=
 [
-  ['timestamp_276',['Timestamp',['../classgraphar_1_1_timestamp.html',1,'graphar']]],
-  ['typetoarrowtype_277',['TypeToArrowType',['../structgraphar_1_1_type_to_arrow_type.html',1,'graphar']]]
+  ['timestamp_280',['Timestamp',['../classgraphar_1_1_timestamp.html',1,'graphar']]],
+  ['typetoarrowtype_281',['TypeToArrowType',['../structgraphar_1_1_type_to_arrow_type.html',1,'graphar']]]
 ];
diff --git a/docs/cpp/search/classes_b.js b/docs/cpp/search/classes_b.js
index 9226ebb..4dda013 100644
--- a/docs/cpp/search/classes_b.js
+++ b/docs/cpp/search/classes_b.js
@@ -1,5 +1,5 @@
 var searchData=
 [
-  ['ubdedgescollection_278',['UBDEdgesCollection',['../classgraphar_1_1_u_b_d_edges_collection.html',1,'graphar']]],
-  ['ubsedgescollection_279',['UBSEdgesCollection',['../classgraphar_1_1_u_b_s_edges_collection.html',1,'graphar']]]
+  ['ubdedgescollection_282',['UBDEdgesCollection',['../classgraphar_1_1_u_b_d_edges_collection.html',1,'graphar']]],
+  ['ubsedgescollection_283',['UBSEdgesCollection',['../classgraphar_1_1_u_b_s_edges_collection.html',1,'graphar']]]
 ];
diff --git a/docs/cpp/search/classes_c.js b/docs/cpp/search/classes_c.js
index 94892f6..d640897 100644
--- a/docs/cpp/search/classes_c.js
+++ b/docs/cpp/search/classes_c.js
@@ -1,14 +1,14 @@
 var searchData=
 [
-  ['valuegetter_280',['ValueGetter',['../structgraphar_1_1util_1_1_value_getter.html',1,'graphar::util']]],
-  ['valuegetter_3c_20std_3a_3astring_20_3e_281',['ValueGetter&lt; std::string &gt;',['../structgraphar_1_1util_1_1_value_getter_3_01std_1_1string_01_4.html',1,'graphar::util']]],
-  ['vertex_282',['Vertex',['../classgraphar_1_1builder_1_1_vertex.html',1,'graphar::builder::Vertex'],['../classgraphar_1_1_vertex.html',1,'graphar::Vertex']]],
-  ['vertexchunkinfowriter_283',['VertexChunkInfoWriter',['../classgraphar_1_1_vertex_chunk_info_writer.html',1,'graphar']]],
-  ['vertexinfo_284',['VertexInfo',['../classgraphar_1_1_vertex_info.html',1,'graphar']]],
-  ['vertexiter_285',['VertexIter',['../classgraphar_1_1_vertex_iter.html',1,'graphar']]],
-  ['vertexpropertyarrowchunkreader_286',['VertexPropertyArrowChunkReader',['../classgraphar_1_1_vertex_property_arrow_chunk_reader.html',1,'graphar']]],
-  ['vertexpropertychunkinforeader_287',['VertexPropertyChunkInfoReader',['../classgraphar_1_1_vertex_property_chunk_info_reader.html',1,'graphar']]],
-  ['vertexpropertywriter_288',['VertexPropertyWriter',['../classgraphar_1_1_vertex_property_writer.html',1,'graphar']]],
-  ['verticesbuilder_289',['VerticesBuilder',['../classgraphar_1_1builder_1_1_vertices_builder.html',1,'graphar::builder']]],
-  ['verticescollection_290',['VerticesCollection',['../classgraphar_1_1_vertices_collection.html',1,'graphar']]]
+  ['valuegetter_284',['ValueGetter',['../structgraphar_1_1util_1_1_value_getter.html',1,'graphar::util']]],
+  ['valuegetter_3c_20std_3a_3astring_20_3e_285',['ValueGetter&lt; std::string &gt;',['../structgraphar_1_1util_1_1_value_getter_3_01std_1_1string_01_4.html',1,'graphar::util']]],
+  ['vertex_286',['Vertex',['../classgraphar_1_1builder_1_1_vertex.html',1,'graphar::builder::Vertex'],['../classgraphar_1_1_vertex.html',1,'graphar::Vertex']]],
+  ['vertexchunkinfowriter_287',['VertexChunkInfoWriter',['../classgraphar_1_1_vertex_chunk_info_writer.html',1,'graphar']]],
+  ['vertexinfo_288',['VertexInfo',['../classgraphar_1_1_vertex_info.html',1,'graphar']]],
+  ['vertexiter_289',['VertexIter',['../classgraphar_1_1_vertex_iter.html',1,'graphar']]],
+  ['vertexpropertyarrowchunkreader_290',['VertexPropertyArrowChunkReader',['../classgraphar_1_1_vertex_property_arrow_chunk_reader.html',1,'graphar']]],
+  ['vertexpropertychunkinforeader_291',['VertexPropertyChunkInfoReader',['../classgraphar_1_1_vertex_property_chunk_info_reader.html',1,'graphar']]],
+  ['vertexpropertywriter_292',['VertexPropertyWriter',['../classgraphar_1_1_vertex_property_writer.html',1,'graphar']]],
+  ['verticesbuilder_293',['VerticesBuilder',['../classgraphar_1_1builder_1_1_vertices_builder.html',1,'graphar::builder']]],
+  ['verticescollection_294',['VerticesCollection',['../classgraphar_1_1_vertices_collection.html',1,'graphar']]]
 ];
diff --git a/docs/cpp/search/classes_d.js b/docs/cpp/search/classes_d.js
index bad4992..3317f6b 100644
--- a/docs/cpp/search/classes_d.js
+++ b/docs/cpp/search/classes_d.js
@@ -1,4 +1,4 @@
 var searchData=
 [
-  ['writeroptions_291',['WriterOptions',['../classgraphar_1_1_writer_options.html',1,'graphar']]]
+  ['writeroptions_295',['WriterOptions',['../classgraphar_1_1_writer_options.html',1,'graphar']]]
 ];
diff --git a/docs/cpp/search/classes_e.js b/docs/cpp/search/classes_e.js
index 5888b4b..da31f35 100644
--- a/docs/cpp/search/classes_e.js
+++ b/docs/cpp/search/classes_e.js
@@ -1,4 +1,4 @@
 var searchData=
 [
-  ['yaml_292',['Yaml',['../classgraphar_1_1_yaml.html',1,'graphar']]]
+  ['yaml_296',['Yaml',['../classgraphar_1_1_yaml.html',1,'graphar']]]
 ];
diff --git a/docs/cpp/search/functions_0.js b/docs/cpp/search/functions_0.js
index 33b7d8c..8495520 100644
--- a/docs/cpp/search/functions_0.js
+++ b/docs/cpp/search/functions_0.js
@@ -1,16 +1,16 @@
 var searchData=
 [
-  ['addadjacentlist_293',['AddAdjacentList',['../classgraphar_1_1_edge_info.html#a6e5b4fdc98d8399564396fb63955c62a',1,'graphar::EdgeInfo']]],
-  ['addedge_294',['AddEdge',['../classgraphar_1_1_graph_info.html#a8fdf1ff0ec57e3ca2e66dd4366e390aa',1,'graphar::GraphInfo::AddEdge()'],['../classgraphar_1_1builder_1_1_edges_builder.html#af2dcddb8205a47a19a1f013373600ce0',1,'graphar::builder::EdgesBuilder::AddEdge()']]],
-  ['addproperty_295',['AddProperty',['../classgraphar_1_1builder_1_1_edge.html#a74045a47191931c4078003a311128693',1,'graphar::builder::Edge::AddProperty()'],['../classgraphar_1_1builder_1_1_vertex.html#a32f5e971b9d675f3f1b8154189994226',1,'graphar::builder::Vertex::AddProperty()']]],
-  ['addpropertygroup_296',['AddPropertyGroup',['../classgraphar_1_1_vertex_info.html#a4a70be2aa82d5c435b3271ae766bb54d',1,'graphar::VertexInfo::AddPropertyGroup()'],['../classgraphar_1_1_edge_info.html#a9620f838addfdcb892b30e80e2cc4239',1,'graphar::EdgeInfo::AddPropertyGroup()']]],
-  ['addvertex_297',['AddVertex',['../classgraphar_1_1_graph_info.html#a44e38c74dc765a56f8f0d200774d8180',1,'graphar::GraphInfo::AddVertex()'],['../classgraphar_1_1builder_1_1_vertices_builder.html#a6ea4ec6528ca89d08e9c413dea1a06ca',1,'graphar::builder::VerticesBuilder::AddVertex()']]],
-  ['adjacentlist_298',['AdjacentList',['../classgraphar_1_1_adjacent_list.html#ab31cbdbaae74305f7bf3ffbd76c93efc',1,'graphar::AdjacentList']]],
-  ['adjlistarrowchunkreader_299',['AdjListArrowChunkReader',['../classgraphar_1_1_adj_list_arrow_chunk_reader.html#a91731fb764a5b3ca935e15e36300fe46',1,'graphar::AdjListArrowChunkReader::AdjListArrowChunkReader(const std::shared_ptr&lt; EdgeInfo &gt; &amp;edge_info, AdjListType adj_list_type, const std::string &amp;prefix)'],['../classgraphar_1_1_adj_list_arrow_chunk_reader.html#a28cde9de63bcb042b61de37244442d1e',1,'graphar::AdjListArrowChunkReader::AdjListArrowChunkReader(const AdjListA [...]
-  ['adjlistchunkinforeader_300',['AdjListChunkInfoReader',['../classgraphar_1_1_adj_list_chunk_info_reader.html#aecda9f2feb83874068d019e29c9ad44b',1,'graphar::AdjListChunkInfoReader']]],
-  ['adjlistoffsetarrowchunkreader_301',['AdjListOffsetArrowChunkReader',['../classgraphar_1_1_adj_list_offset_arrow_chunk_reader.html#a22b31574cd4c3e5539c47e84ec308f10',1,'graphar::AdjListOffsetArrowChunkReader']]],
-  ['adjlistoffsetchunkinforeader_302',['AdjListOffsetChunkInfoReader',['../classgraphar_1_1_adj_list_offset_chunk_info_reader.html#a7ff5025bba673ce5ad42df8f1c3f5cac',1,'graphar::AdjListOffsetChunkInfoReader']]],
-  ['adjlistpropertyarrowchunkreader_303',['AdjListPropertyArrowChunkReader',['../classgraphar_1_1_adj_list_property_arrow_chunk_reader.html#a4a8d7cabf311ed3179710d319451f30a',1,'graphar::AdjListPropertyArrowChunkReader::AdjListPropertyArrowChunkReader(const std::shared_ptr&lt; EdgeInfo &gt; &amp;edge_info, const std::shared_ptr&lt; PropertyGroup &gt; &amp;property_group, AdjListType adj_list_type, const std::string prefix, const util::FilterOptions &amp;options={})'],['../classgraphar_1_ [...]
-  ['adjlistpropertychunkinforeader_304',['AdjListPropertyChunkInfoReader',['../classgraphar_1_1_adj_list_property_chunk_info_reader.html#a6cf17b5db2430293a05e997d30c47324',1,'graphar::AdjListPropertyChunkInfoReader']]],
-  ['arrowerror_305',['ArrowError',['../classgraphar_1_1_status.html#a521553014a9f2a6d44f5d71a91a3cb72',1,'graphar::Status']]]
+  ['addadjacentlist_297',['AddAdjacentList',['../classgraphar_1_1_edge_info.html#a6e5b4fdc98d8399564396fb63955c62a',1,'graphar::EdgeInfo']]],
+  ['addedge_298',['AddEdge',['../classgraphar_1_1_graph_info.html#a8fdf1ff0ec57e3ca2e66dd4366e390aa',1,'graphar::GraphInfo::AddEdge()'],['../classgraphar_1_1builder_1_1_edges_builder.html#af2dcddb8205a47a19a1f013373600ce0',1,'graphar::builder::EdgesBuilder::AddEdge()']]],
+  ['addproperty_299',['AddProperty',['../classgraphar_1_1builder_1_1_edge.html#a74045a47191931c4078003a311128693',1,'graphar::builder::Edge::AddProperty()'],['../classgraphar_1_1builder_1_1_vertex.html#a32f5e971b9d675f3f1b8154189994226',1,'graphar::builder::Vertex::AddProperty()']]],
+  ['addpropertygroup_300',['AddPropertyGroup',['../classgraphar_1_1_vertex_info.html#a4a70be2aa82d5c435b3271ae766bb54d',1,'graphar::VertexInfo::AddPropertyGroup()'],['../classgraphar_1_1_edge_info.html#a9620f838addfdcb892b30e80e2cc4239',1,'graphar::EdgeInfo::AddPropertyGroup()']]],
+  ['addvertex_301',['AddVertex',['../classgraphar_1_1_graph_info.html#a44e38c74dc765a56f8f0d200774d8180',1,'graphar::GraphInfo::AddVertex()'],['../classgraphar_1_1builder_1_1_vertices_builder.html#a6ea4ec6528ca89d08e9c413dea1a06ca',1,'graphar::builder::VerticesBuilder::AddVertex()']]],
+  ['adjacentlist_302',['AdjacentList',['../classgraphar_1_1_adjacent_list.html#ab31cbdbaae74305f7bf3ffbd76c93efc',1,'graphar::AdjacentList']]],
+  ['adjlistarrowchunkreader_303',['AdjListArrowChunkReader',['../classgraphar_1_1_adj_list_arrow_chunk_reader.html#a91731fb764a5b3ca935e15e36300fe46',1,'graphar::AdjListArrowChunkReader::AdjListArrowChunkReader(const std::shared_ptr&lt; EdgeInfo &gt; &amp;edge_info, AdjListType adj_list_type, const std::string &amp;prefix)'],['../classgraphar_1_1_adj_list_arrow_chunk_reader.html#a28cde9de63bcb042b61de37244442d1e',1,'graphar::AdjListArrowChunkReader::AdjListArrowChunkReader(const AdjListA [...]
+  ['adjlistchunkinforeader_304',['AdjListChunkInfoReader',['../classgraphar_1_1_adj_list_chunk_info_reader.html#aecda9f2feb83874068d019e29c9ad44b',1,'graphar::AdjListChunkInfoReader']]],
+  ['adjlistoffsetarrowchunkreader_305',['AdjListOffsetArrowChunkReader',['../classgraphar_1_1_adj_list_offset_arrow_chunk_reader.html#a22b31574cd4c3e5539c47e84ec308f10',1,'graphar::AdjListOffsetArrowChunkReader']]],
+  ['adjlistoffsetchunkinforeader_306',['AdjListOffsetChunkInfoReader',['../classgraphar_1_1_adj_list_offset_chunk_info_reader.html#a7ff5025bba673ce5ad42df8f1c3f5cac',1,'graphar::AdjListOffsetChunkInfoReader']]],
+  ['adjlistpropertyarrowchunkreader_307',['AdjListPropertyArrowChunkReader',['../classgraphar_1_1_adj_list_property_arrow_chunk_reader.html#a4a8d7cabf311ed3179710d319451f30a',1,'graphar::AdjListPropertyArrowChunkReader::AdjListPropertyArrowChunkReader(const std::shared_ptr&lt; EdgeInfo &gt; &amp;edge_info, const std::shared_ptr&lt; PropertyGroup &gt; &amp;property_group, AdjListType adj_list_type, const std::string prefix, const util::FilterOptions &amp;options={})'],['../classgraphar_1_ [...]
+  ['adjlistpropertychunkinforeader_308',['AdjListPropertyChunkInfoReader',['../classgraphar_1_1_adj_list_property_chunk_info_reader.html#a6cf17b5db2430293a05e997d30c47324',1,'graphar::AdjListPropertyChunkInfoReader']]],
+  ['arrowerror_309',['ArrowError',['../classgraphar_1_1_status.html#a521553014a9f2a6d44f5d71a91a3cb72',1,'graphar::Status']]]
 ];
diff --git a/docs/cpp/search/functions_1.js b/docs/cpp/search/functions_1.js
index c5ac877..75ef807 100644
--- a/docs/cpp/search/functions_1.js
+++ b/docs/cpp/search/functions_1.js
@@ -1,4 +1,4 @@
 var searchData=
 [
-  ['begin_306',['begin',['../classgraphar_1_1_vertices_collection.html#ab2da3f53d9a0e19c933835c3741584fd',1,'graphar::VerticesCollection::begin()'],['../classgraphar_1_1_edges_collection.html#a8fd986cb8aca89d1212a2aa35a8eb3d7',1,'graphar::EdgesCollection::begin()']]]
+  ['begin_310',['begin',['../classgraphar_1_1_vertices_collection.html#ab2da3f53d9a0e19c933835c3741584fd',1,'graphar::VerticesCollection::begin()'],['../classgraphar_1_1_edges_collection.html#a8fd986cb8aca89d1212a2aa35a8eb3d7',1,'graphar::EdgesCollection::begin()']]]
 ];
diff --git a/docs/cpp/search/functions_10.js b/docs/cpp/search/functions_10.js
index b117e40..9bb2593 100644
--- a/docs/cpp/search/functions_10.js
+++ b/docs/cpp/search/functions_10.js
@@ -1,18 +1,18 @@
 var searchData=
 [
-  ['save_433',['Save',['../classgraphar_1_1_edge_info.html#a1e95f986bd8c5191f438705b195191e3',1,'graphar::EdgeInfo::Save()'],['../classgraphar_1_1_vertex_info.html#afd42b99a43507a9edb1825e7e104d1e7',1,'graphar::VertexInfo::Save()'],['../classgraphar_1_1_graph_info.html#a339f08f5a1427aadc91d30d41dccced3',1,'graphar::GraphInfo::Save()']]],
-  ['seek_434',['seek',['../classgraphar_1_1_vertex_property_arrow_chunk_reader.html#a7222b8811219e285a51be607beaafaa0',1,'graphar::VertexPropertyArrowChunkReader::seek()'],['../classgraphar_1_1_adj_list_arrow_chunk_reader.html#a2be422d83a4be97a41a696473fc18911',1,'graphar::AdjListArrowChunkReader::seek()'],['../classgraphar_1_1_adj_list_offset_arrow_chunk_reader.html#a169a3a82e445ab41d3568cb846a565e7',1,'graphar::AdjListOffsetArrowChunkReader::seek()'],['../classgraphar_1_1_adj_list_prop [...]
-  ['seek_5fchunk_5findex_435',['seek_chunk_index',['../classgraphar_1_1_adj_list_property_arrow_chunk_reader.html#a43f9942247308265666c351c5c19e52b',1,'graphar::AdjListPropertyArrowChunkReader::seek_chunk_index()'],['../classgraphar_1_1_adj_list_arrow_chunk_reader.html#aa18bd4c0daba0b681702a4e79b688b1f',1,'graphar::AdjListArrowChunkReader::seek_chunk_index(IdType vertex_chunk_index, IdType chunk_index=0)']]],
-  ['seek_5fdst_436',['seek_dst',['../classgraphar_1_1_adj_list_arrow_chunk_reader.html#af9aed01c37c9b588bca7c16d3e744c0e',1,'graphar::AdjListArrowChunkReader::seek_dst()'],['../classgraphar_1_1_adj_list_property_arrow_chunk_reader.html#a1adc64854a6ee06781a559e6c1a87618',1,'graphar::AdjListPropertyArrowChunkReader::seek_dst()'],['../classgraphar_1_1_adj_list_chunk_info_reader.html#a031d114f5f7de849902168ae3a25ae59',1,'graphar::AdjListChunkInfoReader::seek_dst()'],['../classgraphar_1_1_adj [...]
-  ['seek_5fsrc_437',['seek_src',['../classgraphar_1_1_adj_list_arrow_chunk_reader.html#a05ec017e937e1ac8367af0bf3b0533a9',1,'graphar::AdjListArrowChunkReader::seek_src()'],['../classgraphar_1_1_adj_list_property_arrow_chunk_reader.html#a19f2edd414991f5ff030896cbf5cda63',1,'graphar::AdjListPropertyArrowChunkReader::seek_src()'],['../classgraphar_1_1_adj_list_chunk_info_reader.html#a4f8cf5d9910f57c68575a69a4c6eb1dc',1,'graphar::AdjListChunkInfoReader::seek_src()'],['../classgraphar_1_1_adj [...]
-  ['select_438',['Select',['../classgraphar_1_1_vertex_property_arrow_chunk_reader.html#abbd481e5ab71e536e878ec5aad9ff185',1,'graphar::VertexPropertyArrowChunkReader::Select()'],['../classgraphar_1_1_adj_list_property_arrow_chunk_reader.html#af44cd0428593d424c30c991b6cfeac96',1,'graphar::AdjListPropertyArrowChunkReader::Select()']]],
-  ['setid_439',['SetId',['../classgraphar_1_1builder_1_1_vertex.html#a0e9a9b63017733934286cd99507d7268',1,'graphar::builder::Vertex']]],
-  ['setvalidatelevel_440',['SetValidateLevel',['../classgraphar_1_1_vertex_property_writer.html#a9ef1eba6f5508f5a83423bbe8bb12c9b',1,'graphar::VertexPropertyWriter::SetValidateLevel()'],['../classgraphar_1_1_edge_chunk_writer.html#a1f66533c5776b9d83a53afaf2bed5985',1,'graphar::EdgeChunkWriter::SetValidateLevel()'],['../classgraphar_1_1builder_1_1_edges_builder.html#a6b32c705b64b306b80ab037875ef05bf',1,'graphar::builder::EdgesBuilder::SetValidateLevel()'],['../classgraphar_1_1builder_1_1_ [...]
-  ['setwriteroptions_441',['SetWriterOptions',['../classgraphar_1_1builder_1_1_edges_builder.html#ab95a819d161c98ff26a1a7b3744f4d5d',1,'graphar::builder::EdgesBuilder::SetWriterOptions()'],['../classgraphar_1_1builder_1_1_vertices_builder.html#a71995d500d250dcde4a720fc7784b4c4',1,'graphar::builder::VerticesBuilder::SetWriterOptions()']]],
-  ['size_442',['size',['../classgraphar_1_1_vertices_collection.html#aa748d07fd3a49b8383d99bf34f2eb559',1,'graphar::VerticesCollection::size()'],['../classgraphar_1_1_edges_collection.html#a7daf9ec4ef2b713e4e90b9abd5bacfa3',1,'graphar::EdgesCollection::size()']]],
-  ['sortandwriteadjlisttable_443',['SortAndWriteAdjListTable',['../classgraphar_1_1_edge_chunk_writer.html#a69144b6a4bd4087b7401787d641ca772',1,'graphar::EdgeChunkWriter']]],
-  ['sortandwritepropertytable_444',['SortAndWritePropertyTable',['../classgraphar_1_1_edge_chunk_writer.html#ab859c5eb1f10b88c5d0af6ab71e0ec79',1,'graphar::EdgeChunkWriter::SortAndWritePropertyTable(const std::shared_ptr&lt; arrow::Table &gt; &amp;input_table, const std::shared_ptr&lt; PropertyGroup &gt; &amp;property_group, IdType vertex_chunk_index, IdType start_chunk_index=0, ValidateLevel validate_level=ValidateLevel::default_validate) const'],['../classgraphar_1_1_edge_chunk_writer. [...]
-  ['sortandwritetable_445',['SortAndWriteTable',['../classgraphar_1_1_edge_chunk_writer.html#aadbd1ad5299ab867d099ffc85528268a',1,'graphar::EdgeChunkWriter']]],
-  ['source_446',['source',['../classgraphar_1_1_edge.html#a145a461cfb96e4c468bc7840324ef109',1,'graphar::Edge::source()'],['../classgraphar_1_1_edge_iter.html#a04ab347b43542948dafd64f52185619a',1,'graphar::EdgeIter::source()']]],
-  ['status_447',['Status',['../classgraphar_1_1_status.html#a0a860f829759c387e55e5d72e2253e36',1,'graphar::Status::Status() noexcept'],['../classgraphar_1_1_status.html#a003d78f26f5cbad3615e2ee5944b76bb',1,'graphar::Status::Status(StatusCode code, const std::string &amp;msg)'],['../classgraphar_1_1_status.html#ad2e06c777504a46a8d4dd959aa46f106',1,'graphar::Status::Status(const Status &amp;s)'],['../classgraphar_1_1_status.html#adb3d43ca307b4d68ba517de8025b6856',1,'graphar::Status::Status [...]
+  ['save_441',['Save',['../classgraphar_1_1_edge_info.html#a1e95f986bd8c5191f438705b195191e3',1,'graphar::EdgeInfo::Save()'],['../classgraphar_1_1_vertex_info.html#afd42b99a43507a9edb1825e7e104d1e7',1,'graphar::VertexInfo::Save()'],['../classgraphar_1_1_graph_info.html#a339f08f5a1427aadc91d30d41dccced3',1,'graphar::GraphInfo::Save()']]],
+  ['seek_442',['seek',['../classgraphar_1_1_vertex_property_arrow_chunk_reader.html#a7222b8811219e285a51be607beaafaa0',1,'graphar::VertexPropertyArrowChunkReader::seek()'],['../classgraphar_1_1_adj_list_arrow_chunk_reader.html#a2be422d83a4be97a41a696473fc18911',1,'graphar::AdjListArrowChunkReader::seek()'],['../classgraphar_1_1_adj_list_offset_arrow_chunk_reader.html#a169a3a82e445ab41d3568cb846a565e7',1,'graphar::AdjListOffsetArrowChunkReader::seek()'],['../classgraphar_1_1_adj_list_prop [...]
+  ['seek_5fchunk_5findex_443',['seek_chunk_index',['../classgraphar_1_1_adj_list_property_arrow_chunk_reader.html#a43f9942247308265666c351c5c19e52b',1,'graphar::AdjListPropertyArrowChunkReader::seek_chunk_index()'],['../classgraphar_1_1_adj_list_arrow_chunk_reader.html#aa18bd4c0daba0b681702a4e79b688b1f',1,'graphar::AdjListArrowChunkReader::seek_chunk_index(IdType vertex_chunk_index, IdType chunk_index=0)']]],
+  ['seek_5fdst_444',['seek_dst',['../classgraphar_1_1_adj_list_arrow_chunk_reader.html#af9aed01c37c9b588bca7c16d3e744c0e',1,'graphar::AdjListArrowChunkReader::seek_dst()'],['../classgraphar_1_1_adj_list_property_arrow_chunk_reader.html#a1adc64854a6ee06781a559e6c1a87618',1,'graphar::AdjListPropertyArrowChunkReader::seek_dst()'],['../classgraphar_1_1_adj_list_chunk_info_reader.html#a031d114f5f7de849902168ae3a25ae59',1,'graphar::AdjListChunkInfoReader::seek_dst()'],['../classgraphar_1_1_adj [...]
+  ['seek_5fsrc_445',['seek_src',['../classgraphar_1_1_adj_list_arrow_chunk_reader.html#a05ec017e937e1ac8367af0bf3b0533a9',1,'graphar::AdjListArrowChunkReader::seek_src()'],['../classgraphar_1_1_adj_list_property_arrow_chunk_reader.html#a19f2edd414991f5ff030896cbf5cda63',1,'graphar::AdjListPropertyArrowChunkReader::seek_src()'],['../classgraphar_1_1_adj_list_chunk_info_reader.html#a4f8cf5d9910f57c68575a69a4c6eb1dc',1,'graphar::AdjListChunkInfoReader::seek_src()'],['../classgraphar_1_1_adj [...]
+  ['select_446',['Select',['../classgraphar_1_1_vertex_property_arrow_chunk_reader.html#abbd481e5ab71e536e878ec5aad9ff185',1,'graphar::VertexPropertyArrowChunkReader::Select()'],['../classgraphar_1_1_adj_list_property_arrow_chunk_reader.html#af44cd0428593d424c30c991b6cfeac96',1,'graphar::AdjListPropertyArrowChunkReader::Select()']]],
+  ['setid_447',['SetId',['../classgraphar_1_1builder_1_1_vertex.html#a0e9a9b63017733934286cd99507d7268',1,'graphar::builder::Vertex']]],
+  ['setvalidatelevel_448',['SetValidateLevel',['../classgraphar_1_1_vertex_property_writer.html#a9ef1eba6f5508f5a83423bbe8bb12c9b',1,'graphar::VertexPropertyWriter::SetValidateLevel()'],['../classgraphar_1_1_edge_chunk_writer.html#a1f66533c5776b9d83a53afaf2bed5985',1,'graphar::EdgeChunkWriter::SetValidateLevel()'],['../classgraphar_1_1builder_1_1_edges_builder.html#a6b32c705b64b306b80ab037875ef05bf',1,'graphar::builder::EdgesBuilder::SetValidateLevel()'],['../classgraphar_1_1builder_1_1_ [...]
+  ['setwriteroptions_449',['SetWriterOptions',['../classgraphar_1_1builder_1_1_edges_builder.html#ab95a819d161c98ff26a1a7b3744f4d5d',1,'graphar::builder::EdgesBuilder::SetWriterOptions()'],['../classgraphar_1_1builder_1_1_vertices_builder.html#a71995d500d250dcde4a720fc7784b4c4',1,'graphar::builder::VerticesBuilder::SetWriterOptions()']]],
+  ['size_450',['size',['../classgraphar_1_1_vertices_collection.html#aa748d07fd3a49b8383d99bf34f2eb559',1,'graphar::VerticesCollection::size()'],['../classgraphar_1_1_edges_collection.html#a7daf9ec4ef2b713e4e90b9abd5bacfa3',1,'graphar::EdgesCollection::size()']]],
+  ['sortandwriteadjlisttable_451',['SortAndWriteAdjListTable',['../classgraphar_1_1_edge_chunk_writer.html#a69144b6a4bd4087b7401787d641ca772',1,'graphar::EdgeChunkWriter']]],
+  ['sortandwritepropertytable_452',['SortAndWritePropertyTable',['../classgraphar_1_1_edge_chunk_writer.html#ab859c5eb1f10b88c5d0af6ab71e0ec79',1,'graphar::EdgeChunkWriter::SortAndWritePropertyTable(const std::shared_ptr&lt; arrow::Table &gt; &amp;input_table, const std::shared_ptr&lt; PropertyGroup &gt; &amp;property_group, IdType vertex_chunk_index, IdType start_chunk_index=0, ValidateLevel validate_level=ValidateLevel::default_validate) const'],['../classgraphar_1_1_edge_chunk_writer. [...]
+  ['sortandwritetable_453',['SortAndWriteTable',['../classgraphar_1_1_edge_chunk_writer.html#aadbd1ad5299ab867d099ffc85528268a',1,'graphar::EdgeChunkWriter']]],
+  ['source_454',['source',['../classgraphar_1_1_edge.html#a145a461cfb96e4c468bc7840324ef109',1,'graphar::Edge::source()'],['../classgraphar_1_1_edge_iter.html#a04ab347b43542948dafd64f52185619a',1,'graphar::EdgeIter::source()']]],
+  ['status_455',['Status',['../classgraphar_1_1_status.html#a0a860f829759c387e55e5d72e2253e36',1,'graphar::Status::Status() noexcept'],['../classgraphar_1_1_status.html#a003d78f26f5cbad3615e2ee5944b76bb',1,'graphar::Status::Status(StatusCode code, const std::string &amp;msg)'],['../classgraphar_1_1_status.html#ad2e06c777504a46a8d4dd959aa46f106',1,'graphar::Status::Status(const Status &amp;s)'],['../classgraphar_1_1_status.html#adb3d43ca307b4d68ba517de8025b6856',1,'graphar::Status::Status [...]
 ];
diff --git a/docs/cpp/search/functions_11.js b/docs/cpp/search/functions_11.js
index 6ccfcdd..31015ce 100644
--- a/docs/cpp/search/functions_11.js
+++ b/docs/cpp/search/functions_11.js
@@ -1,6 +1,6 @@
 var searchData=
 [
-  ['to_5fbegin_448',['to_begin',['../classgraphar_1_1_edge_iter.html#a3be552f2d7b060d5f87c2191e35253b8',1,'graphar::EdgeIter']]],
-  ['tostring_449',['ToString',['../classgraphar_1_1_info_version.html#a4e0d219b21a24894964b01bc8ddda3c3',1,'graphar::InfoVersion']]],
-  ['typeerror_450',['TypeError',['../classgraphar_1_1_status.html#a3335cf4bf5cd222d5e29b01fe95e919a',1,'graphar::Status']]]
+  ['to_5fbegin_456',['to_begin',['../classgraphar_1_1_edge_iter.html#a3be552f2d7b060d5f87c2191e35253b8',1,'graphar::EdgeIter']]],
+  ['tostring_457',['ToString',['../classgraphar_1_1_info_version.html#a4e0d219b21a24894964b01bc8ddda3c3',1,'graphar::InfoVersion']]],
+  ['typeerror_458',['TypeError',['../classgraphar_1_1_status.html#a3335cf4bf5cd222d5e29b01fe95e919a',1,'graphar::Status']]]
 ];
diff --git a/docs/cpp/search/functions_12.js b/docs/cpp/search/functions_12.js
index 2cc6511..d52eb96 100644
--- a/docs/cpp/search/functions_12.js
+++ b/docs/cpp/search/functions_12.js
@@ -1,7 +1,7 @@
 var searchData=
 [
-  ['ubdedgescollection_451',['UBDEdgesCollection',['../classgraphar_1_1_u_b_d_edges_collection.html#aef2d69ca4ae1b6cba62e42417ed80364',1,'graphar::UBDEdgesCollection']]],
-  ['ubsedgescollection_452',['UBSEdgesCollection',['../classgraphar_1_1_u_b_s_edges_collection.html#a78ba5d25060dda524a7c51e591527a1c',1,'graphar::UBSEdgesCollection']]],
-  ['unknownerror_453',['UnknownError',['../classgraphar_1_1_status.html#a4a45918d3b4f77af5a794fd8f2245ab2',1,'graphar::Status']]],
-  ['user_5fdefine_5ftypes_454',['user_define_types',['../classgraphar_1_1_info_version.html#abb46ad5fe0cdb63ca5170ec9671c4e0b',1,'graphar::InfoVersion']]]
+  ['ubdedgescollection_459',['UBDEdgesCollection',['../classgraphar_1_1_u_b_d_edges_collection.html#aef2d69ca4ae1b6cba62e42417ed80364',1,'graphar::UBDEdgesCollection']]],
+  ['ubsedgescollection_460',['UBSEdgesCollection',['../classgraphar_1_1_u_b_s_edges_collection.html#a78ba5d25060dda524a7c51e591527a1c',1,'graphar::UBSEdgesCollection']]],
+  ['unknownerror_461',['UnknownError',['../classgraphar_1_1_status.html#a4a45918d3b4f77af5a794fd8f2245ab2',1,'graphar::Status']]],
+  ['user_5fdefine_5ftypes_462',['user_define_types',['../classgraphar_1_1_info_version.html#abb46ad5fe0cdb63ca5170ec9671c4e0b',1,'graphar::InfoVersion']]]
 ];
diff --git a/docs/cpp/search/functions_13.js b/docs/cpp/search/functions_13.js
index 8713747..6babbdd 100644
--- a/docs/cpp/search/functions_13.js
+++ b/docs/cpp/search/functions_13.js
@@ -1,16 +1,16 @@
 var searchData=
 [
-  ['version_455',['version',['../classgraphar_1_1_edge_info.html#a9440bef05f4fa689662f26a9ef0117c1',1,'graphar::EdgeInfo::version()'],['../classgraphar_1_1_graph_info.html#aeb68a7550c63365d8093136601a3aeee',1,'graphar::GraphInfo::version()'],['../classgraphar_1_1_info_version.html#adf3934d5a05e1f86a5096e0ff9a09b78',1,'graphar::InfoVersion::version()'],['../classgraphar_1_1_vertex_info.html#a47c84aab28674b5250a26c97806f2f48',1,'graphar::VertexInfo::version()']]],
-  ['vertex_456',['Vertex',['../classgraphar_1_1_vertex.html#aff8224ea52a0a08c3e07d07d1184ccaf',1,'graphar::Vertex::Vertex()'],['../classgraphar_1_1builder_1_1_vertex.html#ad4b0c92a74322ce0be53523fd254382f',1,'graphar::builder::Vertex::Vertex()']]],
-  ['vertexchunkinfowriter_457',['VertexChunkInfoWriter',['../classgraphar_1_1_vertex_chunk_info_writer.html#af7f075dd7412ad38175eb1e09de9158d',1,'graphar::VertexChunkInfoWriter']]],
-  ['vertexinfo_458',['VertexInfo',['../classgraphar_1_1_vertex_info.html#acddb12cfcf7c6bfe1f1937f984828312',1,'graphar::VertexInfo']]],
-  ['vertexinfonum_459',['VertexInfoNum',['../classgraphar_1_1_graph_info.html#aa384328a58c9138b5b77ea6172199d07',1,'graphar::GraphInfo']]],
-  ['vertexiter_460',['VertexIter',['../classgraphar_1_1_vertex_iter.html#a1c6d6fa3d58931f929f7e2cd75b67da5',1,'graphar::VertexIter::VertexIter(const std::shared_ptr&lt; VertexInfo &gt; &amp;vertex_info, const std::string &amp;prefix, IdType offset, const std::vector&lt; std::string &gt; &amp;labels, const bool &amp;is_filtered=false, const std::vector&lt; IdType &gt; &amp;filtered_ids={}) noexcept'],['../classgraphar_1_1_vertex_iter.html#a995e8515fdc79f97d987b5203f235348',1,'graphar::Ver [...]
-  ['vertexpropertyarrowchunkreader_461',['VertexPropertyArrowChunkReader',['../classgraphar_1_1_vertex_property_arrow_chunk_reader.html#a44be6db94a28763a095ebc0e578a9916',1,'graphar::VertexPropertyArrowChunkReader::VertexPropertyArrowChunkReader(const std::shared_ptr&lt; VertexInfo &gt; &amp;vertex_info, const std::shared_ptr&lt; PropertyGroup &gt; &amp;property_group, const std::string &amp;prefix, const util::FilterOptions &amp;options={})'],['../classgraphar_1_1_vertex_property_arrow_ [...]
-  ['vertexpropertychunkinforeader_462',['VertexPropertyChunkInfoReader',['../classgraphar_1_1_vertex_property_chunk_info_reader.html#a3ebfb96e4e9b0042d0cb0aa65fbc95a8',1,'graphar::VertexPropertyChunkInfoReader']]],
-  ['vertexpropertywriter_463',['VertexPropertyWriter',['../classgraphar_1_1_vertex_property_writer.html#a47e13b7e46a9c1dacc069ca4f789b74f',1,'graphar::VertexPropertyWriter']]],
-  ['verticesbuilder_464',['VerticesBuilder',['../classgraphar_1_1builder_1_1_vertices_builder.html#acc85e675bdcdf0e0633a7871bf79bb57',1,'graphar::builder::VerticesBuilder']]],
-  ['verticescollection_465',['VerticesCollection',['../classgraphar_1_1_vertices_collection.html#ad69c997aae186d10725bf5c907d1d123',1,'graphar::VerticesCollection']]],
-  ['verticeswithlabel_466',['verticesWithLabel',['../classgraphar_1_1_vertices_collection.html#a8b65a9581d99b60d66dd6cda82f936f8',1,'graphar::VerticesCollection::verticesWithLabel(const std::string &amp;filter_label, const std::shared_ptr&lt; GraphInfo &gt; &amp;graph_info, const std::string &amp;type)'],['../classgraphar_1_1_vertices_collection.html#a9c1097cbc912a9576125e66c3686c19b',1,'graphar::VerticesCollection::verticesWithLabel(const std::string &amp;filter_label, const std::shared [...]
-  ['verticeswithmultiplelabels_467',['verticesWithMultipleLabels',['../classgraphar_1_1_vertices_collection.html#a82c4485dcd473fed76b8b8fe2d863965',1,'graphar::VerticesCollection::verticesWithMultipleLabels(const std::vector&lt; std::string &gt; &amp;filter_labels, const std::shared_ptr&lt; GraphInfo &gt; &amp;graph_info, const std::string &amp;type)'],['../classgraphar_1_1_vertices_collection.html#a804247ead280d1a8a1c528f49ded9e68',1,'graphar::VerticesCollection::verticesWithMultipleLab [...]
+  ['version_463',['version',['../classgraphar_1_1_edge_info.html#a9440bef05f4fa689662f26a9ef0117c1',1,'graphar::EdgeInfo::version()'],['../classgraphar_1_1_graph_info.html#aeb68a7550c63365d8093136601a3aeee',1,'graphar::GraphInfo::version()'],['../classgraphar_1_1_info_version.html#adf3934d5a05e1f86a5096e0ff9a09b78',1,'graphar::InfoVersion::version()'],['../classgraphar_1_1_vertex_info.html#a47c84aab28674b5250a26c97806f2f48',1,'graphar::VertexInfo::version()']]],
+  ['vertex_464',['Vertex',['../classgraphar_1_1_vertex.html#aff8224ea52a0a08c3e07d07d1184ccaf',1,'graphar::Vertex::Vertex()'],['../classgraphar_1_1builder_1_1_vertex.html#ad4b0c92a74322ce0be53523fd254382f',1,'graphar::builder::Vertex::Vertex()']]],
+  ['vertexchunkinfowriter_465',['VertexChunkInfoWriter',['../classgraphar_1_1_vertex_chunk_info_writer.html#af7f075dd7412ad38175eb1e09de9158d',1,'graphar::VertexChunkInfoWriter']]],
+  ['vertexinfo_466',['VertexInfo',['../classgraphar_1_1_vertex_info.html#acddb12cfcf7c6bfe1f1937f984828312',1,'graphar::VertexInfo']]],
+  ['vertexinfonum_467',['VertexInfoNum',['../classgraphar_1_1_graph_info.html#aa384328a58c9138b5b77ea6172199d07',1,'graphar::GraphInfo']]],
+  ['vertexiter_468',['VertexIter',['../classgraphar_1_1_vertex_iter.html#a1c6d6fa3d58931f929f7e2cd75b67da5',1,'graphar::VertexIter::VertexIter(const std::shared_ptr&lt; VertexInfo &gt; &amp;vertex_info, const std::string &amp;prefix, IdType offset, const std::vector&lt; std::string &gt; &amp;labels, const bool &amp;is_filtered=false, const std::vector&lt; IdType &gt; &amp;filtered_ids={}) noexcept'],['../classgraphar_1_1_vertex_iter.html#a995e8515fdc79f97d987b5203f235348',1,'graphar::Ver [...]
+  ['vertexpropertyarrowchunkreader_469',['VertexPropertyArrowChunkReader',['../classgraphar_1_1_vertex_property_arrow_chunk_reader.html#a44be6db94a28763a095ebc0e578a9916',1,'graphar::VertexPropertyArrowChunkReader::VertexPropertyArrowChunkReader(const std::shared_ptr&lt; VertexInfo &gt; &amp;vertex_info, const std::shared_ptr&lt; PropertyGroup &gt; &amp;property_group, const std::string &amp;prefix, const util::FilterOptions &amp;options={})'],['../classgraphar_1_1_vertex_property_arrow_ [...]
+  ['vertexpropertychunkinforeader_470',['VertexPropertyChunkInfoReader',['../classgraphar_1_1_vertex_property_chunk_info_reader.html#a3ebfb96e4e9b0042d0cb0aa65fbc95a8',1,'graphar::VertexPropertyChunkInfoReader']]],
+  ['vertexpropertywriter_471',['VertexPropertyWriter',['../classgraphar_1_1_vertex_property_writer.html#a47e13b7e46a9c1dacc069ca4f789b74f',1,'graphar::VertexPropertyWriter']]],
+  ['verticesbuilder_472',['VerticesBuilder',['../classgraphar_1_1builder_1_1_vertices_builder.html#acc85e675bdcdf0e0633a7871bf79bb57',1,'graphar::builder::VerticesBuilder']]],
+  ['verticescollection_473',['VerticesCollection',['../classgraphar_1_1_vertices_collection.html#ad69c997aae186d10725bf5c907d1d123',1,'graphar::VerticesCollection']]],
+  ['verticeswithlabel_474',['verticesWithLabel',['../classgraphar_1_1_vertices_collection.html#a8b65a9581d99b60d66dd6cda82f936f8',1,'graphar::VerticesCollection::verticesWithLabel(const std::string &amp;filter_label, const std::shared_ptr&lt; GraphInfo &gt; &amp;graph_info, const std::string &amp;type)'],['../classgraphar_1_1_vertices_collection.html#a9c1097cbc912a9576125e66c3686c19b',1,'graphar::VerticesCollection::verticesWithLabel(const std::string &amp;filter_label, const std::shared [...]
+  ['verticeswithmultiplelabels_475',['verticesWithMultipleLabels',['../classgraphar_1_1_vertices_collection.html#a82c4485dcd473fed76b8b8fe2d863965',1,'graphar::VerticesCollection::verticesWithMultipleLabels(const std::vector&lt; std::string &gt; &amp;filter_labels, const std::shared_ptr&lt; GraphInfo &gt; &amp;graph_info, const std::string &amp;type)'],['../classgraphar_1_1_vertices_collection.html#a804247ead280d1a8a1c528f49ded9e68',1,'graphar::VerticesCollection::verticesWithMultipleLab [...]
 ];
diff --git a/docs/cpp/search/functions_14.js b/docs/cpp/search/functions_14.js
index 6cd9e3e..412385c 100644
--- a/docs/cpp/search/functions_14.js
+++ b/docs/cpp/search/functions_14.js
@@ -1,17 +1,17 @@
 var searchData=
 [
-  ['writeadjlistchunk_468',['WriteAdjListChunk',['../classgraphar_1_1_edge_chunk_writer.html#abbf227f722fcfaf5a330229d92dcc7d0',1,'graphar::EdgeChunkWriter']]],
-  ['writeadjlisttable_469',['WriteAdjListTable',['../classgraphar_1_1_edge_chunk_writer.html#a7197f8501c2205dd6a5456d4bf1769fd',1,'graphar::EdgeChunkWriter']]],
-  ['writechunk_470',['WriteChunk',['../classgraphar_1_1_vertex_property_writer.html#a5bad3bb184de34c951b1dea21cb1dcd5',1,'graphar::VertexPropertyWriter::WriteChunk(const std::shared_ptr&lt; arrow::Table &gt; &amp;input_table, const std::shared_ptr&lt; PropertyGroup &gt; &amp;property_group, IdType chunk_index, ValidateLevel validate_level=ValidateLevel::default_validate) const'],['../classgraphar_1_1_vertex_property_writer.html#a51de0fd2b7444c6a25ae36389b74bfd3',1,'graphar::VertexPropert [...]
-  ['writeedgesnum_471',['WriteEdgesNum',['../classgraphar_1_1_edge_chunk_writer.html#abfa01f956f732e660eead056ce12f7c1',1,'graphar::EdgeChunkWriter']]],
-  ['writelabelchunk_472',['WriteLabelChunk',['../classgraphar_1_1_vertex_property_writer.html#acc8026d1d2eaaf86f9c2d8d49c207f99',1,'graphar::VertexPropertyWriter']]],
-  ['writelabeltable_473',['WriteLabelTable',['../classgraphar_1_1_vertex_property_writer.html#a001d330977bb6830bc78c42219f8c8a0',1,'graphar::VertexPropertyWriter']]],
-  ['writelabeltabletofile_474',['WriteLabelTableToFile',['../classgraphar_1_1_file_system.html#ad48927d2fd542cc737cb16b7e529c0b6',1,'graphar::FileSystem']]],
-  ['writeoffsetchunk_475',['WriteOffsetChunk',['../classgraphar_1_1_edge_chunk_writer.html#a9a9041e72a3d46e9fb8a2f1d2463489c',1,'graphar::EdgeChunkWriter']]],
-  ['writepropertychunk_476',['WritePropertyChunk',['../classgraphar_1_1_edge_chunk_writer.html#a2552448a395acd1e3cc10e9db45ce877',1,'graphar::EdgeChunkWriter::WritePropertyChunk(const std::shared_ptr&lt; arrow::Table &gt; &amp;input_table, const std::shared_ptr&lt; PropertyGroup &gt; &amp;property_group, IdType vertex_chunk_index, IdType chunk_index, ValidateLevel validate_level=ValidateLevel::default_validate) const'],['../classgraphar_1_1_edge_chunk_writer.html#a48f3a7356d603416caf3aef [...]
-  ['writepropertytable_477',['WritePropertyTable',['../classgraphar_1_1_edge_chunk_writer.html#a74d5ff66b247fb94b87db25442f98ee2',1,'graphar::EdgeChunkWriter::WritePropertyTable(const std::shared_ptr&lt; arrow::Table &gt; &amp;input_table, const std::shared_ptr&lt; PropertyGroup &gt; &amp;property_group, IdType vertex_chunk_index, IdType start_chunk_index=0, ValidateLevel validate_level=ValidateLevel::default_validate) const'],['../classgraphar_1_1_edge_chunk_writer.html#ac4d3a559f6508f1 [...]
-  ['writetable_478',['WriteTable',['../classgraphar_1_1_vertex_property_writer.html#adea3f0326fad64bc061bc5b01790ab47',1,'graphar::VertexPropertyWriter::WriteTable(const std::shared_ptr&lt; arrow::Table &gt; &amp;input_table, const std::shared_ptr&lt; PropertyGroup &gt; &amp;property_group, IdType start_chunk_index, ValidateLevel validate_level=ValidateLevel::default_validate) const'],['../classgraphar_1_1_vertex_property_writer.html#aaa3107eb66941ceeb782280e3038ee4f',1,'graphar::VertexP [...]
-  ['writetabletofile_479',['WriteTableToFile',['../classgraphar_1_1_file_system.html#af5c15ca6b858f7df89eea3e77319decf',1,'graphar::FileSystem']]],
-  ['writevaluetofile_480',['WriteValueToFile',['../classgraphar_1_1_file_system.html#a474b6e6ba28a0114a1d84f4eb06a211b',1,'graphar::FileSystem']]],
-  ['writeverticesnum_481',['WriteVerticesNum',['../classgraphar_1_1_vertex_property_writer.html#addf40fb82fe987af091278e01995b87a',1,'graphar::VertexPropertyWriter::WriteVerticesNum()'],['../classgraphar_1_1_edge_chunk_writer.html#af3796d4dd08e7d876281f53d039dad5f',1,'graphar::EdgeChunkWriter::WriteVerticesNum()']]]
+  ['writeadjlistchunk_476',['WriteAdjListChunk',['../classgraphar_1_1_edge_chunk_writer.html#abbf227f722fcfaf5a330229d92dcc7d0',1,'graphar::EdgeChunkWriter']]],
+  ['writeadjlisttable_477',['WriteAdjListTable',['../classgraphar_1_1_edge_chunk_writer.html#a7197f8501c2205dd6a5456d4bf1769fd',1,'graphar::EdgeChunkWriter']]],
+  ['writechunk_478',['WriteChunk',['../classgraphar_1_1_vertex_property_writer.html#a5bad3bb184de34c951b1dea21cb1dcd5',1,'graphar::VertexPropertyWriter::WriteChunk(const std::shared_ptr&lt; arrow::Table &gt; &amp;input_table, const std::shared_ptr&lt; PropertyGroup &gt; &amp;property_group, IdType chunk_index, ValidateLevel validate_level=ValidateLevel::default_validate) const'],['../classgraphar_1_1_vertex_property_writer.html#a51de0fd2b7444c6a25ae36389b74bfd3',1,'graphar::VertexPropert [...]
+  ['writeedgesnum_479',['WriteEdgesNum',['../classgraphar_1_1_edge_chunk_writer.html#abfa01f956f732e660eead056ce12f7c1',1,'graphar::EdgeChunkWriter']]],
+  ['writelabelchunk_480',['WriteLabelChunk',['../classgraphar_1_1_vertex_property_writer.html#acc8026d1d2eaaf86f9c2d8d49c207f99',1,'graphar::VertexPropertyWriter']]],
+  ['writelabeltable_481',['WriteLabelTable',['../classgraphar_1_1_vertex_property_writer.html#a001d330977bb6830bc78c42219f8c8a0',1,'graphar::VertexPropertyWriter']]],
+  ['writelabeltabletofile_482',['WriteLabelTableToFile',['../classgraphar_1_1_file_system.html#ad48927d2fd542cc737cb16b7e529c0b6',1,'graphar::FileSystem']]],
+  ['writeoffsetchunk_483',['WriteOffsetChunk',['../classgraphar_1_1_edge_chunk_writer.html#a9a9041e72a3d46e9fb8a2f1d2463489c',1,'graphar::EdgeChunkWriter']]],
+  ['writepropertychunk_484',['WritePropertyChunk',['../classgraphar_1_1_edge_chunk_writer.html#a2552448a395acd1e3cc10e9db45ce877',1,'graphar::EdgeChunkWriter::WritePropertyChunk(const std::shared_ptr&lt; arrow::Table &gt; &amp;input_table, const std::shared_ptr&lt; PropertyGroup &gt; &amp;property_group, IdType vertex_chunk_index, IdType chunk_index, ValidateLevel validate_level=ValidateLevel::default_validate) const'],['../classgraphar_1_1_edge_chunk_writer.html#a48f3a7356d603416caf3aef [...]
+  ['writepropertytable_485',['WritePropertyTable',['../classgraphar_1_1_edge_chunk_writer.html#a74d5ff66b247fb94b87db25442f98ee2',1,'graphar::EdgeChunkWriter::WritePropertyTable(const std::shared_ptr&lt; arrow::Table &gt; &amp;input_table, const std::shared_ptr&lt; PropertyGroup &gt; &amp;property_group, IdType vertex_chunk_index, IdType start_chunk_index=0, ValidateLevel validate_level=ValidateLevel::default_validate) const'],['../classgraphar_1_1_edge_chunk_writer.html#ac4d3a559f6508f1 [...]
+  ['writetable_486',['WriteTable',['../classgraphar_1_1_vertex_property_writer.html#adea3f0326fad64bc061bc5b01790ab47',1,'graphar::VertexPropertyWriter::WriteTable(const std::shared_ptr&lt; arrow::Table &gt; &amp;input_table, const std::shared_ptr&lt; PropertyGroup &gt; &amp;property_group, IdType start_chunk_index, ValidateLevel validate_level=ValidateLevel::default_validate) const'],['../classgraphar_1_1_vertex_property_writer.html#aaa3107eb66941ceeb782280e3038ee4f',1,'graphar::VertexP [...]
+  ['writetabletofile_487',['WriteTableToFile',['../classgraphar_1_1_file_system.html#af5c15ca6b858f7df89eea3e77319decf',1,'graphar::FileSystem']]],
+  ['writevaluetofile_488',['WriteValueToFile',['../classgraphar_1_1_file_system.html#a474b6e6ba28a0114a1d84f4eb06a211b',1,'graphar::FileSystem']]],
+  ['writeverticesnum_489',['WriteVerticesNum',['../classgraphar_1_1_vertex_property_writer.html#addf40fb82fe987af091278e01995b87a',1,'graphar::VertexPropertyWriter::WriteVerticesNum()'],['../classgraphar_1_1_edge_chunk_writer.html#af3796d4dd08e7d876281f53d039dad5f',1,'graphar::EdgeChunkWriter::WriteVerticesNum()']]]
 ];
diff --git a/docs/cpp/search/functions_15.js b/docs/cpp/search/functions_15.js
index 19e5455..3fc5697 100644
--- a/docs/cpp/search/functions_15.js
+++ b/docs/cpp/search/functions_15.js
@@ -1,4 +1,4 @@
 var searchData=
 [
-  ['yamlerror_482',['YamlError',['../classgraphar_1_1_status.html#a358b23c7f34efbf14c84cbc2ddbdd6a4',1,'graphar::Status']]]
+  ['yamlerror_490',['YamlError',['../classgraphar_1_1_status.html#a358b23c7f34efbf14c84cbc2ddbdd6a4',1,'graphar::Status']]]
 ];
diff --git a/docs/cpp/search/functions_16.js b/docs/cpp/search/functions_16.js
index 85cea3e..5200bd6 100644
--- a/docs/cpp/search/functions_16.js
+++ b/docs/cpp/search/functions_16.js
@@ -1,4 +1,4 @@
 var searchData=
 [
-  ['_7estatus_483',['~Status',['../classgraphar_1_1_status.html#a1a1973d36a87952ccbbb2c09426d3076',1,'graphar::Status']]]
+  ['_7estatus_491',['~Status',['../classgraphar_1_1_status.html#a1a1973d36a87952ccbbb2c09426d3076',1,'graphar::Status']]]
 ];
diff --git a/docs/cpp/search/functions_2.js b/docs/cpp/search/functions_2.js
index 4d292a5..61fdfc8 100644
--- a/docs/cpp/search/functions_2.js
+++ b/docs/cpp/search/functions_2.js
@@ -1,9 +1,9 @@
 var searchData=
 [
-  ['checktype_307',['CheckType',['../classgraphar_1_1_info_version.html#add949cb2cad530874643835ee69e9d42',1,'graphar::InfoVersion']]],
-  ['clear_308',['Clear',['../classgraphar_1_1builder_1_1_edges_builder.html#a852a2713a810d5cc8e60f761bdeb7ea5',1,'graphar::builder::EdgesBuilder::Clear()'],['../classgraphar_1_1builder_1_1_vertices_builder.html#a2f1f8f6a1a913448f1cfad5c77a752ef',1,'graphar::builder::VerticesBuilder::Clear()']]],
-  ['code_309',['code',['../classgraphar_1_1_status.html#ad8afab2740385545877fc6bba2c34636',1,'graphar::Status']]],
-  ['containproperty_310',['ContainProperty',['../classgraphar_1_1builder_1_1_edge.html#aba23b764fc6ff8cabbff996e64c8e496',1,'graphar::builder::Edge::ContainProperty()'],['../classgraphar_1_1builder_1_1_vertex.html#aa5a0b6642af081eea1faebe3f87d4170',1,'graphar::builder::Vertex::ContainProperty()']]],
-  ['copyfile_311',['CopyFile',['../classgraphar_1_1_file_system.html#aab2ff41d0c13cf27b24ec1612817b110',1,'graphar::FileSystem']]],
-  ['cur_5foffset_312',['cur_offset',['../classgraphar_1_1_edge_iter.html#a1900a7c61e46ac7e40e72978db7952c7',1,'graphar::EdgeIter']]]
+  ['checktype_311',['CheckType',['../classgraphar_1_1_info_version.html#add949cb2cad530874643835ee69e9d42',1,'graphar::InfoVersion']]],
+  ['clear_312',['Clear',['../classgraphar_1_1builder_1_1_edges_builder.html#a852a2713a810d5cc8e60f761bdeb7ea5',1,'graphar::builder::EdgesBuilder::Clear()'],['../classgraphar_1_1builder_1_1_vertices_builder.html#a2f1f8f6a1a913448f1cfad5c77a752ef',1,'graphar::builder::VerticesBuilder::Clear()']]],
+  ['code_313',['code',['../classgraphar_1_1_status.html#ad8afab2740385545877fc6bba2c34636',1,'graphar::Status']]],
+  ['containproperty_314',['ContainProperty',['../classgraphar_1_1builder_1_1_edge.html#aba23b764fc6ff8cabbff996e64c8e496',1,'graphar::builder::Edge::ContainProperty()'],['../classgraphar_1_1builder_1_1_vertex.html#aa5a0b6642af081eea1faebe3f87d4170',1,'graphar::builder::Vertex::ContainProperty()']]],
+  ['copyfile_315',['CopyFile',['../classgraphar_1_1_file_system.html#aab2ff41d0c13cf27b24ec1612817b110',1,'graphar::FileSystem']]],
+  ['cur_5foffset_316',['cur_offset',['../classgraphar_1_1_edge_iter.html#a1900a7c61e46ac7e40e72978db7952c7',1,'graphar::EdgeIter']]]
 ];
diff --git a/docs/cpp/search/functions_3.js b/docs/cpp/search/functions_3.js
index 9c9d2c5..1c7978e 100644
--- a/docs/cpp/search/functions_3.js
+++ b/docs/cpp/search/functions_3.js
@@ -1,5 +1,5 @@
 var searchData=
 [
-  ['destination_313',['destination',['../classgraphar_1_1_edge.html#a5350088ffa4fab0a11fbece2a6d5c413',1,'graphar::Edge::destination()'],['../classgraphar_1_1_edge_iter.html#a339ea07e57587ad25dfb3e25b39d6126',1,'graphar::EdgeIter::destination()']]],
-  ['dump_314',['Dump',['../classgraphar_1_1_vertex_info.html#adc0a253c371a004324ffae6e8abbdbc7',1,'graphar::VertexInfo::Dump()'],['../classgraphar_1_1_edge_info.html#a80004230ddfbc892995732ea59993a27',1,'graphar::EdgeInfo::Dump()'],['../classgraphar_1_1_graph_info.html#a71646413e64620af1ca83f404e7150ea',1,'graphar::GraphInfo::Dump()'],['../classgraphar_1_1builder_1_1_edges_builder.html#aa318de80b2b259e9fa4aef65f2ce5593',1,'graphar::builder::EdgesBuilder::Dump()'],['../classgraphar_1_1bui [...]
+  ['destination_317',['destination',['../classgraphar_1_1_edge.html#a5350088ffa4fab0a11fbece2a6d5c413',1,'graphar::Edge::destination()'],['../classgraphar_1_1_edge_iter.html#a339ea07e57587ad25dfb3e25b39d6126',1,'graphar::EdgeIter::destination()']]],
+  ['dump_318',['Dump',['../classgraphar_1_1_vertex_info.html#adc0a253c371a004324ffae6e8abbdbc7',1,'graphar::VertexInfo::Dump()'],['../classgraphar_1_1_edge_info.html#a80004230ddfbc892995732ea59993a27',1,'graphar::EdgeInfo::Dump()'],['../classgraphar_1_1_graph_info.html#a71646413e64620af1ca83f404e7150ea',1,'graphar::GraphInfo::Dump()'],['../classgraphar_1_1builder_1_1_edges_builder.html#aa318de80b2b259e9fa4aef65f2ce5593',1,'graphar::builder::EdgesBuilder::Dump()'],['../classgraphar_1_1bui [...]
 ];
diff --git a/docs/cpp/search/functions_4.js b/docs/cpp/search/functions_4.js
index 3e31c3b..951a9f5 100644
--- a/docs/cpp/search/functions_4.js
+++ b/docs/cpp/search/functions_4.js
@@ -1,13 +1,13 @@
 var searchData=
 [
-  ['edge_315',['Edge',['../classgraphar_1_1_edge.html#a338400a57cda9d0ef9af7ae5e462178d',1,'graphar::Edge::Edge()'],['../classgraphar_1_1builder_1_1_edge.html#aaf96cc9e6a139641ecc40cb0a13194cb',1,'graphar::builder::Edge::Edge()']]],
-  ['edgechunkwriter_316',['EdgeChunkWriter',['../classgraphar_1_1_edge_chunk_writer.html#ad0d49b05093477ee5bd4c59a1a181ad4',1,'graphar::EdgeChunkWriter']]],
-  ['edgeinfo_317',['EdgeInfo',['../classgraphar_1_1_edge_info.html#ab3c32f3112dcf08304676eeb95545b55',1,'graphar::EdgeInfo']]],
-  ['edgeinfonum_318',['EdgeInfoNum',['../classgraphar_1_1_graph_info.html#a814f2cdeecf58a308ab886a085991fc4',1,'graphar::GraphInfo']]],
-  ['edgeiter_319',['EdgeIter',['../classgraphar_1_1_edge_iter.html#af4d94894ba5e756d0e851ebfb82965b9',1,'graphar::EdgeIter::EdgeIter(const std::shared_ptr&lt; EdgeInfo &gt; &amp;edge_info, const std::string &amp;prefix, AdjListType adj_list_type, IdType global_chunk_index, IdType offset, IdType chunk_begin, IdType chunk_end, std::shared_ptr&lt; util::IndexConverter &gt; index_converter)'],['../classgraphar_1_1_edge_iter.html#a3d062b462494d4f0e72425c496f40b8d',1,'graphar::EdgeIter::EdgeIt [...]
-  ['edgesbuilder_320',['EdgesBuilder',['../classgraphar_1_1builder_1_1_edges_builder.html#a2a482d71cc3fc296b9f4ab611332f95d',1,'graphar::builder::EdgesBuilder']]],
-  ['edgescollection_321',['EdgesCollection',['../classgraphar_1_1_edges_collection.html#a9995a991899a99bf2bc5b3219a778794',1,'graphar::EdgesCollection']]],
-  ['empty_322',['Empty',['../classgraphar_1_1builder_1_1_edge.html#a72fb5b2f66654a1c3c43f94b56c64564',1,'graphar::builder::Edge::Empty()'],['../classgraphar_1_1builder_1_1_vertex.html#aa548fa2b39a652afd6a85ac6b51b9547',1,'graphar::builder::Vertex::Empty()']]],
-  ['end_323',['end',['../classgraphar_1_1_edges_collection.html#afe4ceb0705e8fafdd9345788e31df189',1,'graphar::EdgesCollection::end()'],['../classgraphar_1_1_vertices_collection.html#ac6141a1d376ee5cce969e40cc3a0f7eb',1,'graphar::VerticesCollection::end()']]],
-  ['evaluate_324',['Evaluate',['../classgraphar_1_1_expression.html#a75cbb2e1aeb88c26f2667e12dfa51a1e',1,'graphar::Expression::Evaluate()'],['../classgraphar_1_1_expression_property.html#aa8761cac71e3480b059a4d96bf33a1e2',1,'graphar::ExpressionProperty::Evaluate()'],['../classgraphar_1_1_expression_literal.html#a9700bda36668a88c5d8558a9da34527a',1,'graphar::ExpressionLiteral::Evaluate()'],['../classgraphar_1_1_expression_not.html#a4d1a8885f923651132af0fcd7fbae7bb',1,'graphar::ExpressionN [...]
+  ['edge_319',['Edge',['../classgraphar_1_1_edge.html#a338400a57cda9d0ef9af7ae5e462178d',1,'graphar::Edge::Edge()'],['../classgraphar_1_1builder_1_1_edge.html#aaf96cc9e6a139641ecc40cb0a13194cb',1,'graphar::builder::Edge::Edge()']]],
+  ['edgechunkwriter_320',['EdgeChunkWriter',['../classgraphar_1_1_edge_chunk_writer.html#ad0d49b05093477ee5bd4c59a1a181ad4',1,'graphar::EdgeChunkWriter']]],
+  ['edgeinfo_321',['EdgeInfo',['../classgraphar_1_1_edge_info.html#ab3c32f3112dcf08304676eeb95545b55',1,'graphar::EdgeInfo']]],
+  ['edgeinfonum_322',['EdgeInfoNum',['../classgraphar_1_1_graph_info.html#a814f2cdeecf58a308ab886a085991fc4',1,'graphar::GraphInfo']]],
+  ['edgeiter_323',['EdgeIter',['../classgraphar_1_1_edge_iter.html#af4d94894ba5e756d0e851ebfb82965b9',1,'graphar::EdgeIter::EdgeIter(const std::shared_ptr&lt; EdgeInfo &gt; &amp;edge_info, const std::string &amp;prefix, AdjListType adj_list_type, IdType global_chunk_index, IdType offset, IdType chunk_begin, IdType chunk_end, std::shared_ptr&lt; util::IndexConverter &gt; index_converter)'],['../classgraphar_1_1_edge_iter.html#a3d062b462494d4f0e72425c496f40b8d',1,'graphar::EdgeIter::EdgeIt [...]
+  ['edgesbuilder_324',['EdgesBuilder',['../classgraphar_1_1builder_1_1_edges_builder.html#a2a482d71cc3fc296b9f4ab611332f95d',1,'graphar::builder::EdgesBuilder']]],
+  ['edgescollection_325',['EdgesCollection',['../classgraphar_1_1_edges_collection.html#a9995a991899a99bf2bc5b3219a778794',1,'graphar::EdgesCollection']]],
+  ['empty_326',['Empty',['../classgraphar_1_1builder_1_1_edge.html#a72fb5b2f66654a1c3c43f94b56c64564',1,'graphar::builder::Edge::Empty()'],['../classgraphar_1_1builder_1_1_vertex.html#aa548fa2b39a652afd6a85ac6b51b9547',1,'graphar::builder::Vertex::Empty()']]],
+  ['end_327',['end',['../classgraphar_1_1_edges_collection.html#afe4ceb0705e8fafdd9345788e31df189',1,'graphar::EdgesCollection::end()'],['../classgraphar_1_1_vertices_collection.html#ac6141a1d376ee5cce969e40cc3a0f7eb',1,'graphar::VerticesCollection::end()']]],
+  ['evaluate_328',['Evaluate',['../classgraphar_1_1_expression.html#a75cbb2e1aeb88c26f2667e12dfa51a1e',1,'graphar::Expression::Evaluate()'],['../classgraphar_1_1_expression_property.html#aa8761cac71e3480b059a4d96bf33a1e2',1,'graphar::ExpressionProperty::Evaluate()'],['../classgraphar_1_1_expression_literal.html#a9700bda36668a88c5d8558a9da34527a',1,'graphar::ExpressionLiteral::Evaluate()'],['../classgraphar_1_1_expression_not.html#a4d1a8885f923651132af0fcd7fbae7bb',1,'graphar::ExpressionN [...]
 ];
diff --git a/docs/cpp/search/functions_5.js b/docs/cpp/search/functions_5.js
index 9122f6a..d23e7ee 100644
--- a/docs/cpp/search/functions_5.js
+++ b/docs/cpp/search/functions_5.js
@@ -1,11 +1,11 @@
 var searchData=
 [
-  ['filesystem_325',['FileSystem',['../classgraphar_1_1_file_system.html#a240e8f3d8a4aab98d35a0faf6de54f25',1,'graphar::FileSystem']]],
-  ['filter_326',['Filter',['../classgraphar_1_1_vertex_property_arrow_chunk_reader.html#a4674036a7b3f43b71db0bab44c09bfbf',1,'graphar::VertexPropertyArrowChunkReader::Filter()'],['../classgraphar_1_1_adj_list_property_arrow_chunk_reader.html#a4e9c7d1a4f11f0f34ede14685fcc887a',1,'graphar::AdjListPropertyArrowChunkReader::Filter()']]],
-  ['filter_327',['filter',['../classgraphar_1_1_vertices_collection.html#ad435d7dd3f45dfffe1b48988633d5092',1,'graphar::VerticesCollection']]],
-  ['find_328',['find',['../classgraphar_1_1_vertices_collection.html#a7714ba58402c33d0d90611a633e0d204',1,'graphar::VerticesCollection']]],
-  ['find_5fdst_329',['find_dst',['../classgraphar_1_1_u_b_s_edges_collection.html#a2141ccd9ff59172cc63ebfdef338af58',1,'graphar::UBSEdgesCollection::find_dst()'],['../classgraphar_1_1_u_b_d_edges_collection.html#a5558221a922d20ffa8a84dadd18017eb',1,'graphar::UBDEdgesCollection::find_dst()'],['../classgraphar_1_1_o_b_d_edges_collection.html#aa9aad5b7fead6aa38d7caa84fe1fb70d',1,'graphar::OBDEdgesCollection::find_dst()'],['../classgraphar_1_1_o_b_s_edge_collection.html#a6c8a5b39af91318e758e [...]
-  ['find_5fsrc_330',['find_src',['../classgraphar_1_1_edges_collection.html#a64ef5fbb7446e30b70cedf91232e7bc6',1,'graphar::EdgesCollection::find_src()'],['../classgraphar_1_1_o_b_s_edge_collection.html#a200d4e4c95a8fc72af65330c279532c4',1,'graphar::OBSEdgeCollection::find_src()'],['../classgraphar_1_1_o_b_d_edges_collection.html#a592407c1dacbdcc55d95123fc1db607c',1,'graphar::OBDEdgesCollection::find_src()'],['../classgraphar_1_1_u_b_s_edges_collection.html#a8dd753314f31341e8ec8b74670745f [...]
-  ['first_5fdst_331',['first_dst',['../classgraphar_1_1_edge_iter.html#a53ba1d573c8377db749c06f52d508a37',1,'graphar::EdgeIter']]],
-  ['first_5fsrc_332',['first_src',['../classgraphar_1_1_edge_iter.html#a5f811f66be27ef77973919d11b354c1c',1,'graphar::EdgeIter']]]
+  ['filesystem_329',['FileSystem',['../classgraphar_1_1_file_system.html#a240e8f3d8a4aab98d35a0faf6de54f25',1,'graphar::FileSystem']]],
+  ['filter_330',['Filter',['../classgraphar_1_1_vertex_property_arrow_chunk_reader.html#a4674036a7b3f43b71db0bab44c09bfbf',1,'graphar::VertexPropertyArrowChunkReader::Filter()'],['../classgraphar_1_1_adj_list_property_arrow_chunk_reader.html#a4e9c7d1a4f11f0f34ede14685fcc887a',1,'graphar::AdjListPropertyArrowChunkReader::Filter()']]],
+  ['filter_331',['filter',['../classgraphar_1_1_vertices_collection.html#ad435d7dd3f45dfffe1b48988633d5092',1,'graphar::VerticesCollection']]],
+  ['find_332',['find',['../classgraphar_1_1_vertices_collection.html#a7714ba58402c33d0d90611a633e0d204',1,'graphar::VerticesCollection']]],
+  ['find_5fdst_333',['find_dst',['../classgraphar_1_1_u_b_s_edges_collection.html#a2141ccd9ff59172cc63ebfdef338af58',1,'graphar::UBSEdgesCollection::find_dst()'],['../classgraphar_1_1_u_b_d_edges_collection.html#a5558221a922d20ffa8a84dadd18017eb',1,'graphar::UBDEdgesCollection::find_dst()'],['../classgraphar_1_1_o_b_d_edges_collection.html#aa9aad5b7fead6aa38d7caa84fe1fb70d',1,'graphar::OBDEdgesCollection::find_dst()'],['../classgraphar_1_1_o_b_s_edge_collection.html#a6c8a5b39af91318e758e [...]
+  ['find_5fsrc_334',['find_src',['../classgraphar_1_1_edges_collection.html#a64ef5fbb7446e30b70cedf91232e7bc6',1,'graphar::EdgesCollection::find_src()'],['../classgraphar_1_1_o_b_s_edge_collection.html#a200d4e4c95a8fc72af65330c279532c4',1,'graphar::OBSEdgeCollection::find_src()'],['../classgraphar_1_1_o_b_d_edges_collection.html#a592407c1dacbdcc55d95123fc1db607c',1,'graphar::OBDEdgesCollection::find_src()'],['../classgraphar_1_1_u_b_s_edges_collection.html#a8dd753314f31341e8ec8b74670745f [...]
+  ['first_5fdst_335',['first_dst',['../classgraphar_1_1_edge_iter.html#a53ba1d573c8377db749c06f52d508a37',1,'graphar::EdgeIter']]],
+  ['first_5fsrc_336',['first_src',['../classgraphar_1_1_edge_iter.html#a5f811f66be27ef77973919d11b354c1c',1,'graphar::EdgeIter']]]
 ];
diff --git a/docs/cpp/search/functions_6.js b/docs/cpp/search/functions_6.js
index 9495a94..c783f58 100644
--- a/docs/cpp/search/functions_6.js
+++ b/docs/cpp/search/functions_6.js
@@ -1,54 +1,54 @@
 var searchData=
 [
-  ['getadjlistfilepath_333',['GetAdjListFilePath',['../classgraphar_1_1_edge_info.html#a0eb9f0ff282c73f5c90a8c3940f1929e',1,'graphar::EdgeInfo']]],
-  ['getadjlistoffsetfilepath_334',['GetAdjListOffsetFilePath',['../classgraphar_1_1_edge_info.html#a615fe3ed78f35af9aef598287cb89a27',1,'graphar::EdgeInfo']]],
-  ['getadjlistpathprefix_335',['GetAdjListPathPrefix',['../classgraphar_1_1_edge_info.html#ab39f63f0aa7284c510a7e0d61b0942d3',1,'graphar::EdgeInfo']]],
-  ['getchunk_336',['GetChunk',['../classgraphar_1_1_vertex_property_arrow_chunk_reader.html#a94cb9291c735ccf95ae110fe88b35f85',1,'graphar::VertexPropertyArrowChunkReader::GetChunk()'],['../classgraphar_1_1_adj_list_arrow_chunk_reader.html#ab318bfb7bd7ea5b7f44d82e4d3a7137a',1,'graphar::AdjListArrowChunkReader::GetChunk()'],['../classgraphar_1_1_adj_list_offset_arrow_chunk_reader.html#a21545e364f0e768e3f69289c69e1456b',1,'graphar::AdjListOffsetArrowChunkReader::GetChunk()'],['../classgraph [...]
-  ['getchunkindex_337',['GetChunkIndex',['../classgraphar_1_1_adj_list_offset_arrow_chunk_reader.html#aeb49faaf704a2c6bbbdeb249cfa1c281',1,'graphar::AdjListOffsetArrowChunkReader']]],
-  ['getchunknum_338',['GetChunkNum',['../classgraphar_1_1_vertex_property_arrow_chunk_reader.html#a0c5216e43657187c39821b1bc8c692a0',1,'graphar::VertexPropertyArrowChunkReader::GetChunkNum()'],['../classgraphar_1_1_vertex_property_chunk_info_reader.html#a87c3a8eeda36c56027cf6bba4eb89990',1,'graphar::VertexPropertyChunkInfoReader::GetChunkNum()']]],
-  ['getchunksize_339',['GetChunkSize',['../classgraphar_1_1_vertex_info.html#a39a607d51da7e73a0fae473e90a61825',1,'graphar::VertexInfo::GetChunkSize()'],['../classgraphar_1_1_edge_info.html#a62c2300185c0655df9b44db39b0a399b',1,'graphar::EdgeInfo::GetChunkSize()']]],
-  ['getdestination_340',['GetDestination',['../classgraphar_1_1builder_1_1_edge.html#a9c54afa261c314e170ecc3cf097843e5',1,'graphar::builder::Edge']]],
-  ['getdstchunksize_341',['GetDstChunkSize',['../classgraphar_1_1_edge_info.html#abe0fc6672a3fbb5fbd0b5e8775cb8dac',1,'graphar::EdgeInfo']]],
-  ['getdsttype_342',['GetDstType',['../classgraphar_1_1_edge_info.html#ac03180737adf29c79196bbe729b3c929',1,'graphar::EdgeInfo']]],
-  ['getedgeinfo_343',['GetEdgeInfo',['../classgraphar_1_1_graph_info.html#a7e660710d2e1bd244b5d28bdc68aeab2',1,'graphar::GraphInfo']]],
-  ['getedgeinfobyindex_344',['GetEdgeInfoByIndex',['../classgraphar_1_1_graph_info.html#afd61923bd9ff1f5329b1c93ebbcd0278',1,'graphar::GraphInfo']]],
-  ['getedgeinfoindex_345',['GetEdgeInfoIndex',['../classgraphar_1_1_graph_info.html#aa2ca1614d499facc76927b5de733b503',1,'graphar::GraphInfo']]],
-  ['getedgeinfos_346',['GetEdgeInfos',['../classgraphar_1_1_graph_info.html#a14dbabaec827198ee822070c1077a570',1,'graphar::GraphInfo']]],
-  ['getedgesnumfilepath_347',['GetEdgesNumFilePath',['../classgraphar_1_1_edge_info.html#a4f2c7fedc68dce8f1c7fb90eede9906f',1,'graphar::EdgeInfo']]],
-  ['getedgetype_348',['GetEdgeType',['../classgraphar_1_1_edge_info.html#a03c9b4f4b0edcf47f2e5746e8f9f6db0',1,'graphar::EdgeInfo']]],
-  ['getextrainfo_349',['GetExtraInfo',['../classgraphar_1_1_graph_info.html#aa0856ec7ecc8d8d1aac2f7cd51cfe136',1,'graphar::GraphInfo']]],
-  ['getfilenumofdir_350',['GetFileNumOfDir',['../classgraphar_1_1_file_system.html#a293c0415cb3b72795e034f2a08510524',1,'graphar::FileSystem']]],
-  ['getfilepath_351',['GetFilePath',['../classgraphar_1_1_vertex_info.html#a65faa894acf765eae9c7d4e34dff6306',1,'graphar::VertexInfo']]],
-  ['getfiletype_352',['GetFileType',['../classgraphar_1_1_property_group.html#aa4fb424c0c1ef0051ff1029600221c22',1,'graphar::PropertyGroup::GetFileType()'],['../classgraphar_1_1_adjacent_list.html#a2b9f1829c1a5a7cfff7ee96ec7ac4bed',1,'graphar::AdjacentList::GetFileType()']]],
-  ['getid_353',['GetId',['../classgraphar_1_1builder_1_1_vertex.html#a2779cc7a62e888d2d768edcfd04e75bb',1,'graphar::builder::Vertex']]],
-  ['getlabelchunk_354',['GetLabelChunk',['../classgraphar_1_1_vertex_property_arrow_chunk_reader.html#a382bd12cf864d14d053d6159a54d5b11',1,'graphar::VertexPropertyArrowChunkReader']]],
-  ['getlabels_355',['GetLabels',['../classgraphar_1_1_vertex_info.html#a34a49ce4905632889db3f969986cbe75',1,'graphar::VertexInfo::GetLabels()'],['../classgraphar_1_1_graph_info.html#a8b057bb6c3cfd897b0fb31ecceea40c9',1,'graphar::GraphInfo::GetLabels()']]],
-  ['getlabeltable_356',['GetLabelTable',['../classgraphar_1_1_vertex_property_writer.html#a66aaa3cb378175cd0addee461191c180',1,'graphar::VertexPropertyWriter']]],
-  ['getname_357',['GetName',['../classgraphar_1_1_graph_info.html#ab10cb1ceaa01a74d44c1076c43c2fcce',1,'graphar::GraphInfo']]],
-  ['getnum_358',['GetNum',['../classgraphar_1_1builder_1_1_edges_builder.html#a1f68cc300c0cf9d8971c82f274932916',1,'graphar::builder::EdgesBuilder::GetNum()'],['../classgraphar_1_1builder_1_1_vertices_builder.html#abbfa8e3626d4ba178eb242e31567b1f7',1,'graphar::builder::VerticesBuilder::GetNum()']]],
-  ['getoffsetpathprefix_359',['GetOffsetPathPrefix',['../classgraphar_1_1_edge_info.html#aab2032669c9e9dcf11275fdd4cb2c1fa',1,'graphar::EdgeInfo']]],
-  ['getpathprefix_360',['GetPathPrefix',['../classgraphar_1_1_vertex_info.html#a3214a62ac41be6cb53c22894d2926710',1,'graphar::VertexInfo']]],
-  ['getprefix_361',['GetPrefix',['../classgraphar_1_1_property_group.html#a5ec3788a53adc6827d4fbf02fdfab530',1,'graphar::PropertyGroup::GetPrefix()'],['../classgraphar_1_1_graph_info.html#a53eef3d15830bea15de0bbbe7e11e208',1,'graphar::GraphInfo::GetPrefix()'],['../classgraphar_1_1_edge_info.html#a4ec8810a54411f9a8aba35b2faf29acb',1,'graphar::EdgeInfo::GetPrefix()'],['../classgraphar_1_1_adjacent_list.html#a277e5b1c9356f7bdcfe891e043459a3a',1,'graphar::AdjacentList::GetPrefix()'],['../cla [...]
-  ['getproperties_362',['GetProperties',['../classgraphar_1_1builder_1_1_edge.html#a3bfa90859f5326fdb5c32890045fe30f',1,'graphar::builder::Edge::GetProperties()'],['../classgraphar_1_1builder_1_1_vertex.html#acf252d94df3623e8fde2c86d446ebb88',1,'graphar::builder::Vertex::GetProperties()'],['../classgraphar_1_1_property_group.html#af090f1d74049ce0222148ad02b26f81a',1,'graphar::PropertyGroup::GetProperties()']]],
-  ['getproperty_363',['GetProperty',['../classgraphar_1_1builder_1_1_edge.html#a3074b581309a533760c99b66eedaffbd',1,'graphar::builder::Edge::GetProperty()'],['../classgraphar_1_1builder_1_1_vertex.html#a25721d8da028bae7459aef802f0964ed',1,'graphar::builder::Vertex::GetProperty()']]],
-  ['getpropertyfilepath_364',['GetPropertyFilePath',['../classgraphar_1_1_edge_info.html#abfcba5aed61cdfaf91f98e649b370722',1,'graphar::EdgeInfo']]],
-  ['getpropertygroup_365',['GetPropertyGroup',['../classgraphar_1_1_vertex_info.html#a2a4cc44b7db8784bdb0e9691c7ad0fba',1,'graphar::VertexInfo::GetPropertyGroup()'],['../classgraphar_1_1_edge_info.html#aec1bdf018d5b209f722dbf293ef14dd6',1,'graphar::EdgeInfo::GetPropertyGroup()']]],
-  ['getpropertygroupbyindex_366',['GetPropertyGroupByIndex',['../classgraphar_1_1_vertex_info.html#af6106f8fa90d876a0e97f58c7c39db33',1,'graphar::VertexInfo::GetPropertyGroupByIndex()'],['../classgraphar_1_1_edge_info.html#a8551959066b19885b9ce15262b5cb3db',1,'graphar::EdgeInfo::GetPropertyGroupByIndex(int index) const']]],
-  ['getpropertygrouppathprefix_367',['GetPropertyGroupPathPrefix',['../classgraphar_1_1_edge_info.html#a55004cedc30fcb0fa94adf246dcc2702',1,'graphar::EdgeInfo']]],
-  ['getpropertygroups_368',['GetPropertyGroups',['../classgraphar_1_1_vertex_info.html#aff9aadd406180802facb14d6a4b5e72e',1,'graphar::VertexInfo::GetPropertyGroups()'],['../classgraphar_1_1_edge_info.html#ad56107001dcbadac71ae8063cd25b58f',1,'graphar::EdgeInfo::GetPropertyGroups()']]],
-  ['getpropertytype_369',['GetPropertyType',['../classgraphar_1_1_vertex_info.html#acbeedc2afc98e53155bb1f75c9cb465c',1,'graphar::VertexInfo::GetPropertyType()'],['../classgraphar_1_1_edge_info.html#a37fa8536c627a5e5f529e8ee6d3d7506',1,'graphar::EdgeInfo::GetPropertyType()']]],
-  ['getrownumofchunk_370',['GetRowNumOfChunk',['../classgraphar_1_1_adj_list_arrow_chunk_reader.html#a9e9d910308128f62918fef54fe1c95f4',1,'graphar::AdjListArrowChunkReader']]],
-  ['getsource_371',['GetSource',['../classgraphar_1_1builder_1_1_edge.html#a4c804187c83dbb379dfbf628e6cf03e5',1,'graphar::builder::Edge']]],
-  ['getsrcchunksize_372',['GetSrcChunkSize',['../classgraphar_1_1_edge_info.html#ac07ad975e8ecbdb779038388e3def59e',1,'graphar::EdgeInfo']]],
-  ['getsrctype_373',['GetSrcType',['../classgraphar_1_1_edge_info.html#a994023f50f2f952cc1361b0f9928dec4',1,'graphar::EdgeInfo']]],
-  ['gettype_374',['GetType',['../classgraphar_1_1_adjacent_list.html#a3d4b038f759cceb75cd38c30414c444b',1,'graphar::AdjacentList::GetType()'],['../classgraphar_1_1_vertex_info.html#a2364ef208346bbd4d468ee78cfc6a1a3',1,'graphar::VertexInfo::GetType()']]],
-  ['getvalidatelevel_375',['GetValidateLevel',['../classgraphar_1_1_vertex_property_writer.html#a1f4a62c950ac2d71204a1e0ecf4b4787',1,'graphar::VertexPropertyWriter::GetValidateLevel()'],['../classgraphar_1_1_edge_chunk_writer.html#aebe01465e7e905506bc3b7c49f735fc9',1,'graphar::EdgeChunkWriter::GetValidateLevel()'],['../classgraphar_1_1builder_1_1_edges_builder.html#a865a2585b6bbf41f1f3ebf7f64932db9',1,'graphar::builder::EdgesBuilder::GetValidateLevel()'],['../classgraphar_1_1builder_1_1_ [...]
-  ['getvertexinfo_376',['GetVertexInfo',['../classgraphar_1_1_graph_info.html#a8799b4b1a2163507a9ddd8f910d4a9d3',1,'graphar::GraphInfo']]],
-  ['getvertexinfobyindex_377',['GetVertexInfoByIndex',['../classgraphar_1_1_graph_info.html#a3a94e3d0f64a1b4d1b672676940c389f',1,'graphar::GraphInfo']]],
-  ['getvertexinfoindex_378',['GetVertexInfoIndex',['../classgraphar_1_1_graph_info.html#a0f03270a6ee9c084dab10421cdf69cd5',1,'graphar::GraphInfo']]],
-  ['getvertexinfos_379',['GetVertexInfos',['../classgraphar_1_1_graph_info.html#a9393d2797ff5d77f66691f84f15007c4',1,'graphar::GraphInfo']]],
-  ['getverticesnumfilepath_380',['GetVerticesNumFilePath',['../classgraphar_1_1_vertex_info.html#aad61b0a40a4bef344fad93cb1332d97d',1,'graphar::VertexInfo::GetVerticesNumFilePath()'],['../classgraphar_1_1_edge_info.html#aec1a622c83b14d62b26e7143850a3cf1',1,'graphar::EdgeInfo::GetVerticesNumFilePath()']]],
-  ['getwriteroptions_381',['GetWriterOptions',['../classgraphar_1_1builder_1_1_edges_builder.html#a4b167ea0366c84cc6057ad0ae7f53cde',1,'graphar::builder::EdgesBuilder::GetWriterOptions()'],['../classgraphar_1_1builder_1_1_vertices_builder.html#ac53141acf10d53d62cb29ddde271c37a',1,'graphar::builder::VerticesBuilder::GetWriterOptions()']]],
-  ['global_5fchunk_5findex_382',['global_chunk_index',['../classgraphar_1_1_edge_iter.html#a8c49318f5a8d5484463cb3a2a58d861a',1,'graphar::EdgeIter']]],
-  ['graphinfo_383',['GraphInfo',['../classgraphar_1_1_graph_info.html#a1b473deea923f7b2a57c339dc7e51192',1,'graphar::GraphInfo']]]
+  ['getadjlistfilepath_337',['GetAdjListFilePath',['../classgraphar_1_1_edge_info.html#a0eb9f0ff282c73f5c90a8c3940f1929e',1,'graphar::EdgeInfo']]],
+  ['getadjlistoffsetfilepath_338',['GetAdjListOffsetFilePath',['../classgraphar_1_1_edge_info.html#a615fe3ed78f35af9aef598287cb89a27',1,'graphar::EdgeInfo']]],
+  ['getadjlistpathprefix_339',['GetAdjListPathPrefix',['../classgraphar_1_1_edge_info.html#ab39f63f0aa7284c510a7e0d61b0942d3',1,'graphar::EdgeInfo']]],
+  ['getchunk_340',['GetChunk',['../classgraphar_1_1_vertex_property_arrow_chunk_reader.html#a94cb9291c735ccf95ae110fe88b35f85',1,'graphar::VertexPropertyArrowChunkReader::GetChunk()'],['../classgraphar_1_1_adj_list_arrow_chunk_reader.html#ab318bfb7bd7ea5b7f44d82e4d3a7137a',1,'graphar::AdjListArrowChunkReader::GetChunk()'],['../classgraphar_1_1_adj_list_offset_arrow_chunk_reader.html#a21545e364f0e768e3f69289c69e1456b',1,'graphar::AdjListOffsetArrowChunkReader::GetChunk()'],['../classgraph [...]
+  ['getchunkindex_341',['GetChunkIndex',['../classgraphar_1_1_adj_list_offset_arrow_chunk_reader.html#aeb49faaf704a2c6bbbdeb249cfa1c281',1,'graphar::AdjListOffsetArrowChunkReader']]],
+  ['getchunknum_342',['GetChunkNum',['../classgraphar_1_1_vertex_property_arrow_chunk_reader.html#a0c5216e43657187c39821b1bc8c692a0',1,'graphar::VertexPropertyArrowChunkReader::GetChunkNum()'],['../classgraphar_1_1_vertex_property_chunk_info_reader.html#a87c3a8eeda36c56027cf6bba4eb89990',1,'graphar::VertexPropertyChunkInfoReader::GetChunkNum()']]],
+  ['getchunksize_343',['GetChunkSize',['../classgraphar_1_1_vertex_info.html#a39a607d51da7e73a0fae473e90a61825',1,'graphar::VertexInfo::GetChunkSize()'],['../classgraphar_1_1_edge_info.html#a62c2300185c0655df9b44db39b0a399b',1,'graphar::EdgeInfo::GetChunkSize()']]],
+  ['getdestination_344',['GetDestination',['../classgraphar_1_1builder_1_1_edge.html#a9c54afa261c314e170ecc3cf097843e5',1,'graphar::builder::Edge']]],
+  ['getdstchunksize_345',['GetDstChunkSize',['../classgraphar_1_1_edge_info.html#abe0fc6672a3fbb5fbd0b5e8775cb8dac',1,'graphar::EdgeInfo']]],
+  ['getdsttype_346',['GetDstType',['../classgraphar_1_1_edge_info.html#ac03180737adf29c79196bbe729b3c929',1,'graphar::EdgeInfo']]],
+  ['getedgeinfo_347',['GetEdgeInfo',['../classgraphar_1_1_graph_info.html#a7e660710d2e1bd244b5d28bdc68aeab2',1,'graphar::GraphInfo']]],
+  ['getedgeinfobyindex_348',['GetEdgeInfoByIndex',['../classgraphar_1_1_graph_info.html#afd61923bd9ff1f5329b1c93ebbcd0278',1,'graphar::GraphInfo']]],
+  ['getedgeinfoindex_349',['GetEdgeInfoIndex',['../classgraphar_1_1_graph_info.html#aa2ca1614d499facc76927b5de733b503',1,'graphar::GraphInfo']]],
+  ['getedgeinfos_350',['GetEdgeInfos',['../classgraphar_1_1_graph_info.html#a14dbabaec827198ee822070c1077a570',1,'graphar::GraphInfo']]],
+  ['getedgesnumfilepath_351',['GetEdgesNumFilePath',['../classgraphar_1_1_edge_info.html#a4f2c7fedc68dce8f1c7fb90eede9906f',1,'graphar::EdgeInfo']]],
+  ['getedgetype_352',['GetEdgeType',['../classgraphar_1_1_edge_info.html#a03c9b4f4b0edcf47f2e5746e8f9f6db0',1,'graphar::EdgeInfo']]],
+  ['getextrainfo_353',['GetExtraInfo',['../classgraphar_1_1_graph_info.html#aa0856ec7ecc8d8d1aac2f7cd51cfe136',1,'graphar::GraphInfo']]],
+  ['getfilenumofdir_354',['GetFileNumOfDir',['../classgraphar_1_1_file_system.html#a293c0415cb3b72795e034f2a08510524',1,'graphar::FileSystem']]],
+  ['getfilepath_355',['GetFilePath',['../classgraphar_1_1_vertex_info.html#a65faa894acf765eae9c7d4e34dff6306',1,'graphar::VertexInfo']]],
+  ['getfiletype_356',['GetFileType',['../classgraphar_1_1_property_group.html#aa4fb424c0c1ef0051ff1029600221c22',1,'graphar::PropertyGroup::GetFileType()'],['../classgraphar_1_1_adjacent_list.html#a2b9f1829c1a5a7cfff7ee96ec7ac4bed',1,'graphar::AdjacentList::GetFileType()']]],
+  ['getid_357',['GetId',['../classgraphar_1_1builder_1_1_vertex.html#a2779cc7a62e888d2d768edcfd04e75bb',1,'graphar::builder::Vertex']]],
+  ['getlabelchunk_358',['GetLabelChunk',['../classgraphar_1_1_vertex_property_arrow_chunk_reader.html#a382bd12cf864d14d053d6159a54d5b11',1,'graphar::VertexPropertyArrowChunkReader']]],
+  ['getlabels_359',['GetLabels',['../classgraphar_1_1_vertex_info.html#a34a49ce4905632889db3f969986cbe75',1,'graphar::VertexInfo::GetLabels()'],['../classgraphar_1_1_graph_info.html#a8b057bb6c3cfd897b0fb31ecceea40c9',1,'graphar::GraphInfo::GetLabels()']]],
+  ['getlabeltable_360',['GetLabelTable',['../classgraphar_1_1_vertex_property_writer.html#a66aaa3cb378175cd0addee461191c180',1,'graphar::VertexPropertyWriter']]],
+  ['getname_361',['GetName',['../classgraphar_1_1_graph_info.html#ab10cb1ceaa01a74d44c1076c43c2fcce',1,'graphar::GraphInfo']]],
+  ['getnum_362',['GetNum',['../classgraphar_1_1builder_1_1_edges_builder.html#a1f68cc300c0cf9d8971c82f274932916',1,'graphar::builder::EdgesBuilder::GetNum()'],['../classgraphar_1_1builder_1_1_vertices_builder.html#abbfa8e3626d4ba178eb242e31567b1f7',1,'graphar::builder::VerticesBuilder::GetNum()']]],
+  ['getoffsetpathprefix_363',['GetOffsetPathPrefix',['../classgraphar_1_1_edge_info.html#aab2032669c9e9dcf11275fdd4cb2c1fa',1,'graphar::EdgeInfo']]],
+  ['getpathprefix_364',['GetPathPrefix',['../classgraphar_1_1_vertex_info.html#a3214a62ac41be6cb53c22894d2926710',1,'graphar::VertexInfo']]],
+  ['getprefix_365',['GetPrefix',['../classgraphar_1_1_property_group.html#a5ec3788a53adc6827d4fbf02fdfab530',1,'graphar::PropertyGroup::GetPrefix()'],['../classgraphar_1_1_graph_info.html#a53eef3d15830bea15de0bbbe7e11e208',1,'graphar::GraphInfo::GetPrefix()'],['../classgraphar_1_1_edge_info.html#a4ec8810a54411f9a8aba35b2faf29acb',1,'graphar::EdgeInfo::GetPrefix()'],['../classgraphar_1_1_adjacent_list.html#a277e5b1c9356f7bdcfe891e043459a3a',1,'graphar::AdjacentList::GetPrefix()'],['../cla [...]
+  ['getproperties_366',['GetProperties',['../classgraphar_1_1builder_1_1_edge.html#a3bfa90859f5326fdb5c32890045fe30f',1,'graphar::builder::Edge::GetProperties()'],['../classgraphar_1_1builder_1_1_vertex.html#acf252d94df3623e8fde2c86d446ebb88',1,'graphar::builder::Vertex::GetProperties()'],['../classgraphar_1_1_property_group.html#af090f1d74049ce0222148ad02b26f81a',1,'graphar::PropertyGroup::GetProperties()']]],
+  ['getproperty_367',['GetProperty',['../classgraphar_1_1builder_1_1_edge.html#a3074b581309a533760c99b66eedaffbd',1,'graphar::builder::Edge::GetProperty()'],['../classgraphar_1_1builder_1_1_vertex.html#a25721d8da028bae7459aef802f0964ed',1,'graphar::builder::Vertex::GetProperty()']]],
+  ['getpropertyfilepath_368',['GetPropertyFilePath',['../classgraphar_1_1_edge_info.html#abfcba5aed61cdfaf91f98e649b370722',1,'graphar::EdgeInfo']]],
+  ['getpropertygroup_369',['GetPropertyGroup',['../classgraphar_1_1_vertex_info.html#a2a4cc44b7db8784bdb0e9691c7ad0fba',1,'graphar::VertexInfo::GetPropertyGroup()'],['../classgraphar_1_1_edge_info.html#aec1bdf018d5b209f722dbf293ef14dd6',1,'graphar::EdgeInfo::GetPropertyGroup()']]],
+  ['getpropertygroupbyindex_370',['GetPropertyGroupByIndex',['../classgraphar_1_1_vertex_info.html#af6106f8fa90d876a0e97f58c7c39db33',1,'graphar::VertexInfo::GetPropertyGroupByIndex()'],['../classgraphar_1_1_edge_info.html#a8551959066b19885b9ce15262b5cb3db',1,'graphar::EdgeInfo::GetPropertyGroupByIndex(int index) const']]],
+  ['getpropertygrouppathprefix_371',['GetPropertyGroupPathPrefix',['../classgraphar_1_1_edge_info.html#a55004cedc30fcb0fa94adf246dcc2702',1,'graphar::EdgeInfo']]],
+  ['getpropertygroups_372',['GetPropertyGroups',['../classgraphar_1_1_vertex_info.html#aff9aadd406180802facb14d6a4b5e72e',1,'graphar::VertexInfo::GetPropertyGroups()'],['../classgraphar_1_1_edge_info.html#ad56107001dcbadac71ae8063cd25b58f',1,'graphar::EdgeInfo::GetPropertyGroups()']]],
+  ['getpropertytype_373',['GetPropertyType',['../classgraphar_1_1_vertex_info.html#acbeedc2afc98e53155bb1f75c9cb465c',1,'graphar::VertexInfo::GetPropertyType()'],['../classgraphar_1_1_edge_info.html#a37fa8536c627a5e5f529e8ee6d3d7506',1,'graphar::EdgeInfo::GetPropertyType()']]],
+  ['getrownumofchunk_374',['GetRowNumOfChunk',['../classgraphar_1_1_adj_list_arrow_chunk_reader.html#a9e9d910308128f62918fef54fe1c95f4',1,'graphar::AdjListArrowChunkReader']]],
+  ['getsource_375',['GetSource',['../classgraphar_1_1builder_1_1_edge.html#a4c804187c83dbb379dfbf628e6cf03e5',1,'graphar::builder::Edge']]],
+  ['getsrcchunksize_376',['GetSrcChunkSize',['../classgraphar_1_1_edge_info.html#ac07ad975e8ecbdb779038388e3def59e',1,'graphar::EdgeInfo']]],
+  ['getsrctype_377',['GetSrcType',['../classgraphar_1_1_edge_info.html#a994023f50f2f952cc1361b0f9928dec4',1,'graphar::EdgeInfo']]],
+  ['gettype_378',['GetType',['../classgraphar_1_1_adjacent_list.html#a3d4b038f759cceb75cd38c30414c444b',1,'graphar::AdjacentList::GetType()'],['../classgraphar_1_1_vertex_info.html#a2364ef208346bbd4d468ee78cfc6a1a3',1,'graphar::VertexInfo::GetType()']]],
+  ['getvalidatelevel_379',['GetValidateLevel',['../classgraphar_1_1_vertex_property_writer.html#a1f4a62c950ac2d71204a1e0ecf4b4787',1,'graphar::VertexPropertyWriter::GetValidateLevel()'],['../classgraphar_1_1_edge_chunk_writer.html#aebe01465e7e905506bc3b7c49f735fc9',1,'graphar::EdgeChunkWriter::GetValidateLevel()'],['../classgraphar_1_1builder_1_1_edges_builder.html#a865a2585b6bbf41f1f3ebf7f64932db9',1,'graphar::builder::EdgesBuilder::GetValidateLevel()'],['../classgraphar_1_1builder_1_1_ [...]
+  ['getvertexinfo_380',['GetVertexInfo',['../classgraphar_1_1_graph_info.html#a8799b4b1a2163507a9ddd8f910d4a9d3',1,'graphar::GraphInfo']]],
+  ['getvertexinfobyindex_381',['GetVertexInfoByIndex',['../classgraphar_1_1_graph_info.html#a3a94e3d0f64a1b4d1b672676940c389f',1,'graphar::GraphInfo']]],
+  ['getvertexinfoindex_382',['GetVertexInfoIndex',['../classgraphar_1_1_graph_info.html#a0f03270a6ee9c084dab10421cdf69cd5',1,'graphar::GraphInfo']]],
+  ['getvertexinfos_383',['GetVertexInfos',['../classgraphar_1_1_graph_info.html#a9393d2797ff5d77f66691f84f15007c4',1,'graphar::GraphInfo']]],
+  ['getverticesnumfilepath_384',['GetVerticesNumFilePath',['../classgraphar_1_1_vertex_info.html#aad61b0a40a4bef344fad93cb1332d97d',1,'graphar::VertexInfo::GetVerticesNumFilePath()'],['../classgraphar_1_1_edge_info.html#aec1a622c83b14d62b26e7143850a3cf1',1,'graphar::EdgeInfo::GetVerticesNumFilePath()']]],
+  ['getwriteroptions_385',['GetWriterOptions',['../classgraphar_1_1builder_1_1_edges_builder.html#a4b167ea0366c84cc6057ad0ae7f53cde',1,'graphar::builder::EdgesBuilder::GetWriterOptions()'],['../classgraphar_1_1builder_1_1_vertices_builder.html#ac53141acf10d53d62cb29ddde271c37a',1,'graphar::builder::VerticesBuilder::GetWriterOptions()']]],
+  ['global_5fchunk_5findex_386',['global_chunk_index',['../classgraphar_1_1_edge_iter.html#a8c49318f5a8d5484463cb3a2a58d861a',1,'graphar::EdgeIter']]],
+  ['graphinfo_387',['GraphInfo',['../classgraphar_1_1_graph_info.html#a1b473deea923f7b2a57c339dc7e51192',1,'graphar::GraphInfo']]]
 ];
diff --git a/docs/cpp/search/functions_7.js b/docs/cpp/search/functions_7.js
index f60599a..6ff3617 100644
--- a/docs/cpp/search/functions_7.js
+++ b/docs/cpp/search/functions_7.js
@@ -1,7 +1,7 @@
 var searchData=
 [
-  ['hasadjacentlisttype_384',['HasAdjacentListType',['../classgraphar_1_1_edge_info.html#aaa6633dc8136cec806cbcf42c2cf136d',1,'graphar::EdgeInfo']]],
-  ['haslabel_385',['hasLabel',['../classgraphar_1_1_vertex_iter.html#a0768988fe4c967719bc100098c5f4eb8',1,'graphar::VertexIter']]],
-  ['hasproperty_386',['HasProperty',['../classgraphar_1_1_vertex_info.html#a5d42bec7d8cdb67f1e04b921f484e328',1,'graphar::VertexInfo::HasProperty()'],['../classgraphar_1_1_edge_info.html#a69182fa8d45bb0e7d4ac230adb1239b2',1,'graphar::EdgeInfo::HasProperty()']]],
-  ['haspropertygroup_387',['HasPropertyGroup',['../classgraphar_1_1_vertex_info.html#a64aca915578185662b4429e5ed265322',1,'graphar::VertexInfo::HasPropertyGroup()'],['../classgraphar_1_1_edge_info.html#a857bb686e5d7f579ac0e2a889a53f829',1,'graphar::EdgeInfo::HasPropertyGroup()']]]
+  ['hasadjacentlisttype_388',['HasAdjacentListType',['../classgraphar_1_1_edge_info.html#aaa6633dc8136cec806cbcf42c2cf136d',1,'graphar::EdgeInfo']]],
+  ['haslabel_389',['hasLabel',['../classgraphar_1_1_vertex_iter.html#a0768988fe4c967719bc100098c5f4eb8',1,'graphar::VertexIter']]],
+  ['hasproperty_390',['HasProperty',['../classgraphar_1_1_vertex_info.html#a5d42bec7d8cdb67f1e04b921f484e328',1,'graphar::VertexInfo::HasProperty()'],['../classgraphar_1_1_edge_info.html#a69182fa8d45bb0e7d4ac230adb1239b2',1,'graphar::EdgeInfo::HasProperty()']]],
+  ['haspropertygroup_391',['HasPropertyGroup',['../classgraphar_1_1_vertex_info.html#a64aca915578185662b4429e5ed265322',1,'graphar::VertexInfo::HasPropertyGroup()'],['../classgraphar_1_1_edge_info.html#a857bb686e5d7f579ac0e2a889a53f829',1,'graphar::EdgeInfo::HasPropertyGroup()']]]
 ];
diff --git a/docs/cpp/search/functions_8.js b/docs/cpp/search/functions_8.js
index 7a2a327..308fd13 100644
--- a/docs/cpp/search/functions_8.js
+++ b/docs/cpp/search/functions_8.js
@@ -1,20 +1,20 @@
 var searchData=
 [
-  ['id_388',['id',['../classgraphar_1_1_vertex_iter.html#ab32102732fb8944ec72c4572e1131e42',1,'graphar::VertexIter::id()'],['../classgraphar_1_1_data_type.html#a97eefbeeff497ed919fc6fb3d9b01842',1,'graphar::DataType::id()'],['../classgraphar_1_1_vertex.html#a97815c62a85c6c065b35b9c8b23b1139',1,'graphar::Vertex::id()']]],
-  ['indexerror_389',['IndexError',['../classgraphar_1_1_status.html#a1f9b2120c7a6b3e66f9f2e31021df67f',1,'graphar::Status']]],
-  ['infoversion_390',['InfoVersion',['../classgraphar_1_1_info_version.html#a30ec617e44be782350daa2e95dcdeb78',1,'graphar::InfoVersion::InfoVersion()'],['../classgraphar_1_1_info_version.html#af0893ab0b6df45496c036ba241732169',1,'graphar::InfoVersion::InfoVersion(int version)'],['../classgraphar_1_1_info_version.html#a361b7a8a17e469f9228e748a57578ce4',1,'graphar::InfoVersion::InfoVersion(int version, const std::vector&lt; std::string &gt; &amp;user_define_types)'],['../classgraphar_1_1_i [...]
-  ['invalid_391',['Invalid',['../classgraphar_1_1_status.html#a9ca4be37aae8dfea7e6ef54920e0073f',1,'graphar::Status']]],
-  ['ioerror_392',['IOError',['../classgraphar_1_1_status.html#af74806ef2e707acc99abc8997361f1e5',1,'graphar::Status']]],
-  ['is_5fend_393',['is_end',['../classgraphar_1_1_edge_iter.html#a998897b46847ef0c4959074d9eb7b49c',1,'graphar::EdgeIter']]],
-  ['isarrowerror_394',['IsArrowError',['../classgraphar_1_1_status.html#a7faef0c9213acb06dd3e249a8d75f43d',1,'graphar::Status']]],
-  ['isdirected_395',['IsDirected',['../classgraphar_1_1_edge_info.html#aad31af465d41c026a35c20828915922e',1,'graphar::EdgeInfo']]],
-  ['isindexerror_396',['IsIndexError',['../classgraphar_1_1_status.html#ad0d090660a9e71c3e19b3c1739b98f68',1,'graphar::Status']]],
-  ['isinvalid_397',['IsInvalid',['../classgraphar_1_1_status.html#a91714dda07e087535605998d815d9240',1,'graphar::Status']]],
-  ['iskeyerror_398',['IsKeyError',['../classgraphar_1_1_status.html#a5722c85539ba45817a7f7d57d511bb7c',1,'graphar::Status']]],
-  ['isnullablekey_399',['IsNullableKey',['../classgraphar_1_1_vertex_info.html#ad6bc3cbb3ed0c5eaa7fd50298e106a78',1,'graphar::VertexInfo::IsNullableKey()'],['../classgraphar_1_1_edge_info.html#a80b00d930f22870d00331a639c9cc26e',1,'graphar::EdgeInfo::IsNullableKey()']]],
-  ['isprimarykey_400',['IsPrimaryKey',['../classgraphar_1_1_vertex_info.html#a68f7407348b39115e0fa4d44750e9d37',1,'graphar::VertexInfo::IsPrimaryKey()'],['../classgraphar_1_1_edge_info.html#a5bd430ba21f5dfb230b978e03c4020ef',1,'graphar::EdgeInfo::IsPrimaryKey()']]],
-  ['istypeerror_401',['IsTypeError',['../classgraphar_1_1_status.html#a5655e90a1f657d7e5a12b5217a7eee25',1,'graphar::Status']]],
-  ['isvalid_402',['IsValid',['../classgraphar_1_1_vertex.html#a4f078e2bb033c32f1f3ecb6a3d376c98',1,'graphar::Vertex::IsValid()'],['../classgraphar_1_1_edge.html#aa717cc7bec930a6aa97ee860825648b5',1,'graphar::Edge::IsValid()']]],
-  ['isvalidated_403',['IsValidated',['../classgraphar_1_1_property_group.html#a9a1d4401d81fb2576ae3f3de21eb9e25',1,'graphar::PropertyGroup::IsValidated()'],['../classgraphar_1_1_adjacent_list.html#a592ba95843997b321f5545e950f03a57',1,'graphar::AdjacentList::IsValidated()'],['../classgraphar_1_1_vertex_info.html#a70d2cb4637d4b2909bd34045a39568af',1,'graphar::VertexInfo::IsValidated()'],['../classgraphar_1_1_edge_info.html#a3dca57726506375cab4fc43fdef2914f',1,'graphar::EdgeInfo::IsValidate [...]
-  ['isyamlerror_404',['IsYamlError',['../classgraphar_1_1_status.html#aa42e3449fecbebb29bff9e59bb83fcce',1,'graphar::Status']]]
+  ['id_392',['id',['../classgraphar_1_1_vertex_iter.html#ab32102732fb8944ec72c4572e1131e42',1,'graphar::VertexIter::id()'],['../classgraphar_1_1_data_type.html#a97eefbeeff497ed919fc6fb3d9b01842',1,'graphar::DataType::id()'],['../classgraphar_1_1_vertex.html#a97815c62a85c6c065b35b9c8b23b1139',1,'graphar::Vertex::id()']]],
+  ['indexerror_393',['IndexError',['../classgraphar_1_1_status.html#a1f9b2120c7a6b3e66f9f2e31021df67f',1,'graphar::Status']]],
+  ['infoversion_394',['InfoVersion',['../classgraphar_1_1_info_version.html#a30ec617e44be782350daa2e95dcdeb78',1,'graphar::InfoVersion::InfoVersion()'],['../classgraphar_1_1_info_version.html#af0893ab0b6df45496c036ba241732169',1,'graphar::InfoVersion::InfoVersion(int version)'],['../classgraphar_1_1_info_version.html#a361b7a8a17e469f9228e748a57578ce4',1,'graphar::InfoVersion::InfoVersion(int version, const std::vector&lt; std::string &gt; &amp;user_define_types)'],['../classgraphar_1_1_i [...]
+  ['invalid_395',['Invalid',['../classgraphar_1_1_status.html#a9ca4be37aae8dfea7e6ef54920e0073f',1,'graphar::Status']]],
+  ['ioerror_396',['IOError',['../classgraphar_1_1_status.html#af74806ef2e707acc99abc8997361f1e5',1,'graphar::Status']]],
+  ['is_5fend_397',['is_end',['../classgraphar_1_1_edge_iter.html#a998897b46847ef0c4959074d9eb7b49c',1,'graphar::EdgeIter']]],
+  ['isarrowerror_398',['IsArrowError',['../classgraphar_1_1_status.html#a7faef0c9213acb06dd3e249a8d75f43d',1,'graphar::Status']]],
+  ['isdirected_399',['IsDirected',['../classgraphar_1_1_edge_info.html#aad31af465d41c026a35c20828915922e',1,'graphar::EdgeInfo']]],
+  ['isindexerror_400',['IsIndexError',['../classgraphar_1_1_status.html#ad0d090660a9e71c3e19b3c1739b98f68',1,'graphar::Status']]],
+  ['isinvalid_401',['IsInvalid',['../classgraphar_1_1_status.html#a91714dda07e087535605998d815d9240',1,'graphar::Status']]],
+  ['iskeyerror_402',['IsKeyError',['../classgraphar_1_1_status.html#a5722c85539ba45817a7f7d57d511bb7c',1,'graphar::Status']]],
+  ['isnullablekey_403',['IsNullableKey',['../classgraphar_1_1_vertex_info.html#ad6bc3cbb3ed0c5eaa7fd50298e106a78',1,'graphar::VertexInfo::IsNullableKey()'],['../classgraphar_1_1_edge_info.html#a80b00d930f22870d00331a639c9cc26e',1,'graphar::EdgeInfo::IsNullableKey()']]],
+  ['isprimarykey_404',['IsPrimaryKey',['../classgraphar_1_1_vertex_info.html#a68f7407348b39115e0fa4d44750e9d37',1,'graphar::VertexInfo::IsPrimaryKey()'],['../classgraphar_1_1_edge_info.html#a5bd430ba21f5dfb230b978e03c4020ef',1,'graphar::EdgeInfo::IsPrimaryKey()']]],
+  ['istypeerror_405',['IsTypeError',['../classgraphar_1_1_status.html#a5655e90a1f657d7e5a12b5217a7eee25',1,'graphar::Status']]],
+  ['isvalid_406',['IsValid',['../classgraphar_1_1_vertex.html#a4f078e2bb033c32f1f3ecb6a3d376c98',1,'graphar::Vertex::IsValid()'],['../classgraphar_1_1_edge.html#aa717cc7bec930a6aa97ee860825648b5',1,'graphar::Edge::IsValid()']]],
+  ['isvalidated_407',['IsValidated',['../classgraphar_1_1_property_group.html#a9a1d4401d81fb2576ae3f3de21eb9e25',1,'graphar::PropertyGroup::IsValidated()'],['../classgraphar_1_1_adjacent_list.html#a592ba95843997b321f5545e950f03a57',1,'graphar::AdjacentList::IsValidated()'],['../classgraphar_1_1_vertex_info.html#a70d2cb4637d4b2909bd34045a39568af',1,'graphar::VertexInfo::IsValidated()'],['../classgraphar_1_1_edge_info.html#a3dca57726506375cab4fc43fdef2914f',1,'graphar::EdgeInfo::IsValidate [...]
+  ['isyamlerror_408',['IsYamlError',['../classgraphar_1_1_status.html#aa42e3449fecbebb29bff9e59bb83fcce',1,'graphar::Status']]]
 ];
diff --git a/docs/cpp/search/functions_9.js b/docs/cpp/search/functions_9.js
index 07c0807..0a1b469 100644
--- a/docs/cpp/search/functions_9.js
+++ b/docs/cpp/search/functions_9.js
@@ -1,4 +1,4 @@
 var searchData=
 [
-  ['keyerror_405',['KeyError',['../classgraphar_1_1_status.html#a4ee4924ddadfc2c1effc055572084d71',1,'graphar::Status']]]
+  ['keyerror_409',['KeyError',['../classgraphar_1_1_status.html#a4ee4924ddadfc2c1effc055572084d71',1,'graphar::Status']]]
 ];
diff --git a/docs/cpp/search/functions_a.js b/docs/cpp/search/functions_a.js
index 8a549cb..8ae8a39 100644
--- a/docs/cpp/search/functions_a.js
+++ b/docs/cpp/search/functions_a.js
@@ -1,6 +1,6 @@
 var searchData=
 [
-  ['label_406',['label',['../classgraphar_1_1_vertex.html#af9b0eff493cbbed212920411c985f17c',1,'graphar::Vertex::label()'],['../classgraphar_1_1_vertex_iter.html#a0124203ee18520cb1859760366bc949d',1,'graphar::VertexIter::label()']]],
-  ['load_407',['Load',['../classgraphar_1_1_vertex_info.html#af1ade1caa6e70e4b7ce60cf4df7ac50c',1,'graphar::VertexInfo::Load(std::shared_ptr&lt; Yaml &gt; yaml)'],['../classgraphar_1_1_vertex_info.html#afc1a3662d2215f157af8ba115307807b',1,'graphar::VertexInfo::Load(const std::string &amp;input)'],['../classgraphar_1_1_edge_info.html#a0ac67e1cf3b3fa79b6fcbc054869d0e5',1,'graphar::EdgeInfo::Load(std::shared_ptr&lt; Yaml &gt; yaml)'],['../classgraphar_1_1_edge_info.html#a5840f6d36ba8e8dab30 [...]
-  ['loadfile_408',['LoadFile',['../classgraphar_1_1_yaml.html#ac1c9d809559b322c6f3de30a695fdd4d',1,'graphar::Yaml']]]
+  ['label_410',['label',['../classgraphar_1_1_vertex.html#af9b0eff493cbbed212920411c985f17c',1,'graphar::Vertex::label()'],['../classgraphar_1_1_vertex_iter.html#a0124203ee18520cb1859760366bc949d',1,'graphar::VertexIter::label()']]],
+  ['load_411',['Load',['../classgraphar_1_1_vertex_info.html#af1ade1caa6e70e4b7ce60cf4df7ac50c',1,'graphar::VertexInfo::Load(std::shared_ptr&lt; Yaml &gt; yaml)'],['../classgraphar_1_1_vertex_info.html#afc1a3662d2215f157af8ba115307807b',1,'graphar::VertexInfo::Load(const std::string &amp;input)'],['../classgraphar_1_1_edge_info.html#a0ac67e1cf3b3fa79b6fcbc054869d0e5',1,'graphar::EdgeInfo::Load(std::shared_ptr&lt; Yaml &gt; yaml)'],['../classgraphar_1_1_edge_info.html#a5840f6d36ba8e8dab30 [...]
+  ['loadfile_412',['LoadFile',['../classgraphar_1_1_yaml.html#ac1c9d809559b322c6f3de30a695fdd4d',1,'graphar::Yaml']]]
 ];
diff --git a/docs/cpp/search/functions_b.js b/docs/cpp/search/functions_b.js
index afa4b2c..07fb1ab 100644
--- a/docs/cpp/search/functions_b.js
+++ b/docs/cpp/search/functions_b.js
@@ -1,7 +1,7 @@
 var searchData=
 [
-  ['make_409',['Make',['../classgraphar_1_1_adj_list_property_chunk_info_reader.html#a07987b8ada7f5da637dd8d0706c0a24c',1,'graphar::AdjListPropertyChunkInfoReader::Make()'],['../classgraphar_1_1_vertex_property_chunk_info_reader.html#a0d50059eebe22a9a95e4cfe1e09029ac',1,'graphar::VertexPropertyChunkInfoReader::Make(const std::shared_ptr&lt; VertexInfo &gt; &amp;vertex_info, const std::shared_ptr&lt; PropertyGroup &gt; &amp;property_group, const std::string &amp;prefix)'],['../classgrapha [...]
-  ['makeforlabels_410',['MakeForLabels',['../classgraphar_1_1_vertex_property_arrow_chunk_reader.html#a47723dd5327d91bcef4daac3d420133c',1,'graphar::VertexPropertyArrowChunkReader']]],
-  ['makeforproperties_411',['MakeForProperties',['../classgraphar_1_1_vertex_property_arrow_chunk_reader.html#aa36c5c1513f039b1beef2c624ea20b39',1,'graphar::VertexPropertyArrowChunkReader']]],
-  ['message_412',['message',['../classgraphar_1_1_status.html#a11279464d73e7362db85e08935546022',1,'graphar::Status']]]
+  ['make_413',['Make',['../classgraphar_1_1_adj_list_property_chunk_info_reader.html#a07987b8ada7f5da637dd8d0706c0a24c',1,'graphar::AdjListPropertyChunkInfoReader::Make()'],['../classgraphar_1_1_vertex_property_chunk_info_reader.html#a0d50059eebe22a9a95e4cfe1e09029ac',1,'graphar::VertexPropertyChunkInfoReader::Make(const std::shared_ptr&lt; VertexInfo &gt; &amp;vertex_info, const std::shared_ptr&lt; PropertyGroup &gt; &amp;property_group, const std::string &amp;prefix)'],['../classgrapha [...]
+  ['makeforlabels_414',['MakeForLabels',['../classgraphar_1_1_vertex_property_arrow_chunk_reader.html#a47723dd5327d91bcef4daac3d420133c',1,'graphar::VertexPropertyArrowChunkReader']]],
+  ['makeforproperties_415',['MakeForProperties',['../classgraphar_1_1_vertex_property_arrow_chunk_reader.html#aa36c5c1513f039b1beef2c624ea20b39',1,'graphar::VertexPropertyArrowChunkReader']]],
+  ['message_416',['message',['../classgraphar_1_1_status.html#a11279464d73e7362db85e08935546022',1,'graphar::Status']]]
 ];
diff --git a/docs/cpp/search/functions_c.js b/docs/cpp/search/functions_c.js
index fada89e..d909c0e 100644
--- a/docs/cpp/search/functions_c.js
+++ b/docs/cpp/search/functions_c.js
@@ -1,6 +1,6 @@
 var searchData=
 [
-  ['next_5fchunk_413',['next_chunk',['../classgraphar_1_1_vertex_property_arrow_chunk_reader.html#a59f55d130f24a2b1db95426a35ec36ea',1,'graphar::VertexPropertyArrowChunkReader::next_chunk()'],['../classgraphar_1_1_adj_list_arrow_chunk_reader.html#adb0f718d24f3bb97a50af1a6e0d67e4f',1,'graphar::AdjListArrowChunkReader::next_chunk()'],['../classgraphar_1_1_adj_list_offset_arrow_chunk_reader.html#a9af41ec01bdf0fb689fa486001872cae',1,'graphar::AdjListOffsetArrowChunkReader::next_chunk()'],['. [...]
-  ['next_5fdst_414',['next_dst',['../classgraphar_1_1_edge_iter.html#ac44117e60ce9394cde69cfdadb47eaaa',1,'graphar::EdgeIter::next_dst()'],['../classgraphar_1_1_edge_iter.html#ac0dbae4d4b02a44c95fbc04f89ecfff6',1,'graphar::EdgeIter::next_dst(IdType id)']]],
-  ['next_5fsrc_415',['next_src',['../classgraphar_1_1_edge_iter.html#a0288483d16ed0b62a7a1d1f79f923a6e',1,'graphar::EdgeIter::next_src()'],['../classgraphar_1_1_edge_iter.html#a8b76363f8d8da3fcd23f22724b688c0b',1,'graphar::EdgeIter::next_src(IdType id)']]]
+  ['next_5fchunk_417',['next_chunk',['../classgraphar_1_1_vertex_property_arrow_chunk_reader.html#a59f55d130f24a2b1db95426a35ec36ea',1,'graphar::VertexPropertyArrowChunkReader::next_chunk()'],['../classgraphar_1_1_adj_list_arrow_chunk_reader.html#adb0f718d24f3bb97a50af1a6e0d67e4f',1,'graphar::AdjListArrowChunkReader::next_chunk()'],['../classgraphar_1_1_adj_list_offset_arrow_chunk_reader.html#a9af41ec01bdf0fb689fa486001872cae',1,'graphar::AdjListOffsetArrowChunkReader::next_chunk()'],['. [...]
+  ['next_5fdst_418',['next_dst',['../classgraphar_1_1_edge_iter.html#ac44117e60ce9394cde69cfdadb47eaaa',1,'graphar::EdgeIter::next_dst()'],['../classgraphar_1_1_edge_iter.html#ac0dbae4d4b02a44c95fbc04f89ecfff6',1,'graphar::EdgeIter::next_dst(IdType id)']]],
+  ['next_5fsrc_419',['next_src',['../classgraphar_1_1_edge_iter.html#a0288483d16ed0b62a7a1d1f79f923a6e',1,'graphar::EdgeIter::next_src()'],['../classgraphar_1_1_edge_iter.html#a8b76363f8d8da3fcd23f22724b688c0b',1,'graphar::EdgeIter::next_src(IdType id)']]]
 ];
diff --git a/docs/cpp/search/functions_d.js b/docs/cpp/search/functions_d.js
index b91350e..c47a7cd 100644
--- a/docs/cpp/search/functions_d.js
+++ b/docs/cpp/search/functions_d.js
@@ -1,14 +1,14 @@
 var searchData=
 [
-  ['obdedgescollection_416',['OBDEdgesCollection',['../classgraphar_1_1_o_b_d_edges_collection.html#ad2792d9ed115a0201cdb0d42c9644191',1,'graphar::OBDEdgesCollection']]],
-  ['obsedgecollection_417',['OBSEdgeCollection',['../classgraphar_1_1_o_b_s_edge_collection.html#a1900914bc9725cc2bdcaaa080df3311b',1,'graphar::OBSEdgeCollection']]],
-  ['ok_418',['ok',['../classgraphar_1_1_status.html#a401ecb877b8439e3006552f46869e6f0',1,'graphar::Status']]],
-  ['ok_419',['OK',['../classgraphar_1_1_status.html#ad92f5c41a661d4f468390e39da90f881',1,'graphar::Status']]],
-  ['operator_21_3d_420',['operator!=',['../classgraphar_1_1_vertex_iter.html#abd27c3767cba502e517ae714d9a7d2f3',1,'graphar::VertexIter::operator!=()'],['../classgraphar_1_1_edge_iter.html#a2303e681b0e2b313f987f9e043a17108',1,'graphar::EdgeIter::operator!=()']]],
-  ['operator_2a_421',['operator*',['../classgraphar_1_1_vertex_iter.html#a323f4fb318715bbc2c2b36f1c396942f',1,'graphar::VertexIter::operator*()'],['../classgraphar_1_1_edge_iter.html#a24e9941ae0a452eb999f033646d99bb3',1,'graphar::EdgeIter::operator*()']]],
-  ['operator_2b_422',['operator+',['../classgraphar_1_1_vertex_iter.html#a9543939eb727f6f2e338db3c929b1977',1,'graphar::VertexIter']]],
-  ['operator_2b_2b_423',['operator++',['../classgraphar_1_1_vertex_iter.html#a72a826f0253efa19488d842ecd8cc3ee',1,'graphar::VertexIter::operator++()'],['../classgraphar_1_1_edge_iter.html#ad8d7a3ae222749044b09c33345f97ca1',1,'graphar::EdgeIter::operator++(int)'],['../classgraphar_1_1_edge_iter.html#a13b6b8976181a14a1530cb3c2dfcafbd',1,'graphar::EdgeIter::operator++()'],['../classgraphar_1_1_vertex_iter.html#a115a8829a2c73ce713795142ea07f56d',1,'graphar::VertexIter::operator++() noexcept']]],
-  ['operator_2b_3d_424',['operator+=',['../classgraphar_1_1_vertex_iter.html#ac78a2977e8a95e4cc29b343726661e56',1,'graphar::VertexIter']]],
-  ['operator_3d_425',['operator=',['../classgraphar_1_1_edge_iter.html#a7f7ace890614287ce41baa0f38f7941c',1,'graphar::EdgeIter::operator=()'],['../classgraphar_1_1_status.html#a2a5b813b0a187fcf753a9e14836bc966',1,'graphar::Status::operator=()'],['../classgraphar_1_1_info_version.html#a420d50bbca2a4f63fd9c5e9c481572e7',1,'graphar::InfoVersion::operator=()']]],
-  ['operator_3d_3d_426',['operator==',['../classgraphar_1_1_vertex_iter.html#a23b515734c79c7efed71c1aebf7ccf98',1,'graphar::VertexIter::operator==()'],['../classgraphar_1_1_edge_iter.html#adc8340322917c2efb14a31c8637a4a09',1,'graphar::EdgeIter::operator==()'],['../classgraphar_1_1_info_version.html#ad42b2b314d7948db0293821a1228a4b7',1,'graphar::InfoVersion::operator==()']]]
+  ['obdedgescollection_420',['OBDEdgesCollection',['../classgraphar_1_1_o_b_d_edges_collection.html#ad2792d9ed115a0201cdb0d42c9644191',1,'graphar::OBDEdgesCollection']]],
+  ['obsedgecollection_421',['OBSEdgeCollection',['../classgraphar_1_1_o_b_s_edge_collection.html#a1900914bc9725cc2bdcaaa080df3311b',1,'graphar::OBSEdgeCollection']]],
+  ['ok_422',['ok',['../classgraphar_1_1_status.html#a401ecb877b8439e3006552f46869e6f0',1,'graphar::Status']]],
+  ['ok_423',['OK',['../classgraphar_1_1_status.html#ad92f5c41a661d4f468390e39da90f881',1,'graphar::Status']]],
+  ['operator_21_3d_424',['operator!=',['../classgraphar_1_1_vertex_iter.html#abd27c3767cba502e517ae714d9a7d2f3',1,'graphar::VertexIter::operator!=()'],['../classgraphar_1_1_edge_iter.html#a2303e681b0e2b313f987f9e043a17108',1,'graphar::EdgeIter::operator!=()']]],
+  ['operator_2a_425',['operator*',['../classgraphar_1_1_vertex_iter.html#a323f4fb318715bbc2c2b36f1c396942f',1,'graphar::VertexIter::operator*()'],['../classgraphar_1_1_edge_iter.html#a24e9941ae0a452eb999f033646d99bb3',1,'graphar::EdgeIter::operator*()']]],
+  ['operator_2b_426',['operator+',['../classgraphar_1_1_vertex_iter.html#a9543939eb727f6f2e338db3c929b1977',1,'graphar::VertexIter']]],
+  ['operator_2b_2b_427',['operator++',['../classgraphar_1_1_vertex_iter.html#a72a826f0253efa19488d842ecd8cc3ee',1,'graphar::VertexIter::operator++()'],['../classgraphar_1_1_edge_iter.html#ad8d7a3ae222749044b09c33345f97ca1',1,'graphar::EdgeIter::operator++(int)'],['../classgraphar_1_1_edge_iter.html#a13b6b8976181a14a1530cb3c2dfcafbd',1,'graphar::EdgeIter::operator++()'],['../classgraphar_1_1_vertex_iter.html#a115a8829a2c73ce713795142ea07f56d',1,'graphar::VertexIter::operator++() noexcept']]],
+  ['operator_2b_3d_428',['operator+=',['../classgraphar_1_1_vertex_iter.html#ac78a2977e8a95e4cc29b343726661e56',1,'graphar::VertexIter']]],
+  ['operator_3d_429',['operator=',['../classgraphar_1_1_edge_iter.html#a7f7ace890614287ce41baa0f38f7941c',1,'graphar::EdgeIter::operator=()'],['../classgraphar_1_1_status.html#a2a5b813b0a187fcf753a9e14836bc966',1,'graphar::Status::operator=()'],['../classgraphar_1_1_info_version.html#a420d50bbca2a4f63fd9c5e9c481572e7',1,'graphar::InfoVersion::operator=()']]],
+  ['operator_3d_3d_430',['operator==',['../classgraphar_1_1_vertex_iter.html#a23b515734c79c7efed71c1aebf7ccf98',1,'graphar::VertexIter::operator==()'],['../classgraphar_1_1_edge_iter.html#adc8340322917c2efb14a31c8637a4a09',1,'graphar::EdgeIter::operator==()'],['../classgraphar_1_1_info_version.html#ad42b2b314d7948db0293821a1228a4b7',1,'graphar::InfoVersion::operator==()']]]
 ];
diff --git a/docs/cpp/search/functions_e.js b/docs/cpp/search/functions_e.js
index 80d0ec7..39cdef8 100644
--- a/docs/cpp/search/functions_e.js
+++ b/docs/cpp/search/functions_e.js
@@ -1,7 +1,7 @@
 var searchData=
 [
-  ['parse_427',['Parse',['../classgraphar_1_1_info_version.html#a6c149bd120118e7c6803dcac71a7a667',1,'graphar::InfoVersion']]],
-  ['property_428',['property',['../classgraphar_1_1_vertex.html#ac9ae3439dac97f46bc057a5908536792',1,'graphar::Vertex::property()'],['../classgraphar_1_1_edge.html#ad746d8f83ef691a52368e4b519d40027',1,'graphar::Edge::property()'],['../classgraphar_1_1_vertex_iter.html#a317f220a54470d5fee7e44d3578023e9',1,'graphar::VertexIter::property()'],['../classgraphar_1_1_edge_iter.html#ae74f5832d6d5ce3bbf5886da2eb2e293',1,'graphar::EdgeIter::property()']]],
-  ['propertygroup_429',['PropertyGroup',['../classgraphar_1_1_property_group.html#abb84d3d9d16e5efc52c96089a977c60d',1,'graphar::PropertyGroup']]],
-  ['propertygroupnum_430',['PropertyGroupNum',['../classgraphar_1_1_vertex_info.html#a7917824d18f7c84a02859f18b47e77fe',1,'graphar::VertexInfo::PropertyGroupNum()'],['../classgraphar_1_1_edge_info.html#aee914f2c4adf773c048daed0e93dbe32',1,'graphar::EdgeInfo::PropertyGroupNum()']]]
+  ['parse_431',['Parse',['../classgraphar_1_1_info_version.html#a6c149bd120118e7c6803dcac71a7a667',1,'graphar::InfoVersion']]],
+  ['property_432',['property',['../classgraphar_1_1_vertex.html#ac9ae3439dac97f46bc057a5908536792',1,'graphar::Vertex::property()'],['../classgraphar_1_1_edge.html#ad746d8f83ef691a52368e4b519d40027',1,'graphar::Edge::property()'],['../classgraphar_1_1_vertex_iter.html#a317f220a54470d5fee7e44d3578023e9',1,'graphar::VertexIter::property()'],['../classgraphar_1_1_edge_iter.html#ae74f5832d6d5ce3bbf5886da2eb2e293',1,'graphar::EdgeIter::property()']]],
+  ['propertygroup_433',['PropertyGroup',['../classgraphar_1_1_property_group.html#abb84d3d9d16e5efc52c96089a977c60d',1,'graphar::PropertyGroup']]],
+  ['propertygroupnum_434',['PropertyGroupNum',['../classgraphar_1_1_vertex_info.html#a7917824d18f7c84a02859f18b47e77fe',1,'graphar::VertexInfo::PropertyGroupNum()'],['../classgraphar_1_1_edge_info.html#aee914f2c4adf773c048daed0e93dbe32',1,'graphar::EdgeInfo::PropertyGroupNum()']]]
 ];
diff --git a/docs/cpp/search/functions_f.js b/docs/cpp/search/functions_f.js
index bd0829a..1557d8e 100644
--- a/docs/cpp/search/functions_f.js
+++ b/docs/cpp/search/functions_f.js
@@ -1,5 +1,9 @@
 var searchData=
 [
-  ['readfiletotable_431',['ReadFileToTable',['../classgraphar_1_1_file_system.html#acfd1a7452cf5d89826ac119b90949956',1,'graphar::FileSystem']]],
-  ['readfiletovalue_432',['ReadFileToValue',['../classgraphar_1_1_file_system.html#aa014a28119399836283a573c9abd97b7',1,'graphar::FileSystem']]]
+  ['readfiletotable_435',['ReadFileToTable',['../classgraphar_1_1_file_system.html#acfd1a7452cf5d89826ac119b90949956',1,'graphar::FileSystem']]],
+  ['readfiletovalue_436',['ReadFileToValue',['../classgraphar_1_1_file_system.html#aa014a28119399836283a573c9abd97b7',1,'graphar::FileSystem']]],
+  ['removeadjacentlist_437',['RemoveAdjacentList',['../classgraphar_1_1_edge_info.html#a7db36496a4cf0eb517b463de5caa125f',1,'graphar::EdgeInfo']]],
+  ['removeedge_438',['RemoveEdge',['../classgraphar_1_1_graph_info.html#acc0e018222ae59e749a52b3678e6529a',1,'graphar::GraphInfo']]],
+  ['removepropertygroup_439',['RemovePropertyGroup',['../classgraphar_1_1_vertex_info.html#a8432977087cbb207f65b91debc240119',1,'graphar::VertexInfo::RemovePropertyGroup()'],['../classgraphar_1_1_edge_info.html#a264853429b84060bbe36c671d5bc8963',1,'graphar::EdgeInfo::RemovePropertyGroup()']]],
+  ['removevertex_440',['RemoveVertex',['../classgraphar_1_1_graph_info.html#ad64a71966ca197ae14ea21ff8787b769',1,'graphar::GraphInfo']]]
 ];
diff --git a/docs/cpp/search/pages_0.js b/docs/cpp/search/pages_0.js
index 1090e16..19984ee 100644
--- a/docs/cpp/search/pages_0.js
+++ b/docs/cpp/search/pages_0.js
@@ -1,4 +1,4 @@
 var searchData=
 [
-  ['graphar_20c_2b_2b_484',['GraphAr C++',['../index.html',1,'']]]
+  ['graphar_20c_2b_2b_492',['GraphAr C++',['../index.html',1,'']]]
 ];
diff --git a/docs/index.html b/docs/index.html
index 4032a97..914c516 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -5,7 +5,7 @@
 <meta name="generator" content="Docusaurus v3.1.1">
 <title data-rh="true">Documentation | Apache GraphAr</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" property="og:url" content="https://graphar.apache.org/docs/"> [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache GraphAr Atom Feed"><link rel="stylesheet" href="/assets/css/styles.dfe66a1a.css">
-<script src="/assets/js/runtime~main.a1bcbcd5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.d09f585f.js" defer="defer"></script>
 <script src="/assets/js/main.fdbbf013.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
diff --git a/docs/java-ffi/member-search-index.zip b/docs/java-ffi/member-search-index.zip
index 88a9265..d3e3129 100644
Binary files a/docs/java-ffi/member-search-index.zip and b/docs/java-ffi/member-search-index.zip differ
diff --git a/docs/java-ffi/package-search-index.zip b/docs/java-ffi/package-search-index.zip
index a9dd441..020b66d 100644
Binary files a/docs/java-ffi/package-search-index.zip and b/docs/java-ffi/package-search-index.zip differ
diff --git a/docs/java-ffi/type-search-index.zip b/docs/java-ffi/type-search-index.zip
index e746f6d..37cc9d4 100644
Binary files a/docs/java-ffi/type-search-index.zip and b/docs/java-ffi/type-search-index.zip differ
diff --git a/docs/java-info/member-search-index.zip b/docs/java-info/member-search-index.zip
index 1dc6a32..8f4dfe7 100644
Binary files a/docs/java-info/member-search-index.zip and b/docs/java-info/member-search-index.zip differ
diff --git a/docs/java-info/package-search-index.zip b/docs/java-info/package-search-index.zip
index 13a4856..9ab0325 100644
Binary files a/docs/java-info/package-search-index.zip and b/docs/java-info/package-search-index.zip differ
diff --git a/docs/java-info/type-search-index.zip b/docs/java-info/type-search-index.zip
index 0a694b4..8eebe93 100644
Binary files a/docs/java-info/type-search-index.zip and b/docs/java-info/type-search-index.zip differ
diff --git a/docs/libraries/cpp/examples/bgl/index.html b/docs/libraries/cpp/examples/bgl/index.html
index 2a0153a..df2dbff 100644
--- a/docs/libraries/cpp/examples/bgl/index.html
+++ b/docs/libraries/cpp/examples/bgl/index.html
@@ -5,7 +5,7 @@
 <meta name="generator" content="Docusaurus v3.1.1">
 <title data-rh="true">Co-Work with BGL | Apache GraphAr</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" property="og:url" content="https://graphar.apache.org/docs [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache GraphAr Atom Feed"><link rel="stylesheet" href="/assets/css/styles.dfe66a1a.css">
-<script src="/assets/js/runtime~main.a1bcbcd5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.d09f585f.js" defer="defer"></script>
 <script src="/assets/js/main.fdbbf013.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
diff --git a/docs/libraries/cpp/examples/graphscope/index.html b/docs/libraries/cpp/examples/graphscope/index.html
index d7bf89a..066ca95 100644
--- a/docs/libraries/cpp/examples/graphscope/index.html
+++ b/docs/libraries/cpp/examples/graphscope/index.html
@@ -5,7 +5,7 @@
 <meta name="generator" content="Docusaurus v3.1.1">
 <title data-rh="true">Integrate into GraphScope | Apache GraphAr</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" property="og:url" content="https://graphar.apache [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache GraphAr Atom Feed"><link rel="stylesheet" href="/assets/css/styles.dfe66a1a.css">
-<script src="/assets/js/runtime~main.a1bcbcd5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.d09f585f.js" defer="defer"></script>
 <script src="/assets/js/main.fdbbf013.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
diff --git a/docs/libraries/cpp/examples/out-of-core/index.html b/docs/libraries/cpp/examples/out-of-core/index.html
index 2fc1b06..c6227a0 100644
--- a/docs/libraries/cpp/examples/out-of-core/index.html
+++ b/docs/libraries/cpp/examples/out-of-core/index.html
@@ -5,7 +5,7 @@
 <meta name="generator" content="Docusaurus v3.1.1">
 <title data-rh="true">Out-of-core Graph Algorithms | Apache GraphAr</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" property="og:url" content="https://graphar.apa [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache GraphAr Atom Feed"><link rel="stylesheet" href="/assets/css/styles.dfe66a1a.css">
-<script src="/assets/js/runtime~main.a1bcbcd5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.d09f585f.js" defer="defer"></script>
 <script src="/assets/js/main.fdbbf013.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
diff --git a/docs/libraries/cpp/examples/snap-to-graphar/index.html b/docs/libraries/cpp/examples/snap-to-graphar/index.html
index 0076763..6a46504 100644
--- a/docs/libraries/cpp/examples/snap-to-graphar/index.html
+++ b/docs/libraries/cpp/examples/snap-to-graphar/index.html
@@ -5,7 +5,7 @@
 <meta name="generator" content="Docusaurus v3.1.1">
 <title data-rh="true">Convert SNAP Datasets to GraphAr Format | Apache GraphAr</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" property="og:url" content="https:// [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache GraphAr Atom Feed"><link rel="stylesheet" href="/assets/css/styles.dfe66a1a.css">
-<script src="/assets/js/runtime~main.a1bcbcd5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.d09f585f.js" defer="defer"></script>
 <script src="/assets/js/main.fdbbf013.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
diff --git a/docs/libraries/cpp/getting-started/index.html b/docs/libraries/cpp/getting-started/index.html
index 08a001d..809ca0d 100644
--- a/docs/libraries/cpp/getting-started/index.html
+++ b/docs/libraries/cpp/getting-started/index.html
@@ -5,7 +5,7 @@
 <meta name="generator" content="Docusaurus v3.1.1">
 <title data-rh="true">Getting Started | Apache GraphAr</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" property="og:url" content="https://graphar.apache.org/docs/ [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache GraphAr Atom Feed"><link rel="stylesheet" href="/assets/css/styles.dfe66a1a.css">
-<script src="/assets/js/runtime~main.a1bcbcd5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.d09f585f.js" defer="defer"></script>
 <script src="/assets/js/main.fdbbf013.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
diff --git a/docs/libraries/java/index.html b/docs/libraries/java/index.html
index 0269a3b..ab56fde 100644
--- a/docs/libraries/java/index.html
+++ b/docs/libraries/java/index.html
@@ -5,7 +5,7 @@
 <meta name="generator" content="Docusaurus v3.1.1">
 <title data-rh="true">Java Library | Apache GraphAr</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" property="og:url" content="https://graphar.apache.org/docs/lib [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache GraphAr Atom Feed"><link rel="stylesheet" href="/assets/css/styles.dfe66a1a.css">
-<script src="/assets/js/runtime~main.a1bcbcd5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.d09f585f.js" defer="defer"></script>
 <script src="/assets/js/main.fdbbf013.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
diff --git a/docs/libraries/java/info/getting-started/index.html b/docs/libraries/java/info/getting-started/index.html
index 556398b..e2f9539 100644
--- a/docs/libraries/java/info/getting-started/index.html
+++ b/docs/libraries/java/info/getting-started/index.html
@@ -5,7 +5,7 @@
 <meta name="generator" content="Docusaurus v3.1.1">
 <title data-rh="true">Getting Started with Info Module | Apache GraphAr</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" property="og:url" content="https://graphar [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache GraphAr Atom Feed"><link rel="stylesheet" href="/assets/css/styles.dfe66a1a.css">
-<script src="/assets/js/runtime~main.a1bcbcd5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.d09f585f.js" defer="defer"></script>
 <script src="/assets/js/main.fdbbf013.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
diff --git a/docs/libraries/java/java-FFI/getting-started/index.html b/docs/libraries/java/java-FFI/getting-started/index.html
index 7510c85..4b9e34a 100644
--- a/docs/libraries/java/java-FFI/getting-started/index.html
+++ b/docs/libraries/java/java-FFI/getting-started/index.html
@@ -5,7 +5,7 @@
 <meta name="generator" content="Docusaurus v3.1.1">
 <title data-rh="true">Getting Started with java FFI Module | Apache GraphAr</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" property="og:url" content="https://gra [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache GraphAr Atom Feed"><link rel="stylesheet" href="/assets/css/styles.dfe66a1a.css">
-<script src="/assets/js/runtime~main.a1bcbcd5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.d09f585f.js" defer="defer"></script>
 <script src="/assets/js/main.fdbbf013.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
diff --git a/docs/libraries/java/java-FFI/how_to_develop_java_ffi/index.html b/docs/libraries/java/java-FFI/how_to_develop_java_ffi/index.html
index d1ff7b4..eb182b1 100644
--- a/docs/libraries/java/java-FFI/how_to_develop_java_ffi/index.html
+++ b/docs/libraries/java/java-FFI/how_to_develop_java_ffi/index.html
@@ -5,7 +5,7 @@
 <meta name="generator" content="Docusaurus v3.1.1">
 <title data-rh="true">How to Develop Java FFI Library | Apache GraphAr</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" property="og:url" content="https://graphar. [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache GraphAr Atom Feed"><link rel="stylesheet" href="/assets/css/styles.dfe66a1a.css">
-<script src="/assets/js/runtime~main.a1bcbcd5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.d09f585f.js" defer="defer"></script>
 <script src="/assets/js/main.fdbbf013.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
diff --git a/docs/libraries/pyspark/how-to/index.html b/docs/libraries/pyspark/how-to/index.html
index 6b5952e..1ef78fa 100644
--- a/docs/libraries/pyspark/how-to/index.html
+++ b/docs/libraries/pyspark/how-to/index.html
@@ -5,7 +5,7 @@
 <meta name="generator" content="Docusaurus v3.1.1">
 <title data-rh="true">How to use GraphAr PySpark package | Apache GraphAr</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" property="og:url" content="https://graph [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache GraphAr Atom Feed"><link rel="stylesheet" href="/assets/css/styles.dfe66a1a.css">
-<script src="/assets/js/runtime~main.a1bcbcd5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.d09f585f.js" defer="defer"></script>
 <script src="/assets/js/main.fdbbf013.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
diff --git a/docs/libraries/pyspark/index.html b/docs/libraries/pyspark/index.html
index c45a2b4..b699f8d 100644
--- a/docs/libraries/pyspark/index.html
+++ b/docs/libraries/pyspark/index.html
@@ -5,7 +5,7 @@
 <meta name="generator" content="Docusaurus v3.1.1">
 <title data-rh="true">PySpark Library | Apache GraphAr</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" property="og:url" content="https://graphar.apache.org/docs/ [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache GraphAr Atom Feed"><link rel="stylesheet" href="/assets/css/styles.dfe66a1a.css">
-<script src="/assets/js/runtime~main.a1bcbcd5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.d09f585f.js" defer="defer"></script>
 <script src="/assets/js/main.fdbbf013.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
diff --git a/docs/libraries/spark/examples/index.html b/docs/libraries/spark/examples/index.html
index 63c1af9..0ca6e46 100644
--- a/docs/libraries/spark/examples/index.html
+++ b/docs/libraries/spark/examples/index.html
@@ -5,7 +5,7 @@
 <meta name="generator" content="Docusaurus v3.1.1">
 <title data-rh="true">Examples | Apache GraphAr</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" property="og:url" content="https://graphar.apache.org/docs/librari [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache GraphAr Atom Feed"><link rel="stylesheet" href="/assets/css/styles.dfe66a1a.css">
-<script src="/assets/js/runtime~main.a1bcbcd5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.d09f585f.js" defer="defer"></script>
 <script src="/assets/js/main.fdbbf013.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
diff --git a/docs/libraries/spark/index.html b/docs/libraries/spark/index.html
index 14c9c6f..293c7ab 100644
--- a/docs/libraries/spark/index.html
+++ b/docs/libraries/spark/index.html
@@ -5,7 +5,7 @@
 <meta name="generator" content="Docusaurus v3.1.1">
 <title data-rh="true">Spark Library | Apache GraphAr</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" property="og:url" content="https://graphar.apache.org/docs/li [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache GraphAr Atom Feed"><link rel="stylesheet" href="/assets/css/styles.dfe66a1a.css">
-<script src="/assets/js/runtime~main.a1bcbcd5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.d09f585f.js" defer="defer"></script>
 <script src="/assets/js/main.fdbbf013.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
diff --git a/docs/overview/concepts/index.html b/docs/overview/concepts/index.html
index 24be20d..db5c904 100644
--- a/docs/overview/concepts/index.html
+++ b/docs/overview/concepts/index.html
@@ -5,7 +5,7 @@
 <meta name="generator" content="Docusaurus v3.1.1">
 <title data-rh="true">Concepts | Apache GraphAr</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" property="og:url" content="https://graphar.apache.org/docs/overvie [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache GraphAr Atom Feed"><link rel="stylesheet" href="/assets/css/styles.dfe66a1a.css">
-<script src="/assets/js/runtime~main.a1bcbcd5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.d09f585f.js" defer="defer"></script>
 <script src="/assets/js/main.fdbbf013.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
diff --git a/docs/overview/index.html b/docs/overview/index.html
index 83666c9..43777f8 100644
--- a/docs/overview/index.html
+++ b/docs/overview/index.html
@@ -5,7 +5,7 @@
 <meta name="generator" content="Docusaurus v3.1.1">
 <title data-rh="true">Overview | Apache GraphAr</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" property="og:url" content="https://graphar.apache.org/docs/overvie [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache GraphAr Atom Feed"><link rel="stylesheet" href="/assets/css/styles.dfe66a1a.css">
-<script src="/assets/js/runtime~main.a1bcbcd5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.d09f585f.js" defer="defer"></script>
 <script src="/assets/js/main.fdbbf013.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
diff --git a/docs/overview/motivation/index.html b/docs/overview/motivation/index.html
index a5fccbf..b46528c 100644
--- a/docs/overview/motivation/index.html
+++ b/docs/overview/motivation/index.html
@@ -5,7 +5,7 @@
 <meta name="generator" content="Docusaurus v3.1.1">
 <title data-rh="true">Motivation | Apache GraphAr</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" property="og:url" content="https://graphar.apache.org/docs/overv [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache GraphAr Atom Feed"><link rel="stylesheet" href="/assets/css/styles.dfe66a1a.css">
-<script src="/assets/js/runtime~main.a1bcbcd5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.d09f585f.js" defer="defer"></script>
 <script src="/assets/js/main.fdbbf013.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
diff --git a/docs/specification/format/index.html b/docs/specification/format/index.html
index ea8e504..9f8d2e5 100644
--- a/docs/specification/format/index.html
+++ b/docs/specification/format/index.html
@@ -5,7 +5,7 @@
 <meta name="generator" content="Docusaurus v3.1.1">
 <title data-rh="true">Format Specification | Apache GraphAr</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" property="og:url" content="https://graphar.apache.org/ [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache GraphAr Atom Feed"><link rel="stylesheet" href="/assets/css/styles.dfe66a1a.css">
-<script src="/assets/js/runtime~main.a1bcbcd5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.d09f585f.js" defer="defer"></script>
 <script src="/assets/js/main.fdbbf013.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
diff --git a/docs/specification/implementation-status/index.html b/docs/specification/implementation-status/index.html
index 0668a01..cd06c37 100644
--- a/docs/specification/implementation-status/index.html
+++ b/docs/specification/implementation-status/index.html
@@ -5,7 +5,7 @@
 <meta name="generator" content="Docusaurus v3.1.1">
 <title data-rh="true">Implementation Status | Apache GraphAr</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" property="og:url" content="https://graphar.apache.org [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache GraphAr Atom Feed"><link rel="stylesheet" href="/assets/css/styles.dfe66a1a.css">
-<script src="/assets/js/runtime~main.a1bcbcd5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.d09f585f.js" defer="defer"></script>
 <script src="/assets/js/main.fdbbf013.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
@@ -33,7 +33,7 @@ All libraries currently follow version 1.0.0 of the GraphAr format.</p>
 <p>Supported operations in Property:</p>
 <table><thead><tr><th>Property operation</th><th>C++</th><th>Java</th><th>Scala</th><th>Python</th></tr></thead><tbody><tr><td>create</td><td>✓</td><td>✓ (1)</td><td>✓</td><td>✓ (2)</td></tr><tr><td>get_name</td><td>✓</td><td>✓ (1)</td><td>✓</td><td>✓ (2)</td></tr><tr><td>is_primary_key</td><td>✓</td><td>✓ (1)</td><td>✓</td><td>✓ (2)</td></tr><tr><td>is_nullable</td><td>✓</td><td></td><td>✓</td><td>✓ (2)</td></tr></tbody></table>
 <h2 class="anchor anchorWithStickyNavbar_qibj" id="property-group">Property Group<a href="#property-group" class="hash-link" aria-label="Direct link to Property Group" title="Direct link to Property Group">​</a></h2>
-<table><thead><tr><th>Property Group (operation)</th><th>C++</th><th>Java (1)</th><th>Scala</th><th>Python (2)</th></tr></thead><tbody><tr><td>create</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td></tr><tr><td>add property</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td></tr><tr><td>remove property</td><td></td><td></td><td></td><td></td></tr><tr><td>get properties</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td></tr><tr><td>check property</td><td>✓</td><td>✓</td><td></td><td></td></tr><tr><td>get [...]
+<table><thead><tr><th>Property Group (operation)</th><th>C++</th><th>Java (1)</th><th>Scala</th><th>Python (2)</th></tr></thead><tbody><tr><td>create</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td></tr><tr><td>add property</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td></tr><tr><td>remove property</td><td>✓</td><td></td><td></td><td></td></tr><tr><td>get properties</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td></tr><tr><td>check property</td><td>✓</td><td>✓</td><td></td><td></td></tr><tr><td>ge [...]
 <h2 class="anchor anchorWithStickyNavbar_qibj" id="adjacency-list">Adjacency List<a href="#adjacency-list" class="hash-link" aria-label="Direct link to Adjacency List" title="Direct link to Adjacency List">​</a></h2>
 <table><thead><tr><th>Adjacency List (type)</th><th>C++</th><th>Java</th><th>Scala</th><th>Python</th></tr></thead><tbody><tr><td>CSR</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td></tr><tr><td>CSC</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td></tr><tr><td>COO</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td></tr></tbody></table>
 <p>Supported operations in Adjacency List:</p>
@@ -46,19 +46,19 @@ All libraries currently follow version 1.0.0 of the GraphAr format.</p>
 <li><em>tag</em> is the vertex tag, which is tag or category for the vertex.</li>
 </ul></div></div>
 <p>Supported operations in Vertex Info:</p>
-<table><thead><tr><th>Vertex Info (operation)</th><th>C++</th><th>Java (1)</th><th>Scala</th><th>Python (2)</th></tr></thead><tbody><tr><td>create</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td></tr><tr><td>add group</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td></tr><tr><td>remove group</td><td></td><td></td><td></td><td></td></tr><tr><td>get label</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td></tr><tr><td>get chunk size</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td></tr><tr><td>get groups</td>< [...]
+<table><thead><tr><th>Vertex Info (operation)</th><th>C++</th><th>Java (1)</th><th>Scala</th><th>Python (2)</th></tr></thead><tbody><tr><td>create</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td></tr><tr><td>add group</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td></tr><tr><td>remove group</td><td>✓</td><td></td><td></td><td></td></tr><tr><td>get label</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td></tr><tr><td>get chunk size</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td></tr><tr><td>get groups</td> [...]
 <h2 class="anchor anchorWithStickyNavbar_qibj" id="edge">Edge<a href="#edge" class="hash-link" aria-label="Direct link to Edge" title="Direct link to Edge">​</a></h2>
 <p>Edge features:</p>
 <table><thead><tr><th>Edge feature</th><th>C++</th><th>Java</th><th>Scala</th><th>Python</th></tr></thead><tbody><tr><td>label</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td></tr><tr><td>chunk based</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td></tr><tr><td>property group</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td></tr><tr><td>adjacent list</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td></tr><tr><td>directed</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td></tr></tbody></table>
 <p>Supported operations in Edge Info:</p>
-<table><thead><tr><th>Edge Info (operation)</th><th>C++</th><th>Java (1)</th><th>Scala</th><th>Python (2)</th></tr></thead><tbody><tr><td>create</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td></tr><tr><td>add group</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td></tr><tr><td>remove group</td><td></td><td></td><td></td><td></td></tr><tr><td>add adj list</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td></tr><tr><td>remove adj list</td><td></td><td></td><td></td><td></td></tr><tr><td>get label</td><td> [...]
+<table><thead><tr><th>Edge Info (operation)</th><th>C++</th><th>Java (1)</th><th>Scala</th><th>Python (2)</th></tr></thead><tbody><tr><td>create</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td></tr><tr><td>add group</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td></tr><tr><td>remove group</td><td>✓</td><td></td><td></td><td></td></tr><tr><td>add adj list</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td></tr><tr><td>remove adj list</td><td>✓</td><td></td><td></td><td></td></tr><tr><td>get label</td><t [...]
 <div class="theme-admonition theme-admonition-note admonition_Q5_n alert alert--secondary"><div class="admonitionHeading_X17j"><span class="admonitionIcon_AlVM"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.6 [...]
 <li><em>&lt;source label, label, dest label&gt;</em> is the unique identifier for the edge type.</li>
 </ul></div></div>
 <h2 class="anchor anchorWithStickyNavbar_qibj" id="graph">Graph<a href="#graph" class="hash-link" aria-label="Direct link to Graph" title="Direct link to Graph">​</a></h2>
 <table><thead><tr><th>Graph</th><th>C++</th><th>Java</th><th>Scala</th><th>Python</th></tr></thead><tbody><tr><td>labeled vertex (with property)</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td></tr><tr><td>labeled edge (with property)</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td></tr><tr><td>extra info</td><td>✓</td><td></td><td></td><td></td></tr></tbody></table>
 <p>Supported operations in Graph Info:</p>
-<table><thead><tr><th>Graph Info (operation)</th><th>C++</th><th>Java (1)</th><th>Scala</th><th>Python (2)</th></tr></thead><tbody><tr><td>create</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td></tr><tr><td>add vertex</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td></tr><tr><td>remove vertex</td><td></td><td></td><td></td><td></td></tr><tr><td>add edge</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td></tr><tr><td>remove edge</td><td></td><td></td><td></td><td></td></tr><tr><td>get name</td><td>✓</td> [...]
+<table><thead><tr><th>Graph Info (operation)</th><th>C++</th><th>Java (1)</th><th>Scala</th><th>Python (2)</th></tr></thead><tbody><tr><td>create</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td></tr><tr><td>add vertex</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td></tr><tr><td>remove vertex</td><td>✓</td><td></td><td></td><td></td></tr><tr><td>add edge</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td></tr><tr><td>remove edge</td><td>✓</td><td></td><td></td><td></td></tr><tr><td>get name</td><td>✓</t [...]
 <div class="theme-admonition theme-admonition-note admonition_Q5_n alert alert--secondary"><div class="admonitionHeading_X17j"><span class="admonitionIcon_AlVM"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.6 [...]
 <li>
 <p>(1) Through fastFFI bindings to the GraphAr C++ library.</p>
diff --git a/download/index.html b/download/index.html
index f9a6ac3..0fdfde6 100644
--- a/download/index.html
+++ b/download/index.html
@@ -5,7 +5,7 @@
 <meta name="generator" content="Docusaurus v3.1.1">
 <title data-rh="true">Apache GraphAr(incubating) Downloads | Apache GraphAr</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" property="og:url" content="https://gra [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache GraphAr Atom Feed"><link rel="stylesheet" href="/assets/css/styles.dfe66a1a.css">
-<script src="/assets/js/runtime~main.a1bcbcd5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.d09f585f.js" defer="defer"></script>
 <script src="/assets/js/main.fdbbf013.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
diff --git a/index.html b/index.html
index 4721076..cb6fded 100644
--- a/index.html
+++ b/index.html
@@ -5,7 +5,7 @@
 <meta name="generator" content="Docusaurus v3.1.1">
 <title data-rh="true">Apache GraphAr | Apache GraphAr</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://graphar.apache.org/img/social-card.png"><meta data-rh="true" property="og:url" content="https://graphar.apache.org/"><met [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache GraphAr Atom Feed"><link rel="stylesheet" href="/assets/css/styles.dfe66a1a.css">
-<script src="/assets/js/runtime~main.a1bcbcd5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.d09f585f.js" defer="defer"></script>
 <script src="/assets/js/main.fdbbf013.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@graphar.apache.org
For additional commands, e-mail: commits-help@graphar.apache.org