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 "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:/ [...]
<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<> </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<> </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<> </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<typename T > </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<typename T > </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<typename T > </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> <span class="keyword">static</span> <span class="keyword">inline</span> FileType StringToFileType(<span class="keyword">const</span> std::string& str) {</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keyword">static</span> <span class="keyword">const</span> std::map<std::string, FileType> str2file_type{</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  {<span class="stringliteral">"csv"</span>, FileType::CSV},</div>
-<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  {<span class="stringliteral">"parquet"</span>, FileType::PARQUET},</div>
-<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  {<span class="stringliteral">"orc"</span>, FileType::ORC}};</div>
-<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keywordflow">try</span> {</div>
-<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keywordflow">return</span> str2file_type.at(str.c_str());</div>
-<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  } <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {</div>
-<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keywordflow">throw</span> std::runtime_error(<span class="stringliteral">"KeyError: "</span> + str);</div>
-<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  }</div>
-<div class="line"><a name="l00041"></a><span class="lineno"> 41</span> }</div>
-<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  </div>
-<div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <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>  <span class="keyword">static</span> <span class="keyword">const</span> std::map<FileType, const char*> file_type2string{</div>
-<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  {FileType::CSV, <span class="stringliteral">"csv"</span>},</div>
-<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  {FileType::PARQUET, <span class="stringliteral">"parquet"</span>},</div>
-<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  {FileType::ORC, <span class="stringliteral">"orc"</span>}};</div>
-<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordflow">return</span> file_type2string.at(file_type);</div>
-<div class="line"><a name="l00049"></a><span class="lineno"> 49</span> }</div>
-<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  </div>
-<div class="line"><a name="l00051"></a><span class="lineno"> 51</span> } <span class="comment">// namespace graphar</span></div>
+<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  {<span class="stringliteral">"json"</span>, FileType::JSON},</div>
+<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  {<span class="stringliteral">"parquet"</span>, FileType::PARQUET},</div>
+<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  {<span class="stringliteral">"orc"</span>, FileType::ORC}};</div>
+<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keywordflow">try</span> {</div>
+<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keywordflow">return</span> str2file_type.at(str.c_str());</div>
+<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  } <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {</div>
+<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordflow">throw</span> std::runtime_error(<span class="stringliteral">"KeyError: "</span> + str);</div>
+<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  }</div>
+<div class="line"><a name="l00042"></a><span class="lineno"> 42</span> }</div>
+<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  </div>
+<div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <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>  <span class="keyword">static</span> <span class="keyword">const</span> std::map<FileType, const char*> file_type2string{</div>
+<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  {FileType::CSV, <span class="stringliteral">"csv"</span>},</div>
+<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  {FileType::JSON, <span class="stringliteral">"json"</span>},</div>
+<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  {FileType::PARQUET, <span class="stringliteral">"parquet"</span>},</div>
+<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  {FileType::ORC, <span class="stringliteral">"orc"</span>}};</div>
+<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordflow">return</span> file_type2string.at(file_type);</div>
+<div class="line"><a name="l00051"></a><span class="lineno"> 51</span> }</div>
+<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  </div>
+<div class="line"><a name="l00053"></a><span class="lineno"> 53</span> } <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>  <span class="keywordflow">return</span> std::make_shared<ds::ParquetFileFormat>();</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keywordflow">case</span> ORC:</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keywordflow">return</span> std::make_shared<ds::OrcFileFormat>();</div>
-<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
-<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  }</div>
-<div class="line"><a name="l00097"></a><span class="lineno"> 97</span> }</div>
-<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  </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> Result<std::shared_ptr<arrow::Table>> <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>  <span class="keyword">const</span> std::string& path, FileType file_type,</div>
-<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keyword">const</span> <a class="code" href="structgraphar_1_1util_1_1_filter_options.html">util::FilterOptions</a>& options) <span class="keyword">const</span> noexcept {</div>
-<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  std::shared_ptr<ds::FileFormat> format = GetFileFormat(file_type);</div>
-<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  GAR_RETURN_ON_ARROW_ERROR_AND_ASSIGN(</div>
-<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keyword">auto</span> factory, arrow::dataset::FileSystemDatasetFactory::Make(</div>
-<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  arrow_fs_, {path}, format,</div>
-<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  arrow::dataset::FileSystemFactoryOptions()));</div>
-<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  GAR_RETURN_ON_ARROW_ERROR_AND_ASSIGN(<span class="keyword">auto</span> dataset, factory->Finish());</div>
-<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  GAR_RETURN_ON_ARROW_ERROR_AND_ASSIGN(<span class="keyword">auto</span> scan_builder, dataset->NewScan());</div>
-<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  </div>
-<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <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>  <span class="keywordflow">if</span> (options.filter) {</div>
-<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  GAR_ASSIGN_OR_RAISE(<span class="keyword">auto</span> filter, options.filter->Evaluate());</div>
-<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  RETURN_NOT_ARROW_OK(scan_builder->Filter(filter));</div>
-<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  }</div>
-<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keywordflow">if</span> (options.columns) {</div>
-<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  RETURN_NOT_ARROW_OK(scan_builder->Project(*options.columns));</div>
-<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  }</div>
-<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  </div>
-<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  GAR_RETURN_ON_ARROW_ERROR_AND_ASSIGN(<span class="keyword">auto</span> scanner, scan_builder->Finish());</div>
-<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  GAR_RETURN_ON_ARROW_ERROR_AND_ASSIGN(<span class="keyword">auto</span> table, scanner->ToTable());</div>
-<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <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>  <span class="comment">// some places, e.g., in vineyard</span></div>
-<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < table->num_columns(); ++i) {</div>
-<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  std::shared_ptr<arrow::DataType> type = table->column(i)->type();</div>
-<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="keywordflow">if</span> (type->id() == arrow::Type::STRING) {</div>
-<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  type = arrow::large_utf8();</div>
-<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (type->id() == arrow::Type::BINARY) {</div>
-<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  type = arrow::large_binary();</div>
-<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  }</div>
-<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keywordflow">if</span> (type->Equals(table->column(i)->type())) {</div>
-<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  }</div>
-<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="comment">// do casting</span></div>
-<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keyword">auto</span> field = table->field(i)->WithType(type);</div>
-<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  std::shared_ptr<arrow::ChunkedArray> chunked_array;</div>
-<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  </div>
-<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keywordflow">if</span> (table->num_rows() == 0) {</div>
-<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  GAR_RETURN_ON_ARROW_ERROR_AND_ASSIGN(</div>
-<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  chunked_array, arrow::ChunkedArray::MakeEmpty(type));</div>
-<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (type->Equals(arrow::large_utf8())) {</div>
-<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="keyword">auto</span> status = detail::CastToLargeOffsetArray<arrow::StringArray,</div>
-<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  arrow::LargeStringArray>(</div>
-<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  table->column(i), type, chunked_array);</div>
-<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  GAR_RETURN_NOT_OK(status);</div>
-<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (type->Equals(arrow::large_binary())) {</div>
-<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keyword">auto</span> status = detail::CastToLargeOffsetArray<arrow::BinaryArray,</div>
-<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  arrow::LargeBinaryArray>(</div>
-<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  table->column(i), type, chunked_array);</div>
-<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  GAR_RETURN_NOT_OK(status);</div>
-<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  } <span class="keywordflow">else</span> {</div>
-<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="comment">// noop</span></div>
-<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  chunked_array = table->column(i);</div>
-<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  }</div>
-<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  GAR_RETURN_ON_ARROW_ERROR_AND_ASSIGN(table, table->RemoveColumn(i));</div>
-<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  GAR_RETURN_ON_ARROW_ERROR_AND_ASSIGN(</div>
-<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  table, table->AddColumn(i, field, chunked_array));</div>
-<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  }</div>
-<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="keywordflow">return</span> table;</div>
-<div class="line"><a name="l00159"></a><span class="lineno"> 159</span> }</div>
-<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  </div>
-<div class="line"><a name="l00161"></a><span class="lineno"> 161</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T></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> Result<T> <a class="code" href="classgraphar_1_1_file_system.html#aa014a28119399836283a573c9abd97b7">FileSystem::ReadFileToValue</a>(<span class="keyword">const</span> std::string& path) <span class="keyword">const</span> noexcept {</div>
-<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  T ret;</div>
-<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  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>  arrow_fs_->OpenInputStream(path));</div>
-<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  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>  input->Read(<span class="keyword">sizeof</span>(T), &ret));</div>
-<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  ARROW_UNUSED(bytes);</div>
-<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keywordflow">return</span> ret;</div>
-<div class="line"><a name="l00170"></a><span class="lineno"> 170</span> }</div>
-<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  </div>
-<div class="line"><a name="l00172"></a><span class="lineno"> 172</span> <span class="keyword">template</span> <></div>
-<div class="line"><a name="l00173"></a><span class="lineno"> 173</span> Result<std::string> <a class="code" href="classgraphar_1_1_file_system.html#aa014a28119399836283a573c9abd97b7">FileSystem::ReadFileToValue</a>(<span class="keyword">const</span> std::string& path) <span class="keyword">const</span></div>
-<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  noexcept {</div>
-<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  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>  arrow_fs_->OpenInputFile(path));</div>
-<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  GAR_RETURN_ON_ARROW_ERROR_AND_ASSIGN(<span class="keyword">auto</span> bytes, access_file->GetSize());</div>
-<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  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>  access_file->ReadAt(0, bytes));</div>
-<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="keywordflow">return</span> buffer->ToString();</div>
-<div class="line"><a name="l00181"></a><span class="lineno"> 181</span> }</div>
-<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  </div>
-<div class="line"><a name="l00183"></a><span class="lineno"> 183</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T></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> <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& value,</div>
-<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="keyword">const</span> std::string& path) <span class="keyword">const</span> noexcept {</div>
-<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <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>  ARROW_UNUSED(arrow_fs_->CreateDir(path.substr(0, path.find_last_of(<span class="stringliteral">"/"</span>))));</div>
-<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  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>  arrow_fs_->OpenOutputStream(path));</div>
-<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  RETURN_NOT_ARROW_OK(ofstream->Write(&value, <span class="keyword">sizeof</span>(T)));</div>
-<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  RETURN_NOT_ARROW_OK(ofstream->Close());</div>
-<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <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> }</div>
-<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  </div>
-<div class="line"><a name="l00195"></a><span class="lineno"> 195</span> <span class="keyword">template</span> <></div>
-<div class="line"><a name="l00196"></a><span class="lineno"> 196</span> <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& value,</div>
-<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="keyword">const</span> std::string& path) <span class="keyword">const</span> noexcept {</div>
-<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <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>  ARROW_UNUSED(arrow_fs_->CreateDir(path.substr(0, path.find_last_of(<span class="stringliteral">"/"</span>))));</div>
-<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  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>  arrow_fs_->OpenOutputStream(path));</div>
-<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  RETURN_NOT_ARROW_OK(ofstream->Write(value.c_str(), value.size()));</div>
-<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  RETURN_NOT_ARROW_OK(ofstream->Close());</div>
-<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <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> }</div>
-<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  </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> <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<arrow::Table>& table,</div>
-<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  FileType file_type,</div>
-<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="keyword">const</span> std::string& path) <span class="keyword">const</span> noexcept {</div>
-<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <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>  ARROW_UNUSED(arrow_fs_->CreateDir(path.substr(0, path.find_last_of(<span class="stringliteral">"/"</span>))));</div>
-<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  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>  arrow_fs_->OpenOutputStream(path));</div>
-<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="keywordflow">switch</span> (file_type) {</div>
-<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <span class="keywordflow">case</span> FileType::CSV: {</div>
-<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keyword">auto</span> write_options = arrow::csv::WriteOptions::Defaults();</div>
-<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  write_options.include_header = <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  write_options.quoting_style = arrow::csv::QuotingStyle::Needed;</div>
-<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  GAR_RETURN_ON_ARROW_ERROR_AND_ASSIGN(</div>
-<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <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>  table->schema(), write_options));</div>
-<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  RETURN_NOT_ARROW_OK(writer->WriteTable(*table));</div>
-<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  RETURN_NOT_ARROW_OK(writer->Close());</div>
-<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  }</div>
-<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="keywordflow">case</span> FileType::PARQUET: {</div>
-<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  parquet::WriterProperties::Builder builder;</div>
-<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  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>  RETURN_NOT_ARROW_OK(parquet::arrow::WriteTable(</div>
-<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  *table, arrow::default_memory_pool(), output_stream, 64 * 1024 * 1024,</div>
-<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  builder.build(), parquet::default_arrow_writer_properties()));</div>
-<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  }</div>
-<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <span class="keywordflow">case</span> FileType::ORC: {</div>
-<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <span class="keyword">auto</span> writer_options = arrow::adapters::orc::WriteOptions();</div>
-<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  writer_options.compression = arrow::Compression::type::ZSTD;</div>
-<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  GAR_RETURN_ON_ARROW_ERROR_AND_ASSIGN(</div>
-<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <span class="keyword">auto</span> writer, arrow::adapters::orc::ORCFileWriter::Open(</div>
-<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  output_stream.get(), writer_options));</div>
-<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  RETURN_NOT_ARROW_OK(writer->Write(*table));</div>
-<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  RETURN_NOT_ARROW_OK(writer->Close());</div>
-<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  }</div>
-<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <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>  <span class="stringliteral">"Unsupported file type: "</span>, FileTypeToString(file_type), <span class="stringliteral">" for wrting."</span>);</div>
-<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  }</div>
-<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <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> }</div>
-<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  </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> <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& src_path,</div>
-<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  <span class="keyword">const</span> std::string& dst_path) <span class="keyword">const</span> noexcept {</div>
-<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <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>  ARROW_UNUSED(</div>
-<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  arrow_fs_->CreateDir(dst_path.substr(0, dst_path.find_last_of(<span class="stringliteral">"/"</span>))));</div>
-<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  RETURN_NOT_ARROW_OK(arrow_fs_->CopyFile(src_path, dst_path));</div>
-<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <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> }</div>
-<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  </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> Result<IdType> <a class="code" href="classgraphar_1_1_file_system.html#a293c0415cb3b72795e034f2a08510524">FileSystem::GetFileNumOfDir</a>(<span class="keyword">const</span> std::string& dir_path,</div>
-<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <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>  arrow::fs::FileSelector file_selector;</div>
-<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  file_selector.base_dir = dir_path;</div>
-<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  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>  file_selector.recursive = recursive;</div>
-<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  arrow::fs::FileInfoVector file_infos;</div>
-<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  GAR_RETURN_ON_ARROW_ERROR_AND_ASSIGN(file_infos,</div>
-<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  arrow_fs_->GetFileInfo(file_selector));</div>
-<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  <span class="keywordflow">return</span> <span class="keyword">static_cast<</span>IdType<span class="keyword">></span>(file_infos.size());</div>
-<div class="line"><a name="l00270"></a><span class="lineno"> 270</span> }</div>
-<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  </div>
-<div class="line"><a name="l00272"></a><span class="lineno"> 272</span> FileSystem::~FileSystem() {}</div>
+<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordflow">case</span> JSON:</div>
+<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keywordflow">return</span> std::make_shared<ds::JsonFileFormat>();</div>
+<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keywordflow">default</span>:</div>
+<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
+<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  }</div>
+<div class="line"><a name="l00099"></a><span class="lineno"> 99</span> }</div>
+<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  </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> Result<std::shared_ptr<arrow::Table>> <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>  <span class="keyword">const</span> std::string& path, FileType file_type,</div>
+<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keyword">const</span> <a class="code" href="structgraphar_1_1util_1_1_filter_options.html">util::FilterOptions</a>& options) <span class="keyword">const</span> noexcept {</div>
+<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  std::shared_ptr<ds::FileFormat> format = GetFileFormat(file_type);</div>
+<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  GAR_RETURN_ON_ARROW_ERROR_AND_ASSIGN(</div>
+<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keyword">auto</span> factory, arrow::dataset::FileSystemDatasetFactory::Make(</div>
+<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  arrow_fs_, {path}, format,</div>
+<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  arrow::dataset::FileSystemFactoryOptions()));</div>
+<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  GAR_RETURN_ON_ARROW_ERROR_AND_ASSIGN(<span class="keyword">auto</span> dataset, factory->Finish());</div>
+<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  GAR_RETURN_ON_ARROW_ERROR_AND_ASSIGN(<span class="keyword">auto</span> scan_builder, dataset->NewScan());</div>
+<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  </div>
+<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <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>  <span class="keywordflow">if</span> (options.filter) {</div>
+<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  GAR_ASSIGN_OR_RAISE(<span class="keyword">auto</span> filter, options.filter->Evaluate());</div>
+<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  RETURN_NOT_ARROW_OK(scan_builder->Filter(filter));</div>
+<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  }</div>
+<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordflow">if</span> (options.columns) {</div>
+<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  RETURN_NOT_ARROW_OK(scan_builder->Project(*options.columns));</div>
+<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  }</div>
+<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  </div>
+<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  GAR_RETURN_ON_ARROW_ERROR_AND_ASSIGN(<span class="keyword">auto</span> scanner, scan_builder->Finish());</div>
+<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  GAR_RETURN_ON_ARROW_ERROR_AND_ASSIGN(<span class="keyword">auto</span> table, scanner->ToTable());</div>
+<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <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>  <span class="comment">// some places, e.g., in vineyard</span></div>
+<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < table->num_columns(); ++i) {</div>
+<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  std::shared_ptr<arrow::DataType> type = table->column(i)->type();</div>
+<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keywordflow">if</span> (type->id() == arrow::Type::STRING) {</div>
+<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  type = arrow::large_utf8();</div>
+<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (type->id() == arrow::Type::BINARY) {</div>
+<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  type = arrow::large_binary();</div>
+<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  }</div>
+<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keywordflow">if</span> (type->Equals(table->column(i)->type())) {</div>
+<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  }</div>
+<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="comment">// do casting</span></div>
+<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keyword">auto</span> field = table->field(i)->WithType(type);</div>
+<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  std::shared_ptr<arrow::ChunkedArray> chunked_array;</div>
+<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  </div>
+<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keywordflow">if</span> (table->num_rows() == 0) {</div>
+<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  GAR_RETURN_ON_ARROW_ERROR_AND_ASSIGN(</div>
+<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  chunked_array, arrow::ChunkedArray::MakeEmpty(type));</div>
+<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (type->Equals(arrow::large_utf8())) {</div>
+<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keyword">auto</span> status = detail::CastToLargeOffsetArray<arrow::StringArray,</div>
+<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  arrow::LargeStringArray>(</div>
+<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  table->column(i), type, chunked_array);</div>
+<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  GAR_RETURN_NOT_OK(status);</div>
+<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (type->Equals(arrow::large_binary())) {</div>
+<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keyword">auto</span> status = detail::CastToLargeOffsetArray<arrow::BinaryArray,</div>
+<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  arrow::LargeBinaryArray>(</div>
+<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  table->column(i), type, chunked_array);</div>
+<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  GAR_RETURN_NOT_OK(status);</div>
+<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="comment">// noop</span></div>
+<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  chunked_array = table->column(i);</div>
+<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  }</div>
+<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  GAR_RETURN_ON_ARROW_ERROR_AND_ASSIGN(table, table->RemoveColumn(i));</div>
+<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  GAR_RETURN_ON_ARROW_ERROR_AND_ASSIGN(</div>
+<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  table, table->AddColumn(i, field, chunked_array));</div>
+<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  }</div>
+<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="keywordflow">return</span> table;</div>
+<div class="line"><a name="l00161"></a><span class="lineno"> 161</span> }</div>
+<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  </div>
+<div class="line"><a name="l00163"></a><span class="lineno"> 163</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T></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> Result<T> <a class="code" href="classgraphar_1_1_file_system.html#aa014a28119399836283a573c9abd97b7">FileSystem::ReadFileToValue</a>(<span class="keyword">const</span> std::string& path) <span class="keyword">const</span> noexcept {</div>
+<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  T ret;</div>
+<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  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>  arrow_fs_->OpenInputStream(path));</div>
+<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  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>  input->Read(<span class="keyword">sizeof</span>(T), &ret));</div>
+<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  ARROW_UNUSED(bytes);</div>
+<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keywordflow">return</span> ret;</div>
+<div class="line"><a name="l00172"></a><span class="lineno"> 172</span> }</div>
+<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  </div>
+<div class="line"><a name="l00174"></a><span class="lineno"> 174</span> <span class="keyword">template</span> <></div>
+<div class="line"><a name="l00175"></a><span class="lineno"> 175</span> Result<std::string> <a class="code" href="classgraphar_1_1_file_system.html#aa014a28119399836283a573c9abd97b7">FileSystem::ReadFileToValue</a>(<span class="keyword">const</span> std::string& path) <span class="keyword">const</span></div>
+<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  noexcept {</div>
+<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  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>  arrow_fs_->OpenInputFile(path));</div>
+<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  GAR_RETURN_ON_ARROW_ERROR_AND_ASSIGN(<span class="keyword">auto</span> bytes, access_file->GetSize());</div>
+<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  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>  access_file->ReadAt(0, bytes));</div>
+<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="keywordflow">return</span> buffer->ToString();</div>
+<div class="line"><a name="l00183"></a><span class="lineno"> 183</span> }</div>
+<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  </div>
+<div class="line"><a name="l00185"></a><span class="lineno"> 185</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T></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> <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& value,</div>
+<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <span class="keyword">const</span> std::string& path) <span class="keyword">const</span> noexcept {</div>
+<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <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>  ARROW_UNUSED(arrow_fs_->CreateDir(path.substr(0, path.find_last_of(<span class="stringliteral">"/"</span>))));</div>
+<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  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>  arrow_fs_->OpenOutputStream(path));</div>
+<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  RETURN_NOT_ARROW_OK(ofstream->Write(&value, <span class="keyword">sizeof</span>(T)));</div>
+<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  RETURN_NOT_ARROW_OK(ofstream->Close());</div>
+<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <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> }</div>
+<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  </div>
+<div class="line"><a name="l00197"></a><span class="lineno"> 197</span> <span class="keyword">template</span> <></div>
+<div class="line"><a name="l00198"></a><span class="lineno"> 198</span> <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& value,</div>
+<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="keyword">const</span> std::string& path) <span class="keyword">const</span> noexcept {</div>
+<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <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>  ARROW_UNUSED(arrow_fs_->CreateDir(path.substr(0, path.find_last_of(<span class="stringliteral">"/"</span>))));</div>
+<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  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>  arrow_fs_->OpenOutputStream(path));</div>
+<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  RETURN_NOT_ARROW_OK(ofstream->Write(value.c_str(), value.size()));</div>
+<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  RETURN_NOT_ARROW_OK(ofstream->Close());</div>
+<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <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> }</div>
+<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  </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> <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<arrow::Table>& table,</div>
+<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  FileType file_type,</div>
+<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="keyword">const</span> std::string& path) <span class="keyword">const</span> noexcept {</div>
+<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <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>  ARROW_UNUSED(arrow_fs_->CreateDir(path.substr(0, path.find_last_of(<span class="stringliteral">"/"</span>))));</div>
+<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  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>  arrow_fs_->OpenOutputStream(path));</div>
+<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keywordflow">switch</span> (file_type) {</div>
+<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="keywordflow">case</span> FileType::CSV: {</div>
+<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="keyword">auto</span> write_options = arrow::csv::WriteOptions::Defaults();</div>
+<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  write_options.include_header = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  write_options.quoting_style = arrow::csv::QuotingStyle::Needed;</div>
+<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  GAR_RETURN_ON_ARROW_ERROR_AND_ASSIGN(</div>
+<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <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>  table->schema(), write_options));</div>
+<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  RETURN_NOT_ARROW_OK(writer->WriteTable(*table));</div>
+<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  RETURN_NOT_ARROW_OK(writer->Close());</div>
+<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  }</div>
+<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <span class="keywordflow">case</span> FileType::PARQUET: {</div>
+<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  parquet::WriterProperties::Builder builder;</div>
+<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  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>  RETURN_NOT_ARROW_OK(parquet::arrow::WriteTable(</div>
+<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  *table, arrow::default_memory_pool(), output_stream, 64 * 1024 * 1024,</div>
+<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  builder.build(), parquet::default_arrow_writer_properties()));</div>
+<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  }</div>
+<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <span class="keywordflow">case</span> FileType::ORC: {</div>
+<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <span class="keyword">auto</span> writer_options = arrow::adapters::orc::WriteOptions();</div>
+<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  writer_options.compression = arrow::Compression::type::ZSTD;</div>
+<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  GAR_RETURN_ON_ARROW_ERROR_AND_ASSIGN(</div>
+<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <span class="keyword">auto</span> writer, arrow::adapters::orc::ORCFileWriter::Open(</div>
+<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  output_stream.get(), writer_options));</div>
+<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  RETURN_NOT_ARROW_OK(writer->Write(*table));</div>
+<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  RETURN_NOT_ARROW_OK(writer->Close());</div>
+<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  }</div>
+<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="keywordflow">default</span>:</div>
+<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <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>  <span class="stringliteral">"Unsupported file type: "</span>, FileTypeToString(file_type), <span class="stringliteral">" for wrting."</span>);</div>
+<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  }</div>
+<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <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> }</div>
+<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  </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> <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& src_path,</div>
+<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="keyword">const</span> std::string& dst_path) <span class="keyword">const</span> noexcept {</div>
+<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <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>  ARROW_UNUSED(</div>
+<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  arrow_fs_->CreateDir(dst_path.substr(0, dst_path.find_last_of(<span class="stringliteral">"/"</span>))));</div>
+<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  RETURN_NOT_ARROW_OK(arrow_fs_->CopyFile(src_path, dst_path));</div>
+<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <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> }</div>
+<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  </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> Result<IdType> <a class="code" href="classgraphar_1_1_file_system.html#a293c0415cb3b72795e034f2a08510524">FileSystem::GetFileNumOfDir</a>(<span class="keyword">const</span> std::string& dir_path,</div>
+<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <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>  arrow::fs::FileSelector file_selector;</div>
+<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  file_selector.base_dir = dir_path;</div>
+<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  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>  file_selector.recursive = recursive;</div>
+<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  arrow::fs::FileInfoVector file_infos;</div>
+<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  GAR_RETURN_ON_ARROW_ERROR_AND_ASSIGN(file_infos,</div>
+<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  arrow_fs_->GetFileInfo(file_selector));</div>
+<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  <span class="keywordflow">return</span> <span class="keyword">static_cast<</span>IdType<span class="keyword">></span>(file_infos.size());</div>
+<div class="line"><a name="l00272"></a><span class="lineno"> 272</span> }</div>
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  </div>
-<div class="line"><a name="l00274"></a><span class="lineno"> 274</span> Result<std::shared_ptr<FileSystem>> FileSystemFromUriOrPath(</div>
-<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <span class="keyword">const</span> std::string& uri_string, std::string* out_path) {</div>
-<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <span class="keywordflow">if</span> (uri_string.length() >= 1 && uri_string[0] == <span class="charliteral">'/'</span>) {</div>
-<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <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>  GAR_RETURN_ON_ARROW_ERROR_AND_ASSIGN(</div>
-<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="keyword">auto</span> arrow_fs,</div>
-<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  arrow::fs::FileSystemFromUriOrPath(uri_string, out_path));</div>
-<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <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>  <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>  *out_path = uri_string;</div>
-<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  }</div>
-<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <span class="keywordflow">return</span> std::make_shared<FileSystem>(arrow_fs);</div>
-<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  }</div>
-<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  </div>
-<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  GAR_RETURN_ON_ARROW_ERROR_AND_ASSIGN(</div>
-<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  <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>  <span class="keyword">auto</span> uri = uri::parse_uri(uri_string);</div>
-<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <span class="keywordflow">if</span> (uri.error != uri::Error::None) {</div>
-<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#a9ca4be37aae8dfea7e6ef54920e0073f">Status::Invalid</a>(<span class="stringliteral">"Failed to parse URI: "</span>, uri_string);</div>
-<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  }</div>
-<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  <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>  <span class="keywordflow">if</span> (uri.scheme == <span class="stringliteral">"file"</span> || uri.scheme == <span class="stringliteral">"hdfs"</span> || uri.scheme.empty()) {</div>
-<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  *out_path = uri.path;</div>
-<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (uri.scheme == <span class="stringliteral">"s3"</span> || uri.scheme == <span class="stringliteral">"gs"</span>) {</div>
-<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  <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>  *out_path = uri.authority.host + uri.path;</div>
-<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  } <span class="keywordflow">else</span> {</div>
-<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#a9ca4be37aae8dfea7e6ef54920e0073f">Status::Invalid</a>(<span class="stringliteral">"Unrecognized filesystem type in URI: "</span>,</div>
-<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  uri_string);</div>
-<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  }</div>
-<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  }</div>
-<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <span class="keywordflow">return</span> std::make_shared<FileSystem>(arrow_fs);</div>
-<div class="line"><a name="l00306"></a><span class="lineno"> 306</span> }</div>
-<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  </div>
-<div class="line"><a name="l00309"></a><span class="lineno"> 309</span> <span class="keyword">template</span> Result<IdType> FileSystem::ReadFileToValue<IdType>(</div>
-<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  <span class="keyword">const</span> std::string&) <span class="keyword">const</span> noexcept;</div>
-<div class="line"><a name="l00312"></a><span class="lineno"> 312</span> <span class="keyword">template</span> Status FileSystem::WriteValueToFile<IdType>(<span class="keyword">const</span> IdType&,</div>
-<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <span class="keyword">const</span> std::string&) <span class="keyword">const</span></div>
-<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  noexcept;</div>
-<div class="line"><a name="l00315"></a><span class="lineno"> 315</span> } <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< IdType > GetFileNumOfDir(const std::string &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 &value, const std::string &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< arrow::Table > &table, FileType file_type, const std::string &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< T > ReadFileToValue(const std::string &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 &src_path, const std::string &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< std::shared_ptr< arrow::Table > > ReadFileToTable(const std::string &path, FileType file_type, const util::FilterOptions &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> FileSystem::~FileSystem() {}</div>
+<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  </div>
+<div class="line"><a name="l00276"></a><span class="lineno"> 276</span> Result<std::shared_ptr<FileSystem>> FileSystemFromUriOrPath(</div>
+<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <span class="keyword">const</span> std::string& uri_string, std::string* out_path) {</div>
+<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <span class="keywordflow">if</span> (uri_string.length() >= 1 && uri_string[0] == <span class="charliteral">'/'</span>) {</div>
+<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <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>  GAR_RETURN_ON_ARROW_ERROR_AND_ASSIGN(</div>
+<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <span class="keyword">auto</span> arrow_fs,</div>
+<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  arrow::fs::FileSystemFromUriOrPath(uri_string, out_path));</div>
+<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  <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>  <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>  *out_path = uri_string;</div>
+<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  }</div>
+<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <span class="keywordflow">return</span> std::make_shared<FileSystem>(arrow_fs);</div>
+<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  }</div>
+<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  </div>
+<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  GAR_RETURN_ON_ARROW_ERROR_AND_ASSIGN(</div>
+<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <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>  <span class="keyword">auto</span> uri = uri::parse_uri(uri_string);</div>
+<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  <span class="keywordflow">if</span> (uri.error != uri::Error::None) {</div>
+<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#a9ca4be37aae8dfea7e6ef54920e0073f">Status::Invalid</a>(<span class="stringliteral">"Failed to parse URI: "</span>, uri_string);</div>
+<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  }</div>
+<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <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>  <span class="keywordflow">if</span> (uri.scheme == <span class="stringliteral">"file"</span> || uri.scheme == <span class="stringliteral">"hdfs"</span> || uri.scheme.empty()) {</div>
+<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  *out_path = uri.path;</div>
+<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (uri.scheme == <span class="stringliteral">"s3"</span> || uri.scheme == <span class="stringliteral">"gs"</span>) {</div>
+<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  <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>  *out_path = uri.authority.host + uri.path;</div>
+<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <span class="keywordflow">return</span> <a class="code" href="classgraphar_1_1_status.html#a9ca4be37aae8dfea7e6ef54920e0073f">Status::Invalid</a>(<span class="stringliteral">"Unrecognized filesystem type in URI: "</span>,</div>
+<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  uri_string);</div>
+<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  }</div>
+<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  }</div>
+<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <span class="keywordflow">return</span> std::make_shared<FileSystem>(arrow_fs);</div>
+<div class="line"><a name="l00308"></a><span class="lineno"> 308</span> }</div>
+<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  </div>
+<div class="line"><a name="l00311"></a><span class="lineno"> 311</span> <span class="keyword">template</span> Result<IdType> FileSystem::ReadFileToValue<IdType>(</div>
+<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  <span class="keyword">const</span> std::string&) <span class="keyword">const</span> noexcept;</div>
+<div class="line"><a name="l00314"></a><span class="lineno"> 314</span> <span class="keyword">template</span> Status FileSystem::WriteValueToFile<IdType>(<span class="keyword">const</span> IdType&,</div>
+<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  <span class="keyword">const</span> std::string&) <span class="keyword">const</span></div>
+<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  noexcept;</div>
+<div class="line"><a name="l00317"></a><span class="lineno"> 317</span> } <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< IdType > GetFileNumOfDir(const std::string &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 &value, const std::string &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< arrow::Table > &table, FileType file_type, const std::string &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< T > ReadFileToValue(const std::string &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 &src_path, const std::string &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< std::shared_ptr< arrow::Table > > ReadFileToTable(const std::string &path, FileType file_type, const util::FilterOptions &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 &&... 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> } <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< arrow::fs::FileSystem > 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< IdType > GetFileNumOfDir(const std::string &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 &value, const std::string &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< arrow::Table > &table, FileType file_type, const std::string &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< T > ReadFileToValue(const std::string &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 &src_path, const std::string &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< std::shared_ptr< arrow::Table > > ReadFileToTable(const std::string &path, FileType file_type, const util::FilterOptions &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< IdType > GetFileNumOfDir(const std::string &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 &value, const std::string &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< arrow::Table > &table, FileType file_type, const std::string &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< T > ReadFileToValue(const std::string &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 &src_path, const std::string &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< std::shared_ptr< arrow::Table > > ReadFileToTable(const std::string &path, FileType file_type, const util::FilterOptions &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> <span class="keyword">using</span> IdType = int64_t;</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="keyword">enum class</span> Type;</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="keyword">class </span>DataType;</div>
-<div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <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> <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> <span class="keyword">enum class</span> AdjListType : uint8_t;</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  </div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span> template <typename T></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">"""Type of file format."""</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">"csv"</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">"parquet"</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">"orc"</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">-></span> <span class="s2">"FileType"</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">"""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"> """</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">-></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">"""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"> """</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">"json"</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">"parquet"</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">"orc"</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">-></span> <span class="s2">"FileType"</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">"""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"> """</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">-></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">"""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"> """</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">"""Adj list type enumeration for adjacency list of graph."""</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">"unordered_by_source"</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">"unordered_by_dest"</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">"ordered_by_source"</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">"ordered_by_dest"</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">-></span> <span class="s2">"AdjListType"</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">"""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"> """</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">-></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">"""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"> """</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">"""Adj list type enumeration for adjacency list of graph."""</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">"unordered_by_source"</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">"unordered_by_dest"</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">"ordered_by_source"</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">"ordered_by_dest"</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">-></span> <span class="s2">"AdjListType"</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">"""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"> """</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">-></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">"""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"> """</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">"""Type of file format."""</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">"csv"</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">"parquet"</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">"orc"</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">-></span> <span class="s2">"FileType"</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">"""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"> """</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">-></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">"""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"> """</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">"json"</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">"parquet"</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">"orc"</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">-></span> <span class="s2">"FileType"</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">"""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"> """</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">-></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">"""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"> """</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"><<a href="#FileType.JSON">FileType.JSON</a>: 'json'></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">-></span> <span class="s2">"FileType"</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">"""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"> """</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">-></span> <span class="s2">"FileType"</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">"""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"> """</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">-></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">"""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"> """</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">-></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">"""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"> """</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">"""Adj list type enumeration for adjacency list of graph."""</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">"unordered_by_source"</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">"unordered_by_dest"</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">"ordered_by_source"</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">"ordered_by_dest"</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">-></span> <span class="s2">"AdjListType"</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">"""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"> """</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">-></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">"""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"> """</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">"""Adj list type enumeration for adjacency list of graph."""</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">"unordered_by_source"</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">"unordered_by_dest"</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">"ordered_by_source"</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">"ordered_by_dest"</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">-></span> <span class="s2">"AdjListType"</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">"""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"> """</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">-></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">"""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"> """</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">-></span> <span class="s2">"AdjListType"</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">"""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"> """</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">-></span> <span class="s2">"AdjListType"</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">"""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"> """</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">-></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">"""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"> """</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">-></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">"""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"> """</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 'grpah'</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"> """</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 'grpah'</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"> """</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 'grpah'</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"> """</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>