OntoBricks v0.7.0 is out #131
benoitcayladbx
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
OntoBricks — Release Notes V0.7.0
Highlights
documentation/neo4j-requirements.mdfor flavor compatibility.get_entity_context,request_entity_action) with an explicit Confirm/Cancel card before any UC function runs — Graph Chat never exposes directinvoke_entity_action._datasnapshot every graph engine's Build now materialises — one compute path, identical numbers on Lakebase, Lakehouse, and Neo4j, no more silent "0.0000" for uncomputed metrics. A new three-tab Analytics dashboard (Dashboard / Data Model Health / AI Insights) replaces the old seven-tab layout, with global metric distributions and a scope-picker dialog.invoke_entity_action).agent_mapping_pge) and a complexity-based routing supervisor (agent_supervisor) join the existing auto-mapping agent, plus a PGE evaluator stage for OWL generation (orphan/dangling/naming/duplicate checks with bounded retries).TRY_CASTeverywhere: every remaining Spark SQL emitter (SWRL, decision tables, aggregate rules, SHACL guards, SPARQL translation) now usesTRY_CASTinstead of a bareCAST, so one non-numeric value in a triple can no longer abort an entire rule/query on ANSI-mode warehouses.Neo4j Graph Backend
rdf:type→ node label,rdfs:label→nameproperty, literal predicates → node properties, URI-object predicates → relationships (back/core/graphdb/neo4j/graph_model.py). Reads reconstruct the exact original{subject, predicate, object}triples via a per-graph reverse-map (:__GraphSchemanode), so the Knowledge Graph view, GraphQL, and reasoning behave identically across Delta / Lakebase / Neo4j.UNWINDso it runs on Aura Free / Community with zero plugins.connections[]— URI, database, username, Databricks secret scope/key). Domain → Information → Knowledge Graph requires picking one connection when the backend is Neo4j (no blank default; the old per-domainneo4j_databaseoverride is retired — the database lives on the profile). Deleting/renaming a connection still referenced by domains is rejected with the affected domain list.RETURN 1probe).{lakebase: {}, neo4j: {}, lakehouse: {}}) so Neo4j and Lakebase can never collide on shared keys (e.g.database).documentation/neo4j-requirements.mddocuments server requirements, flavor compatibility (Aura / Enterprise / Community), named connections, and the breaking storage-format change from earlier pre-release flat-graph builds (old flat graphs must be rebuilt).Graph Chat & MCP Alignment
/dtwin/nodes/*,/dtwin/classes, pending-action confirm/cancel) so unpublished DRAFT domains work the same way as published MCP targets.get_entity_contextandrequest_entity_actiononly — execution requires an explicit Confirm/Cancel card with a one-time pending token.run_agentexit paths; cancel removes the card first with neutral button styling.agent_dtwin_chatSPEC + eval dataset expanded; MCP verification recorded for the alignment.Branding & Navigation (Aug hardening)
123glyph; backend cards on Domain → Knowledge Graph use branded glyphs.Knowledge Graph Analytics
≈) in the UI rather than presented as exact values.…_dataUC snapshot the job reads, closing the gap where a Lakebase or Neo4j domain built cleanly but could not be analysed.≈-prefixed value instead of a misleading0.0000.resources/graph_analytics.job.yml), with a preflight test suite validating the bundle YAML, job parameters, and CLI wiring so a mis-indentation cannot silently break everydatabricksCLI command again.Run History (Runs page)
Scheduler
Data Quality & Reasoning
sh:SPARQLTarget.sh:datatype/sh:sparqlat all) is gone.TRY_CAST(instead of bareCAST) across every remaining rule SQL emitter (SWRL builtins, decision tables, aggregates, SHACL condition guards) — a single non-numeric triple value can no longer abort an entire rule on ANSI-mode Databricks SQL warehouses; failed checks now surface the underlying engine error message instead of a generic failure.Ontology & Mapping
invoke_entity_action), and invokable from the Graph Explorer (details pane + right-click, with the function's description shown in the result popup).agent_mapping_pgefor entity/relationship SQL mapping, a PGE evaluator stage foragent_owl_generator(deterministic orphan-class / dangling-domain-range / naming / duplicate-class checks with bounded retry hints), andagent_supervisor, a complexity-based router between the legacy auto-mapping agent and the new PGE engine.owl:Class/sh:classare untouched).Registry, Settings & Navigation
bi-boxes, Domain →bi-box, Knowledge Graph → its ownbi-radar(previously sharedbi-box).Security & Reliability
uv run(bare, without--frozen) is now explicitly called out everywhere as a lock-poisoning command — a bareuv run pytestduring a routine test pass silently rewroteuv.lockto point at an internal PyPI proxy and broke the next deploy; the documented and mandatory test command is nowuv run --frozen pytest -q -m "not scenario".Deploy & Infrastructure
DEFAULT_INSTANCE_ID): a single knob derives a distinct app name and Databricks bundle target per instance, so changing only the app name no longer risks Terraform destroying the running app as a "rename".uv.lockfully proxied against an internal Databricks PyPI mirror (0 public-CDN URLs), which crashes a container build; rewritten back to public PyPI.scripts/reorganized intobootstrap/,migrations/, and_internal/subfolders; CI/dev tooling extracted into a newci/folder.docs/(Home, Features, Get Started, Docs hub, About, custom 404); the former Markdown/Sphinx product documentation moved todocumentation/sodocs/is free for the Pages publish root.CAN_MANAGE_RUNpermission now granted automatically to both app service principals on everymake deploy(previously required a manual grant, sincejobs.list()is ACL-filtered).Bug Fixes (selected)
CREATE TABLE ... AS SELECT(RTAS cannot declare an explicit schema), and silent build-failure detection in the KG Build UI (wrong polling endpoint).[object Object].object_hashgenerated column), and a stale_synctable ownership conflict that blocked Lakeflow's managed-sync pipeline.addEventListenerconfirm instead of an inlineonclick.DEFAULT_INSTANCE_IDnow keeps the DAB target and app names aligned so a renamed app cannot destroy the running deployment as a Terraform "rename".neo4j_connection, secret scope/key wiped on hydration) fixed; Objects connection picker and Domain KG tab persistence hardened.Upgrade Notes
New deploys (v0.7.0 from scratch)
No special action beyond the standard
make bootstrap-lakebase(which now also self-heals the scheduler's generalizedtask_type/target_keycolumns and analytics run-history tables) andmake deploy, which additionally grantsCAN_MANAGE_RUNon the graph-analytics job to both app service principals automatically.Upgrading from v0.6.x
Keep the existing Databricks app (do not destroy it)
v0.7.0 introduces
DEFAULT_INSTANCE_ID, which derives both the app name(
ontobricks-<id>) and the DAB target (dev-lakebase-<id>). A Databricks appname cannot be renamed in place — Terraform destroys then creates. Preflight
blocks accidental renames unless you confirm (
ALLOW_APP_RENAME=1or typing theold name).
In-place upgrade of a live 0.6.x app (same URL, same Terraform state under
the unsuffixed
dev-lakebasetarget):ontobricks-060) and set the matching id:DEFAULT_INSTANCE_ID=060inscripts/deploy.config.sh(or pass it on thecommand line).
uncomment / set
DEFAULT_DAB_TARGET="dev-lakebase", or runDAB_TARGET=dev-lakebase make deploy.make bootstrap-lakebase(or letmake deploydo it) so the 0.6→0.7scheduler columns land, then
make deploy.Example:
What a naive default deploy does: stock
DEFAULT_INSTANCE_ID=07xdeploysontobricks-07xunder a new targetdev-lakebase-07x. That does notkill the old app — it leaves it running and orphaned from the new scripts. Use
the in-place recipe above if you want to refresh the existing app.
New parallel instance (leave 0.6.x untouched): change only
DEFAULT_INSTANCE_ID(e.g.07x) and deploy; each id gets its own app + state.See also
documentation/DEPLOY_CHECKLIST.md§5.uri/usernameNeo4j config is not auto-migrated intoconnections[]. Re-enter profiles in Settings → Neo4j, then set each Neo4j domain's required Neo4j connection on Domain → Information → Knowledge Graph. The old per-domainneo4j_databasefield is no longer written.graph_backend(Lakebase / Lakehouse / Neo4j) set on Domain → Information → Knowledge Graph; existing domains default to Lakebase.…_datasnapshot for the Lakeflow analytics job to read. Analytics hard-fails on those domains with a "Run Build" remedy — rebuild the domain once to pick up the snapshot. The old in-memory and SQL-pushdown compute paths (and theanalytics_pushdown_enabledsetting) are removed; the job is opt-in via Settings → Global (admin) and requiresmake deployto have shipped the job bundle.schedules/schedule_runsgaintask_type,target_key,config(jsonb), and (for runs)detail(jsonb); the unique key widens from(registry_id, domain_name)to(registry_id, task_type, domain_name, target_key). Applied lazily and idempotently by the app (_ensure_schedule_task_columns), or eagerly viamake bootstrap-lakebase. Legacy cohort schedules stored in theglobal_configJSONB blob are migrated into the real tables automatically, once.session_diris optional but harmless.docs/todocumentation/; any bookmarked links or scripts referencingdocs/user-guide.mdetc. should be updated todocumentation/user-guide.md.docs/is now the GitHub Pages marketing site.uv runwithout--frozenis no longer supported for routine test/dev commands — always useuv run --frozen pytest ...to avoid rewritinguv.lockagainst the internal proxy.DataQualityRequest.backendAPI field is deprecated (ignored, not removed) for backward compatibility.This discussion was created from the release v0.7.0: Merge pull request #130 from databrickslabs/develop.
All reactions