Repository navigation
Releases: fluree/db
Releases · fluree/db
Release list
v4.2.4-beta.2
What's Changed
Breaking Changes
- fix(storage): file compare-and-swap no longer deadlocks recover_wal; StorageCas closures are now 'static by @zonotope in #2003
Features
- feat(api): multi-write transactions by @bplatz in #2023
- feat: SPARQL parameters, fulltext() in SPARQL, structured SHACL rejections by @bplatz in #2024
- feat(python): the fluree Python package by @bplatz in #2025
- feat(iceberg): add AWS Glue Data Catalog + S3 Tables catalog modes by @aaj3f in #1451
Bug Fixes
- fix(query): indexed overflow integers keep xsd:integer through DATATYPE, DISTINCT, GRAPH and ORDER BY by @bplatz in #2012
- fix(cli): help text for validate, examples, and materialize; rust-api features by @bplatz in #2016
- fix: index storage growth — stats sketch GC, disk cache for local storage, drop of blob/ by @bplatz in #2018
- fix: engine fixes found building the Python package by @bplatz in #2022
- fix(python): keep the extension out of the CLI release build; v4.2.4-beta.2 by @bplatz in #2036
Performance
- perf(storage): recover the WAL without blocking the async runtime by @zonotope in #2011
- perf(indexer): sparse binary + zstd stats sketches; 15-minute GC default by @bplatz in #2020
Documentation
Full Changelog: v4.2.3...v4.2.4-beta.2
v4.2.3
What's Changed
Features
- feat(sparql): # PRAGMA request options, the SPARQL twin of JSON-LD opts by @bplatz in #2002
- feat(query): union default graph, per ledger and per query by @bplatz in #2004
Bug Fixes
- fix: keep typed literal values through the index (reindex affected ledgers) by @bplatz in #1988
- fix(query): typed numeric constants match exactly, bare numbers match any numeric datatype by @bplatz in #1990
- fix(query): place BIND and FILTER after the triple that binds their variable by @bplatz in #1995
- fix: unresolvable graph references fail closed, and TriG directives apply in document order by @aaj3f in #1997
- fix(query): 4xx for unknown graphs and commit refs; urn:default names the default graph by @bplatz in #2005
Other Changes
- Increase custom datatype limit and make it explicit by @zonotope in #1966
- ci(release): Docker publish actions on their Node 24 majors by @bplatz in #1989
- release v4.2.3 by @bplatz in #2000
Full Changelog: v4.2.2...v4.2.3
v4.2.2
What's Changed
Breaking Changes
- feat(delta): browse, preview, verify, generate and validate on Unity Catalog; generated mappings key and join lowercase tables (Iceberg too) by @bplatz in #1902
- Apply a request's policy on the graph-scoped read path, and to hydration by @zonotope in #1935
- fix: parse ledger ids once at the edge and key everything by a typed id by @bplatz in #1958
- fix: scope MCP and the ledger listing by token claims; MCP follows data auth by @bplatz in #1963
Features
- feat(iceberg): time-pinned graph-source reads via @iso: and @snapshot: by @bplatz in #1896
- feat(query): @time: as the canonical timestamp selector; @iso: stays an alias by @bplatz in #1897
- feat(delta): Delta Lake graph sources on local, S3, ADLS Gen2 and OneLake; reqwest 0.13 (outbound TLS trusts the OS certificate store) by @bplatz in #1899
- feat(delta): Databricks tables by name through Unity Catalog by @bplatz in #1901
- feat(sparql): support GRAPH ?g in UPDATE templates by @bplatz in #1921
- feat: encryption key rotation without export and import by @bplatz in #1919
- feat(server): accept Turtle, N-Triples and TriG on /sync by @bplatz in #1932
- feat(server): Graph Store HTTP Protocol endpoint and default-graph sync by @bplatz in #1934
- feat: Turtle and N-Triples output for CONSTRUCT and DESCRIBE by @bplatz in #1940
- feat: edge annotations and GRAPH blocks in CONSTRUCT templates by @bplatz in #1948
- feat(server): accept a time pin in the /query ledger path by @bplatz in #1970
- feat(cli): fluree server run --memory for a throwaway in-memory server by @bplatz in #1968
- feat(api): branch from a point in time with at: "time:" by @bplatz in #1969
- Accept TriG on insert (API, server, CLI) by @bplatz in #1971
Bug Fixes
- fix(query): unmatched OPTIONAL leaves vars unbound in SPARQL, null in Cypher by @bplatz in #1923
- fix: route named graphs by ledger graph id, not transaction-local numbers by @bplatz in #1926
- fix(query): keep left joins in written order when they share a variable by @bplatz in #1927
- fix(storage): apply AES256Key on every encryptable build path and keep the disk cache free of decrypted artifacts by @bplatz in #1916
- fix(indexer): remove rebuild session directories on every exit by @bplatz in #1917
- fix(server): honour SPARQL Protocol dataset parameters by @bplatz in #1928
- fix(query): key literals alike whichever join lane produced them by @bplatz in #1939
- Compare branches by commit identity instead of
tby @zonotope in #1905 - fix(server): config precedence, boolean switches, and docs for what exists by @bplatz in #1944
- fix(server): branching from a ledger with no commits is a 400, not a 500 by @bplatz in #1945
- fix(query): filter and negation placement, and point-in-time visibility after reindex by @bplatz in #1965
- fix(query): restore fast paths after cached index adoption by @bplatz in #1967
Performance
- perf(query): fix worker-dependent 1.5x slowdown in COUNT star merges (DBLP regression in 4.2.1) by @bplatz in #1900
- Read only the probe's slice of untranslatable overlay flakes by @bplatz in #1904
- perf(query): cut per-row overhead in type scans, stars, grouping, and MINUS by @bplatz in #1933
- perf(query): let LIMIT stop property joins and OPTIONAL early by @bplatz in #1936
- perf(query): accelerate joins, existence checks, and counts by @bplatz in #1959
Other Changes
- Push and pull histories with merges by @zonotope in #1888
- refactor: consolidate staging and commit helpers by @bplatz in #1929
- release v4.2.2 by @bplatz in #1946
Full Changelog: v4.2.1...v4.2.2
v4.2.1
What's Changed
Breaking Changes
- rdf:JSON Canonicalization by @zonotope in #1854
- Make the export → import round trip faithful (breaking: export's default output changes) by @aaj3f in #1875
Features
- Write-ahead log for file storage and a segmented Raft log by @bplatz in #1820
- Rules see claims: executor-backed datalog, Turtle-star on every write path, in-round budgets, W3C RDF suites by @aaj3f in #1823
- RDF 1.2: rdf:reifies triple terms on the text ingest paths, and TriG-star inside GRAPH blocks by @bplatz in #1832
Bug Fixes
- fix(query): prevent Unicode panic in dictionary error messages by @bplatz in #1801
- perf(query): count NumBig distinct objects from arenas, drop the row cap by @bplatz in #1803
- Skip config reasoning defaults on history/changes datasets by @bplatz in #1813
- indexer: roll up planner-facing property stats after the incremental ndv floor by @bplatz in #1814
- fix(raft): retire stalled workers on low-volume clusters by @bplatz in #1830
- perf(query): seek bound decimals in TI3 object joins by @bplatz in #1826
- fix(query): match unbound keys in materialized subquery joins by @bplatz in #1827
- perf(query): bound subquery buffering and stream independent scopes by @bplatz in #1828
- fix(query): resolve overflow subject IRIs from novelty by @bplatz in #1829
- Validate SHACL rules on merge operations by @zonotope in #1822
- fix: @JSON opacity, var-length edge identity, commit-id spelling, reserved-graph contract by @aaj3f in #1838
- fix(raft): avoid replaying proposals with unknown outcomes by @bplatz in #1839
- fix(indexer): report cancelled join tasks as cancelled, not panicked by @bplatz in #1844
- fix(raft): pin openraft fork that resamples election timeout per campaign by @bplatz in #1845
- fix(policy): empty rule set under an allow default is root; keep raw-row lanes for untouched predicates by @bplatz in #1855
- fix(indexer): collect shared dictionary blobs, run the collector periodically, batch storage deletes by @bplatz in #1862
- Let an annotation-body FILTER reach the scan, and stop --explain hiding the annotated BGP by @aaj3f in #1874
- fix(cli): parse --at with the canonical time-spec grammar, not a commit prefix; render JSON-LD SELECT as JSON under --format table by @aaj3f in #1871
- fluree doc ingest: stop losing data on re-ingest, fail loudly, work with current models by @aaj3f in #1876
- fix(query): COUNT over a novelty-only or overlay-only predicate returned 0 by @aaj3f in #1877
- fix(query): encode JSON-LD constant references at lowering so joins reach the batched lanes by @bplatz in #1856
Performance
Other Changes
- ci: speed up tests, benchmarks, and Apple releases by @bplatz in #1802
- query: index-walk range semi-join for correlated range probes, plus four join-chain fixes (BSBM Explore Q5) by @bplatz in #1815
- fix(merge): fast-forward merges land on queue-backed nameservices and keep the target's index root by @bplatz in #1816
- Add trusted policy delegation across SDK and server interfaces by @bplatz in #1804
- Make
f:IdentityRestrictedoverride control enforceable by @zonotope in #1819 - Improve concurrent write throughput with WAL group commit and reduced lock work by @bplatz in #1821
- fix(query): seed selective object VALUES before star payload joins by @bplatz in #1824
- Stamp branch-operation flakes on the target's clock and load state along the first-parent lineage by @zonotope in #1818
- perf(query): defer local dictionary pack loading until first use by @bplatz in #1831
- Document that PolicyAuthorization carries no verified identity by @zonotope in #1840
- perf(query): plan RDF-star annotation chains by cost, elide redundant checks, memoize per-row decodes by @bplatz in #1835
- perf(stats): share IndexStats by Arc, resolve class lookups on demand, pool planner stats views by @bplatz in #1836
- test: size in-test polling deadlines for a loaded CI runner by @bplatz in #1852
- perf(policy): skip subjects the class cache already holds when populating by @jakep36 in #1865
- release v4.2.1 by @bplatz in #1893
New Contributors
Full Changelog: v4.2.0...v4.2.1
v4.2.0
What's Changed
Features
- Temporal arithmetic per SEP-0002, and make TZ/TIMEZONE reindex-stable by @bplatz in #1747
- feat(graphql): GraphQL endpoint over a schema derived from the ledger by @bplatz in #1748
- SQL graph sources: R2RML over Trino-protocol endpoints, plus the fluree-sql-bridge sidecar by @bplatz in #1749
- feat(validate): carry the validated ledger t on ValidateReport by @bplatz in #1757
- browser peer + playground: fluree-db-browser, @fluree/db-wasm, SSE head tracking, and the residency retry loop by @aaj3f in #1715
- feat(policy): enforce static view policy on Iceberg/SQL graph sources by @bplatz in #1759
- feat(cli):
fluree doc— Fluree Unstructured: documents into a searchable graph by @bplatz in #1760 - fluree doc: --model and --entities, grounded entity and relation extraction; hybrid search by @bplatz in #1764
- feat(sql): pushdown lane — one statement per GRAPH block over a SQL source by @bplatz in #1777
- feat(sql): pushdown lane M1/M2 — MIN/MAX, BIND, widening filters, partitioning, caps, block cache, class policies by @bplatz in #1785
- feat(sql): pushdown lane M3 — subject policies, expressions, sub-selects, unions, HAVING by @bplatz in #1788
- feat(stats): fluree-db-stats kernel and on-demand column profiling by @bplatz in #1789
- feat(materialize): advance a backlogged window by a bounded prefix by @christophediprima in #1649
Bug Fixes
- fix(query): keep every string-dictionary datatype's own term identity by @aaj3f in #1736
- fix: make the equijoin-filter fold sound about term equality by @aaj3f in #1728
- Deduplicate repeated statements in bulk import by @bplatz in #1754
- fix(indexer): recover a ledger wedged at max novelty by @christophediprima in #1662
- fix(ingest): store an object-position empty collection as the rdf:nil triple it denotes by @aaj3f in #1744
- fix: fail closed on unencodable datatype IRIs; keep the membership-join lane join-equivalent on list rows by @aaj3f in #1746
- fix(query): STR() on a double returns the canonical XSD lexical form by @aaj3f in #1750
- fix(policy): evaluate every targeted f:query before denying; deterministic policy order by @bplatz in #1761
- fix(sql): fused SUM/AVG folds over double/text columns, SQLite bridge column typing by @bplatz in #1769
- fix(transact): give staged views dictionaries that cover their own flakes by @bplatz in #1791
- fix(consensus): park queued submissions on entry liveness, not a fixed clock by @bplatz in #1792
- fix(bm25,vector): advance the watermark on an empty change set, don't rebuild by @christophediprima in #1661
Other Changes
- perf: make filtered-DELETE list-meta hydration O(novelty), not O(retractions × novelty) by @bplatz in #1675
- fix: match string literals by RDF term identity; normalize language-tag case by @bplatz in #1676
- fix: two v4.1.6 planner regressions — star-join reorder and membership-join admission by @bplatz in #1674
- fix: never delete raw-txn blobs inline; tolerate dangling txn refs; add
fluree verifyby @bplatz in #1677 - fix(consensus): extract fluree-raft-core and add a replicated kv fragment; fix two waiter-map defects by @bplatz in #1678
- refactor(consensus): reduce the nameservice through the generic state-machine seam by @bplatz in #1679
- fix: ledger-cache deadlock, MinIO path-style, and an embeddable Raft node by @bplatz in #1680
- fix: make IN/NOT IN match encoded resources, price the row lanes max_fuel could not see by @bplatz in #1681
- feat: graph sync — whole-graph replacement committing only the delta by @bplatz in #1682
- docs: make PR↔issue reference direction explicit (Fixes / Follow-up / Partially addresses) by @aaj3f in #1692
- fix(cli): novelty-aware encoded-binding resolution in the table renderer, and never Debug-print a binding by @aaj3f in #1693
- fix(query): novelty-only-predicate retractions were invisible to the crawl read path by @aaj3f in #1698
- fix: let a no-op republish complete its raft queue entry by @bplatz in #1716
- feat: Add sh:sparql (SHACL-SPARQL) constraint support by @bplatz in #1717
- fix(core): make FlakeMeta's Ord agree with its Eq by @aaj3f in #1727
- fix(storage): clamp FileStorage ranged reads to the object, and sweep orphaned .tmp staging files by @aaj3f in #1702
- fix(query): COUNT(*) counts joined rows, not distinct subjects, on an anchored star by @aaj3f in #1706
- fix(query): keep a VALUES written after an OPTIONAL below it by @aaj3f in #1701
- fix(stats): reconcile novelty asserts against the base index for user-facing counts by @aaj3f in #1699
- fix(query): let OPTIONAL extend a row that left the shared variable unbound by @aaj3f in #1724
- fix(datalog): IRI comparison in rule FILTERs (fails open today) + a diagnostic when a rule can't derive by @aaj3f in #1705
- perf(transact): take the cached ledger state for the commit window — stop per-commit DictNovelty deep-clones for serial writers by @aaj3f in #1718
- feat(api): make the background indexer observable and configurable from the embedded API by @aaj3f in #1710
- fix(server): surface novelty backpressure as 503 + Retry-After with err:db/NoveltyAtMax by @aaj3f in #1719
- fix(import): publish bulk-import commit heads via ref fast-forward, not the queue contract by @bplatz in #1753
- group integration tests into grp_* harnesses by @zonotope in #1755
- split debug info out of dev-profile binaries by @zonotope in #1752
- Add an offline index-version graph diagnostic by @zonotope in #1622
- perf(query): seek a bound-term overlay window instead of translating all novelty by @aaj3f in #1732
- fix(server): accept per-ledger SSE subscriptions on GET /events by @aaj3f in #1730
- wasm32 groundwork: the engine stack compiles and runs on wasm32-unknown-unknown, native untouched by @aaj3f in #1714
- Fix reasoning defaults by @zonotope in #1763
- Make storage-sweep planning proportional to distinct manifests by @zonotope in #1643
- Guard against integration tests that silently never run by @zonotope in #1756
- fix(query): range-filter pushdown keeps every conjunct; push xsd:decimal bounds by @bplatz in #1778
- fix: bound retained index versions by count, not only by age by @christophediprima in #1601
- fix(materialize): bound the full read a source falls back to when its watermark expires by @christophediprima in #1663
- feat(r2rml): refuse the graph-map constructs the materializer cannot honor by @christophediprima in #1581
- stamp provenance on rows leaving — and joining within — a cross-ledger SERVICE by @aaj3f in #1641
- release v4.2.0 by @bplatz in #1740
Full Changelog: v4.1.6...v4.2.0
v4.1.6
What's Changed
Bug Fixes
Other Changes
- apply rdf set semantics to construct results by @aaj3f in #1634
- perf(r2rml): multi-fact fused-join generality (K≥2 semi-joins, multi ref group keys) by @aaj3f in #1589
- preserve fully-retracted history through full index rebuilds by @aaj3f in #1624
- accept legal aggregate and property-path forms below the parser by @aaj3f in #1629
- align http dataset-clause semantics with the engine by @aaj3f in #1631
- tighten indexed fast-path eligibility guards by @aaj3f in #1628
- make governance default-allow tri-state so ledger config applies by @aaj3f in #1625
- seed connected values through type-anchored stars by @aaj3f in #1626
- emit absolute iris in w3c result formats by @aaj3f in #1630
- refuse graph-source patterns the plan cannot route by @aaj3f in #1632
- forward the query prologue to remote service sub-queries by @aaj3f in #1633
- report policy enforcement state in tracked query meta by @aaj3f in #1627
- fix: don't fail open when a subject's namespace code is undecodable by @bplatz in #1645
- fix(policy): key the class cache on the graph, not just the subject by @christophediprima in #1580
- fix(policy): alias the class-cache type (clippy type_complexity, red on main) by @aaj3f in #1658
- fix: harden the upsert absent-subject skip against an unattached index by @bplatz in #1656
- fix(indexer): stamp the target ledger_id on incrementally built index roots by @bplatz in #1655
- perf: stop widening scans for a bound subject absent from the base index by @bplatz in #1657
- perf: fold a one-row VALUES into its object and cost nested UNION honestly by @bplatz in #1659
- fix(query): correct three fast paths that diverged from the generic pipeline by @bplatz in #1666
- fix(query): answer unbound for a calendar field the value does not carry by @bplatz in #1667
- feat(nameservice): add NameServiceLookup::heads for cheap head reads by @bplatz in #1668
- fix(storage): treat a zero-length blob as absent, not as empty content by @christophediprima in #1599
- perf(bm25): scope the incremental indexing query to the subjects that changed by @christophediprima in #1604
- fix(bm25): worker fixes by @christophediprima in #1618
- count the NumBig distinct-object slice exactly instead of declining by @aaj3f in #1644
- fix(materialize): skip materialize targets that already applied the window by @christophediprima in #1647
- Name terms and the failed constraint in SHACL violation messages by @zonotope in #1646
- release v4.1.6 by @bplatz in #1660
Full Changelog: v4.1.5...v4.1.6
v4.1.5
What's Changed
Breaking Changes
- feat(sparql): burn-down Wave 1 — validation passes, grammar tightening, authoritative diagnostics, reifier forms (−121 net registers) by @aaj3f in #1453
- fix(iceberg): fail closed on merge-on-read delete files (silent stale-row risk) by @aaj3f in #1520
Other Changes
- feat(sparql): burn-down Wave 2 — GRAPH conformance (D-2), multi-op UPDATE (#1438), BASE resolution, Turtle-star ingest (−31+ registers) by @aaj3f in #1454
- fix(query): cross-ledger GRAPH queries over indexed data (#1405 bugs 2+3) by @Jackamus29 in #1425
- feat(iceberg): virtual-dataset info APIs + decimal-FK detection + subject-key fallback + secret redaction by @aaj3f in #1450
- feat(sparql): burn-down Wave 3 — within-ledger FROM (D-3), UPDATE graph-management (D-5/6), equality/EBV/promotion (D-12, #1447), USING+GRAPH over-delete (#1441), triple-term syntax (−145 tests) by @aaj3f in #1462
- Fix duplicate triples from re-asserted facts in the V6 incremental indexer by @zonotope in #1508
- feat(cli): fluree model — governance tooling for access, entities, and class hierarchy by @bplatz in #1516
- fix: Cypher field-report round — reindex OOM, EXPLAIN, =~, IRI round-tripping, HTTP bulk import, arena sealing by @bplatz in #1518
- feat: multi-clause Cypher write composition (MERGE chains) via sequential staging by @bplatz in #1519
- fix: attribute ref-class stats when an endpoint gains its first type by @bplatz in #1488
- Rework history sidecars as transition logs by @zonotope in #1524
- release v4.1.3 by @bplatz in #1517
- fix: keep history entries in the same leaflet as their row by @bplatz in #1526
- feat: Enrich Cypher transaction commit result for write parity by @bplatz in #1527
- docs: Add scaling and resilience overview by @bplatz in #1530
- docs: Correct time-travel and history query documentation by @bplatz in #1533
- feat: Add auth token and model access disable CLI commands by @bplatz in #1535
- fix(proxy-storage): resolve advanced index kinds over a remote mount by @aaj3f in #1537
- chore: Release v4.1.4 by @bplatz in #1538
- Redact graph source config secrets by @zonotope in #1534
- Limit recursion depth on turtle imports by @zonotope in #1545
- Add regression coverage for sub-SELECT aggregate correlation joins by @zonotope in #1542
- Substitute property-position variables in datalog rules by @zonotope in #1541
- fix: gate WHERE-level early dedup on aggregate duplicate-insensitivity by @bplatz in #1546
- Round-trip generic xsd:duration through the binary index by @zonotope in #1544
- Limit recursion depth in the SPARQL and JSON-LD parsers by @zonotope in #1547
- perf(virtual): R2RML/Iceberg virtual-dataset performance program — corpus, pruning, fused aggregation, budget forwarding (consolidates #1475–#1507) by @aaj3f in #1507
- feat(virtual): serverless Lambda-usability + BYO-IAM — admission widenings, capacity guards, typed memory budget (consolidates #1505 + #1514) by @aaj3f in #1514
- perf(virtual): big-Iceberg-audit implementation — correctness/capacity guards, coverage widenings, harness re-bless, browse-parity, family-C (consolidates the audit program + #1525) by @aaj3f in #1528
- bench+test: query correctness guardrails — differential harness, baseline gating, and four fast-path fixes by @aaj3f in #1477
- perf: eliminate per-flake staging cost in bulk upserts by @bplatz in #1549
- perf: batched read lanes for Cypher relationship-property queries and large UNWINDs by @bplatz in #1553
- bench: baseline host/corpus identity, phase-share gating, and noise floors by @aaj3f in #1550
- fix: un-orphan build()'s #[cfg(native)] from with_secret_resolver by @bplatz in #1566
- feat(BM25): embedded BM25 full-text search over the standard query path + a bm25 CLI by @christophediprima in #1543
- Land #1528 (Iceberg audit + browse-parity + family-C) onto main by @aaj3f in #1554
- test: standalone it_minmax bin + aws-gate smoke_minio (vbench follow-ups) by @aaj3f in #1486
- feat(materialize): fluree materialize — native-twin builder from virtual R2RML/Iceberg datasets by @aaj3f in #1529
- Wave 4: resolve the eight deferred follow-ups from the #1462 review (#1467-#1474) by @aaj3f in #1483
- feat(graph-ir): fallible GraphSink protocol, quad capability, statement lifecycle + Turtle ParserOptions conformance by @aaj3f in #1552
- fix(api): materialize sink call sites — finish() → into_parts() (#1529 × #1552 merge skew) by @aaj3f in #1586
- BM25 index management over the server API by @zonotope in #1584
- fix(import): document-scoped blank node identity, and skolem ids SPARQL can write by @aaj3f in #1551
- fix(turtle): a redeclared prefix must change what later names mean by @aaj3f in #1565
- CLI agent-surface truth + the manifest rail by @aaj3f in #1571
- Import: survive low open-file limits — best-effort raise + FD-budgeted index build by @aaj3f in #1591
- chore(memory): memory-store baseline audit + checkpoint audit tooling by @aaj3f in #1572
- feat: materialize Iceberg/R2RML graph sources into native ledgers + tracking worker by @christophediprima in #1422
- fix: stop mapping one VMA per dictionary pack (ENOMEM with memory free) by @christophediprima in #1598
- perf(r2rml): vectorized fused-aggregate fold + late-rendered decode seam (Gap-4 P1) by @aaj3f in #1582
- fix: reject SPARQL-style and constant JSON-LD filter expressions (fail-open no-op) by @bplatz in #1593
- fix: stop hiding user f:-namespace data from variable-predicate scans by @bplatz in #1597
- fix(indexer): merge novelty into emptied-by-retract leaflets without failing by @bplatz in #1603
- feat: local-filesystem Iceberg tables (catalog-less Direct mode) by @bplatz in #1611
- fix(iceberg): warehouse-root resolution for pin resolution and materialize scans by @bplatz in #1613
- feat(storage): atomic write configuration for file storage by @bplatz in #1612
- Reclaim superseded and orphaned index artifacts by @zonotope in #1614
- feat: Forward dictionary pack compaction by @bplatz in #1617
- chore: Release v4.1.5 by @bplatz in #1621
Full Changelog: v4.1.2...v4.1.5
v4.1.4
What's Changed
Other Changes
- fix: keep history entries in the same leaflet as their row by @bplatz in #1526
- feat: Enrich Cypher transaction commit result for write parity by @bplatz in #1527
- docs: Add scaling and resilience overview by @bplatz in #1530
- docs: Correct time-travel and history query documentation by @bplatz in #1533
- feat: Add auth token and model access disable CLI commands by @bplatz in #1535
- fix(proxy-storage): resolve advanced index kinds over a remote mount by @aaj3f in #1537
- chore: Release v4.1.4 by @bplatz in #1538
Full Changelog: v4.1.3...v4.1.4
v4.1.3
What's Changed
Breaking Changes
- feat(sparql): burn-down Wave 1 — validation passes, grammar tightening, authoritative diagnostics, reifier forms (−121 net registers) by @aaj3f in #1453
Other Changes
- feat(sparql): burn-down Wave 2 — GRAPH conformance (D-2), multi-op UPDATE (#1438), BASE resolution, Turtle-star ingest (−31+ registers) by @aaj3f in #1454
- fix(query): cross-ledger GRAPH queries over indexed data (#1405 bugs 2+3) by @Jackamus29 in #1425
- feat(iceberg): virtual-dataset info APIs + decimal-FK detection + subject-key fallback + secret redaction by @aaj3f in #1450
- feat(sparql): burn-down Wave 3 — within-ledger FROM (D-3), UPDATE graph-management (D-5/6), equality/EBV/promotion (D-12, #1447), USING+GRAPH over-delete (#1441), triple-term syntax (−145 tests) by @aaj3f in #1462
- Fix duplicate triples from re-asserted facts in the V6 incremental indexer by @zonotope in #1508
- feat(cli): fluree model — governance tooling for access, entities, and class hierarchy by @bplatz in #1516
- fix: Cypher field-report round — reindex OOM, EXPLAIN, =~, IRI round-tripping, HTTP bulk import, arena sealing by @bplatz in #1518
- feat: multi-clause Cypher write composition (MERGE chains) via sequential staging by @bplatz in #1519
- fix: attribute ref-class stats when an endpoint gains its first type by @bplatz in #1488
- Rework history sidecars as transition logs by @zonotope in #1524
- release v4.1.3 by @bplatz in #1517
Full Changelog: v4.1.2...v4.1.3
v4.1.2
What's Changed
Other Changes
- fix(turtle): resolve RFC 3986 §5.3 fragment refs against @base by @aaj3f in #1399
- (Iceberg) Apply Vended-Credential
client.regionto the S3 Client by @aaj3f in #1400 - (R2RML) Error on Colliding TriplesMap IRIs & Report Table Count by @aaj3f in #1401
- (Iceberg) Expose OAuth2
scope/audiencefor REST Catalog Auth by @aaj3f in #1402 - (CLI) Route Queries Targeting Iceberg/R2RML Graph Sources by @aaj3f in #1404
- (R2RML) Default Mapping
media_typeto Turtle at Both Compile Sites by @aaj3f in #1403 - Fix
select *Stack Overflow on thequery_from/build_clientPath by @aaj3f in #1409 - perf: Iceberg/R2RML graph-source performance — planning, catalog caching, LIMIT + row-group pruning by @bplatz in #1406
- fix(query): honor @type in JSON-LD select-crawl projections by @bplatz in #1410
- perf(iceberg/r2rml): Arrow reader, LIMIT/predicate pushdown, and bound-object query support by @bplatz in #1411
- feat(r2rml): bound subjects, decimal/double/date & ref object constants, star fusion, subject-key pushdown by @bplatz in #1413
- Feature/iceberg gcs reader by @christophediprima in #1392
- fix(query): cross-ledger explicit projection drops foreign-namespace predicates by @Jackamus29 in #1417
- fix(query): resolve hydration roots across the default-graph union by @Jackamus29 in #1418
- Local dev tooling for Raft +
QueuedTransactorrefactor by @zonotope in #1414 - (Iceberg/R2RML) Deterministic Catalog --> R2RML Engine by @aaj3f in #1407
- docs: Surface Cypher in overviews + minor repo cleanup by @bplatz in #1393
- fix(mcp): stop memory tool hangs from s-expression parser infinite loop by @bplatz in #1421
- feat: sh:class value-sets from the shapes graph, same-ledger and cross-ledger by @bplatz in #1420
- fix(policy): enforce f:policySource and config policy defaults on writes by @bplatz in #1419
- feat: SHACL property paths and full constraint-coverage sweep by @bplatz in #1423
- feat: SHACL validation reports — fluree validate CLI, Rust API, and HTTP endpoint by @bplatz in #1424
- feat: always-on RDFS entailment for SHACL and policy enforcement by @bplatz in #1426
- feat: Remote mounts, serving tiers, and peer-mode CLI by @bplatz in #1428
- feat: event-time commits with @recorded: audit-axis time travel by @bplatz in #1429
- fix: fulltext() scoring on configured predicates with novelty present, plus fulltext and vector scoring perf by @bplatz in #1430
- fix: filtered-DELETE staging livelock on novelty-heavy ledgers by @bplatz in #1431
- perf: warm-on-write read caching + leaf-split to fix reindex-churn read regression by @bplatz in #1415
- feat: stable _:fdb blank-node ids addressable in queries and updates by @bplatz in #1432
- [FIX] SPARQL Parsing of sub-
SELECTas a Set-Operation Operand by @aaj3f in #1436 - feat: Aggregate netted branch diff in merge preview (include_changes) by @bplatz in #1434
- (SPARQL) Full W3C Suite in CI w/ Registers for Skip/Ignore by @aaj3f in #1437
- fix: close Cypher benchgraph gaps and add benchmark-critical fast paths by @bplatz in #1448
- feat: Bolt protocol endpoint + Cypher performance campaign by @bplatz in #1449
- feat: openCypher write path, LOAD CSV, and expression/pattern surface by @bplatz in #1455
- test(sparql): burn-down Wave 0 — harness hygiene, parser accept-more, lexer/formatter, expression high-yield (−80 registers) by @aaj3f in #1452
- Raft query peer event bus unification by @zonotope in #1427
- Raft implementation hardening by @zonotope in #1459
- fix(policy): honor policy-class when identity is also present (same-ledger) by @bplatz in #1457
- feat: policy write verbs and multi-language conditions by @bplatz in #1460
- perf: batched frontier expansion for property-path traversals by @bplatz in #1461
- release v4.1.2 by @bplatz in #1433
New Contributors
- @christophediprima made their first contribution in #1392
Full Changelog: v4.1.1...v4.1.2