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 2024/07/02 05:31:27 UTC

(incubator-graphar-website) branch asf-site updated: deploy: 6964d0f24393b9216551e97b6b12d2d6264c9abd

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 2a09f7b  deploy: 6964d0f24393b9216551e97b6b12d2d6264c9abd
2a09f7b is described below

commit 2a09f7bb03f568ba260077e6bf22d55793d5a2a4
Author: acezen <ac...@users.noreply.github.com>
AuthorDate: Tue Jul 2 05:31:22 2024 +0000

    deploy: 6964d0f24393b9216551e97b6b12d2d6264c9abd
---
 404.html                                           |   2 +-
 assets/js/209227ae.a84deb0f.js                     |   1 +
 assets/js/209227ae.ea5ec1ea.js                     |   1 -
 assets/js/e9c63600.f1eeff98.js                     |   1 +
 assets/js/e9c63600.ff9202a1.js                     |   1 -
 ...e~main.939567da.js => runtime~main.7ae201c8.js} |   2 +-
 blog/archive/index.html                            |   2 +-
 blog/demo-blog-post/index.html                     |   2 +-
 blog/index.html                                    |   2 +-
 blog/tags/graphar/index.html                       |   2 +-
 blog/tags/index.html                               |   2 +-
 community/category/committers/index.html           |   2 +-
 community/category/reference/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/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_file_system.html         |  12 +-
 docs/cpp/file__type_8h_source.html                 |  38 +-
 docs/cpp/filesystem_8cc_source.html                | 452 +++++++++++----------
 docs/cpp/filesystem_8h_source.html                 |  12 +-
 docs/cpp/fwd_8h_source.html                        |   2 +-
 docs/index.html                                    |   2 +-
 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/how_to_develop_java/index.html |   2 +-
 docs/libraries/java/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/pyspark/graphar_pyspark/enums.html            | 275 +++++++------
 docs/pyspark/graphar_pyspark/graph.html            |   8 +-
 docs/pyspark/search.js                             |   2 +-
 docs/spark/index.js                                |   2 +-
 docs/spark/org/apache/graphar/FileType$.html       |  16 +
 docs/specification/format/index.html               |   2 +-
 .../specification/implementation-status/index.html |  12 +-
 download/index.html                                |   9 +-
 index.html                                         |   2 +-
 51 files changed, 477 insertions(+), 437 deletions(-)

diff --git a/404.html b/404.html
index 5079ce0..a0712ea 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.939567da.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.7ae201c8.js" defer="defer"></script>
 <script src="/assets/js/main.812b5fef.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
diff --git a/assets/js/209227ae.a84deb0f.js b/assets/js/209227ae.a84deb0f.js
new file mode 100644
index 0000000..bee7e67
--- /dev/null
+++ b/assets/js/209227ae.a84deb0f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkapache_website_template=self.webpackChunkapache_website_template||[]).push([[6611],{2622:(e,a,t)=>{t.r(a),t.d(a,{assets:()=>c,contentTitle:()=>i,default:()=>d,frontMatter:()=>n,metadata:()=>h,toc:()=>l});var r=t(1527),s=t(395);const n={},i="Apache GraphAr(incubating) Downloads",h={type:"mdx",permalink:"/download",source:"@site/src/pages/download.md",title:"Apache GraphAr(incubating) Downloads",description:"The official Apache GraphAr (incubating) releases a [...]
\ No newline at end of file
diff --git a/assets/js/209227ae.ea5ec1ea.js b/assets/js/209227ae.ea5ec1ea.js
deleted file mode 100644
index fff7c95..0000000
--- a/assets/js/209227ae.ea5ec1ea.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkapache_website_template=self.webpackChunkapache_website_template||[]).push([[6611],{2622:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>d,frontMatter:()=>r,metadata:()=>l,toc:()=>h});var n=a(1527),s=a(395);const r={},i="Apache GraphAr(incubating) Downloads",l={type:"mdx",permalink:"/download",source:"@site/src/pages/download.md",title:"Apache GraphAr(incubating) Downloads",description:"The official Apache GraphAr (incubating) releases a [...]
\ No newline at end of file
diff --git a/assets/js/e9c63600.f1eeff98.js b/assets/js/e9c63600.f1eeff98.js
new file mode 100644
index 0000000..0a2f2d7
--- /dev/null
+++ b/assets/js/e9c63600.f1eeff98.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 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/e9c63600.ff9202a1.js b/assets/js/e9c63600.ff9202a1.js
deleted file mode 100644
index 9db8481..0000000
--- a/assets/js/e9c63600.ff9202a1.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.939567da.js b/assets/js/runtime~main.7ae201c8.js
similarity index 97%
rename from assets/js/runtime~main.939567da.js
rename to assets/js/runtime~main.7ae201c8.js
index 2ece677..6214a88 100644
--- a/assets/js/runtime~main.939567da.js
+++ b/assets/js/runtime~main.7ae201c8.js
@@ -1 +1 @@
-(()=>{"use strict";var e,a,d,t,c,f={},r={};function b(e){var a=r[e];if(void 0!==a)return a.exports;var d=r[e]={id:e,loaded:!1,exports:{}};return f[e].call(d.exports,d,d.exports,b),d.loaded=!0,d.exports}b.m=f,b.c=r,e=[],b.O=(a,d,t,c)=>{if(!d){var f=1/0;for(i=0;i<e.length;i++){d=e[i][0],t=e[i][1],c=e[i][2];for(var r=!0,o=0;o<d.length;o++)(!1&c||f>=c)&&Object.keys(b.O).every((e=>b.O[e](d[o])))?d.splice(o--,1):(r=!1,c<f&&(f=c));if(r){e.splice(i--,1);var n=t();void 0!==n&&(a=n)}}return a}c=c| [...]
\ No newline at end of file
+(()=>{"use strict";var e,a,d,t,c,f={},r={};function b(e){var a=r[e];if(void 0!==a)return a.exports;var d=r[e]={id:e,loaded:!1,exports:{}};return f[e].call(d.exports,d,d.exports,b),d.loaded=!0,d.exports}b.m=f,b.c=r,e=[],b.O=(a,d,t,c)=>{if(!d){var f=1/0;for(i=0;i<e.length;i++){d=e[i][0],t=e[i][1],c=e[i][2];for(var r=!0,o=0;o<d.length;o++)(!1&c||f>=c)&&Object.keys(b.O).every((e=>b.O[e](d[o])))?d.splice(o--,1):(r=!1,c<f&&(f=c));if(r){e.splice(i--,1);var n=t();void 0!==n&&(a=n)}}return a}c=c| [...]
\ No newline at end of file
diff --git a/blog/archive/index.html b/blog/archive/index.html
index 268d195..13a1cf7 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.939567da.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.7ae201c8.js" defer="defer"></script>
 <script src="/assets/js/main.812b5fef.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 398aeb6..c728067 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.939567da.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.7ae201c8.js" defer="defer"></script>
 <script src="/assets/js/main.812b5fef.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
diff --git a/blog/index.html b/blog/index.html
index a87e03c..6884ea3 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.939567da.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.7ae201c8.js" defer="defer"></script>
 <script src="/assets/js/main.812b5fef.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 34d6f36..5fef5e0 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">One post 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.939567da.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.7ae201c8.js" defer="defer"></script>
 <script src="/assets/js/main.812b5fef.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
diff --git a/blog/tags/index.html b/blog/tags/index.html
index fe18784..25bd33e 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.939567da.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.7ae201c8.js" defer="defer"></script>
 <script src="/assets/js/main.812b5fef.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 e408841..e75922f 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.939567da.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.7ae201c8.js" defer="defer"></script>
 <script src="/assets/js/main.812b5fef.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 e7ba54a..20a049b 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.939567da.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.7ae201c8.js" defer="defer"></script>
 <script src="/assets/js/main.812b5fef.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 aab5078..72e3a46 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.939567da.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.7ae201c8.js" defer="defer"></script>
 <script src="/assets/js/main.812b5fef.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 d275cd0..6310a84 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.939567da.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.7ae201c8.js" defer="defer"></script>
 <script src="/assets/js/main.812b5fef.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 63521ec..5f8d2ee 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.939567da.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.7ae201c8.js" defer="defer"></script>
 <script src="/assets/js/main.812b5fef.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
diff --git a/community/development/index.html b/community/development/index.html
index 0f19ab4..f5c54ed 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.939567da.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.7ae201c8.js" defer="defer"></script>
 <script src="/assets/js/main.812b5fef.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
diff --git a/community/index.html b/community/index.html
index 426b18b..bb3a09b 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.939567da.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.7ae201c8.js" defer="defer"></script>
 <script src="/assets/js/main.812b5fef.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 e6d9107..a0b66a9 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.939567da.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.7ae201c8.js" defer="defer"></script>
 <script src="/assets/js/main.812b5fef.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 41ae35a..488f393 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.939567da.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.7ae201c8.js" defer="defer"></script>
 <script src="/assets/js/main.812b5fef.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 5babe34..b61c2c6 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.939567da.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.7ae201c8.js" defer="defer"></script>
 <script src="/assets/js/main.812b5fef.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 b40e02e..16b39d1 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.939567da.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.7ae201c8.js" defer="defer"></script>
 <script src="/assets/js/main.812b5fef.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
diff --git a/docs/cpp/classgraphar_1_1_file_system.html b/docs/cpp/classgraphar_1_1_file_system.html
index 0b52b14..6380609 100644
--- a/docs/cpp/classgraphar_1_1_file_system.html
+++ b/docs/cpp/classgraphar_1_1_file_system.html
@@ -186,7 +186,7 @@ template&lt;&gt; </td></tr>
 <p>Copy a file.</p>
 <p>If the destination exists and is a directory, an <a class="el" href="classgraphar_1_1_status.html#a521553014a9f2a6d44f5d71a91a3cb72">Status::ArrowError</a> is returned. Otherwise, it is replaced. </p>
 
-<p class="definition">Definition at line <a class="el" href="filesystem_8cc_source.html#l00251">251</a> of file <a class="el" href="filesystem_8cc_source.html">filesystem.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="filesystem_8cc_source.html#l00253">253</a> of file <a class="el" href="filesystem_8cc_source.html">filesystem.cc</a>.</p>
 
 </div>
 </div>
@@ -226,7 +226,7 @@ template&lt;&gt; </td></tr>
 <p>Get the number of file of a directory.</p>
 <p>the file is not pure file, it can be a directory or other type of file. </p>
 
-<p class="definition">Definition at line <a class="el" href="filesystem_8cc_source.html#l00260">260</a> of file <a class="el" href="filesystem_8cc_source.html">filesystem.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="filesystem_8cc_source.html#l00262">262</a> of file <a class="el" href="filesystem_8cc_source.html">filesystem.cc</a>.</p>
 
 </div>
 </div>
@@ -281,7 +281,7 @@ template&lt;&gt; </td></tr>
 </dl>
 <dl class="section return"><dt>Returns</dt><dd>A Result containing a std::shared_ptr to an arrow::Table if successful, or an error <a class="el" href="classgraphar_1_1_status.html" title="Status outcome object (success or error)">Status</a> if unsuccessful. </dd></dl>
 
-<p class="definition">Definition at line <a class="el" href="filesystem_8cc_source.html#l00099">99</a> of file <a class="el" href="filesystem_8cc_source.html">filesystem.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="filesystem_8cc_source.html#l00101">101</a> of file <a class="el" href="filesystem_8cc_source.html">filesystem.cc</a>.</p>
 
 </div>
 </div>
@@ -326,7 +326,7 @@ template&lt;typename T &gt; </div>
 </dl>
 <dl class="section return"><dt>Returns</dt><dd>A Result containing the value if successful, or an error <a class="el" href="classgraphar_1_1_status.html" title="Status outcome object (success or error)">Status</a> if unsuccessful. </dd></dl>
 
-<p class="definition">Definition at line <a class="el" href="filesystem_8cc_source.html#l00162">162</a> of file <a class="el" href="filesystem_8cc_source.html">filesystem.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="filesystem_8cc_source.html#l00164">164</a> of file <a class="el" href="filesystem_8cc_source.html">filesystem.cc</a>.</p>
 
 </div>
 </div>
@@ -381,7 +381,7 @@ template&lt;typename T &gt; </div>
 </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> indicating OK if successful, or an error if unsuccessful. </dd></dl>
 
-<p class="definition">Definition at line <a class="el" href="filesystem_8cc_source.html#l00207">207</a> of file <a class="el" href="filesystem_8cc_source.html">filesystem.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="filesystem_8cc_source.html#l00209">209</a> of file <a class="el" href="filesystem_8cc_source.html">filesystem.cc</a>.</p>
 
 </div>
 </div>
@@ -437,7 +437,7 @@ template&lt;typename T &gt; </div>
 </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> indicating OK if successful, or an error if unsuccessful. </dd></dl>
 
-<p class="definition">Definition at line <a class="el" href="filesystem_8cc_source.html#l00184">184</a> of file <a class="el" href="filesystem_8cc_source.html">filesystem.cc</a>.</p>
+<p class="definition">Definition at line <a class="el" href="filesystem_8cc_source.html#l00186">186</a> of file <a class="el" href="filesystem_8cc_source.html">filesystem.cc</a>.</p>
 
 </div>
 </div>
diff --git a/docs/cpp/file__type_8h_source.html b/docs/cpp/file__type_8h_source.html
index 4c480d1..daacf45 100644
--- a/docs/cpp/file__type_8h_source.html
+++ b/docs/cpp/file__type_8h_source.html
@@ -103,24 +103,26 @@ $(function() {
 <div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="keyword">static</span> <span class="keyword">inline</span> FileType StringToFileType(<span class="keyword">const</span> std::string&amp; str) {</div>
 <div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;  <span class="keyword">static</span> <span class="keyword">const</span> std::map&lt;std::string, FileType&gt; str2file_type{</div>
 <div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;      {<span class="stringliteral">&quot;csv&quot;</span>, FileType::CSV},</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;      {<span class="stringliteral">&quot;parquet&quot;</span>, FileType::PARQUET},</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;      {<span class="stringliteral">&quot;orc&quot;</span>, FileType::ORC}};</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;  <span class="keywordflow">try</span> {</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;    <span class="keywordflow">return</span> str2file_type.at(str.c_str());</div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;  } <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception&amp; e) {</div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;    <span class="keywordflow">throw</span> std::runtime_error(<span class="stringliteral">&quot;KeyError: &quot;</span> + str);</div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;  }</div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;}</div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160; </div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<span class="keyword">static</span> <span class="keyword">inline</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* FileTypeToString(FileType file_type) {</div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;  <span class="keyword">static</span> <span class="keyword">const</span> std::map&lt;FileType, const char*&gt; file_type2string{</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;      {FileType::CSV, <span class="stringliteral">&quot;csv&quot;</span>},</div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;      {FileType::PARQUET, <span class="stringliteral">&quot;parquet&quot;</span>},</div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;      {FileType::ORC, <span class="stringliteral">&quot;orc&quot;</span>}};</div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;  <span class="keywordflow">return</span> file_type2string.at(file_type);</div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;}</div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160; </div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;}  <span class="comment">// namespace graphar</span></div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;      {<span class="stringliteral">&quot;json&quot;</span>, FileType::JSON},</div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;      {<span class="stringliteral">&quot;parquet&quot;</span>, FileType::PARQUET},</div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;      {<span class="stringliteral">&quot;orc&quot;</span>, FileType::ORC}};</div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;  <span class="keywordflow">try</span> {</div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;    <span class="keywordflow">return</span> str2file_type.at(str.c_str());</div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;  } <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception&amp; e) {</div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;    <span class="keywordflow">throw</span> std::runtime_error(<span class="stringliteral">&quot;KeyError: &quot;</span> + str);</div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;  }</div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;}</div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160; </div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;<span class="keyword">static</span> <span class="keyword">inline</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* FileTypeToString(FileType file_type) {</div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;  <span class="keyword">static</span> <span class="keyword">const</span> std::map&lt;FileType, const char*&gt; file_type2string{</div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;      {FileType::CSV, <span class="stringliteral">&quot;csv&quot;</span>},</div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;      {FileType::JSON, <span class="stringliteral">&quot;json&quot;</span>},</div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;      {FileType::PARQUET, <span class="stringliteral">&quot;parquet&quot;</span>},</div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;      {FileType::ORC, <span class="stringliteral">&quot;orc&quot;</span>}};</div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;  <span class="keywordflow">return</span> file_type2string.at(file_type);</div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;}</div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160; </div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;}  <span class="comment">// namespace graphar</span></div>
 </div><!-- fragment --></div><!-- contents -->
 <!--
     Licensed to the Apache Software Foundation (ASF) under one
diff --git a/docs/cpp/filesystem_8cc_source.html b/docs/cpp/filesystem_8cc_source.html
index 5951e55..7d31ac7 100644
--- a/docs/cpp/filesystem_8cc_source.html
+++ b/docs/cpp/filesystem_8cc_source.html
@@ -163,232 +163,234 @@ $(function() {
 <div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;    <span class="keywordflow">return</span> std::make_shared&lt;ds::ParquetFileFormat&gt;();</div>
 <div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;  <span class="keywordflow">case</span> ORC:</div>
 <div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;    <span class="keywordflow">return</span> std::make_shared&lt;ds::OrcFileFormat&gt;();</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;  <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">nullptr</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; </div>
-<div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="classgraphar_1_1_file_system.html#acfd1a7452cf5d89826ac119b90949956">   99</a></span>&#160;Result&lt;std::shared_ptr&lt;arrow::Table&gt;&gt; <a class="code" href="classgraphar_1_1_file_system.html#acfd1a7452cf5d89826ac119b90949956">FileSystem::ReadFileToTable</a>(</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;    <span class="keyword">const</span> std::string&amp; path, FileType file_type,</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;    <span class="keyword">const</span> <a class="code" href="structgraphar_1_1util_1_1_filter_options.html">util::FilterOptions</a>&amp; options) <span class="keyword">const</span> noexcept {</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;  std::shared_ptr&lt;ds::FileFormat&gt; format = GetFileFormat(file_type);</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;  GAR_RETURN_ON_ARROW_ERROR_AND_ASSIGN(</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;      <span class="keyword">auto</span> factory, arrow::dataset::FileSystemDatasetFactory::Make(</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;                        arrow_fs_, {path}, format,</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;                        arrow::dataset::FileSystemFactoryOptions()));</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;  GAR_RETURN_ON_ARROW_ERROR_AND_ASSIGN(<span class="keyword">auto</span> dataset, factory-&gt;Finish());</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;  GAR_RETURN_ON_ARROW_ERROR_AND_ASSIGN(<span class="keyword">auto</span> scan_builder, dataset-&gt;NewScan());</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160; </div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;  <span class="comment">// Apply the row filter and select the specified columns</span></div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;  <span class="keywordflow">if</span> (options.filter) {</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;    GAR_ASSIGN_OR_RAISE(<span class="keyword">auto</span> filter, options.filter-&gt;Evaluate());</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;    RETURN_NOT_ARROW_OK(scan_builder-&gt;Filter(filter));</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">if</span> (options.columns) {</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;    RETURN_NOT_ARROW_OK(scan_builder-&gt;Project(*options.columns));</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;  GAR_RETURN_ON_ARROW_ERROR_AND_ASSIGN(<span class="keyword">auto</span> scanner, scan_builder-&gt;Finish());</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;  GAR_RETURN_ON_ARROW_ERROR_AND_ASSIGN(<span class="keyword">auto</span> table, scanner-&gt;ToTable());</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;  <span class="comment">// cast string array to large string array as we need concatenate chunks in</span></div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;  <span class="comment">// some places, e.g., in vineyard</span></div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; table-&gt;num_columns(); ++i) {</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;    std::shared_ptr&lt;arrow::DataType&gt; type = table-&gt;column(i)-&gt;type();</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;    <span class="keywordflow">if</span> (type-&gt;id() == arrow::Type::STRING) {</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;      type = arrow::large_utf8();</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;    } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (type-&gt;id() == arrow::Type::BINARY) {</div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;      type = arrow::large_binary();</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">if</span> (type-&gt;Equals(table-&gt;column(i)-&gt;type())) {</div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;      <span class="keywordflow">continue</span>;</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">  133</span>&#160;    <span class="comment">// do casting</span></div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;    <span class="keyword">auto</span> field = table-&gt;field(i)-&gt;WithType(type);</div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;    std::shared_ptr&lt;arrow::ChunkedArray&gt; chunked_array;</div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160; </div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;    <span class="keywordflow">if</span> (table-&gt;num_rows() == 0) {</div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;      GAR_RETURN_ON_ARROW_ERROR_AND_ASSIGN(</div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;          chunked_array, arrow::ChunkedArray::MakeEmpty(type));</div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;    } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (type-&gt;Equals(arrow::large_utf8())) {</div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;      <span class="keyword">auto</span> status = detail::CastToLargeOffsetArray&lt;arrow::StringArray,</div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;                                                   arrow::LargeStringArray&gt;(</div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;          table-&gt;column(i), type, chunked_array);</div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;      GAR_RETURN_NOT_OK(status);</div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;    } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (type-&gt;Equals(arrow::large_binary())) {</div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;      <span class="keyword">auto</span> status = detail::CastToLargeOffsetArray&lt;arrow::BinaryArray,</div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;                                                   arrow::LargeBinaryArray&gt;(</div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;          table-&gt;column(i), type, chunked_array);</div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;      GAR_RETURN_NOT_OK(status);</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;      <span class="comment">// noop</span></div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;      chunked_array = table-&gt;column(i);</div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;    }</div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;    GAR_RETURN_ON_ARROW_ERROR_AND_ASSIGN(table, table-&gt;RemoveColumn(i));</div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;    GAR_RETURN_ON_ARROW_ERROR_AND_ASSIGN(</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;        table, table-&gt;AddColumn(i, field, chunked_array));</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="keywordflow">return</span> table;</div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;}</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;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
-<div class="line"><a name="l00162"></a><span class="lineno"><a class="line" href="classgraphar_1_1_file_system.html#aa014a28119399836283a573c9abd97b7">  162</a></span>&#160;Result&lt;T&gt; <a class="code" href="classgraphar_1_1_file_system.html#aa014a28119399836283a573c9abd97b7">FileSystem::ReadFileToValue</a>(<span class="keyword">const</span> std::string&amp; path) <span class="keyword">const</span> noexcept {</div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;  T ret;</div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;  GAR_RETURN_ON_ARROW_ERROR_AND_ASSIGN(<span class="keyword">auto</span> input,</div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;                                       arrow_fs_-&gt;OpenInputStream(path));</div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;  GAR_RETURN_ON_ARROW_ERROR_AND_ASSIGN(<span class="keyword">auto</span> bytes,</div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;                                       input-&gt;Read(<span class="keyword">sizeof</span>(T), &amp;ret));</div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;  ARROW_UNUSED(bytes);</div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;  <span class="keywordflow">return</span> ret;</div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;}</div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160; </div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;<span class="keyword">template</span> &lt;&gt;</div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;Result&lt;std::string&gt; <a class="code" href="classgraphar_1_1_file_system.html#aa014a28119399836283a573c9abd97b7">FileSystem::ReadFileToValue</a>(<span class="keyword">const</span> std::string&amp; path) <span class="keyword">const</span></div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;    noexcept {</div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;  GAR_RETURN_ON_ARROW_ERROR_AND_ASSIGN(<span class="keyword">auto</span> access_file,</div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;                                       arrow_fs_-&gt;OpenInputFile(path));</div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;  GAR_RETURN_ON_ARROW_ERROR_AND_ASSIGN(<span class="keyword">auto</span> bytes, access_file-&gt;GetSize());</div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;  GAR_RETURN_ON_ARROW_ERROR_AND_ASSIGN(<span class="keyword">auto</span> buffer,</div>
-<div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;                                       access_file-&gt;ReadAt(0, bytes));</div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;  <span class="keywordflow">return</span> buffer-&gt;ToString();</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">  183</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
-<div class="line"><a name="l00184"></a><span class="lineno"><a class="line" href="classgraphar_1_1_file_system.html#a474b6e6ba28a0114a1d84f4eb06a211b">  184</a></span>&#160;<a class="code" href="classgraphar_1_1_status.html">Status</a> <a class="code" href="classgraphar_1_1_file_system.html#a474b6e6ba28a0114a1d84f4eb06a211b">FileSystem::WriteValueToFile</a>(<span class="keyword">const</span> T&amp; value,</div>
-<div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;                                    <span class="keyword">const</span> std::string&amp; path) <span class="keyword">const</span> noexcept {</div>
-<div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;  <span class="comment">// try to create the directory, oss filesystem may not support this, ignore</span></div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;  ARROW_UNUSED(arrow_fs_-&gt;CreateDir(path.substr(0, path.find_last_of(<span class="stringliteral">&quot;/&quot;</span>))));</div>
-<div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;  GAR_RETURN_ON_ARROW_ERROR_AND_ASSIGN(<span class="keyword">auto</span> ofstream,</div>
-<div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;                                       arrow_fs_-&gt;OpenOutputStream(path));</div>
-<div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;  RETURN_NOT_ARROW_OK(ofstream-&gt;Write(&amp;value, <span class="keyword">sizeof</span>(T)));</div>
-<div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;  RETURN_NOT_ARROW_OK(ofstream-&gt;Close());</div>
-<div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;  <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#ad92f5c41a661d4f468390e39da90f881">Status::OK</a>();</div>
-<div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;}</div>
-<div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160; </div>
-<div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;<span class="keyword">template</span> &lt;&gt;</div>
-<div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;<a class="code" href="classgraphar_1_1_status.html">Status</a> <a class="code" href="classgraphar_1_1_file_system.html#a474b6e6ba28a0114a1d84f4eb06a211b">FileSystem::WriteValueToFile</a>(<span class="keyword">const</span> std::string&amp; value,</div>
-<div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;                                    <span class="keyword">const</span> std::string&amp; path) <span class="keyword">const</span> noexcept {</div>
-<div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;  <span class="comment">// try to create the directory, oss filesystem may not support this, ignore</span></div>
-<div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;  ARROW_UNUSED(arrow_fs_-&gt;CreateDir(path.substr(0, path.find_last_of(<span class="stringliteral">&quot;/&quot;</span>))));</div>
-<div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;  GAR_RETURN_ON_ARROW_ERROR_AND_ASSIGN(<span class="keyword">auto</span> ofstream,</div>
-<div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;                                       arrow_fs_-&gt;OpenOutputStream(path));</div>
-<div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;  RETURN_NOT_ARROW_OK(ofstream-&gt;Write(value.c_str(), value.size()));</div>
-<div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;  RETURN_NOT_ARROW_OK(ofstream-&gt;Close());</div>
-<div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;  <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#ad92f5c41a661d4f468390e39da90f881">Status::OK</a>();</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; </div>
-<div class="line"><a name="l00207"></a><span class="lineno"><a class="line" href="classgraphar_1_1_file_system.html#a88ffaca40d40ca34be4eed2ef5802854">  207</a></span>&#160;<a class="code" href="classgraphar_1_1_status.html">Status</a> <a class="code" href="classgraphar_1_1_file_system.html#a88ffaca40d40ca34be4eed2ef5802854">FileSystem::WriteTableToFile</a>(<span class="keyword">const</span> std::shared_ptr&lt;arrow::Table&gt;&amp; table,</div>
-<div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;                                    FileType file_type,</div>
-<div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;                                    <span class="keyword">const</span> std::string&amp; path) <span class="keyword">const</span> noexcept {</div>
-<div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;  <span class="comment">// try to create the directory, oss filesystem may not support this, ignore</span></div>
-<div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;  ARROW_UNUSED(arrow_fs_-&gt;CreateDir(path.substr(0, path.find_last_of(<span class="stringliteral">&quot;/&quot;</span>))));</div>
-<div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;  GAR_RETURN_ON_ARROW_ERROR_AND_ASSIGN(<span class="keyword">auto</span> output_stream,</div>
-<div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;                                       arrow_fs_-&gt;OpenOutputStream(path));</div>
-<div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;  <span class="keywordflow">switch</span> (file_type) {</div>
-<div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;  <span class="keywordflow">case</span> FileType::CSV: {</div>
-<div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;    <span class="keyword">auto</span> write_options = arrow::csv::WriteOptions::Defaults();</div>
-<div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;    write_options.include_header = <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;    write_options.quoting_style = arrow::csv::QuotingStyle::Needed;</div>
-<div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;    GAR_RETURN_ON_ARROW_ERROR_AND_ASSIGN(</div>
-<div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;        <span class="keyword">auto</span> writer, arrow::csv::MakeCSVWriter(output_stream.get(),</div>
-<div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;                                               table-&gt;schema(), write_options));</div>
-<div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;    RETURN_NOT_ARROW_OK(writer-&gt;WriteTable(*table));</div>
-<div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;    RETURN_NOT_ARROW_OK(writer-&gt;Close());</div>
-<div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;    <span class="keywordflow">break</span>;</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;  <span class="keywordflow">case</span> FileType::PARQUET: {</div>
-<div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;    parquet::WriterProperties::Builder builder;</div>
-<div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;    builder.compression(arrow::Compression::type::ZSTD);  <span class="comment">// enable compression</span></div>
-<div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;    RETURN_NOT_ARROW_OK(parquet::arrow::WriteTable(</div>
-<div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;        *table, arrow::default_memory_pool(), output_stream, 64 * 1024 * 1024,</div>
-<div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;        builder.build(), parquet::default_arrow_writer_properties()));</div>
-<div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;    <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;  }</div>
-<div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;  <span class="keywordflow">case</span> FileType::ORC: {</div>
-<div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;    <span class="keyword">auto</span> writer_options = arrow::adapters::orc::WriteOptions();</div>
-<div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;    writer_options.compression = arrow::Compression::type::ZSTD;</div>
-<div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;    GAR_RETURN_ON_ARROW_ERROR_AND_ASSIGN(</div>
-<div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;        <span class="keyword">auto</span> writer, arrow::adapters::orc::ORCFileWriter::Open(</div>
-<div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;                         output_stream.get(), writer_options));</div>
-<div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160;    RETURN_NOT_ARROW_OK(writer-&gt;Write(*table));</div>
-<div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;    RETURN_NOT_ARROW_OK(writer-&gt;Close());</div>
-<div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;    <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;  }</div>
-<div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;  <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#a9ca4be37aae8dfea7e6ef54920e0073f">Status::Invalid</a>(</div>
-<div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;        <span class="stringliteral">&quot;Unsupported file type: &quot;</span>, FileTypeToString(file_type), <span class="stringliteral">&quot; for wrting.&quot;</span>);</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> <a class="code" href="classgraphar_1_1_status.html#ad92f5c41a661d4f468390e39da90f881">Status::OK</a>();</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"><a class="line" href="classgraphar_1_1_file_system.html#aab2ff41d0c13cf27b24ec1612817b110">  251</a></span>&#160;<a class="code" href="classgraphar_1_1_status.html">Status</a> <a class="code" href="classgraphar_1_1_file_system.html#aab2ff41d0c13cf27b24ec1612817b110">FileSystem::CopyFile</a>(<span class="keyword">const</span> std::string&amp; src_path,</div>
-<div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;                            <span class="keyword">const</span> std::string&amp; dst_path) <span class="keyword">const</span> noexcept {</div>
-<div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;  <span class="comment">// try to create the directory, oss filesystem may not support this, ignore</span></div>
-<div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;  ARROW_UNUSED(</div>
-<div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;      arrow_fs_-&gt;CreateDir(dst_path.substr(0, dst_path.find_last_of(<span class="stringliteral">&quot;/&quot;</span>))));</div>
-<div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;  RETURN_NOT_ARROW_OK(arrow_fs_-&gt;CopyFile(src_path, dst_path));</div>
-<div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;  <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#ad92f5c41a661d4f468390e39da90f881">Status::OK</a>();</div>
-<div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;}</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"><a class="line" href="classgraphar_1_1_file_system.html#a293c0415cb3b72795e034f2a08510524">  260</a></span>&#160;Result&lt;IdType&gt; <a class="code" href="classgraphar_1_1_file_system.html#a293c0415cb3b72795e034f2a08510524">FileSystem::GetFileNumOfDir</a>(<span class="keyword">const</span> std::string&amp; dir_path,</div>
-<div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;                                           <span class="keywordtype">bool</span> recursive) <span class="keyword">const</span> noexcept {</div>
-<div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;  arrow::fs::FileSelector file_selector;</div>
-<div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;  file_selector.base_dir = dir_path;</div>
-<div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;  file_selector.allow_not_found = <span class="keyword">false</span>;  <span class="comment">// if dir_path not exist, return error</span></div>
-<div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160;  file_selector.recursive = recursive;</div>
-<div class="line"><a name="l00266"></a><span class="lineno">  266</span>&#160;  arrow::fs::FileInfoVector file_infos;</div>
-<div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;  GAR_RETURN_ON_ARROW_ERROR_AND_ASSIGN(file_infos,</div>
-<div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;                                       arrow_fs_-&gt;GetFileInfo(file_selector));</div>
-<div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160;  <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>IdType<span class="keyword">&gt;</span>(file_infos.size());</div>
-<div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160;}</div>
-<div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160; </div>
-<div class="line"><a name="l00272"></a><span class="lineno">  272</span>&#160;FileSystem::~FileSystem() {}</div>
+<div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;  <span class="keywordflow">case</span> JSON:</div>
+<div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;    <span class="keywordflow">return</span> std::make_shared&lt;ds::JsonFileFormat&gt;();</div>
+<div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;  <span class="keywordflow">default</span>:</div>
+<div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
+<div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;  }</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; </div>
+<div class="line"><a name="l00101"></a><span class="lineno"><a class="line" href="classgraphar_1_1_file_system.html#acfd1a7452cf5d89826ac119b90949956">  101</a></span>&#160;Result&lt;std::shared_ptr&lt;arrow::Table&gt;&gt; <a class="code" href="classgraphar_1_1_file_system.html#acfd1a7452cf5d89826ac119b90949956">FileSystem::ReadFileToTable</a>(</div>
+<div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;    <span class="keyword">const</span> std::string&amp; path, FileType file_type,</div>
+<div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;    <span class="keyword">const</span> <a class="code" href="structgraphar_1_1util_1_1_filter_options.html">util::FilterOptions</a>&amp; options) <span class="keyword">const</span> noexcept {</div>
+<div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;  std::shared_ptr&lt;ds::FileFormat&gt; format = GetFileFormat(file_type);</div>
+<div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;  GAR_RETURN_ON_ARROW_ERROR_AND_ASSIGN(</div>
+<div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;      <span class="keyword">auto</span> factory, arrow::dataset::FileSystemDatasetFactory::Make(</div>
+<div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;                        arrow_fs_, {path}, format,</div>
+<div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;                        arrow::dataset::FileSystemFactoryOptions()));</div>
+<div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;  GAR_RETURN_ON_ARROW_ERROR_AND_ASSIGN(<span class="keyword">auto</span> dataset, factory-&gt;Finish());</div>
+<div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;  GAR_RETURN_ON_ARROW_ERROR_AND_ASSIGN(<span class="keyword">auto</span> scan_builder, dataset-&gt;NewScan());</div>
+<div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160; </div>
+<div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;  <span class="comment">// Apply the row filter and select the specified columns</span></div>
+<div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;  <span class="keywordflow">if</span> (options.filter) {</div>
+<div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;    GAR_ASSIGN_OR_RAISE(<span class="keyword">auto</span> filter, options.filter-&gt;Evaluate());</div>
+<div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;    RETURN_NOT_ARROW_OK(scan_builder-&gt;Filter(filter));</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;  <span class="keywordflow">if</span> (options.columns) {</div>
+<div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;    RETURN_NOT_ARROW_OK(scan_builder-&gt;Project(*options.columns));</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">  120</span>&#160; </div>
+<div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;  GAR_RETURN_ON_ARROW_ERROR_AND_ASSIGN(<span class="keyword">auto</span> scanner, scan_builder-&gt;Finish());</div>
+<div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;  GAR_RETURN_ON_ARROW_ERROR_AND_ASSIGN(<span class="keyword">auto</span> table, scanner-&gt;ToTable());</div>
+<div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;  <span class="comment">// cast string array to large string array as we need concatenate chunks in</span></div>
+<div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;  <span class="comment">// some places, e.g., in vineyard</span></div>
+<div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; table-&gt;num_columns(); ++i) {</div>
+<div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;    std::shared_ptr&lt;arrow::DataType&gt; type = table-&gt;column(i)-&gt;type();</div>
+<div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;    <span class="keywordflow">if</span> (type-&gt;id() == arrow::Type::STRING) {</div>
+<div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;      type = arrow::large_utf8();</div>
+<div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;    } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (type-&gt;id() == arrow::Type::BINARY) {</div>
+<div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;      type = arrow::large_binary();</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> (type-&gt;Equals(table-&gt;column(i)-&gt;type())) {</div>
+<div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;      <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;    }</div>
+<div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;    <span class="comment">// do casting</span></div>
+<div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;    <span class="keyword">auto</span> field = table-&gt;field(i)-&gt;WithType(type);</div>
+<div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;    std::shared_ptr&lt;arrow::ChunkedArray&gt; chunked_array;</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> (table-&gt;num_rows() == 0) {</div>
+<div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;      GAR_RETURN_ON_ARROW_ERROR_AND_ASSIGN(</div>
+<div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;          chunked_array, arrow::ChunkedArray::MakeEmpty(type));</div>
+<div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;    } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (type-&gt;Equals(arrow::large_utf8())) {</div>
+<div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;      <span class="keyword">auto</span> status = detail::CastToLargeOffsetArray&lt;arrow::StringArray,</div>
+<div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;                                                   arrow::LargeStringArray&gt;(</div>
+<div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;          table-&gt;column(i), type, chunked_array);</div>
+<div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;      GAR_RETURN_NOT_OK(status);</div>
+<div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;    } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (type-&gt;Equals(arrow::large_binary())) {</div>
+<div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;      <span class="keyword">auto</span> status = detail::CastToLargeOffsetArray&lt;arrow::BinaryArray,</div>
+<div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;                                                   arrow::LargeBinaryArray&gt;(</div>
+<div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;          table-&gt;column(i), type, chunked_array);</div>
+<div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;      GAR_RETURN_NOT_OK(status);</div>
+<div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;    } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;      <span class="comment">// noop</span></div>
+<div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;      chunked_array = table-&gt;column(i);</div>
+<div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;    }</div>
+<div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;    GAR_RETURN_ON_ARROW_ERROR_AND_ASSIGN(table, table-&gt;RemoveColumn(i));</div>
+<div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;    GAR_RETURN_ON_ARROW_ERROR_AND_ASSIGN(</div>
+<div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;        table, table-&gt;AddColumn(i, field, chunked_array));</div>
+<div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;  }</div>
+<div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;  <span class="keywordflow">return</span> table;</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; </div>
+<div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
+<div class="line"><a name="l00164"></a><span class="lineno"><a class="line" href="classgraphar_1_1_file_system.html#aa014a28119399836283a573c9abd97b7">  164</a></span>&#160;Result&lt;T&gt; <a class="code" href="classgraphar_1_1_file_system.html#aa014a28119399836283a573c9abd97b7">FileSystem::ReadFileToValue</a>(<span class="keyword">const</span> std::string&amp; path) <span class="keyword">const</span> noexcept {</div>
+<div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;  T ret;</div>
+<div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;  GAR_RETURN_ON_ARROW_ERROR_AND_ASSIGN(<span class="keyword">auto</span> input,</div>
+<div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;                                       arrow_fs_-&gt;OpenInputStream(path));</div>
+<div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;  GAR_RETURN_ON_ARROW_ERROR_AND_ASSIGN(<span class="keyword">auto</span> bytes,</div>
+<div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;                                       input-&gt;Read(<span class="keyword">sizeof</span>(T), &amp;ret));</div>
+<div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;  ARROW_UNUSED(bytes);</div>
+<div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;  <span class="keywordflow">return</span> ret;</div>
+<div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;}</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;<span class="keyword">template</span> &lt;&gt;</div>
+<div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;Result&lt;std::string&gt; <a class="code" href="classgraphar_1_1_file_system.html#aa014a28119399836283a573c9abd97b7">FileSystem::ReadFileToValue</a>(<span class="keyword">const</span> std::string&amp; path) <span class="keyword">const</span></div>
+<div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;    noexcept {</div>
+<div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;  GAR_RETURN_ON_ARROW_ERROR_AND_ASSIGN(<span class="keyword">auto</span> access_file,</div>
+<div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;                                       arrow_fs_-&gt;OpenInputFile(path));</div>
+<div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;  GAR_RETURN_ON_ARROW_ERROR_AND_ASSIGN(<span class="keyword">auto</span> bytes, access_file-&gt;GetSize());</div>
+<div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;  GAR_RETURN_ON_ARROW_ERROR_AND_ASSIGN(<span class="keyword">auto</span> buffer,</div>
+<div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;                                       access_file-&gt;ReadAt(0, bytes));</div>
+<div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;  <span class="keywordflow">return</span> buffer-&gt;ToString();</div>
+<div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;}</div>
+<div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160; </div>
+<div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
+<div class="line"><a name="l00186"></a><span class="lineno"><a class="line" href="classgraphar_1_1_file_system.html#a474b6e6ba28a0114a1d84f4eb06a211b">  186</a></span>&#160;<a class="code" href="classgraphar_1_1_status.html">Status</a> <a class="code" href="classgraphar_1_1_file_system.html#a474b6e6ba28a0114a1d84f4eb06a211b">FileSystem::WriteValueToFile</a>(<span class="keyword">const</span> T&amp; value,</div>
+<div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;                                    <span class="keyword">const</span> std::string&amp; path) <span class="keyword">const</span> noexcept {</div>
+<div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;  <span class="comment">// try to create the directory, oss filesystem may not support this, ignore</span></div>
+<div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;  ARROW_UNUSED(arrow_fs_-&gt;CreateDir(path.substr(0, path.find_last_of(<span class="stringliteral">&quot;/&quot;</span>))));</div>
+<div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;  GAR_RETURN_ON_ARROW_ERROR_AND_ASSIGN(<span class="keyword">auto</span> ofstream,</div>
+<div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;                                       arrow_fs_-&gt;OpenOutputStream(path));</div>
+<div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;  RETURN_NOT_ARROW_OK(ofstream-&gt;Write(&amp;value, <span class="keyword">sizeof</span>(T)));</div>
+<div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;  RETURN_NOT_ARROW_OK(ofstream-&gt;Close());</div>
+<div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;  <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#ad92f5c41a661d4f468390e39da90f881">Status::OK</a>();</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">  197</span>&#160;<span class="keyword">template</span> &lt;&gt;</div>
+<div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;<a class="code" href="classgraphar_1_1_status.html">Status</a> <a class="code" href="classgraphar_1_1_file_system.html#a474b6e6ba28a0114a1d84f4eb06a211b">FileSystem::WriteValueToFile</a>(<span class="keyword">const</span> std::string&amp; value,</div>
+<div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;                                    <span class="keyword">const</span> std::string&amp; path) <span class="keyword">const</span> noexcept {</div>
+<div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;  <span class="comment">// try to create the directory, oss filesystem may not support this, ignore</span></div>
+<div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;  ARROW_UNUSED(arrow_fs_-&gt;CreateDir(path.substr(0, path.find_last_of(<span class="stringliteral">&quot;/&quot;</span>))));</div>
+<div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;  GAR_RETURN_ON_ARROW_ERROR_AND_ASSIGN(<span class="keyword">auto</span> ofstream,</div>
+<div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;                                       arrow_fs_-&gt;OpenOutputStream(path));</div>
+<div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;  RETURN_NOT_ARROW_OK(ofstream-&gt;Write(value.c_str(), value.size()));</div>
+<div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;  RETURN_NOT_ARROW_OK(ofstream-&gt;Close());</div>
+<div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;  <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#ad92f5c41a661d4f468390e39da90f881">Status::OK</a>();</div>
+<div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;}</div>
+<div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160; </div>
+<div class="line"><a name="l00209"></a><span class="lineno"><a class="line" href="classgraphar_1_1_file_system.html#a88ffaca40d40ca34be4eed2ef5802854">  209</a></span>&#160;<a class="code" href="classgraphar_1_1_status.html">Status</a> <a class="code" href="classgraphar_1_1_file_system.html#a88ffaca40d40ca34be4eed2ef5802854">FileSystem::WriteTableToFile</a>(<span class="keyword">const</span> std::shared_ptr&lt;arrow::Table&gt;&amp; table,</div>
+<div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;                                    FileType file_type,</div>
+<div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;                                    <span class="keyword">const</span> std::string&amp; path) <span class="keyword">const</span> noexcept {</div>
+<div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;  <span class="comment">// try to create the directory, oss filesystem may not support this, ignore</span></div>
+<div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;  ARROW_UNUSED(arrow_fs_-&gt;CreateDir(path.substr(0, path.find_last_of(<span class="stringliteral">&quot;/&quot;</span>))));</div>
+<div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;  GAR_RETURN_ON_ARROW_ERROR_AND_ASSIGN(<span class="keyword">auto</span> output_stream,</div>
+<div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;                                       arrow_fs_-&gt;OpenOutputStream(path));</div>
+<div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;  <span class="keywordflow">switch</span> (file_type) {</div>
+<div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;  <span class="keywordflow">case</span> FileType::CSV: {</div>
+<div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;    <span class="keyword">auto</span> write_options = arrow::csv::WriteOptions::Defaults();</div>
+<div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;    write_options.include_header = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;    write_options.quoting_style = arrow::csv::QuotingStyle::Needed;</div>
+<div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;    GAR_RETURN_ON_ARROW_ERROR_AND_ASSIGN(</div>
+<div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;        <span class="keyword">auto</span> writer, arrow::csv::MakeCSVWriter(output_stream.get(),</div>
+<div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;                                               table-&gt;schema(), write_options));</div>
+<div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;    RETURN_NOT_ARROW_OK(writer-&gt;WriteTable(*table));</div>
+<div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;    RETURN_NOT_ARROW_OK(writer-&gt;Close());</div>
+<div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;    <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;  }</div>
+<div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;  <span class="keywordflow">case</span> FileType::PARQUET: {</div>
+<div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;    parquet::WriterProperties::Builder builder;</div>
+<div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;    builder.compression(arrow::Compression::type::ZSTD);  <span class="comment">// enable compression</span></div>
+<div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;    RETURN_NOT_ARROW_OK(parquet::arrow::WriteTable(</div>
+<div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;        *table, arrow::default_memory_pool(), output_stream, 64 * 1024 * 1024,</div>
+<div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;        builder.build(), parquet::default_arrow_writer_properties()));</div>
+<div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;    <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;  }</div>
+<div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;  <span class="keywordflow">case</span> FileType::ORC: {</div>
+<div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;    <span class="keyword">auto</span> writer_options = arrow::adapters::orc::WriteOptions();</div>
+<div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;    writer_options.compression = arrow::Compression::type::ZSTD;</div>
+<div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;    GAR_RETURN_ON_ARROW_ERROR_AND_ASSIGN(</div>
+<div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160;        <span class="keyword">auto</span> writer, arrow::adapters::orc::ORCFileWriter::Open(</div>
+<div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;                         output_stream.get(), writer_options));</div>
+<div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;    RETURN_NOT_ARROW_OK(writer-&gt;Write(*table));</div>
+<div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;    RETURN_NOT_ARROW_OK(writer-&gt;Close());</div>
+<div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;    <span class="keywordflow">break</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;  <span class="keywordflow">default</span>:</div>
+<div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#a9ca4be37aae8dfea7e6ef54920e0073f">Status::Invalid</a>(</div>
+<div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;        <span class="stringliteral">&quot;Unsupported file type: &quot;</span>, FileTypeToString(file_type), <span class="stringliteral">&quot; for wrting.&quot;</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;  <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#ad92f5c41a661d4f468390e39da90f881">Status::OK</a>();</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; </div>
+<div class="line"><a name="l00253"></a><span class="lineno"><a class="line" href="classgraphar_1_1_file_system.html#aab2ff41d0c13cf27b24ec1612817b110">  253</a></span>&#160;<a class="code" href="classgraphar_1_1_status.html">Status</a> <a class="code" href="classgraphar_1_1_file_system.html#aab2ff41d0c13cf27b24ec1612817b110">FileSystem::CopyFile</a>(<span class="keyword">const</span> std::string&amp; src_path,</div>
+<div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;                            <span class="keyword">const</span> std::string&amp; dst_path) <span class="keyword">const</span> noexcept {</div>
+<div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;  <span class="comment">// try to create the directory, oss filesystem may not support this, ignore</span></div>
+<div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;  ARROW_UNUSED(</div>
+<div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;      arrow_fs_-&gt;CreateDir(dst_path.substr(0, dst_path.find_last_of(<span class="stringliteral">&quot;/&quot;</span>))));</div>
+<div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;  RETURN_NOT_ARROW_OK(arrow_fs_-&gt;CopyFile(src_path, dst_path));</div>
+<div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;  <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#ad92f5c41a661d4f468390e39da90f881">Status::OK</a>();</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"><a class="line" href="classgraphar_1_1_file_system.html#a293c0415cb3b72795e034f2a08510524">  262</a></span>&#160;Result&lt;IdType&gt; <a class="code" href="classgraphar_1_1_file_system.html#a293c0415cb3b72795e034f2a08510524">FileSystem::GetFileNumOfDir</a>(<span class="keyword">const</span> std::string&amp; dir_path,</div>
+<div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;                                           <span class="keywordtype">bool</span> recursive) <span class="keyword">const</span> noexcept {</div>
+<div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;  arrow::fs::FileSelector file_selector;</div>
+<div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160;  file_selector.base_dir = dir_path;</div>
+<div class="line"><a name="l00266"></a><span class="lineno">  266</span>&#160;  file_selector.allow_not_found = <span class="keyword">false</span>;  <span class="comment">// if dir_path not exist, return error</span></div>
+<div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;  file_selector.recursive = recursive;</div>
+<div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;  arrow::fs::FileInfoVector file_infos;</div>
+<div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160;  GAR_RETURN_ON_ARROW_ERROR_AND_ASSIGN(file_infos,</div>
+<div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160;                                       arrow_fs_-&gt;GetFileInfo(file_selector));</div>
+<div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;  <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>IdType<span class="keyword">&gt;</span>(file_infos.size());</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; </div>
-<div class="line"><a name="l00274"></a><span class="lineno">  274</span>&#160;Result&lt;std::shared_ptr&lt;FileSystem&gt;&gt; FileSystemFromUriOrPath(</div>
-<div class="line"><a name="l00275"></a><span class="lineno">  275</span>&#160;    <span class="keyword">const</span> std::string&amp; uri_string, std::string* out_path) {</div>
-<div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160;  <span class="keywordflow">if</span> (uri_string.length() &gt;= 1 &amp;&amp; uri_string[0] == <span class="charliteral">&#39;/&#39;</span>) {</div>
-<div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160;    <span class="comment">// if the uri_string is an absolute path, we need to create a local file</span></div>
-<div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160;    GAR_RETURN_ON_ARROW_ERROR_AND_ASSIGN(</div>
-<div class="line"><a name="l00279"></a><span class="lineno">  279</span>&#160;        <span class="keyword">auto</span> arrow_fs,</div>
-<div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160;        arrow::fs::FileSystemFromUriOrPath(uri_string, out_path));</div>
-<div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;    <span class="comment">// arrow would delete the last slash, so use uri string</span></div>
-<div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;    <span class="keywordflow">if</span> (out_path != <span class="keyword">nullptr</span>) {</div>
-<div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160;      *out_path = uri_string;</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">  285</span>&#160;    <span class="keywordflow">return</span> std::make_shared&lt;FileSystem&gt;(arrow_fs);</div>
-<div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;  }</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;  GAR_RETURN_ON_ARROW_ERROR_AND_ASSIGN(</div>
-<div class="line"><a name="l00289"></a><span class="lineno">  289</span>&#160;      <span class="keyword">auto</span> arrow_fs, arrow::fs::FileSystemFromUriOrPath(uri_string));</div>
-<div class="line"><a name="l00290"></a><span class="lineno">  290</span>&#160;  <span class="keyword">auto</span> uri = uri::parse_uri(uri_string);</div>
-<div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;  <span class="keywordflow">if</span> (uri.error != uri::Error::None) {</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;Failed to parse URI: &quot;</span>, uri_string);</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">if</span> (out_path != <span class="keyword">nullptr</span>) {</div>
-<div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;    <span class="keywordflow">if</span> (uri.scheme == <span class="stringliteral">&quot;file&quot;</span> || uri.scheme == <span class="stringliteral">&quot;hdfs&quot;</span> || uri.scheme.empty()) {</div>
-<div class="line"><a name="l00296"></a><span class="lineno">  296</span>&#160;      *out_path = uri.path;</div>
-<div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160;    } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (uri.scheme == <span class="stringliteral">&quot;s3&quot;</span> || uri.scheme == <span class="stringliteral">&quot;gs&quot;</span>) {</div>
-<div class="line"><a name="l00298"></a><span class="lineno">  298</span>&#160;      <span class="comment">// bucket name is the host, path is the path</span></div>
-<div class="line"><a name="l00299"></a><span class="lineno">  299</span>&#160;      *out_path = uri.authority.host + uri.path;</div>
-<div class="line"><a name="l00300"></a><span class="lineno">  300</span>&#160;    } <span class="keywordflow">else</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;Unrecognized filesystem type in URI: &quot;</span>,</div>
-<div class="line"><a name="l00302"></a><span class="lineno">  302</span>&#160;                             uri_string);</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">  304</span>&#160;  }</div>
-<div class="line"><a name="l00305"></a><span class="lineno">  305</span>&#160;  <span class="keywordflow">return</span> std::make_shared&lt;FileSystem&gt;(arrow_fs);</div>
-<div class="line"><a name="l00306"></a><span class="lineno">  306</span>&#160;}</div>
-<div class="line"><a name="l00307"></a><span class="lineno">  307</span>&#160; </div>
-<div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160;<span class="keyword">template</span> Result&lt;IdType&gt; FileSystem::ReadFileToValue&lt;IdType&gt;(</div>
-<div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160;    <span class="keyword">const</span> std::string&amp;) <span class="keyword">const</span> noexcept;</div>
-<div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160;<span class="keyword">template</span> Status FileSystem::WriteValueToFile&lt;IdType&gt;(<span class="keyword">const</span> IdType&amp;,</div>
-<div class="line"><a name="l00313"></a><span class="lineno">  313</span>&#160;                                                     <span class="keyword">const</span> std::string&amp;) <span class="keyword">const</span></div>
-<div class="line"><a name="l00314"></a><span class="lineno">  314</span>&#160;    noexcept;</div>
-<div class="line"><a name="l00315"></a><span class="lineno">  315</span>&#160;}  <span class="comment">// namespace graphar</span></div>
-<div class="ttc" id="aclassgraphar_1_1_file_system_html_a293c0415cb3b72795e034f2a08510524"><div class="ttname"><a href="classgraphar_1_1_file_system.html#a293c0415cb3b72795e034f2a08510524">graphar::FileSystem::GetFileNumOfDir</a></div><div class="ttdeci">Result&lt; IdType &gt; GetFileNumOfDir(const std::string &amp;dir_path, bool recursive=false) const noexcept</div><div class="ttdef"><b>Definition:</b> <a href="filesystem_8cc_source.html#l00260">filesystem.cc:260</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_file_system_html_a474b6e6ba28a0114a1d84f4eb06a211b"><div class="ttname"><a href="classgraphar_1_1_file_system.html#a474b6e6ba28a0114a1d84f4eb06a211b">graphar::FileSystem::WriteValueToFile</a></div><div class="ttdeci">Status WriteValueToFile(const T &amp;value, const std::string &amp;path) const noexcept</div><div class="ttdoc">Write a value of type T to a file.</div><div class="ttdef"><b>Definition:</b> <a href="filesystem_8cc_source.html#l00184">fi [...]
-<div class="ttc" id="aclassgraphar_1_1_file_system_html_a88ffaca40d40ca34be4eed2ef5802854"><div class="ttname"><a href="classgraphar_1_1_file_system.html#a88ffaca40d40ca34be4eed2ef5802854">graphar::FileSystem::WriteTableToFile</a></div><div class="ttdeci">Status WriteTableToFile(const std::shared_ptr&lt; arrow::Table &gt; &amp;table, FileType file_type, const std::string &amp;path) const noexcept</div><div class="ttdoc">Write a table to a file with a specific type.</div><div class="ttdef [...]
-<div class="ttc" id="aclassgraphar_1_1_file_system_html_aa014a28119399836283a573c9abd97b7"><div class="ttname"><a href="classgraphar_1_1_file_system.html#aa014a28119399836283a573c9abd97b7">graphar::FileSystem::ReadFileToValue</a></div><div class="ttdeci">Result&lt; T &gt; ReadFileToValue(const std::string &amp;path) const noexcept</div><div class="ttdoc">Read a file and convert its bytes to a value of type T.</div><div class="ttdef"><b>Definition:</b> <a href="filesystem_8cc_source.html# [...]
-<div class="ttc" id="aclassgraphar_1_1_file_system_html_aab2ff41d0c13cf27b24ec1612817b110"><div class="ttname"><a href="classgraphar_1_1_file_system.html#aab2ff41d0c13cf27b24ec1612817b110">graphar::FileSystem::CopyFile</a></div><div class="ttdeci">Status CopyFile(const std::string &amp;src_path, const std::string &amp;dst_path) const noexcept</div><div class="ttdef"><b>Definition:</b> <a href="filesystem_8cc_source.html#l00251">filesystem.cc:251</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_file_system_html_acfd1a7452cf5d89826ac119b90949956"><div class="ttname"><a href="classgraphar_1_1_file_system.html#acfd1a7452cf5d89826ac119b90949956">graphar::FileSystem::ReadFileToTable</a></div><div class="ttdeci">Result&lt; std::shared_ptr&lt; arrow::Table &gt; &gt; ReadFileToTable(const std::string &amp;path, FileType file_type, const util::FilterOptions &amp;options={}) const noexcept</div><div class="ttdoc">Read and filter a file as an arrow:: [...]
+<div class="line"><a name="l00274"></a><span class="lineno">  274</span>&#160;FileSystem::~FileSystem() {}</div>
+<div class="line"><a name="l00275"></a><span class="lineno">  275</span>&#160; </div>
+<div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160;Result&lt;std::shared_ptr&lt;FileSystem&gt;&gt; FileSystemFromUriOrPath(</div>
+<div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160;    <span class="keyword">const</span> std::string&amp; uri_string, std::string* out_path) {</div>
+<div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160;  <span class="keywordflow">if</span> (uri_string.length() &gt;= 1 &amp;&amp; uri_string[0] == <span class="charliteral">&#39;/&#39;</span>) {</div>
+<div class="line"><a name="l00279"></a><span class="lineno">  279</span>&#160;    <span class="comment">// if the uri_string is an absolute path, we need to create a local file</span></div>
+<div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160;    GAR_RETURN_ON_ARROW_ERROR_AND_ASSIGN(</div>
+<div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;        <span class="keyword">auto</span> arrow_fs,</div>
+<div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;        arrow::fs::FileSystemFromUriOrPath(uri_string, out_path));</div>
+<div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160;    <span class="comment">// arrow would delete the last slash, so use uri string</span></div>
+<div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;    <span class="keywordflow">if</span> (out_path != <span class="keyword">nullptr</span>) {</div>
+<div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160;      *out_path = uri_string;</div>
+<div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;    }</div>
+<div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;    <span class="keywordflow">return</span> std::make_shared&lt;FileSystem&gt;(arrow_fs);</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">  289</span>&#160; </div>
+<div class="line"><a name="l00290"></a><span class="lineno">  290</span>&#160;  GAR_RETURN_ON_ARROW_ERROR_AND_ASSIGN(</div>
+<div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;      <span class="keyword">auto</span> arrow_fs, arrow::fs::FileSystemFromUriOrPath(uri_string));</div>
+<div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160;  <span class="keyword">auto</span> uri = uri::parse_uri(uri_string);</div>
+<div class="line"><a name="l00293"></a><span class="lineno">  293</span>&#160;  <span class="keywordflow">if</span> (uri.error != uri::Error::None) {</div>
+<div class="line"><a name="l00294"></a><span class="lineno">  294</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 parse URI: &quot;</span>, uri_string);</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">  296</span>&#160;  <span class="keywordflow">if</span> (out_path != <span class="keyword">nullptr</span>) {</div>
+<div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160;    <span class="keywordflow">if</span> (uri.scheme == <span class="stringliteral">&quot;file&quot;</span> || uri.scheme == <span class="stringliteral">&quot;hdfs&quot;</span> || uri.scheme.empty()) {</div>
+<div class="line"><a name="l00298"></a><span class="lineno">  298</span>&#160;      *out_path = uri.path;</div>
+<div class="line"><a name="l00299"></a><span class="lineno">  299</span>&#160;    } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (uri.scheme == <span class="stringliteral">&quot;s3&quot;</span> || uri.scheme == <span class="stringliteral">&quot;gs&quot;</span>) {</div>
+<div class="line"><a name="l00300"></a><span class="lineno">  300</span>&#160;      <span class="comment">// bucket name is the host, path is the path</span></div>
+<div class="line"><a name="l00301"></a><span class="lineno">  301</span>&#160;      *out_path = uri.authority.host + uri.path;</div>
+<div class="line"><a name="l00302"></a><span class="lineno">  302</span>&#160;    } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00303"></a><span class="lineno">  303</span>&#160;      <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#a9ca4be37aae8dfea7e6ef54920e0073f">Status::Invalid</a>(<span class="stringliteral">&quot;Unrecognized filesystem type in URI: &quot;</span>,</div>
+<div class="line"><a name="l00304"></a><span class="lineno">  304</span>&#160;                             uri_string);</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">  306</span>&#160;  }</div>
+<div class="line"><a name="l00307"></a><span class="lineno">  307</span>&#160;  <span class="keywordflow">return</span> std::make_shared&lt;FileSystem&gt;(arrow_fs);</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="l00311"></a><span class="lineno">  311</span>&#160;<span class="keyword">template</span> Result&lt;IdType&gt; FileSystem::ReadFileToValue&lt;IdType&gt;(</div>
+<div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160;    <span class="keyword">const</span> std::string&amp;) <span class="keyword">const</span> noexcept;</div>
+<div class="line"><a name="l00314"></a><span class="lineno">  314</span>&#160;<span class="keyword">template</span> Status FileSystem::WriteValueToFile&lt;IdType&gt;(<span class="keyword">const</span> IdType&amp;,</div>
+<div class="line"><a name="l00315"></a><span class="lineno">  315</span>&#160;                                                     <span class="keyword">const</span> std::string&amp;) <span class="keyword">const</span></div>
+<div class="line"><a name="l00316"></a><span class="lineno">  316</span>&#160;    noexcept;</div>
+<div class="line"><a name="l00317"></a><span class="lineno">  317</span>&#160;}  <span class="comment">// namespace graphar</span></div>
+<div class="ttc" id="aclassgraphar_1_1_file_system_html_a293c0415cb3b72795e034f2a08510524"><div class="ttname"><a href="classgraphar_1_1_file_system.html#a293c0415cb3b72795e034f2a08510524">graphar::FileSystem::GetFileNumOfDir</a></div><div class="ttdeci">Result&lt; IdType &gt; GetFileNumOfDir(const std::string &amp;dir_path, bool recursive=false) const noexcept</div><div class="ttdef"><b>Definition:</b> <a href="filesystem_8cc_source.html#l00262">filesystem.cc:262</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_file_system_html_a474b6e6ba28a0114a1d84f4eb06a211b"><div class="ttname"><a href="classgraphar_1_1_file_system.html#a474b6e6ba28a0114a1d84f4eb06a211b">graphar::FileSystem::WriteValueToFile</a></div><div class="ttdeci">Status WriteValueToFile(const T &amp;value, const std::string &amp;path) const noexcept</div><div class="ttdoc">Write a value of type T to a file.</div><div class="ttdef"><b>Definition:</b> <a href="filesystem_8cc_source.html#l00186">fi [...]
+<div class="ttc" id="aclassgraphar_1_1_file_system_html_a88ffaca40d40ca34be4eed2ef5802854"><div class="ttname"><a href="classgraphar_1_1_file_system.html#a88ffaca40d40ca34be4eed2ef5802854">graphar::FileSystem::WriteTableToFile</a></div><div class="ttdeci">Status WriteTableToFile(const std::shared_ptr&lt; arrow::Table &gt; &amp;table, FileType file_type, const std::string &amp;path) const noexcept</div><div class="ttdoc">Write a table to a file with a specific type.</div><div class="ttdef [...]
+<div class="ttc" id="aclassgraphar_1_1_file_system_html_aa014a28119399836283a573c9abd97b7"><div class="ttname"><a href="classgraphar_1_1_file_system.html#aa014a28119399836283a573c9abd97b7">graphar::FileSystem::ReadFileToValue</a></div><div class="ttdeci">Result&lt; T &gt; ReadFileToValue(const std::string &amp;path) const noexcept</div><div class="ttdoc">Read a file and convert its bytes to a value of type T.</div><div class="ttdef"><b>Definition:</b> <a href="filesystem_8cc_source.html# [...]
+<div class="ttc" id="aclassgraphar_1_1_file_system_html_aab2ff41d0c13cf27b24ec1612817b110"><div class="ttname"><a href="classgraphar_1_1_file_system.html#aab2ff41d0c13cf27b24ec1612817b110">graphar::FileSystem::CopyFile</a></div><div class="ttdeci">Status CopyFile(const std::string &amp;src_path, const std::string &amp;dst_path) const noexcept</div><div class="ttdef"><b>Definition:</b> <a href="filesystem_8cc_source.html#l00253">filesystem.cc:253</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_file_system_html_acfd1a7452cf5d89826ac119b90949956"><div class="ttname"><a href="classgraphar_1_1_file_system.html#acfd1a7452cf5d89826ac119b90949956">graphar::FileSystem::ReadFileToTable</a></div><div class="ttdeci">Result&lt; std::shared_ptr&lt; arrow::Table &gt; &gt; ReadFileToTable(const std::string &amp;path, FileType file_type, const util::FilterOptions &amp;options={}) const noexcept</div><div class="ttdoc">Read and filter a file as an arrow:: [...]
 <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_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_status_html_ad92f5c41a661d4f468390e39da90f881"><div class="ttname"><a href="classgraphar_1_1_status.html#ad92f5c41a661d4f468390e39da90f881">graphar::Status::OK</a></div><div class="ttdeci">static Status OK()</div><div class="ttdef"><b>Definition:</b> <a href="status_8h_source.html#l00157">status.h:157</a></div></div>
diff --git a/docs/cpp/filesystem_8h_source.html b/docs/cpp/filesystem_8h_source.html
index 8ac9c14..99acd3a 100644
--- a/docs/cpp/filesystem_8h_source.html
+++ b/docs/cpp/filesystem_8h_source.html
@@ -165,12 +165,12 @@ $(function() {
 <div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;}  <span class="comment">// namespace graphar</span></div>
 <div class="ttc" id="aclassgraphar_1_1_file_system_html"><div class="ttname"><a href="classgraphar_1_1_file_system.html">graphar::FileSystem</a></div><div class="ttdef"><b>Definition:</b> <a href="filesystem_8h_source.html#l00059">filesystem.h:59</a></div></div>
 <div class="ttc" id="aclassgraphar_1_1_file_system_html_a240e8f3d8a4aab98d35a0faf6de54f25"><div class="ttname"><a href="classgraphar_1_1_file_system.html#a240e8f3d8a4aab98d35a0faf6de54f25">graphar::FileSystem::FileSystem</a></div><div class="ttdeci">FileSystem(std::shared_ptr&lt; arrow::fs::FileSystem &gt; arrow_fs)</div><div class="ttdoc">Create a FileSystem instance.</div><div class="ttdef"><b>Definition:</b> <a href="filesystem_8h_source.html#l00065">filesystem.h:65</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_file_system_html_a293c0415cb3b72795e034f2a08510524"><div class="ttname"><a href="classgraphar_1_1_file_system.html#a293c0415cb3b72795e034f2a08510524">graphar::FileSystem::GetFileNumOfDir</a></div><div class="ttdeci">Result&lt; IdType &gt; GetFileNumOfDir(const std::string &amp;dir_path, bool recursive=false) const noexcept</div><div class="ttdef"><b>Definition:</b> <a href="filesystem_8cc_source.html#l00260">filesystem.cc:260</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_file_system_html_a474b6e6ba28a0114a1d84f4eb06a211b"><div class="ttname"><a href="classgraphar_1_1_file_system.html#a474b6e6ba28a0114a1d84f4eb06a211b">graphar::FileSystem::WriteValueToFile</a></div><div class="ttdeci">Status WriteValueToFile(const T &amp;value, const std::string &amp;path) const noexcept</div><div class="ttdoc">Write a value of type T to a file.</div><div class="ttdef"><b>Definition:</b> <a href="filesystem_8cc_source.html#l00184">fi [...]
-<div class="ttc" id="aclassgraphar_1_1_file_system_html_a88ffaca40d40ca34be4eed2ef5802854"><div class="ttname"><a href="classgraphar_1_1_file_system.html#a88ffaca40d40ca34be4eed2ef5802854">graphar::FileSystem::WriteTableToFile</a></div><div class="ttdeci">Status WriteTableToFile(const std::shared_ptr&lt; arrow::Table &gt; &amp;table, FileType file_type, const std::string &amp;path) const noexcept</div><div class="ttdoc">Write a table to a file with a specific type.</div><div class="ttdef [...]
-<div class="ttc" id="aclassgraphar_1_1_file_system_html_aa014a28119399836283a573c9abd97b7"><div class="ttname"><a href="classgraphar_1_1_file_system.html#aa014a28119399836283a573c9abd97b7">graphar::FileSystem::ReadFileToValue</a></div><div class="ttdeci">Result&lt; T &gt; ReadFileToValue(const std::string &amp;path) const noexcept</div><div class="ttdoc">Read a file and convert its bytes to a value of type T.</div><div class="ttdef"><b>Definition:</b> <a href="filesystem_8cc_source.html# [...]
-<div class="ttc" id="aclassgraphar_1_1_file_system_html_aab2ff41d0c13cf27b24ec1612817b110"><div class="ttname"><a href="classgraphar_1_1_file_system.html#aab2ff41d0c13cf27b24ec1612817b110">graphar::FileSystem::CopyFile</a></div><div class="ttdeci">Status CopyFile(const std::string &amp;src_path, const std::string &amp;dst_path) const noexcept</div><div class="ttdef"><b>Definition:</b> <a href="filesystem_8cc_source.html#l00251">filesystem.cc:251</a></div></div>
-<div class="ttc" id="aclassgraphar_1_1_file_system_html_acfd1a7452cf5d89826ac119b90949956"><div class="ttname"><a href="classgraphar_1_1_file_system.html#acfd1a7452cf5d89826ac119b90949956">graphar::FileSystem::ReadFileToTable</a></div><div class="ttdeci">Result&lt; std::shared_ptr&lt; arrow::Table &gt; &gt; ReadFileToTable(const std::string &amp;path, FileType file_type, const util::FilterOptions &amp;options={}) const noexcept</div><div class="ttdoc">Read and filter a file as an arrow:: [...]
+<div class="ttc" id="aclassgraphar_1_1_file_system_html_a293c0415cb3b72795e034f2a08510524"><div class="ttname"><a href="classgraphar_1_1_file_system.html#a293c0415cb3b72795e034f2a08510524">graphar::FileSystem::GetFileNumOfDir</a></div><div class="ttdeci">Result&lt; IdType &gt; GetFileNumOfDir(const std::string &amp;dir_path, bool recursive=false) const noexcept</div><div class="ttdef"><b>Definition:</b> <a href="filesystem_8cc_source.html#l00262">filesystem.cc:262</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_file_system_html_a474b6e6ba28a0114a1d84f4eb06a211b"><div class="ttname"><a href="classgraphar_1_1_file_system.html#a474b6e6ba28a0114a1d84f4eb06a211b">graphar::FileSystem::WriteValueToFile</a></div><div class="ttdeci">Status WriteValueToFile(const T &amp;value, const std::string &amp;path) const noexcept</div><div class="ttdoc">Write a value of type T to a file.</div><div class="ttdef"><b>Definition:</b> <a href="filesystem_8cc_source.html#l00186">fi [...]
+<div class="ttc" id="aclassgraphar_1_1_file_system_html_a88ffaca40d40ca34be4eed2ef5802854"><div class="ttname"><a href="classgraphar_1_1_file_system.html#a88ffaca40d40ca34be4eed2ef5802854">graphar::FileSystem::WriteTableToFile</a></div><div class="ttdeci">Status WriteTableToFile(const std::shared_ptr&lt; arrow::Table &gt; &amp;table, FileType file_type, const std::string &amp;path) const noexcept</div><div class="ttdoc">Write a table to a file with a specific type.</div><div class="ttdef [...]
+<div class="ttc" id="aclassgraphar_1_1_file_system_html_aa014a28119399836283a573c9abd97b7"><div class="ttname"><a href="classgraphar_1_1_file_system.html#aa014a28119399836283a573c9abd97b7">graphar::FileSystem::ReadFileToValue</a></div><div class="ttdeci">Result&lt; T &gt; ReadFileToValue(const std::string &amp;path) const noexcept</div><div class="ttdoc">Read a file and convert its bytes to a value of type T.</div><div class="ttdef"><b>Definition:</b> <a href="filesystem_8cc_source.html# [...]
+<div class="ttc" id="aclassgraphar_1_1_file_system_html_aab2ff41d0c13cf27b24ec1612817b110"><div class="ttname"><a href="classgraphar_1_1_file_system.html#aab2ff41d0c13cf27b24ec1612817b110">graphar::FileSystem::CopyFile</a></div><div class="ttdeci">Status CopyFile(const std::string &amp;src_path, const std::string &amp;dst_path) const noexcept</div><div class="ttdef"><b>Definition:</b> <a href="filesystem_8cc_source.html#l00253">filesystem.cc:253</a></div></div>
+<div class="ttc" id="aclassgraphar_1_1_file_system_html_acfd1a7452cf5d89826ac119b90949956"><div class="ttname"><a href="classgraphar_1_1_file_system.html#acfd1a7452cf5d89826ac119b90949956">graphar::FileSystem::ReadFileToTable</a></div><div class="ttdeci">Result&lt; std::shared_ptr&lt; arrow::Table &gt; &gt; ReadFileToTable(const std::string &amp;path, FileType file_type, const util::FilterOptions &amp;options={}) const noexcept</div><div class="ttdoc">Read and filter a file as an arrow:: [...]
 <div class="ttc" id="astructgraphar_1_1util_1_1_filter_options_html"><div class="ttname"><a href="structgraphar_1_1util_1_1_filter_options.html">graphar::util::FilterOptions</a></div><div class="ttdef"><b>Definition:</b> <a href="reader__util_8h_source.html#l00030">reader_util.h:30</a></div></div>
 </div><!-- fragment --></div><!-- contents -->
 <!--
diff --git a/docs/cpp/fwd_8h_source.html b/docs/cpp/fwd_8h_source.html
index 0d45b40..5d3f86b 100644
--- a/docs/cpp/fwd_8h_source.html
+++ b/docs/cpp/fwd_8h_source.html
@@ -116,7 +116,7 @@ $(function() {
 <div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;<span class="keyword">using</span> IdType = int64_t;</div>
 <div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;<span class="keyword">enum class</span> Type;</div>
 <div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;<span class="keyword">class </span>DataType;</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;<span class="keyword">enum</span> FileType { CSV = 0, PARQUET = 1, ORC = 2 };</div>
+<div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;<span class="keyword">enum</span> FileType { CSV = 0, PARQUET = 1, ORC = 2, JSON = 3 };</div>
 <div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;<span class="keyword">enum class</span> AdjListType : uint8_t;</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;template &lt;typename T&gt;</div>
diff --git a/docs/index.html b/docs/index.html
index befce83..59e20e7 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.939567da.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.7ae201c8.js" defer="defer"></script>
 <script src="/assets/js/main.812b5fef.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
diff --git a/docs/libraries/cpp/examples/bgl/index.html b/docs/libraries/cpp/examples/bgl/index.html
index a540ff6..1cff5c7 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.939567da.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.7ae201c8.js" defer="defer"></script>
 <script src="/assets/js/main.812b5fef.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 14159d5..6926475 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.939567da.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.7ae201c8.js" defer="defer"></script>
 <script src="/assets/js/main.812b5fef.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 5ac1cd1..5958dd7 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.939567da.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.7ae201c8.js" defer="defer"></script>
 <script src="/assets/js/main.812b5fef.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 1d4ebe2..d899bc8 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.939567da.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.7ae201c8.js" defer="defer"></script>
 <script src="/assets/js/main.812b5fef.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 16a88e7..031f2dd 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.939567da.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.7ae201c8.js" defer="defer"></script>
 <script src="/assets/js/main.812b5fef.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
diff --git a/docs/libraries/java/how_to_develop_java/index.html b/docs/libraries/java/how_to_develop_java/index.html
index 7166f3d..7f5e86a 100644
--- a/docs/libraries/java/how_to_develop_java/index.html
+++ b/docs/libraries/java/how_to_develop_java/index.html
@@ -5,7 +5,7 @@
 <meta name="generator" content="Docusaurus v3.1.1">
 <title data-rh="true">How to Develop 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.apac [...]
 <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.939567da.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.7ae201c8.js" defer="defer"></script>
 <script src="/assets/js/main.812b5fef.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 40b5f8c..d2f576a 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.939567da.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.7ae201c8.js" defer="defer"></script>
 <script src="/assets/js/main.812b5fef.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 e8ab305..cbd1ef8 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.939567da.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.7ae201c8.js" defer="defer"></script>
 <script src="/assets/js/main.812b5fef.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 377c570..08faff3 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.939567da.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.7ae201c8.js" defer="defer"></script>
 <script src="/assets/js/main.812b5fef.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 53b576c..ace6286 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.939567da.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.7ae201c8.js" defer="defer"></script>
 <script src="/assets/js/main.812b5fef.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 feefb0a..46d9669 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.939567da.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.7ae201c8.js" defer="defer"></script>
 <script src="/assets/js/main.812b5fef.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 8eb5bfb..9d85de8 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.939567da.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.7ae201c8.js" defer="defer"></script>
 <script src="/assets/js/main.812b5fef.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
diff --git a/docs/overview/index.html b/docs/overview/index.html
index a527e5b..bc77377 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.939567da.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.7ae201c8.js" defer="defer"></script>
 <script src="/assets/js/main.812b5fef.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 afc0c58..569d370 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.939567da.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.7ae201c8.js" defer="defer"></script>
 <script src="/assets/js/main.812b5fef.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
diff --git a/docs/pyspark/graphar_pyspark/enums.html b/docs/pyspark/graphar_pyspark/enums.html
index 543af5d..99d7920 100644
--- a/docs/pyspark/graphar_pyspark/enums.html
+++ b/docs/pyspark/graphar_pyspark/enums.html
@@ -71,6 +71,9 @@
                         <li>
                                 <a class="variable" href="#FileType.CSV">CSV</a>
                         </li>
+                        <li>
+                                <a class="variable" href="#FileType.JSON">JSON</a>
+                        </li>
                         <li>
                                 <a class="variable" href="#FileType.PARQUET">PARQUET</a>
                         </li>
@@ -193,55 +196,56 @@
 </span><span id="L-58"><a href="#L-58"><span class="linenos"> 58</span></a><span class="w">    </span><span class="sd">&quot;&quot;&quot;Type of  file format.&quot;&quot;&quot;</span>
 </span><span id="L-59"><a href="#L-59"><span class="linenos"> 59</span></a>
 </span><span id="L-60"><a href="#L-60"><span class="linenos"> 60</span></a>    <span class="n">CSV</span> <span class="o">=</span> <span class="s2">&quot;csv&quot;</span>
-</span><span id="L-61"><a href="#L-61"><span class="linenos"> 61</span></a>    <span class="n">PARQUET</span> <span class="o">=</span> <span class="s2">&quot;parquet&quot;</span>
-</span><span id="L-62"><a href="#L-62"><span class="linenos"> 62</span></a>    <span class="n">ORC</span> <span class="o">=</span> <span class="s2">&quot;orc&quot;</span>
-</span><span id="L-63"><a href="#L-63"><span class="linenos"> 63</span></a>
-</span><span id="L-64"><a href="#L-64"><span class="linenos"> 64</span></a>    <span class="nd">@staticmethod</span>
-</span><span id="L-65"><a href="#L-65"><span class="linenos"> 65</span></a>    <span class="k">def</span> <span class="nf">from_scala</span><span class="p">(</span><span class="n">jvm_obj</span><span class="p">:</span> <span class="n">JavaObject</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="s2">&quot;FileType&quot;</span><span class="p">:</span>
-</span><span id="L-66"><a href="#L-66"><span class="linenos"> 66</span></a><span class="w">        </span><span class="sd">&quot;&quot;&quot;Create an instance of the Class from the corresponding JVM object.</span>
-</span><span id="L-67"><a href="#L-67"><span class="linenos"> 67</span></a>
-</span><span id="L-68"><a href="#L-68"><span class="linenos"> 68</span></a><span class="sd">        :param jvm_obj: scala object in JVM.</span>
-</span><span id="L-69"><a href="#L-69"><span class="linenos"> 69</span></a><span class="sd">        :returns: instance of Python Class.</span>
-</span><span id="L-70"><a href="#L-70"><span class="linenos"> 70</span></a><span class="sd">        &quot;&quot;&quot;</span>
-</span><span id="L-71"><a href="#L-71"><span class="linenos"> 71</span></a>        <span class="n">_check_session</span><span class="p">()</span>
-</span><span id="L-72"><a href="#L-72"><span class="linenos"> 72</span></a>        <span class="k">return</span> <span class="n">FileType</span><span class="p">(</span><span class="n">GraphArSession</span><span class="o">.</span><span class="n">graphar</span><span class="o">.</span><span class="n">FileType</span><span class="o">.</span><span class="n">FileTypeToString</span><span class="p">(</span><span class="n">jvm_obj</span><span class="p">))</span>
-</span><span id="L-73"><a href="#L-73"><span class="linenos"> 73</span></a>
-</span><span id="L-74"><a href="#L-74"><span class="linenos"> 74</span></a>    <span class="k">def</span> <span class="nf">to_scala</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">JavaObject</span><span class="p">:</span>
-</span><span id="L-75"><a href="#L-75"><span class="linenos"> 75</span></a><span class="w">        </span><span class="sd">&quot;&quot;&quot;Transform object to JVM representation.</span>
-</span><span id="L-76"><a href="#L-76"><span class="linenos"> 76</span></a>
-</span><span id="L-77"><a href="#L-77"><span class="linenos"> 77</span></a><span class="sd">        :returns: JavaObject</span>
-</span><span id="L-78"><a href="#L-78"><span class="linenos"> 78</span></a><span class="sd">        &quot;&quot;&quot;</span>
-</span><span id="L-79"><a href="#L-79"><span class="linenos"> 79</span></a>        <span class="n">_check_session</span><span class="p">()</span>
-</span><span id="L-80"><a href="#L-80"><span class="linenos"> 80</span></a>        <span class="k">return</span> <span class="n">GraphArSession</span><span class="o">.</span><span class="n">graphar</span><span class="o">.</span><span class="n">FileType</span><span class="o">.</span><span class="n">StringToFileType</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">value</span><span class="p">)</span>
-</span><span id="L-81"><a href="#L-81"><span class="linenos"> 81</span></a>
+</span><span id="L-61"><a href="#L-61"><span class="linenos"> 61</span></a>    <span class="n">JSON</span> <span class="o">=</span> <span class="s2">&quot;json&quot;</span>
+</span><span id="L-62"><a href="#L-62"><span class="linenos"> 62</span></a>    <span class="n">PARQUET</span> <span class="o">=</span> <span class="s2">&quot;parquet&quot;</span>
+</span><span id="L-63"><a href="#L-63"><span class="linenos"> 63</span></a>    <span class="n">ORC</span> <span class="o">=</span> <span class="s2">&quot;orc&quot;</span>
+</span><span id="L-64"><a href="#L-64"><span class="linenos"> 64</span></a>
+</span><span id="L-65"><a href="#L-65"><span class="linenos"> 65</span></a>    <span class="nd">@staticmethod</span>
+</span><span id="L-66"><a href="#L-66"><span class="linenos"> 66</span></a>    <span class="k">def</span> <span class="nf">from_scala</span><span class="p">(</span><span class="n">jvm_obj</span><span class="p">:</span> <span class="n">JavaObject</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="s2">&quot;FileType&quot;</span><span class="p">:</span>
+</span><span id="L-67"><a href="#L-67"><span class="linenos"> 67</span></a><span class="w">        </span><span class="sd">&quot;&quot;&quot;Create an instance of the Class from the corresponding JVM object.</span>
+</span><span id="L-68"><a href="#L-68"><span class="linenos"> 68</span></a>
+</span><span id="L-69"><a href="#L-69"><span class="linenos"> 69</span></a><span class="sd">        :param jvm_obj: scala object in JVM.</span>
+</span><span id="L-70"><a href="#L-70"><span class="linenos"> 70</span></a><span class="sd">        :returns: instance of Python Class.</span>
+</span><span id="L-71"><a href="#L-71"><span class="linenos"> 71</span></a><span class="sd">        &quot;&quot;&quot;</span>
+</span><span id="L-72"><a href="#L-72"><span class="linenos"> 72</span></a>        <span class="n">_check_session</span><span class="p">()</span>
+</span><span id="L-73"><a href="#L-73"><span class="linenos"> 73</span></a>        <span class="k">return</span> <span class="n">FileType</span><span class="p">(</span><span class="n">GraphArSession</span><span class="o">.</span><span class="n">graphar</span><span class="o">.</span><span class="n">FileType</span><span class="o">.</span><span class="n">FileTypeToString</span><span class="p">(</span><span class="n">jvm_obj</span><span class="p">))</span>
+</span><span id="L-74"><a href="#L-74"><span class="linenos"> 74</span></a>
+</span><span id="L-75"><a href="#L-75"><span class="linenos"> 75</span></a>    <span class="k">def</span> <span class="nf">to_scala</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">JavaObject</span><span class="p">:</span>
+</span><span id="L-76"><a href="#L-76"><span class="linenos"> 76</span></a><span class="w">        </span><span class="sd">&quot;&quot;&quot;Transform object to JVM representation.</span>
+</span><span id="L-77"><a href="#L-77"><span class="linenos"> 77</span></a>
+</span><span id="L-78"><a href="#L-78"><span class="linenos"> 78</span></a><span class="sd">        :returns: JavaObject</span>
+</span><span id="L-79"><a href="#L-79"><span class="linenos"> 79</span></a><span class="sd">        &quot;&quot;&quot;</span>
+</span><span id="L-80"><a href="#L-80"><span class="linenos"> 80</span></a>        <span class="n">_check_session</span><span class="p">()</span>
+</span><span id="L-81"><a href="#L-81"><span class="linenos"> 81</span></a>        <span class="k">return</span> <span class="n">GraphArSession</span><span class="o">.</span><span class="n">graphar</span><span class="o">.</span><span class="n">FileType</span><span class="o">.</span><span class="n">StringToFileType</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">value</span><span class="p">)</span>
 </span><span id="L-82"><a href="#L-82"><span class="linenos"> 82</span></a>
-</span><span id="L-83"><a href="#L-83"><span class="linenos"> 83</span></a><span class="k">class</span> <span class="nc">AdjListType</span><span class="p">(</span><span class="n">Enum</span><span class="p">):</span>
-</span><span id="L-84"><a href="#L-84"><span class="linenos"> 84</span></a><span class="w">    </span><span class="sd">&quot;&quot;&quot;Adj list type enumeration for adjacency list of graph.&quot;&quot;&quot;</span>
-</span><span id="L-85"><a href="#L-85"><span class="linenos"> 85</span></a>
-</span><span id="L-86"><a href="#L-86"><span class="linenos"> 86</span></a>    <span class="n">UNORDERED_BY_SOURCE</span> <span class="o">=</span> <span class="s2">&quot;unordered_by_source&quot;</span>
-</span><span id="L-87"><a href="#L-87"><span class="linenos"> 87</span></a>    <span class="n">UNORDERED_BY_DEST</span> <span class="o">=</span> <span class="s2">&quot;unordered_by_dest&quot;</span>
-</span><span id="L-88"><a href="#L-88"><span class="linenos"> 88</span></a>    <span class="n">ORDERED_BY_SOURCE</span> <span class="o">=</span> <span class="s2">&quot;ordered_by_source&quot;</span>
-</span><span id="L-89"><a href="#L-89"><span class="linenos"> 89</span></a>    <span class="n">ORDERED_BY_DEST</span> <span class="o">=</span> <span class="s2">&quot;ordered_by_dest&quot;</span>
-</span><span id="L-90"><a href="#L-90"><span class="linenos"> 90</span></a>
-</span><span id="L-91"><a href="#L-91"><span class="linenos"> 91</span></a>    <span class="nd">@staticmethod</span>
-</span><span id="L-92"><a href="#L-92"><span class="linenos"> 92</span></a>    <span class="k">def</span> <span class="nf">from_scala</span><span class="p">(</span><span class="n">jvm_obj</span><span class="p">:</span> <span class="n">JavaObject</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="s2">&quot;AdjListType&quot;</span><span class="p">:</span>
-</span><span id="L-93"><a href="#L-93"><span class="linenos"> 93</span></a><span class="w">        </span><span class="sd">&quot;&quot;&quot;Create an instance of the Class from the corresponding JVM object.</span>
-</span><span id="L-94"><a href="#L-94"><span class="linenos"> 94</span></a>
-</span><span id="L-95"><a href="#L-95"><span class="linenos"> 95</span></a><span class="sd">        :param jvm_obj: scala object in JVM.</span>
-</span><span id="L-96"><a href="#L-96"><span class="linenos"> 96</span></a><span class="sd">        :returns: instance of Python Class.</span>
-</span><span id="L-97"><a href="#L-97"><span class="linenos"> 97</span></a><span class="sd">        &quot;&quot;&quot;</span>
-</span><span id="L-98"><a href="#L-98"><span class="linenos"> 98</span></a>        <span class="n">_check_session</span><span class="p">()</span>
-</span><span id="L-99"><a href="#L-99"><span class="linenos"> 99</span></a>        <span class="k">return</span> <span class="n">AdjListType</span><span class="p">(</span>
-</span><span id="L-100"><a href="#L-100"><span class="linenos">100</span></a>            <span class="n">GraphArSession</span><span class="o">.</span><span class="n">graphar</span><span class="o">.</span><span class="n">AdjListType</span><span class="o">.</span><span class="n">AdjListTypeToString</span><span class="p">(</span><span class="n">jvm_obj</span><span class="p">),</span>
-</span><span id="L-101"><a href="#L-101"><span class="linenos">101</span></a>        <span class="p">)</span>
-</span><span id="L-102"><a href="#L-102"><span class="linenos">102</span></a>
-</span><span id="L-103"><a href="#L-103"><span class="linenos">103</span></a>    <span class="k">def</span> <span class="nf">to_scala</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">JavaObject</span><span class="p">:</span>
-</span><span id="L-104"><a href="#L-104"><span class="linenos">104</span></a><span class="w">        </span><span class="sd">&quot;&quot;&quot;Transform object to JVM representation.</span>
-</span><span id="L-105"><a href="#L-105"><span class="linenos">105</span></a>
-</span><span id="L-106"><a href="#L-106"><span class="linenos">106</span></a><span class="sd">        :returns: JavaObject</span>
-</span><span id="L-107"><a href="#L-107"><span class="linenos">107</span></a><span class="sd">        &quot;&quot;&quot;</span>
-</span><span id="L-108"><a href="#L-108"><span class="linenos">108</span></a>        <span class="n">_check_session</span><span class="p">()</span>
-</span><span id="L-109"><a href="#L-109"><span class="linenos">109</span></a>        <span class="k">return</span> <span class="n">GraphArSession</span><span class="o">.</span><span class="n">graphar</span><span class="o">.</span><span class="n">AdjListType</span><span class="o">.</span><span class="n">StringToAdjListType</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">value</span><span class="p">)</span>
+</span><span id="L-83"><a href="#L-83"><span class="linenos"> 83</span></a>
+</span><span id="L-84"><a href="#L-84"><span class="linenos"> 84</span></a><span class="k">class</span> <span class="nc">AdjListType</span><span class="p">(</span><span class="n">Enum</span><span class="p">):</span>
+</span><span id="L-85"><a href="#L-85"><span class="linenos"> 85</span></a><span class="w">    </span><span class="sd">&quot;&quot;&quot;Adj list type enumeration for adjacency list of graph.&quot;&quot;&quot;</span>
+</span><span id="L-86"><a href="#L-86"><span class="linenos"> 86</span></a>
+</span><span id="L-87"><a href="#L-87"><span class="linenos"> 87</span></a>    <span class="n">UNORDERED_BY_SOURCE</span> <span class="o">=</span> <span class="s2">&quot;unordered_by_source&quot;</span>
+</span><span id="L-88"><a href="#L-88"><span class="linenos"> 88</span></a>    <span class="n">UNORDERED_BY_DEST</span> <span class="o">=</span> <span class="s2">&quot;unordered_by_dest&quot;</span>
+</span><span id="L-89"><a href="#L-89"><span class="linenos"> 89</span></a>    <span class="n">ORDERED_BY_SOURCE</span> <span class="o">=</span> <span class="s2">&quot;ordered_by_source&quot;</span>
+</span><span id="L-90"><a href="#L-90"><span class="linenos"> 90</span></a>    <span class="n">ORDERED_BY_DEST</span> <span class="o">=</span> <span class="s2">&quot;ordered_by_dest&quot;</span>
+</span><span id="L-91"><a href="#L-91"><span class="linenos"> 91</span></a>
+</span><span id="L-92"><a href="#L-92"><span class="linenos"> 92</span></a>    <span class="nd">@staticmethod</span>
+</span><span id="L-93"><a href="#L-93"><span class="linenos"> 93</span></a>    <span class="k">def</span> <span class="nf">from_scala</span><span class="p">(</span><span class="n">jvm_obj</span><span class="p">:</span> <span class="n">JavaObject</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="s2">&quot;AdjListType&quot;</span><span class="p">:</span>
+</span><span id="L-94"><a href="#L-94"><span class="linenos"> 94</span></a><span class="w">        </span><span class="sd">&quot;&quot;&quot;Create an instance of the Class from the corresponding JVM object.</span>
+</span><span id="L-95"><a href="#L-95"><span class="linenos"> 95</span></a>
+</span><span id="L-96"><a href="#L-96"><span class="linenos"> 96</span></a><span class="sd">        :param jvm_obj: scala object in JVM.</span>
+</span><span id="L-97"><a href="#L-97"><span class="linenos"> 97</span></a><span class="sd">        :returns: instance of Python Class.</span>
+</span><span id="L-98"><a href="#L-98"><span class="linenos"> 98</span></a><span class="sd">        &quot;&quot;&quot;</span>
+</span><span id="L-99"><a href="#L-99"><span class="linenos"> 99</span></a>        <span class="n">_check_session</span><span class="p">()</span>
+</span><span id="L-100"><a href="#L-100"><span class="linenos">100</span></a>        <span class="k">return</span> <span class="n">AdjListType</span><span class="p">(</span>
+</span><span id="L-101"><a href="#L-101"><span class="linenos">101</span></a>            <span class="n">GraphArSession</span><span class="o">.</span><span class="n">graphar</span><span class="o">.</span><span class="n">AdjListType</span><span class="o">.</span><span class="n">AdjListTypeToString</span><span class="p">(</span><span class="n">jvm_obj</span><span class="p">),</span>
+</span><span id="L-102"><a href="#L-102"><span class="linenos">102</span></a>        <span class="p">)</span>
+</span><span id="L-103"><a href="#L-103"><span class="linenos">103</span></a>
+</span><span id="L-104"><a href="#L-104"><span class="linenos">104</span></a>    <span class="k">def</span> <span class="nf">to_scala</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">JavaObject</span><span class="p">:</span>
+</span><span id="L-105"><a href="#L-105"><span class="linenos">105</span></a><span class="w">        </span><span class="sd">&quot;&quot;&quot;Transform object to JVM representation.</span>
+</span><span id="L-106"><a href="#L-106"><span class="linenos">106</span></a>
+</span><span id="L-107"><a href="#L-107"><span class="linenos">107</span></a><span class="sd">        :returns: JavaObject</span>
+</span><span id="L-108"><a href="#L-108"><span class="linenos">108</span></a><span class="sd">        &quot;&quot;&quot;</span>
+</span><span id="L-109"><a href="#L-109"><span class="linenos">109</span></a>        <span class="n">_check_session</span><span class="p">()</span>
+</span><span id="L-110"><a href="#L-110"><span class="linenos">110</span></a>        <span class="k">return</span> <span class="n">GraphArSession</span><span class="o">.</span><span class="n">graphar</span><span class="o">.</span><span class="n">AdjListType</span><span class="o">.</span><span class="n">StringToAdjListType</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">value</span><span class="p">)</span>
 </span></pre></div>
 
 
@@ -466,26 +470,27 @@
 </span><span id="FileType-59"><a href="#FileType-59"><span class="linenos">59</span></a><span class="w">    </span><span class="sd">&quot;&quot;&quot;Type of  file format.&quot;&quot;&quot;</span>
 </span><span id="FileType-60"><a href="#FileType-60"><span class="linenos">60</span></a>
 </span><span id="FileType-61"><a href="#FileType-61"><span class="linenos">61</span></a>    <span class="n">CSV</span> <span class="o">=</span> <span class="s2">&quot;csv&quot;</span>
-</span><span id="FileType-62"><a href="#FileType-62"><span class="linenos">62</span></a>    <span class="n">PARQUET</span> <span class="o">=</span> <span class="s2">&quot;parquet&quot;</span>
-</span><span id="FileType-63"><a href="#FileType-63"><span class="linenos">63</span></a>    <span class="n">ORC</span> <span class="o">=</span> <span class="s2">&quot;orc&quot;</span>
-</span><span id="FileType-64"><a href="#FileType-64"><span class="linenos">64</span></a>
-</span><span id="FileType-65"><a href="#FileType-65"><span class="linenos">65</span></a>    <span class="nd">@staticmethod</span>
-</span><span id="FileType-66"><a href="#FileType-66"><span class="linenos">66</span></a>    <span class="k">def</span> <span class="nf">from_scala</span><span class="p">(</span><span class="n">jvm_obj</span><span class="p">:</span> <span class="n">JavaObject</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="s2">&quot;FileType&quot;</span><span class="p">:</span>
-</span><span id="FileType-67"><a href="#FileType-67"><span class="linenos">67</span></a><span class="w">        </span><span class="sd">&quot;&quot;&quot;Create an instance of the Class from the corresponding JVM object.</span>
-</span><span id="FileType-68"><a href="#FileType-68"><span class="linenos">68</span></a>
-</span><span id="FileType-69"><a href="#FileType-69"><span class="linenos">69</span></a><span class="sd">        :param jvm_obj: scala object in JVM.</span>
-</span><span id="FileType-70"><a href="#FileType-70"><span class="linenos">70</span></a><span class="sd">        :returns: instance of Python Class.</span>
-</span><span id="FileType-71"><a href="#FileType-71"><span class="linenos">71</span></a><span class="sd">        &quot;&quot;&quot;</span>
-</span><span id="FileType-72"><a href="#FileType-72"><span class="linenos">72</span></a>        <span class="n">_check_session</span><span class="p">()</span>
-</span><span id="FileType-73"><a href="#FileType-73"><span class="linenos">73</span></a>        <span class="k">return</span> <span class="n">FileType</span><span class="p">(</span><span class="n">GraphArSession</span><span class="o">.</span><span class="n">graphar</span><span class="o">.</span><span class="n">FileType</span><span class="o">.</span><span class="n">FileTypeToString</span><span class="p">(</span><span class="n">jvm_obj</span><span class="p">))</span>
-</span><span id="FileType-74"><a href="#FileType-74"><span class="linenos">74</span></a>
-</span><span id="FileType-75"><a href="#FileType-75"><span class="linenos">75</span></a>    <span class="k">def</span> <span class="nf">to_scala</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">JavaObject</span><span class="p">:</span>
-</span><span id="FileType-76"><a href="#FileType-76"><span class="linenos">76</span></a><span class="w">        </span><span class="sd">&quot;&quot;&quot;Transform object to JVM representation.</span>
-</span><span id="FileType-77"><a href="#FileType-77"><span class="linenos">77</span></a>
-</span><span id="FileType-78"><a href="#FileType-78"><span class="linenos">78</span></a><span class="sd">        :returns: JavaObject</span>
-</span><span id="FileType-79"><a href="#FileType-79"><span class="linenos">79</span></a><span class="sd">        &quot;&quot;&quot;</span>
-</span><span id="FileType-80"><a href="#FileType-80"><span class="linenos">80</span></a>        <span class="n">_check_session</span><span class="p">()</span>
-</span><span id="FileType-81"><a href="#FileType-81"><span class="linenos">81</span></a>        <span class="k">return</span> <span class="n">GraphArSession</span><span class="o">.</span><span class="n">graphar</span><span class="o">.</span><span class="n">FileType</span><span class="o">.</span><span class="n">StringToFileType</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">value</span><span class="p">)</span>
+</span><span id="FileType-62"><a href="#FileType-62"><span class="linenos">62</span></a>    <span class="n">JSON</span> <span class="o">=</span> <span class="s2">&quot;json&quot;</span>
+</span><span id="FileType-63"><a href="#FileType-63"><span class="linenos">63</span></a>    <span class="n">PARQUET</span> <span class="o">=</span> <span class="s2">&quot;parquet&quot;</span>
+</span><span id="FileType-64"><a href="#FileType-64"><span class="linenos">64</span></a>    <span class="n">ORC</span> <span class="o">=</span> <span class="s2">&quot;orc&quot;</span>
+</span><span id="FileType-65"><a href="#FileType-65"><span class="linenos">65</span></a>
+</span><span id="FileType-66"><a href="#FileType-66"><span class="linenos">66</span></a>    <span class="nd">@staticmethod</span>
+</span><span id="FileType-67"><a href="#FileType-67"><span class="linenos">67</span></a>    <span class="k">def</span> <span class="nf">from_scala</span><span class="p">(</span><span class="n">jvm_obj</span><span class="p">:</span> <span class="n">JavaObject</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="s2">&quot;FileType&quot;</span><span class="p">:</span>
+</span><span id="FileType-68"><a href="#FileType-68"><span class="linenos">68</span></a><span class="w">        </span><span class="sd">&quot;&quot;&quot;Create an instance of the Class from the corresponding JVM object.</span>
+</span><span id="FileType-69"><a href="#FileType-69"><span class="linenos">69</span></a>
+</span><span id="FileType-70"><a href="#FileType-70"><span class="linenos">70</span></a><span class="sd">        :param jvm_obj: scala object in JVM.</span>
+</span><span id="FileType-71"><a href="#FileType-71"><span class="linenos">71</span></a><span class="sd">        :returns: instance of Python Class.</span>
+</span><span id="FileType-72"><a href="#FileType-72"><span class="linenos">72</span></a><span class="sd">        &quot;&quot;&quot;</span>
+</span><span id="FileType-73"><a href="#FileType-73"><span class="linenos">73</span></a>        <span class="n">_check_session</span><span class="p">()</span>
+</span><span id="FileType-74"><a href="#FileType-74"><span class="linenos">74</span></a>        <span class="k">return</span> <span class="n">FileType</span><span class="p">(</span><span class="n">GraphArSession</span><span class="o">.</span><span class="n">graphar</span><span class="o">.</span><span class="n">FileType</span><span class="o">.</span><span class="n">FileTypeToString</span><span class="p">(</span><span class="n">jvm_obj</span><span class="p">))</span>
+</span><span id="FileType-75"><a href="#FileType-75"><span class="linenos">75</span></a>
+</span><span id="FileType-76"><a href="#FileType-76"><span class="linenos">76</span></a>    <span class="k">def</span> <span class="nf">to_scala</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">JavaObject</span><span class="p">:</span>
+</span><span id="FileType-77"><a href="#FileType-77"><span class="linenos">77</span></a><span class="w">        </span><span class="sd">&quot;&quot;&quot;Transform object to JVM representation.</span>
+</span><span id="FileType-78"><a href="#FileType-78"><span class="linenos">78</span></a>
+</span><span id="FileType-79"><a href="#FileType-79"><span class="linenos">79</span></a><span class="sd">        :returns: JavaObject</span>
+</span><span id="FileType-80"><a href="#FileType-80"><span class="linenos">80</span></a><span class="sd">        &quot;&quot;&quot;</span>
+</span><span id="FileType-81"><a href="#FileType-81"><span class="linenos">81</span></a>        <span class="n">_check_session</span><span class="p">()</span>
+</span><span id="FileType-82"><a href="#FileType-82"><span class="linenos">82</span></a>        <span class="k">return</span> <span class="n">GraphArSession</span><span class="o">.</span><span class="n">graphar</span><span class="o">.</span><span class="n">FileType</span><span class="o">.</span><span class="n">StringToFileType</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">value</span><span class="p">)</span>
 </span></pre></div>
 
 
@@ -504,6 +509,18 @@
     
     
 
+                            </div>
+                            <div id="FileType.JSON" class="classattr">
+                                <div class="attr variable">
+            <span class="name">JSON</span>        =
+<span class="default_value">&lt;<a href="#FileType.JSON">FileType.JSON</a>: &#39;json&#39;&gt;</span>
+
+        
+    </div>
+    <a class="headerlink" href="#FileType.JSON"></a>
+    
+    
+
                             </div>
                             <div id="FileType.PARQUET" class="classattr">
                                 <div class="attr variable">
@@ -541,15 +558,15 @@
 
     </div>
     <a class="headerlink" href="#FileType.from_scala"></a>
-            <div class="pdoc-code codehilite"><pre><span></span><span id="FileType.from_scala-65"><a href="#FileType.from_scala-65"><span class="linenos">65</span></a>    <span class="nd">@staticmethod</span>
-</span><span id="FileType.from_scala-66"><a href="#FileType.from_scala-66"><span class="linenos">66</span></a>    <span class="k">def</span> <span class="nf">from_scala</span><span class="p">(</span><span class="n">jvm_obj</span><span class="p">:</span> <span class="n">JavaObject</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="s2">&quot;FileType&quot;</span><span class="p">:</span>
-</span><span id="FileType.from_scala-67"><a href="#FileType.from_scala-67"><span class="linenos">67</span></a><span class="w">        </span><span class="sd">&quot;&quot;&quot;Create an instance of the Class from the corresponding JVM object.</span>
-</span><span id="FileType.from_scala-68"><a href="#FileType.from_scala-68"><span class="linenos">68</span></a>
-</span><span id="FileType.from_scala-69"><a href="#FileType.from_scala-69"><span class="linenos">69</span></a><span class="sd">        :param jvm_obj: scala object in JVM.</span>
-</span><span id="FileType.from_scala-70"><a href="#FileType.from_scala-70"><span class="linenos">70</span></a><span class="sd">        :returns: instance of Python Class.</span>
-</span><span id="FileType.from_scala-71"><a href="#FileType.from_scala-71"><span class="linenos">71</span></a><span class="sd">        &quot;&quot;&quot;</span>
-</span><span id="FileType.from_scala-72"><a href="#FileType.from_scala-72"><span class="linenos">72</span></a>        <span class="n">_check_session</span><span class="p">()</span>
-</span><span id="FileType.from_scala-73"><a href="#FileType.from_scala-73"><span class="linenos">73</span></a>        <span class="k">return</span> <span class="n">FileType</span><span class="p">(</span><span class="n">GraphArSession</span><span class="o">.</span><span class="n">graphar</span><span class="o">.</span><span class="n">FileType</span><span class="o">.</span><span class="n">FileTypeToString</span><span class="p">(</span><span class="n">jvm_obj</span><span class="p">))</span>
+            <div class="pdoc-code codehilite"><pre><span></span><span id="FileType.from_scala-66"><a href="#FileType.from_scala-66"><span class="linenos">66</span></a>    <span class="nd">@staticmethod</span>
+</span><span id="FileType.from_scala-67"><a href="#FileType.from_scala-67"><span class="linenos">67</span></a>    <span class="k">def</span> <span class="nf">from_scala</span><span class="p">(</span><span class="n">jvm_obj</span><span class="p">:</span> <span class="n">JavaObject</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="s2">&quot;FileType&quot;</span><span class="p">:</span>
+</span><span id="FileType.from_scala-68"><a href="#FileType.from_scala-68"><span class="linenos">68</span></a><span class="w">        </span><span class="sd">&quot;&quot;&quot;Create an instance of the Class from the corresponding JVM object.</span>
+</span><span id="FileType.from_scala-69"><a href="#FileType.from_scala-69"><span class="linenos">69</span></a>
+</span><span id="FileType.from_scala-70"><a href="#FileType.from_scala-70"><span class="linenos">70</span></a><span class="sd">        :param jvm_obj: scala object in JVM.</span>
+</span><span id="FileType.from_scala-71"><a href="#FileType.from_scala-71"><span class="linenos">71</span></a><span class="sd">        :returns: instance of Python Class.</span>
+</span><span id="FileType.from_scala-72"><a href="#FileType.from_scala-72"><span class="linenos">72</span></a><span class="sd">        &quot;&quot;&quot;</span>
+</span><span id="FileType.from_scala-73"><a href="#FileType.from_scala-73"><span class="linenos">73</span></a>        <span class="n">_check_session</span><span class="p">()</span>
+</span><span id="FileType.from_scala-74"><a href="#FileType.from_scala-74"><span class="linenos">74</span></a>        <span class="k">return</span> <span class="n">FileType</span><span class="p">(</span><span class="n">GraphArSession</span><span class="o">.</span><span class="n">graphar</span><span class="o">.</span><span class="n">FileType</span><span class="o">.</span><span class="n">FileTypeToString</span><span class="p">(</span><span class="n">jvm_obj</span><span class="p">))</span>
 </span></pre></div>
 
 
@@ -576,13 +593,13 @@
 
     </div>
     <a class="headerlink" href="#FileType.to_scala"></a>
-            <div class="pdoc-code codehilite"><pre><span></span><span id="FileType.to_scala-75"><a href="#FileType.to_scala-75"><span class="linenos">75</span></a>    <span class="k">def</span> <span class="nf">to_scala</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">JavaObject</span><span class="p">:</span>
-</span><span id="FileType.to_scala-76"><a href="#FileType.to_scala-76"><span class="linenos">76</span></a><span class="w">        </span><span class="sd">&quot;&quot;&quot;Transform object to JVM representation.</span>
-</span><span id="FileType.to_scala-77"><a href="#FileType.to_scala-77"><span class="linenos">77</span></a>
-</span><span id="FileType.to_scala-78"><a href="#FileType.to_scala-78"><span class="linenos">78</span></a><span class="sd">        :returns: JavaObject</span>
-</span><span id="FileType.to_scala-79"><a href="#FileType.to_scala-79"><span class="linenos">79</span></a><span class="sd">        &quot;&quot;&quot;</span>
-</span><span id="FileType.to_scala-80"><a href="#FileType.to_scala-80"><span class="linenos">80</span></a>        <span class="n">_check_session</span><span class="p">()</span>
-</span><span id="FileType.to_scala-81"><a href="#FileType.to_scala-81"><span class="linenos">81</span></a>        <span class="k">return</span> <span class="n">GraphArSession</span><span class="o">.</span><span class="n">graphar</span><span class="o">.</span><span class="n">FileType</span><span class="o">.</span><span class="n">StringToFileType</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">value</span><span class="p">)</span>
+            <div class="pdoc-code codehilite"><pre><span></span><span id="FileType.to_scala-76"><a href="#FileType.to_scala-76"><span class="linenos">76</span></a>    <span class="k">def</span> <span class="nf">to_scala</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">JavaObject</span><span class="p">:</span>
+</span><span id="FileType.to_scala-77"><a href="#FileType.to_scala-77"><span class="linenos">77</span></a><span class="w">        </span><span class="sd">&quot;&quot;&quot;Transform object to JVM representation.</span>
+</span><span id="FileType.to_scala-78"><a href="#FileType.to_scala-78"><span class="linenos">78</span></a>
+</span><span id="FileType.to_scala-79"><a href="#FileType.to_scala-79"><span class="linenos">79</span></a><span class="sd">        :returns: JavaObject</span>
+</span><span id="FileType.to_scala-80"><a href="#FileType.to_scala-80"><span class="linenos">80</span></a><span class="sd">        &quot;&quot;&quot;</span>
+</span><span id="FileType.to_scala-81"><a href="#FileType.to_scala-81"><span class="linenos">81</span></a>        <span class="n">_check_session</span><span class="p">()</span>
+</span><span id="FileType.to_scala-82"><a href="#FileType.to_scala-82"><span class="linenos">82</span></a>        <span class="k">return</span> <span class="n">GraphArSession</span><span class="o">.</span><span class="n">graphar</span><span class="o">.</span><span class="n">FileType</span><span class="o">.</span><span class="n">StringToFileType</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">value</span><span class="p">)</span>
 </span></pre></div>
 
 
@@ -615,33 +632,33 @@
 
     </div>
     <a class="headerlink" href="#AdjListType"></a>
-            <div class="pdoc-code codehilite"><pre><span></span><span id="AdjListType-84"><a href="#AdjListType-84"><span class="linenos"> 84</span></a><span class="k">class</span> <span class="nc">AdjListType</span><span class="p">(</span><span class="n">Enum</span><span class="p">):</span>
-</span><span id="AdjListType-85"><a href="#AdjListType-85"><span class="linenos"> 85</span></a><span class="w">    </span><span class="sd">&quot;&quot;&quot;Adj list type enumeration for adjacency list of graph.&quot;&quot;&quot;</span>
-</span><span id="AdjListType-86"><a href="#AdjListType-86"><span class="linenos"> 86</span></a>
-</span><span id="AdjListType-87"><a href="#AdjListType-87"><span class="linenos"> 87</span></a>    <span class="n">UNORDERED_BY_SOURCE</span> <span class="o">=</span> <span class="s2">&quot;unordered_by_source&quot;</span>
-</span><span id="AdjListType-88"><a href="#AdjListType-88"><span class="linenos"> 88</span></a>    <span class="n">UNORDERED_BY_DEST</span> <span class="o">=</span> <span class="s2">&quot;unordered_by_dest&quot;</span>
-</span><span id="AdjListType-89"><a href="#AdjListType-89"><span class="linenos"> 89</span></a>    <span class="n">ORDERED_BY_SOURCE</span> <span class="o">=</span> <span class="s2">&quot;ordered_by_source&quot;</span>
-</span><span id="AdjListType-90"><a href="#AdjListType-90"><span class="linenos"> 90</span></a>    <span class="n">ORDERED_BY_DEST</span> <span class="o">=</span> <span class="s2">&quot;ordered_by_dest&quot;</span>
-</span><span id="AdjListType-91"><a href="#AdjListType-91"><span class="linenos"> 91</span></a>
-</span><span id="AdjListType-92"><a href="#AdjListType-92"><span class="linenos"> 92</span></a>    <span class="nd">@staticmethod</span>
-</span><span id="AdjListType-93"><a href="#AdjListType-93"><span class="linenos"> 93</span></a>    <span class="k">def</span> <span class="nf">from_scala</span><span class="p">(</span><span class="n">jvm_obj</span><span class="p">:</span> <span class="n">JavaObject</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="s2">&quot;AdjListType&quot;</span><span class="p">:</span>
-</span><span id="AdjListType-94"><a href="#AdjListType-94"><span class="linenos"> 94</span></a><span class="w">        </span><span class="sd">&quot;&quot;&quot;Create an instance of the Class from the corresponding JVM object.</span>
-</span><span id="AdjListType-95"><a href="#AdjListType-95"><span class="linenos"> 95</span></a>
-</span><span id="AdjListType-96"><a href="#AdjListType-96"><span class="linenos"> 96</span></a><span class="sd">        :param jvm_obj: scala object in JVM.</span>
-</span><span id="AdjListType-97"><a href="#AdjListType-97"><span class="linenos"> 97</span></a><span class="sd">        :returns: instance of Python Class.</span>
-</span><span id="AdjListType-98"><a href="#AdjListType-98"><span class="linenos"> 98</span></a><span class="sd">        &quot;&quot;&quot;</span>
-</span><span id="AdjListType-99"><a href="#AdjListType-99"><span class="linenos"> 99</span></a>        <span class="n">_check_session</span><span class="p">()</span>
-</span><span id="AdjListType-100"><a href="#AdjListType-100"><span class="linenos">100</span></a>        <span class="k">return</span> <span class="n">AdjListType</span><span class="p">(</span>
-</span><span id="AdjListType-101"><a href="#AdjListType-101"><span class="linenos">101</span></a>            <span class="n">GraphArSession</span><span class="o">.</span><span class="n">graphar</span><span class="o">.</span><span class="n">AdjListType</span><span class="o">.</span><span class="n">AdjListTypeToString</span><span class="p">(</span><span class="n">jvm_obj</span><span class="p">),</span>
-</span><span id="AdjListType-102"><a href="#AdjListType-102"><span class="linenos">102</span></a>        <span class="p">)</span>
-</span><span id="AdjListType-103"><a href="#AdjListType-103"><span class="linenos">103</span></a>
-</span><span id="AdjListType-104"><a href="#AdjListType-104"><span class="linenos">104</span></a>    <span class="k">def</span> <span class="nf">to_scala</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">JavaObject</span><span class="p">:</span>
-</span><span id="AdjListType-105"><a href="#AdjListType-105"><span class="linenos">105</span></a><span class="w">        </span><span class="sd">&quot;&quot;&quot;Transform object to JVM representation.</span>
-</span><span id="AdjListType-106"><a href="#AdjListType-106"><span class="linenos">106</span></a>
-</span><span id="AdjListType-107"><a href="#AdjListType-107"><span class="linenos">107</span></a><span class="sd">        :returns: JavaObject</span>
-</span><span id="AdjListType-108"><a href="#AdjListType-108"><span class="linenos">108</span></a><span class="sd">        &quot;&quot;&quot;</span>
-</span><span id="AdjListType-109"><a href="#AdjListType-109"><span class="linenos">109</span></a>        <span class="n">_check_session</span><span class="p">()</span>
-</span><span id="AdjListType-110"><a href="#AdjListType-110"><span class="linenos">110</span></a>        <span class="k">return</span> <span class="n">GraphArSession</span><span class="o">.</span><span class="n">graphar</span><span class="o">.</span><span class="n">AdjListType</span><span class="o">.</span><span class="n">StringToAdjListType</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">value</span><span class="p">)</span>
+            <div class="pdoc-code codehilite"><pre><span></span><span id="AdjListType-85"><a href="#AdjListType-85"><span class="linenos"> 85</span></a><span class="k">class</span> <span class="nc">AdjListType</span><span class="p">(</span><span class="n">Enum</span><span class="p">):</span>
+</span><span id="AdjListType-86"><a href="#AdjListType-86"><span class="linenos"> 86</span></a><span class="w">    </span><span class="sd">&quot;&quot;&quot;Adj list type enumeration for adjacency list of graph.&quot;&quot;&quot;</span>
+</span><span id="AdjListType-87"><a href="#AdjListType-87"><span class="linenos"> 87</span></a>
+</span><span id="AdjListType-88"><a href="#AdjListType-88"><span class="linenos"> 88</span></a>    <span class="n">UNORDERED_BY_SOURCE</span> <span class="o">=</span> <span class="s2">&quot;unordered_by_source&quot;</span>
+</span><span id="AdjListType-89"><a href="#AdjListType-89"><span class="linenos"> 89</span></a>    <span class="n">UNORDERED_BY_DEST</span> <span class="o">=</span> <span class="s2">&quot;unordered_by_dest&quot;</span>
+</span><span id="AdjListType-90"><a href="#AdjListType-90"><span class="linenos"> 90</span></a>    <span class="n">ORDERED_BY_SOURCE</span> <span class="o">=</span> <span class="s2">&quot;ordered_by_source&quot;</span>
+</span><span id="AdjListType-91"><a href="#AdjListType-91"><span class="linenos"> 91</span></a>    <span class="n">ORDERED_BY_DEST</span> <span class="o">=</span> <span class="s2">&quot;ordered_by_dest&quot;</span>
+</span><span id="AdjListType-92"><a href="#AdjListType-92"><span class="linenos"> 92</span></a>
+</span><span id="AdjListType-93"><a href="#AdjListType-93"><span class="linenos"> 93</span></a>    <span class="nd">@staticmethod</span>
+</span><span id="AdjListType-94"><a href="#AdjListType-94"><span class="linenos"> 94</span></a>    <span class="k">def</span> <span class="nf">from_scala</span><span class="p">(</span><span class="n">jvm_obj</span><span class="p">:</span> <span class="n">JavaObject</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="s2">&quot;AdjListType&quot;</span><span class="p">:</span>
+</span><span id="AdjListType-95"><a href="#AdjListType-95"><span class="linenos"> 95</span></a><span class="w">        </span><span class="sd">&quot;&quot;&quot;Create an instance of the Class from the corresponding JVM object.</span>
+</span><span id="AdjListType-96"><a href="#AdjListType-96"><span class="linenos"> 96</span></a>
+</span><span id="AdjListType-97"><a href="#AdjListType-97"><span class="linenos"> 97</span></a><span class="sd">        :param jvm_obj: scala object in JVM.</span>
+</span><span id="AdjListType-98"><a href="#AdjListType-98"><span class="linenos"> 98</span></a><span class="sd">        :returns: instance of Python Class.</span>
+</span><span id="AdjListType-99"><a href="#AdjListType-99"><span class="linenos"> 99</span></a><span class="sd">        &quot;&quot;&quot;</span>
+</span><span id="AdjListType-100"><a href="#AdjListType-100"><span class="linenos">100</span></a>        <span class="n">_check_session</span><span class="p">()</span>
+</span><span id="AdjListType-101"><a href="#AdjListType-101"><span class="linenos">101</span></a>        <span class="k">return</span> <span class="n">AdjListType</span><span class="p">(</span>
+</span><span id="AdjListType-102"><a href="#AdjListType-102"><span class="linenos">102</span></a>            <span class="n">GraphArSession</span><span class="o">.</span><span class="n">graphar</span><span class="o">.</span><span class="n">AdjListType</span><span class="o">.</span><span class="n">AdjListTypeToString</span><span class="p">(</span><span class="n">jvm_obj</span><span class="p">),</span>
+</span><span id="AdjListType-103"><a href="#AdjListType-103"><span class="linenos">103</span></a>        <span class="p">)</span>
+</span><span id="AdjListType-104"><a href="#AdjListType-104"><span class="linenos">104</span></a>
+</span><span id="AdjListType-105"><a href="#AdjListType-105"><span class="linenos">105</span></a>    <span class="k">def</span> <span class="nf">to_scala</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">JavaObject</span><span class="p">:</span>
+</span><span id="AdjListType-106"><a href="#AdjListType-106"><span class="linenos">106</span></a><span class="w">        </span><span class="sd">&quot;&quot;&quot;Transform object to JVM representation.</span>
+</span><span id="AdjListType-107"><a href="#AdjListType-107"><span class="linenos">107</span></a>
+</span><span id="AdjListType-108"><a href="#AdjListType-108"><span class="linenos">108</span></a><span class="sd">        :returns: JavaObject</span>
+</span><span id="AdjListType-109"><a href="#AdjListType-109"><span class="linenos">109</span></a><span class="sd">        &quot;&quot;&quot;</span>
+</span><span id="AdjListType-110"><a href="#AdjListType-110"><span class="linenos">110</span></a>        <span class="n">_check_session</span><span class="p">()</span>
+</span><span id="AdjListType-111"><a href="#AdjListType-111"><span class="linenos">111</span></a>        <span class="k">return</span> <span class="n">GraphArSession</span><span class="o">.</span><span class="n">graphar</span><span class="o">.</span><span class="n">AdjListType</span><span class="o">.</span><span class="n">StringToAdjListType</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">value</span><span class="p">)</span>
 </span></pre></div>
 
 
@@ -709,17 +726,17 @@
 
     </div>
     <a class="headerlink" href="#AdjListType.from_scala"></a>
-            <div class="pdoc-code codehilite"><pre><span></span><span id="AdjListType.from_scala-92"><a href="#AdjListType.from_scala-92"><span class="linenos"> 92</span></a>    <span class="nd">@staticmethod</span>
-</span><span id="AdjListType.from_scala-93"><a href="#AdjListType.from_scala-93"><span class="linenos"> 93</span></a>    <span class="k">def</span> <span class="nf">from_scala</span><span class="p">(</span><span class="n">jvm_obj</span><span class="p">:</span> <span class="n">JavaObject</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="s2">&quot;AdjListType&quot;</span><span class="p">:</span>
-</span><span id="AdjListType.from_scala-94"><a href="#AdjListType.from_scala-94"><span class="linenos"> 94</span></a><span class="w">        </span><span class="sd">&quot;&quot;&quot;Create an instance of the Class from the corresponding JVM object.</span>
-</span><span id="AdjListType.from_scala-95"><a href="#AdjListType.from_scala-95"><span class="linenos"> 95</span></a>
-</span><span id="AdjListType.from_scala-96"><a href="#AdjListType.from_scala-96"><span class="linenos"> 96</span></a><span class="sd">        :param jvm_obj: scala object in JVM.</span>
-</span><span id="AdjListType.from_scala-97"><a href="#AdjListType.from_scala-97"><span class="linenos"> 97</span></a><span class="sd">        :returns: instance of Python Class.</span>
-</span><span id="AdjListType.from_scala-98"><a href="#AdjListType.from_scala-98"><span class="linenos"> 98</span></a><span class="sd">        &quot;&quot;&quot;</span>
-</span><span id="AdjListType.from_scala-99"><a href="#AdjListType.from_scala-99"><span class="linenos"> 99</span></a>        <span class="n">_check_session</span><span class="p">()</span>
-</span><span id="AdjListType.from_scala-100"><a href="#AdjListType.from_scala-100"><span class="linenos">100</span></a>        <span class="k">return</span> <span class="n">AdjListType</span><span class="p">(</span>
-</span><span id="AdjListType.from_scala-101"><a href="#AdjListType.from_scala-101"><span class="linenos">101</span></a>            <span class="n">GraphArSession</span><span class="o">.</span><span class="n">graphar</span><span class="o">.</span><span class="n">AdjListType</span><span class="o">.</span><span class="n">AdjListTypeToString</span><span class="p">(</span><span class="n">jvm_obj</span><span class="p">),</span>
-</span><span id="AdjListType.from_scala-102"><a href="#AdjListType.from_scala-102"><span class="linenos">102</span></a>        <span class="p">)</span>
+            <div class="pdoc-code codehilite"><pre><span></span><span id="AdjListType.from_scala-93"><a href="#AdjListType.from_scala-93"><span class="linenos"> 93</span></a>    <span class="nd">@staticmethod</span>
+</span><span id="AdjListType.from_scala-94"><a href="#AdjListType.from_scala-94"><span class="linenos"> 94</span></a>    <span class="k">def</span> <span class="nf">from_scala</span><span class="p">(</span><span class="n">jvm_obj</span><span class="p">:</span> <span class="n">JavaObject</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="s2">&quot;AdjListType&quot;</span><span class="p">:</span>
+</span><span id="AdjListType.from_scala-95"><a href="#AdjListType.from_scala-95"><span class="linenos"> 95</span></a><span class="w">        </span><span class="sd">&quot;&quot;&quot;Create an instance of the Class from the corresponding JVM object.</span>
+</span><span id="AdjListType.from_scala-96"><a href="#AdjListType.from_scala-96"><span class="linenos"> 96</span></a>
+</span><span id="AdjListType.from_scala-97"><a href="#AdjListType.from_scala-97"><span class="linenos"> 97</span></a><span class="sd">        :param jvm_obj: scala object in JVM.</span>
+</span><span id="AdjListType.from_scala-98"><a href="#AdjListType.from_scala-98"><span class="linenos"> 98</span></a><span class="sd">        :returns: instance of Python Class.</span>
+</span><span id="AdjListType.from_scala-99"><a href="#AdjListType.from_scala-99"><span class="linenos"> 99</span></a><span class="sd">        &quot;&quot;&quot;</span>
+</span><span id="AdjListType.from_scala-100"><a href="#AdjListType.from_scala-100"><span class="linenos">100</span></a>        <span class="n">_check_session</span><span class="p">()</span>
+</span><span id="AdjListType.from_scala-101"><a href="#AdjListType.from_scala-101"><span class="linenos">101</span></a>        <span class="k">return</span> <span class="n">AdjListType</span><span class="p">(</span>
+</span><span id="AdjListType.from_scala-102"><a href="#AdjListType.from_scala-102"><span class="linenos">102</span></a>            <span class="n">GraphArSession</span><span class="o">.</span><span class="n">graphar</span><span class="o">.</span><span class="n">AdjListType</span><span class="o">.</span><span class="n">AdjListTypeToString</span><span class="p">(</span><span class="n">jvm_obj</span><span class="p">),</span>
+</span><span id="AdjListType.from_scala-103"><a href="#AdjListType.from_scala-103"><span class="linenos">103</span></a>        <span class="p">)</span>
 </span></pre></div>
 
 
@@ -746,13 +763,13 @@
 
     </div>
     <a class="headerlink" href="#AdjListType.to_scala"></a>
-            <div class="pdoc-code codehilite"><pre><span></span><span id="AdjListType.to_scala-104"><a href="#AdjListType.to_scala-104"><span class="linenos">104</span></a>    <span class="k">def</span> <span class="nf">to_scala</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">JavaObject</span><span class="p">:</span>
-</span><span id="AdjListType.to_scala-105"><a href="#AdjListType.to_scala-105"><span class="linenos">105</span></a><span class="w">        </span><span class="sd">&quot;&quot;&quot;Transform object to JVM representation.</span>
-</span><span id="AdjListType.to_scala-106"><a href="#AdjListType.to_scala-106"><span class="linenos">106</span></a>
-</span><span id="AdjListType.to_scala-107"><a href="#AdjListType.to_scala-107"><span class="linenos">107</span></a><span class="sd">        :returns: JavaObject</span>
-</span><span id="AdjListType.to_scala-108"><a href="#AdjListType.to_scala-108"><span class="linenos">108</span></a><span class="sd">        &quot;&quot;&quot;</span>
-</span><span id="AdjListType.to_scala-109"><a href="#AdjListType.to_scala-109"><span class="linenos">109</span></a>        <span class="n">_check_session</span><span class="p">()</span>
-</span><span id="AdjListType.to_scala-110"><a href="#AdjListType.to_scala-110"><span class="linenos">110</span></a>        <span class="k">return</span> <span class="n">GraphArSession</span><span class="o">.</span><span class="n">graphar</span><span class="o">.</span><span class="n">AdjListType</span><span class="o">.</span><span class="n">StringToAdjListType</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">value</span><span class="p">)</span>
+            <div class="pdoc-code codehilite"><pre><span></span><span id="AdjListType.to_scala-105"><a href="#AdjListType.to_scala-105"><span class="linenos">105</span></a>    <span class="k">def</span> <span class="nf">to_scala</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">JavaObject</span><span class="p">:</span>
+</span><span id="AdjListType.to_scala-106"><a href="#AdjListType.to_scala-106"><span class="linenos">106</span></a><span class="w">        </span><span class="sd">&quot;&quot;&quot;Transform object to JVM representation.</span>
+</span><span id="AdjListType.to_scala-107"><a href="#AdjListType.to_scala-107"><span class="linenos">107</span></a>
+</span><span id="AdjListType.to_scala-108"><a href="#AdjListType.to_scala-108"><span class="linenos">108</span></a><span class="sd">        :returns: JavaObject</span>
+</span><span id="AdjListType.to_scala-109"><a href="#AdjListType.to_scala-109"><span class="linenos">109</span></a><span class="sd">        &quot;&quot;&quot;</span>
+</span><span id="AdjListType.to_scala-110"><a href="#AdjListType.to_scala-110"><span class="linenos">110</span></a>        <span class="n">_check_session</span><span class="p">()</span>
+</span><span id="AdjListType.to_scala-111"><a href="#AdjListType.to_scala-111"><span class="linenos">111</span></a>        <span class="k">return</span> <span class="n">GraphArSession</span><span class="o">.</span><span class="n">graphar</span><span class="o">.</span><span class="n">AdjListType</span><span class="o">.</span><span class="n">StringToAdjListType</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">value</span><span class="p">)</span>
 </span></pre></div>
 
 
diff --git a/docs/pyspark/graphar_pyspark/graph.html b/docs/pyspark/graphar_pyspark/graph.html
index ad084a3..93b5eac 100644
--- a/docs/pyspark/graphar_pyspark/graph.html
+++ b/docs/pyspark/graphar_pyspark/graph.html
@@ -336,7 +336,7 @@
 </span><span id="L-195"><a href="#L-195"><span class="linenos">195</span></a><span class="sd">        :param name: the name of graph, default is &#39;grpah&#39;</span>
 </span><span id="L-196"><a href="#L-196"><span class="linenos">196</span></a><span class="sd">        :param vertex_chunk_size: the chunk size for vertices, default is 2^18</span>
 </span><span id="L-197"><a href="#L-197"><span class="linenos">197</span></a><span class="sd">        :param edge_chunk_size: the chunk size for edges, default is 2^22</span>
-</span><span id="L-198"><a href="#L-198"><span class="linenos">198</span></a><span class="sd">        :param file_type: the file type for data payload file, support [parquet, orc, csv], default is parquet.</span>
+</span><span id="L-198"><a href="#L-198"><span class="linenos">198</span></a><span class="sd">        :param file_type: the file type for data payload file, support [parquet, orc, csv, json], default is parquet.</span>
 </span><span id="L-199"><a href="#L-199"><span class="linenos">199</span></a><span class="sd">        :param version: version of GraphAr format, default is v1.</span>
 </span><span id="L-200"><a href="#L-200"><span class="linenos">200</span></a><span class="sd">        &quot;&quot;&quot;</span>
 </span><span id="L-201"><a href="#L-201"><span class="linenos">201</span></a>        <span class="k">if</span> <span class="n">vertex_chunk_size</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
@@ -828,7 +828,7 @@
 </span><span id="GraphWriter-196"><a href="#GraphWriter-196"><span class="linenos">196</span></a><span class="sd">        :param name: the name of graph, default is &#39;grpah&#39;</span>
 </span><span id="GraphWriter-197"><a href="#GraphWriter-197"><span class="linenos">197</span></a><span class="sd">        :param vertex_chunk_size: the chunk size for vertices, default is 2^18</span>
 </span><span id="GraphWriter-198"><a href="#GraphWriter-198"><span class="linenos">198</span></a><span class="sd">        :param edge_chunk_size: the chunk size for edges, default is 2^22</span>
-</span><span id="GraphWriter-199"><a href="#GraphWriter-199"><span class="linenos">199</span></a><span class="sd">        :param file_type: the file type for data payload file, support [parquet, orc, csv], default is parquet.</span>
+</span><span id="GraphWriter-199"><a href="#GraphWriter-199"><span class="linenos">199</span></a><span class="sd">        :param file_type: the file type for data payload file, support [parquet, orc, csv, json], default is parquet.</span>
 </span><span id="GraphWriter-200"><a href="#GraphWriter-200"><span class="linenos">200</span></a><span class="sd">        :param version: version of GraphAr format, default is v1.</span>
 </span><span id="GraphWriter-201"><a href="#GraphWriter-201"><span class="linenos">201</span></a><span class="sd">        &quot;&quot;&quot;</span>
 </span><span id="GraphWriter-202"><a href="#GraphWriter-202"><span class="linenos">202</span></a>        <span class="k">if</span> <span class="n">vertex_chunk_size</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
@@ -1110,7 +1110,7 @@
 </span><span id="GraphWriter.write-196"><a href="#GraphWriter.write-196"><span class="linenos">196</span></a><span class="sd">        :param name: the name of graph, default is &#39;grpah&#39;</span>
 </span><span id="GraphWriter.write-197"><a href="#GraphWriter.write-197"><span class="linenos">197</span></a><span class="sd">        :param vertex_chunk_size: the chunk size for vertices, default is 2^18</span>
 </span><span id="GraphWriter.write-198"><a href="#GraphWriter.write-198"><span class="linenos">198</span></a><span class="sd">        :param edge_chunk_size: the chunk size for edges, default is 2^22</span>
-</span><span id="GraphWriter.write-199"><a href="#GraphWriter.write-199"><span class="linenos">199</span></a><span class="sd">        :param file_type: the file type for data payload file, support [parquet, orc, csv], default is parquet.</span>
+</span><span id="GraphWriter.write-199"><a href="#GraphWriter.write-199"><span class="linenos">199</span></a><span class="sd">        :param file_type: the file type for data payload file, support [parquet, orc, csv, json], default is parquet.</span>
 </span><span id="GraphWriter.write-200"><a href="#GraphWriter.write-200"><span class="linenos">200</span></a><span class="sd">        :param version: version of GraphAr format, default is v1.</span>
 </span><span id="GraphWriter.write-201"><a href="#GraphWriter.write-201"><span class="linenos">201</span></a><span class="sd">        &quot;&quot;&quot;</span>
 </span><span id="GraphWriter.write-202"><a href="#GraphWriter.write-202"><span class="linenos">202</span></a>        <span class="k">if</span> <span class="n">vertex_chunk_size</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
@@ -1154,7 +1154,7 @@ For this method None for any of arguments means that the default value will be u
 <li><strong>name</strong>:  the name of graph, default is 'grpah'</li>
 <li><strong>vertex_chunk_size</strong>:  the chunk size for vertices, default is 2^18</li>
 <li><strong>edge_chunk_size</strong>:  the chunk size for edges, default is 2^22</li>
-<li><strong>file_type</strong>:  the file type for data payload file, support [parquet, orc, csv], default is parquet.</li>
+<li><strong>file_type</strong>:  the file type for data payload file, support [parquet, orc, csv, json], default is parquet.</li>
 <li><strong>version</strong>:  version of GraphAr format, default is v1.</li>
 </ul>
 </div>
diff --git a/docs/pyspark/search.js b/docs/pyspark/search.js
index 1b95d5c..f13ea42 100644
--- a/docs/pyspark/search.js
+++ b/docs/pyspark/search.js
@@ -1,6 +1,6 @@
 window.pdocSearch = (function(){
 /** elasticlunr - http://weixsong.github.io * Copyright (C) 2017 Oliver Nightingale * Copyright (C) 2017 Wei Song * MIT Licensed */!function(){function e(e){if(null===e||"object"!=typeof e)return e;var t=e.constructor();for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);return t}var t=function(e){var n=new t.Index;return n.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),e&&e.call(n,n),n};t.version="0.9.5",lunr=t,t.utils={},t.utils.warn=function(e){return function(t){e.console&&console.wa [...]
-    /** pdoc search index */const docs = {"version": "0.9.5", "fields": ["qualname", "fullname", "annotation", "default_value", "signature", "bases", "doc"], "ref": "fullname", "documentStore": {"docs": {"graphar_pyspark": {"fullname": "graphar_pyspark", "modulename": "graphar_pyspark", "kind": "module", "doc": "<p>GraphSession and initialization.</p>\n"}, "graphar_pyspark.GraphArSession": {"fullname": "graphar_pyspark.GraphArSession", "modulename": "graphar_pyspark", "qualname": "GraphA [...]
+    /** pdoc search index */const docs = {"version": "0.9.5", "fields": ["qualname", "fullname", "annotation", "default_value", "signature", "bases", "doc"], "ref": "fullname", "documentStore": {"docs": {"graphar_pyspark": {"fullname": "graphar_pyspark", "modulename": "graphar_pyspark", "kind": "module", "doc": "<p>GraphSession and initialization.</p>\n"}, "graphar_pyspark.GraphArSession": {"fullname": "graphar_pyspark.GraphArSession", "modulename": "graphar_pyspark", "qualname": "GraphA [...]
 
     // mirrored in build-search-index.js (part 1)
     // Also split on html tags. this is a cheap heuristic, but good enough.
diff --git a/docs/spark/index.js b/docs/spark/index.js
index ec2f11f..3d68402 100644
--- a/docs/spark/index.js
+++ b/docs/spark/index.js
@@ -1 +1 @@
-Index.PACKAGES = {"org.apache.graphar.graph" : [{"name" : "org.apache.graphar.graph.GraphReader", "shortDescription" : "The helper object for reading graph through the definitions of graph info.", "object" : "org\/apache\/graphar\/graph\/GraphReader$.html", "members_object" : [{"label" : "read", "tail" : "(graphInfoPath: String, spark: SparkSession): Pair[Map[String, DataFrame], Map[(String, String, String), Map[String, DataFrame]]]", "member" : "org.apache.graphar.graph.GraphReader.read [...]
\ No newline at end of file
+Index.PACKAGES = {"org.apache.graphar.graph" : [{"name" : "org.apache.graphar.graph.GraphReader", "shortDescription" : "The helper object for reading graph through the definitions of graph info.", "object" : "org\/apache\/graphar\/graph\/GraphReader$.html", "members_object" : [{"label" : "read", "tail" : "(graphInfoPath: String, spark: SparkSession): Pair[Map[String, DataFrame], Map[(String, String, String), Map[String, DataFrame]]]", "member" : "org.apache.graphar.graph.GraphReader.read [...]
\ No newline at end of file
diff --git a/docs/spark/org/apache/graphar/FileType$.html b/docs/spark/org/apache/graphar/FileType$.html
index 03a22fa..75b62e0 100644
--- a/docs/spark/org/apache/graphar/FileType$.html
+++ b/docs/spark/org/apache/graphar/FileType$.html
@@ -494,6 +494,22 @@
 </p></div><dl class="paramcmts block"><dt class="param">file_type</dt><dd class="cmt"><p>
   file type in gar</p></dd><dt>returns</dt><dd class="cmt"><p>
   string name of file type.</p></dd></dl></div>
+    </li><li name="org.apache.graphar.FileType#JSON" visbl="pub" class="indented0 " data-isabs="false" fullComment="no" group="Ungrouped">
+      <a id="JSON:org.apache.graphar.FileType.Value"></a><a id="JSON:Value"></a>
+      <span class="permalink">
+      <a href="../../../org/apache/graphar/FileType$.html#JSON:org.apache.graphar.FileType.Value" title="Permalink">
+        <i class="material-icons"></i>
+      </a>
+    </span>
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">val</span>
+      </span>
+      <span class="symbol">
+        <span class="name">JSON</span><span class="result">: <a href="#ValueextendsOrdered[Enumeration.this.Value]withSerializable" class="extmbr" name="org.apache.graphar.FileType.Value">Value</a></span>
+      </span>
+      
+      
     </li><li name="org.apache.graphar.FileType#ORC" visbl="pub" class="indented0 " data-isabs="false" fullComment="no" group="Ungrouped">
       <a id="ORC:org.apache.graphar.FileType.Value"></a><a id="ORC:Value"></a>
       <span class="permalink">
diff --git a/docs/specification/format/index.html b/docs/specification/format/index.html
index e23b1c5..3399f37 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.939567da.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.7ae201c8.js" defer="defer"></script>
 <script src="/assets/js/main.812b5fef.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 1a77bb5..1606b29 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.939567da.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.7ae201c8.js" defer="defer"></script>
 <script src="/assets/js/main.812b5fef.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
@@ -18,7 +18,7 @@ All libraries currently follow version 1.0.0 of the GraphAr format.</p>
 <li>(*) The data type of List is not supported by the CSV payload file format.</li>
 </ul></div></div>
 <h2 class="anchor anchorWithStickyNavbar_qibj" id="payload-data-file-formats">Payload Data File Formats<a href="#payload-data-file-formats" class="hash-link" aria-label="Direct link to Payload Data File Formats" title="Direct link to Payload Data File Formats">​</a></h2>
-<table><thead><tr><th>Format</th><th>C++</th><th>Java</th><th>Scala</th><th>Python</th></tr></thead><tbody><tr><td>CSV</td><td>R/W</td><td>R (1)</td><td>R/W</td><td>R/W (2)</td></tr><tr><td>ORC</td><td>R/W</td><td>R (1)</td><td>R/W</td><td>R/W (2)</td></tr><tr><td>Parquet</td><td>R/W</td><td>R (1)</td><td>R/W</td><td>R/W (2)</td></tr><tr><td>Avro</td><td></td><td></td><td></td><td></td></tr><tr><td>HDF5</td><td></td><td></td><td></td><td></td></tr><tr><td>JSON</td><td></td><td></td><td>< [...]
+<table><thead><tr><th>Format</th><th>C++</th><th>Java</th><th>Scala</th><th>Python</th></tr></thead><tbody><tr><td>CSV</td><td>R/W</td><td>R (1)</td><td>R/W</td><td>R/W (2)</td></tr><tr><td>ORC</td><td>R/W</td><td>R (1)</td><td>R/W</td><td>R/W (2)</td></tr><tr><td>Parquet</td><td>R/W</td><td>R (1)</td><td>R/W</td><td>R/W (2)</td></tr><tr><td>JSON</td><td>R</td><td></td><td>R/W</td><td>R/W (2)</td></tr><tr><td>Avro</td><td></td><td></td><td></td><td></td></tr><tr><td>HDF5</td><td></td><td [...]
 <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>R</em> - Read supported</li>
 <li><em>W</em> - Write supported</li>
@@ -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>get [...]
 <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,17 +46,17 @@ 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><td> [...]
 <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>
+<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> [...]
 <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 [...]
diff --git a/download/index.html b/download/index.html
index 1650f1b..afcbf47 100644
--- a/download/index.html
+++ b/download/index.html
@@ -5,14 +5,17 @@
 <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.939567da.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.7ae201c8.js" defer="defer"></script>
 <script src="/assets/js/main.812b5fef.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
 <p>The official Apache GraphAr (incubating) releases are provided as source artifacts.</p>
 <h2 class="anchor anchorWithStickyNavbar_qibj" id="releases">Releases<a href="#releases" class="hash-link" aria-label="Direct link to Releases" title="Direct link to Releases">​</a></h2>
-<p>Apache GraphAr (Incubating) hasn&#x27;t made a release since joining the Apache Incubator.</p>
+<p>The latest source release is 0.12.0:</p>
+<table><thead><tr><th>Version</th><th>Date</th><th>Source</th><th>Release Notes</th></tr></thead><tbody><tr><td>0.12.0</td><td>2024-07-02</td><td><a href="https://www.apache.org/dyn/closer.lua/incubator/graphar/0.12.0/apache-graphar-0.12.0-incubating-src.tar.gz?action=download" target="_blank" rel="noopener noreferrer">apache-graphar-0.12.0-incubating-src.tar.gz</a> (<a href="https://downloads.apache.org/incubator/graphar/0.12.0/apache-graphar-0.12.0-incubating-src.tar.gz.asc" target="_b [...]
+<h2 class="anchor anchorWithStickyNavbar_qibj" id="all-archived-releases">All archived releases<a href="#all-archived-releases" class="hash-link" aria-label="Direct link to All archived releases" title="Direct link to All archived releases">​</a></h2>
+<p>For older releases, please check the <a href="https://archive.apache.org/dist/incubator/graphar/" target="_blank" rel="noopener noreferrer">archive</a>.</p>
 <h2 class="anchor anchorWithStickyNavbar_qibj" id="notes">Notes<a href="#notes" class="hash-link" aria-label="Direct link to Notes" title="Direct link to Notes">​</a></h2>
 <ul>
 <li>When downloading a release, please verify the OpenPGP compatible signature (or failing that, check the SHA-512); these should be fetched from the main Apache site.</li>
@@ -36,7 +39,7 @@
 </ul>
 <h3 class="anchor anchorWithStickyNavbar_qibj" id="to-verify-the-checksum-of-the-release-artifact">To verify the checksum of the release artifact<a href="#to-verify-the-checksum-of-the-release-artifact" class="hash-link" aria-label="Direct link to To verify the checksum of the release artifact" title="Direct link to To verify the checksum of the release artifact">​</a></h3>
 <p>You will need to download both the release artifact and the .sha512 checksum file for that artifact. Then verify the checksum by:</p>
-<div class="language-shell codeBlockContainer_w3PW theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_Tt2Q"><pre tabindex="0" class="prism-code language-shell codeBlock_xdHR thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_Sjn8"><span class="token-line" style="color:#393A34"><span class="token plain">shasum -a 512 -c &lt;artifact&gt;.sha512</span><br></span></code></pre><div class="button [...]
+<div class="language-shell codeBlockContainer_w3PW theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_Tt2Q"><pre tabindex="0" class="prism-code language-shell codeBlock_xdHR thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_Sjn8"><span class="token-line" style="color:#393A34"><span class="token plain">shasum -a 512 -c &lt;artifact&gt;.sha512</span><br></span></code></pre><div class="button [...]
       <p>
         Apache GraphAr is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the [...]
       </p>
diff --git a/index.html b/index.html
index 3d1cffb..57aeeb2 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.939567da.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.7ae201c8.js" defer="defer"></script>
 <script src="/assets/js/main.812b5fef.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