Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
104 commits
Select commit Hold shift + click to select a range
adee19e
Add virtual graph support to nameservice
bplatz Jul 24, 2025
b963a39
Refactor virtual graph storage and fix critical bugs
bplatz Jul 26, 2025
8d8c66b
Remove FlatRank virtual graph support and refactor BM25 API
bplatz Jul 30, 2025
ff5edc0
Refactor nameservice storage for clarity and consistency
bplatz Jul 31, 2025
5d63bc7
Refactor virtual graph drop functionality and fix dependency bugs
bplatz Jul 31, 2025
dfb6507
cljfmt
bplatz Jul 31, 2025
7bd4c6a
remove temp file
bplatz Jul 31, 2025
f551068
Update main drop fn
bplatz Jul 31, 2025
713835f
Merge main into feature/ns-2
bplatz Aug 20, 2025
4a997a3
Fix storage protocol references after merge
bplatz Aug 20, 2025
138836a
stub r2rml
bplatz Aug 20, 2025
124229b
simple r2rml parse
bplatz Aug 20, 2025
1564153
more robust
bplatz Aug 20, 2025
5426234
Enhance R2RML support with aggregate functions and improved test cove…
bplatz Aug 21, 2025
e4928d1
tests pass
bplatz Aug 21, 2025
7a63ec5
Refactor R2RML handling to improve query execution and enhance integr…
bplatz Aug 21, 2025
3d1c9bc
Enable R2RML literal value filtering test to verify support for filte…
bplatz Aug 21, 2025
ecf2d9e
refactoring
bplatz Aug 22, 2025
0754620
Refactor R2RML processing to streamline subject and predicate binding…
bplatz Aug 22, 2025
5f26d2a
Add integration tests for R2RML context handling and IRI compaction
bplatz Aug 22, 2025
9fd1230
Refactor R2RML parsing to enhance template extraction and improve han…
bplatz Aug 22, 2025
454bb08
cljfmt
bplatz Aug 22, 2025
9a431a3
Enhance R2RML functionality by updating database creation method and …
bplatz Aug 22, 2025
d633049
Refactor R2RML parsing and enhance testing
bplatz Aug 23, 2025
c30648d
Add support for SQL queries in R2RML mappings and enhance integration…
bplatz Aug 23, 2025
30d2909
Enhance R2RML support by adding handling for constant values, XSD dat…
bplatz Aug 23, 2025
2f64650
Enhance R2RML support by adding language tag handling for literals; u…
bplatz Aug 23, 2025
6ff30e2
Merge feature/bm25-ns into feature/r2rml-vg
bplatz Sep 10, 2025
baf4214
Fix indentation in error handling for virtual graph loading
bplatz Sep 10, 2025
6e6e8f2
Add MySQL connector dependency and enhance R2RML logging for parsing …
bplatz Sep 10, 2025
7f3731a
Doc fix
bplatz Sep 10, 2025
ae75dec
Merge branch 'feature/bm25-ns' into feature/r2rml-vg
bplatz Sep 16, 2025
4537b87
Merge branch 'feature/bm25-ns' into feature/r2rml-vg
bplatz Dec 9, 2025
7c6d865
Merge feature/bm25-ns with lint fix into feature/r2rml-vg
bplatz Dec 9, 2025
9894231
Add conditional compilation for R2RML virtual graph check in nameservice
bplatz Dec 9, 2025
50345b3
Begin Iceberg integration and OpenFlights data fetching scripts
bplatz Dec 9, 2025
7fba717
Add Iceberg integration and OpenFlights data fetching scripts
bplatz Dec 9, 2025
b3804b9
Implement Iceberg virtual graph support with R2RML mappings and add c…
bplatz Dec 9, 2025
4595e8e
Enhance Iceberg virtual graph support with time-travel functionality …
bplatz Dec 9, 2025
baf7212
Add JSON parsing for Iceberg virtual graph configuration and enhance …
bplatz Dec 9, 2025
6ba0eaa
Enhance Iceberg virtual graph with multi-table support, routing index…
bplatz Dec 9, 2025
37db82e
Add filter pushdown analysis and corresponding tests for Iceberg virt…
bplatz Dec 10, 2025
c33968c
Add lazy scan iteration with resource management and limit enforcemen…
bplatz Dec 10, 2025
5ccf2c1
Add support for VALUES clause pushdown with comprehensive tests
bplatz Dec 10, 2025
176d8ee
Remove JDBC support
bplatz Dec 10, 2025
a8fd9f4
Eenhance predicate pushdown
bplatz Dec 10, 2025
f6c72a3
Iceberg data type coercion, refactor large namespace
bplatz Dec 11, 2025
c6ad5f4
Add REST catalog support and partitioned table functionality for Iceberg
bplatz Dec 12, 2025
3c20265
Enhance Iceberg statistics extraction with column stats aggregation a…
bplatz Dec 12, 2025
34a9cf2
Enhance resource safety in Iceberg scans with guaranteed cleanup and …
bplatz Dec 12, 2025
d871d25
Enhance table identifier handling with utilities for parsing, convers…
bplatz Dec 12, 2025
00d67b1
Refactor routing indexes to support multi-maps for class and predicat…
bplatz Dec 12, 2025
52b4569
Implement multi-table hash join support in Iceberg virtual graphs
bplatz Dec 12, 2025
5f7cab5
Merge remote-tracking branch 'origin/main' into feature/iceberg
bplatz Dec 16, 2025
541e4f4
Refactor pushdown logic and enhance join functionality
bplatz Dec 16, 2025
d5f955b
enhance join tests for cardinality estimation
bplatz Jan 5, 2026
a757e3f
Implement columnar execution for Iceberg queries
bplatz Jan 6, 2026
10b59f7
Enhance columnar execution by improving batch-to-row-map conversion a…
bplatz Jan 6, 2026
95b5ad3
Enhance dual-mode batch processing for Iceberg queries to support bot…
bplatz Jan 6, 2026
bf199ac
Implement filtered Arrow batch processing for Iceberg queries to enha…
bplatz Jan 6, 2026
7889e6a
Add copy-batches option to scan-arrow-batches for Iceberg queries to …
bplatz Jan 6, 2026
1923777
Add copy-batches option to scan-arrow-batches for improved memory man…
bplatz Jan 6, 2026
46ddb6f
Add vectorized join support and output option for HashJoinOp
bplatz Jan 6, 2026
0839938
Add output-columns option to HashJoinOp for projection pushdown
bplatz Jan 6, 2026
9ff8e93
Add support for automatic projection pushdown and vectorized executio…
bplatz Jan 6, 2026
427103b
Implement left outer hash join for SPARQL OPTIONAL semantics
bplatz Jan 6, 2026
f065b22
update docs, bug fix
bplatz Jan 6, 2026
19216a0
Add UNION pattern execution and related tests for SPARQL semantics
bplatz Jan 6, 2026
48e2e69
Implement Hash Aggregation for SPARQL Queries
bplatz Jan 6, 2026
20da327
Add aggregation support with ORDER BY and LIMIT to Iceberg query exec…
bplatz Jan 6, 2026
156d0ac
Refactor pattern info extraction and enhance default alias generation…
bplatz Jan 6, 2026
a77948e
Enhance Iceberg Query Processing and Add E2E Tests
bplatz Jan 7, 2026
125019b
Enhance Iceberg query execution with support for FILTER and BIND expr…
bplatz Jan 7, 2026
db7eff6
Implement HAVING clause support in Iceberg query execution and add en…
bplatz Jan 7, 2026
928f544
Refactor imports and enhance SPARQL integration tests for comprehensi…
bplatz Jan 7, 2026
d2b2287
subqueries support with and without aggregation
bplatz Jan 7, 2026
4f90a0b
Add support for transitive property paths in Iceberg virtual graph, i…
bplatz Jan 8, 2026
7713cb0
Enhance Iceberg virtual graph documentation with support for OPTIONAL…
bplatz Jan 8, 2026
7c14ea1
feat: Add GraalVM native image support for Iceberg integration
bplatz Jan 8, 2026
234ab0c
Merge remote-tracking branch 'origin/feature/bm25-ns' into feature/ic…
bplatz Jan 8, 2026
86f52d6
feat: Add Iceberg connection and disconnection APIs for querying as RDF
bplatz Jan 8, 2026
96a23b7
Merge branch 'feature/bm25-ns' into feature/iceberg
bplatz Jan 8, 2026
bcf0040
api doc update
bplatz Jan 8, 2026
5d6fce0
update test with new API
bplatz Jan 8, 2026
a01abdc
fix: improve error handling for unsupported Arrow vector types during…
bplatz Jan 8, 2026
1712fe9
feat: add R2RML mappings for OpenFlights data including airlines, air…
bplatz Jan 8, 2026
1c00055
fix: update error message for missing warehouse-path or store in iceb…
bplatz Jan 8, 2026
aea610a
Support vended credentials, storage byte ranges, caches
bplatz Jan 14, 2026
4047048
feat: enhance coercion handling and error reporting in Iceberg virtua…
bplatz Jan 14, 2026
9f11777
conolidation, refactor coercion
bplatz Jan 14, 2026
e877fee
refactor iceberg.clj namespace
bplatz Jan 14, 2026
eba1fd0
Add ledger-info support of iceberg vg
bplatz Jan 14, 2026
5e9169b
fix graph config, leger-info test
bplatz Jan 15, 2026
09c7db2
fix: update ci-config to exclude form# in unresolved-symbol linter
bplatz Jan 15, 2026
e2283fe
feat: add normalize-table-name function for Iceberg dot notation comp…
bplatz Jan 15, 2026
f380992
dynamodb virtual graph nameservice support
bplatz Jan 15, 2026
45ef628
make iceberg always avail for now
bplatz Jan 16, 2026
dba2268
Move iceberg and arrow to subprojects
bplatz Jan 16, 2026
33ce511
docs: update iceberg virtual graph documentation for modular structur…
bplatz Jan 16, 2026
69d2f94
Remove hadoop dependency/support
bplatz Jan 17, 2026
14cc95c
improve test consistency
bplatz Jan 17, 2026
a7835cf
Merge origin/main into feature/iceberg
bplatz Jan 17, 2026
7e09e60
format
bplatz Jan 17, 2026
c2eecf3
remove aws dependencies
bplatz Jan 17, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .clj-kondo/ci-config.edn
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
{:source-paths #{"src"}
:linters {:unresolved-symbol {:exclude [(fluree.db.util/catch*)
(test-with-files.tools/with-tmp-dir)
goog.isObject]}}
goog.isObject
form#]}}
:lint-as {instaparse.core/defparser clojure.core/def}
:config-in-call {cljs.core/pr-sequential-writer {:ignore [:private-call]}
fluree.db.query.exec.eval/parse-qualified-code {:ignore true}}
Expand Down
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -36,3 +36,5 @@ package-lock.json
**report.html
test/nodejs/store
/dev/data/*
/dev-resources/openflights/raw/
/dev-resources/openflights/warehouse/
55 changes: 54 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
cljs-browser-test cljs-node-test cljstest test graaltest ci clean \
js-packages sync-package-json publish-nodejs publish-browser \
publish-webworker publish-js pending-tests pt clj-kondo-lint \
clj-kondo-lint-ci cljfmt-check cljfmt-fix
clj-kondo-lint-ci cljfmt-check cljfmt-fix iceberg-openflights iceberg-partitioned

.DEFAULT_GOAL := help

Expand Down Expand Up @@ -167,3 +167,56 @@ clean: ## Remove build artifacts and caches
rm -rf js-packages/browser/fluree-browser-sdk.js
rm -rf js-packages/nodejs/fluree-node-sdk.js
rm -rf js-packages/webworker/fluree-webworker.js

iceberg-openflights: ## Download OpenFlights CSVs and build local Iceberg warehouse (gitignored)
./script/fetch-openflights.sh
clojure -Sdeps '{:paths ["script"] :deps {org.apache.iceberg/iceberg-core {:mvn/version "1.10.0"} \
org.apache.iceberg/iceberg-parquet {:mvn/version "1.10.0"} \
org.apache.iceberg/iceberg-data {:mvn/version "1.10.0"} \
org.apache.iceberg/iceberg-bundled-guava {:mvn/version "1.10.0"} \
org.apache.parquet/parquet-hadoop {:mvn/version "1.16.0"} \
org.apache.hadoop/hadoop-common {:mvn/version "3.3.6" :exclusions [org.slf4j/slf4j-log4j12 log4j/log4j org.slf4j/slf4j-reload4j]} \
org.clojure/data.csv {:mvn/version "1.0.1"}}}' \
-M -m build-openflights-iceberg

iceberg-partitioned: ## Build partitioned Iceberg table for partition pruning tests
clojure -Sdeps '{:paths ["script"] :deps {org.apache.iceberg/iceberg-core {:mvn/version "1.10.0"} \
org.apache.iceberg/iceberg-parquet {:mvn/version "1.10.0"} \
org.apache.iceberg/iceberg-data {:mvn/version "1.10.0"} \
org.apache.iceberg/iceberg-bundled-guava {:mvn/version "1.10.0"} \
org.apache.parquet/parquet-hadoop {:mvn/version "1.16.0"} \
org.apache.hadoop/hadoop-common {:mvn/version "3.3.6" :exclusions [org.slf4j/slf4j-log4j12 log4j/log4j org.slf4j/slf4j-reload4j]} \
org.clojure/data.csv {:mvn/version "1.0.1"}}}' \
-M -m build-partitioned-airlines

iceberg-rest-up: ## Start Iceberg REST catalog with MinIO (Docker)
cd dev-resources/iceberg-rest && docker compose up -d
@echo "Waiting for REST catalog to be ready..."
@sleep 10
@echo "REST catalog available at http://localhost:8181"
@echo "MinIO console at http://localhost:9001 (admin/password)"
@echo "Run 'make iceberg-rest-load' to load OpenFlights data"

iceberg-rest-load: ## Load OpenFlights data into REST catalog
docker exec -it iceberg-spark /scripts/load-openflights.sh

iceberg-rest-down: ## Stop Iceberg REST catalog
cd dev-resources/iceberg-rest && docker compose down

iceberg-rest-clean: ## Stop and remove all REST catalog data
cd dev-resources/iceberg-rest && docker compose down -v

polaris-up: ## Start Apache Polaris catalog with vended credentials (Docker, port 8182)
cd dev-resources/polaris && docker compose up -d
@echo "Waiting for Polaris to be ready..."
@sleep 5
@./dev-resources/polaris/bootstrap.sh
@echo ""
@echo "Polaris REST catalog available at http://localhost:8182"
@echo "OAuth: POST http://localhost:8182/api/catalog/v1/oauth/tokens"

polaris-down: ## Stop Apache Polaris catalog
cd dev-resources/polaris && docker compose down

polaris-clean: ## Stop and remove Polaris (keeps MinIO data)
cd dev-resources/polaris && docker compose down -v
39 changes: 39 additions & 0 deletions db-iceberg-arrow/deps.edn
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
{:deps {com.fluree/db-iceberg {:local/root "../db-iceberg"}

;; Arrow and Iceberg Arrow integration
org.apache.iceberg/iceberg-arrow {:mvn/version "1.10.0"}
org.apache.arrow/arrow-vector {:mvn/version "17.0.0"}
org.apache.arrow/arrow-memory-netty {:mvn/version "17.0.0"}}

:paths ["src" "resources"]

;; NOTE: Arrow requires JVM flags for direct memory access on Java 9+
;; These are specified in each alias below (global :jvm-opts not supported)

:aliases
{:dev
{:extra-paths ["../db-iceberg/dev" "../dev" "../dev-resources"]
:jvm-opts ["-Dlogback.configurationFile=../dev-resources/logback.xml"
"--add-opens=java.base/java.nio=ALL-UNNAMED"
"--add-opens=java.base/java.lang=ALL-UNNAMED"
"--add-opens=java.base/sun.nio.ch=ALL-UNNAMED"]}

:test
{:extra-paths ["test" "../db-iceberg/test" "../test" "../test-resources" "../dev-resources"]
:extra-deps {lambdaisland/kaocha {:mvn/version "1.91.1392"}
org.clojure/test.check {:mvn/version "1.1.1"}
babashka/fs {:mvn/version "0.5.20"}}
:jvm-opts ["--add-opens=java.base/java.nio=ALL-UNNAMED"
"--add-opens=java.base/java.lang=ALL-UNNAMED"
"--add-opens=java.base/sun.nio.ch=ALL-UNNAMED"]
:exec-fn kaocha.runner/exec-fn
:exec-args {:kaocha/tests [{:kaocha.testable/id :iceberg-arrow
:kaocha.testable/type :kaocha.type/clojure.test
:kaocha/source-paths ["src" "../db-iceberg/src" "../src"]
:kaocha/test-paths ["test"]
:kaocha/ns-patterns [".*"]}]}}

;; GraalVM-compatible alias (uses arrow-memory-unsafe instead of netty)
:graalvm
{:override-deps {org.apache.arrow/arrow-memory-unsafe {:mvn/version "17.0.0"}}
:exclude-deps [org.apache.arrow/arrow-memory-netty]}}}
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
[
{
"name": "org.apache.arrow.memory.RootAllocator",
"allDeclaredConstructors": true,
"allPublicConstructors": true,
"allDeclaredMethods": true,
"allPublicMethods": true
},
{
"name": "org.apache.arrow.memory.BufferAllocator",
"allDeclaredConstructors": true,
"allPublicConstructors": true,
"allDeclaredMethods": true,
"allPublicMethods": true
},
{
"name": "org.apache.arrow.memory.unsafe.UnsafeAllocationManager",
"allDeclaredConstructors": true,
"allPublicConstructors": true,
"allDeclaredMethods": true,
"allPublicMethods": true
},
{
"name": "org.apache.arrow.memory.unsafe.DefaultAllocationManagerFactory",
"fields": [{"name": "FACTORY"}]
},
{
"name": "org.apache.arrow.vector.VectorSchemaRoot",
"allDeclaredConstructors": true,
"allPublicConstructors": true,
"allDeclaredMethods": true,
"allPublicMethods": true
},
{
"name": "org.apache.arrow.vector.types.pojo.Schema",
"allDeclaredConstructors": true,
"allPublicConstructors": true,
"allDeclaredMethods": true,
"allPublicMethods": true,
"allDeclaredFields": true
},
{
"name": "org.apache.arrow.vector.types.pojo.Field",
"allDeclaredConstructors": true,
"allPublicConstructors": true,
"allDeclaredMethods": true,
"allPublicMethods": true,
"allDeclaredFields": true
},
{
"name": "org.apache.iceberg.arrow.vectorized.ArrowReader",
"allDeclaredConstructors": true,
"allPublicConstructors": true,
"allDeclaredMethods": true,
"allPublicMethods": true
},
{
"name": "org.apache.iceberg.arrow.vectorized.VectorizedTableScanIterable",
"allDeclaredConstructors": true,
"allPublicConstructors": true,
"allDeclaredMethods": true,
"allPublicMethods": true
}
]
Loading
Loading