Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

fluree delta

Manage Delta Lake graph sources — R2RML mappings over Delta tables read in place. See Delta Lake tables.

Delta support is part of the default build (the delta feature). A CLI built without it can still map and query Delta sources on a server that has it (--remote).

Subcommands

SubcommandDescription
mapMap Delta tables as a graph source
browseList a Unity Catalog’s catalogs, schemas or tables
previewShow a Unity Catalog table’s columns and declared keys
verifyRead a Unity Catalog table with the credentials Unity issues
generateGenerate an R2RML mapping from Unity Catalog tables
validateCheck a mapping against the tables map would read
listList mapped graph sources (Delta, SQL, Iceberg and R2RML)
infoShow details for a mapped graph source
dropDrop a mapped graph source

list, info and drop are shared with fluree iceberg: both commands operate on the same family of mapped sources.

fluree delta map

Usage

fluree delta map <NAME> --r2rml <PATH> (--root <LOCATION> | --unity-uri <URL> | --table <NAME=LOCATION>...) [OPTIONS]

Arguments

ArgumentDescription
<NAME>Graph source name (e.g., “sales”)

Options

Table locations:

OptionDescription
--root <LOCATION>Directory the mapping’s table names resolve beneath. Each rr:tableName becomes a path under it, with dots as separators: dbo.orders → <root>/dbo/orders
--table <NAME=LOCATION>Explicit location for one table (repeatable). Wins over --root; use it for a table outside the root or whose directory does not follow its name

A location is s3://bucket/prefix, abfss://<container>@<account>.dfs.core.windows.net/<path> (ADLS Gen2), abfss://<workspace>@onelake.dfs.fabric.microsoft.com/<item>/<path> (OneLake), or a local path (file:///… or absolute) under FLUREE_ICEBERG_LOCAL_ROOTS. Give --root, one or more --table, or both.

S3:

OptionDescription
--s3-region <REGION>S3 region override
--s3-endpoint <URL>S3 endpoint override (MinIO, LocalStack)
--s3-path-styleUse path-style S3 URLs

Azure:

OptionDescription
--azure-tenant-id <ID>Microsoft Entra tenant of a service principal
--azure-client-id <ID>Service principal (application) client id
--azure-client-secret-env <VAR>Environment variable holding the client secret, read by the process that reads the tables. The secret is not stored
--azure-client-secret <SECRET>Literal client secret. Stored with the graph source; prefer the option above

Give the tenant, the client id and one of the two secret options together, or none of them to use ambient credentials. See Credentials.

Unity Catalog (Databricks):

OptionDescription
--unity-uri <URL>Databricks workspace URL. Tables without a --table entry are then named in Unity Catalog (catalog.schema.table), which says where each lives and issues, and renews, the credentials that read it. Excludes --root
--unity-catalog <NAME>Completes a mapped table name of fewer than three parts
--unity-schema <NAME>Completes a one-part mapped table name
--oauth2-client-id <ID>Application id of a Databricks service principal
--oauth2-client-secret-env <VAR>Environment variable holding the service principal’s OAuth secret, read by the process that reads the tables. The secret is not stored. With --remote, the server must list the variable in FLUREE_GRAPH_SOURCE_SECRET_ENV_VARS
--oauth2-client-secret <SECRET>Literal OAuth secret. Stored with the graph source; prefer the option above
--auth-bearer-env <VAR> / --auth-bearer <TOKEN>A Databricks personal access token in place of a service principal, by variable or literal. It does not renew
--oauth2-token-url <URL>OAuth2 token URL (default: the workspace’s own, <unity-uri>/oidc/v1/token)
--oauth2-scope <SCOPE>OAuth2 scope (default: all-apis)

Give a service principal’s id and secret, or a token. On AWS also give --s3-region: Unity Catalog does not name the bucket’s region. See Unity Catalog.

R2RML mapping:

OptionDescription
--r2rml <PATH>Mapping file (required). Each rr:tableName names a Delta table; rr:sqlQuery is not supported
--r2rml-type <TYPE>Mapping media type (e.g., text/turtle); inferred from extension if omitted

General:

OptionDescription
--branch <BRANCH>Branch name (defaults to main)
--model <LEDGER>Model ledger (name:branch) whose default graph supplies the source’s view policies and class/property hierarchy. Must exist. See Access policy
--default-allow <BOOL>Fallback for governed requests that match no policy; true keeps the source readable under authentication without a model (unset: deny)
--remote <NAME>Execute against a remote server

Examples

# Every mapped table lives under one root
fluree delta map sales --root s3://lake/Tables --r2rml mappings/sales.ttl

# OneLake, reading as a service principal whose secret stays in the environment
fluree delta map fabric-sales \
  --root abfss://<workspace-id>@onelake.dfs.fabric.microsoft.com/<lakehouse-id>/Tables \
  --azure-tenant-id "$TENANT" --azure-client-id "$APP_ID" \
  --azure-client-secret-env FABRIC_CLIENT_SECRET \
  --r2rml mappings/sales.ttl

# Databricks tables by name, read as a service principal
fluree delta map dbx-sales \
  --unity-uri https://<workspace>.cloud.databricks.com --unity-catalog main \
  --oauth2-client-id "$APP_ID" --oauth2-client-secret-env DATABRICKS_CLIENT_SECRET \
  --s3-region us-east-1 \
  --r2rml mappings/sales.ttl

# One table lives elsewhere
fluree delta map sales \
  --root s3://lake/Tables \
  --table orders=s3://lake/raw/orders_v2 \
  --r2rml mappings/sales.ttl

Output

Mapped Delta tables as graph source 'sales:main'
  R2RML:       bafy…
  TriplesMaps: 3
  Tables:      2
    dbo.customers (version 12)
    dbo.orders (version 847)

Each mapped table is opened once at registration, checked for the columns its maps reference, and its current Delta version reported. (not readable yet) and a Warning: line mean the table could not be opened — it may not exist yet, or this process may lack the credentials the querying process has — or that it lacks a mapped column. The source is registered either way and the first query reports the underlying error. A table name that cannot be placed (no --table entry and no --root) is an error.

fluree delta browse / preview / verify / generate / validate

The read-only commands that lead up to map on Unity Catalog. None registers anything. See From a catalog to a mapping.

fluree delta browse   [--depth schemas|tables]          <UNITY OPTIONS>
fluree delta preview  <TABLE>                           <UNITY OPTIONS>
fluree delta verify   <TABLE> [--s3-region <REGION>]    <UNITY OPTIONS>
fluree delta generate <TABLE>... --base-namespace <IRI> <UNITY OPTIONS> [-o <FILE>]
fluree delta validate --r2rml <PATH>                    <the location options of `map`>

<UNITY OPTIONS> are --unity-uri (required here) and the --unity-*, --auth-bearer* and --oauth2-* options of map. A <TABLE> of fewer than three parts is completed from --unity-catalog and --unity-schema, which also set how far browse reaches.

All five take --remote <NAME> and --json, which prints the endpoint’s answer as is.

CommandOptions of its own
browse--depth schemas|tables (default tables): how far a listing of one catalog reaches
verify--s3-region, --s3-endpoint, --s3-path-style
generate--base-namespace <IRI> (required): what every generated IRI derives from
-o, --output <FILE>: write the mapping here instead of standard output
--subject-key <TABLE=COLUMN[,COLUMN]> (repeatable): a table’s subject columns
--class-name <TABLE=NAME> (repeatable): a table’s class
--strict-subjects: give a table no subject unless its key is declared or cannot be null
--no-joins: keep foreign keys as plain values

generate writes the mapping to standard output or --output, and what it decided — a key it chose, a column it passed over — to standard error. verify exits non-zero when the table cannot be read, and validate when the mapping has an error, so a script can gate on either.

fluree delta generate main.sales.orders main.sales.customers \
  --unity-uri https://<workspace>.cloud.databricks.com --auth-bearer-env DATABRICKS_TOKEN \
  --base-namespace https://example.org/sales# -o sales.ttl

Querying a past version

fluree query sales --at snapshot:840 --sparql 'SELECT …'
fluree query sales --at time:2026-03-01T00:00:00Z --sparql 'SELECT …'

snapshot:<n> is the Delta table version. See Time travel.

fluree delta list / info / drop

fluree delta list
fluree delta info sales
fluree delta drop sales --force

Behave exactly as the fluree iceberg equivalents; Delta sources show the type Delta.