Percival聲明式數(shù)據(jù)查詢和可視化語言
Percival 是一種聲明式數(shù)據(jù)查詢和可視化語言。它提供了一個基于 Web 的反應式 notebook 環(huán)境,用于探索復雜的數(shù)據(jù)集、生成交互式圖形和共享結(jié)果。該項目目前處于早期階段。
Percival 結(jié)合了 Datalog 作為關(guān)系數(shù)據(jù)查詢語言的靈活性和探索性可視化語法的優(yōu)點。這些聲明性組件通過一個反應式數(shù)據(jù)流系統(tǒng)進行交互。由于 Percival 使用了網(wǎng)絡技術(shù)(包括用于多線程、沙盒執(zhí)行的 Web Workers),完全交互式的 notebook 可以與互聯(lián)網(wǎng)上的任何人分享,使數(shù)據(jù)分析對其他人更有意義。
Percival 的核心是一個自定義的 Datalog 編譯器,它使用 Rust 和 WebAssembly 構(gòu)建,并與其 notebook 運行時集成。這通過分階段的評估過程將查詢語言編譯為 JavaScript,該過程還允許用戶嵌入他們自己的 JavaScript 代碼。該界面旨在輕量級、友好和可訪問,并且沒有隱藏的工作區(qū)狀態(tài)。
Percival 是一個完全在用戶瀏覽器中運行的客戶端 Web 應用程序。notebook 界面使用Svelte構(gòu)建,并使用 Tailwind CSS 設計樣式。它依賴于許多其他開源庫,包括用于實時代碼編輯和語法突出顯示的 CodeMirror 6、 用于 Markdown 渲染的Remark 和 KaTeX,以及用于前端捆綁的 Vite。
Web 前端的代碼位于 中src/,其中包含 Svelte (in src/components/) 和 TypeScript (in src/lib/) 的組合。這些模塊在構(gòu)建時捆綁到一個靜態(tài)網(wǎng)站中,并且沒有動態(tài)的服務器端渲染。
