Repository navigation
Ontology Studio: suggest a property per column, draw bound columns, and pick mappings by label - #37215
Conversation
…ows a loading row while concepts load
…and Add concept states its reason (F1)
…s unseen bindings
…ing says why (F4B)
…dio/v7-parity-gaps
❌ PR checklist incompleteThis PR cannot be merged until the following are addressed on its linked issue:
The fields live on the linked issue in the Shipping project (open the issue → right sidebar → Projects). After you set them, re-run this check (or push a commit) — issue/project changes do not re-trigger it automatically. Maintainers can bypass this check by adding the |
🔄 Playwright impact map auto-refreshedThis PR touched specs or UI source that changed the source→spec routing map. I regenerated What is this file? It is the auto-generated half of Playwright's PR planner. It routes "if source X changes, run specs Y" by walking spec imports and cross-referencing What if I want to regenerate locally instead? Run this before pushing your next change to skip the bot commit: python3 .github/scripts/generate_playwright_impact_map.py
git add .github/playwright/impact-map.generated.json
git commit --amend --no-edit # or a separate commit |
|
| Count | Rule |
|---|---|
| 2 | openmetadata-imports/no-api-calls-in-iteration |
| 1 | openmetadata-imports/review-sequential-api-calls |
All findings
| Location | Rule | Message | |
|---|---|---|---|
| 🟡 | src/components/governance/ontology/OntologyConceptEditor/useReadableConceptOptions.ts:48:32 |
openmetadata-imports/no-api-calls-in-iteration |
Avoid issuing one API request per item. Fetch at the data owner, use a bulk endpoint, or use useQueries with an intentional concurrency policy. |
| 🟡 | src/components/governance/ontology/OntologyGraphView/OntologyGraphView.tsx:805:9 |
openmetadata-imports/review-sequential-api-calls |
Review these sequential API requests. If they are independent, start them together with Promise.all/Promise.allSettled; keep sequencing only when data-dependent |
| 🟡 | src/components/governance/ontology/OntologyNewClassPanel/OntologyNewClassPanel.tsx:479:19 |
openmetadata-imports/no-api-calls-in-iteration |
Avoid issuing one API request per item. Fetch at the data owner, use a bulk endpoint, or use useQueries with an intentional concurrency policy. |
Fix locally (fast - only checks files changed in this branch):
make ui-checkstyle-changed…write, and Enter adds a picked mapping
…write, and Enter adds a picked mapping (F6)
…dio/v7-parity-gaps # Conflicts: # openmetadata-ui/src/main/resources/ui/playwright/e2e/Features/OntologyReview.spec.ts
Code Review ✅ Approved 3 closed / 3 findings🟡 Medium risk · Reviewable column suggestions now save ontology bindings per table; an incorrect selection could misrepresent table data in the ontology. Adds per-column property suggestions when binding a table, draws bound columns as selectable canvas nodes, and lets mappings be picked by label in the concept drawer. Resolved the multi-table save that stopped after the first table while reporting success, Enter not adding a label-picked mapping, and the untranslated partial-save message in 20 non-English locales. No issues found. ✅ 3 closed✅ Bug: Multi-table save stops after first table yet reports success
✅ Bug: Enter does not add a mapping that was picked by its label
✅ Quality: New partial-save message left in English in all 20 non-English locales
VerificationRules No rules evaluated Functional validation Not enabledAuto-approval Not enabledFor more verification details, comment OptionsDisplay: compact → Showing compact verification results. Comment with these commands to change the behavior for this request:
Was this helpful? React with 👍 / 👎 | Powered by Gitar — free for open source |
Describe your changes:
No linked issue: this follows up #36868, and the maintainer chose not to open one.
After #36868 merged, a read-only audit checked each item of the v7 completion plan against the code. 133 of 139 were built as planned and 3 were changed on purpose. Four fell short, and two time limits had never been measured. This PR closes the four gaps and fixes what review of those changes found.
Type of change:
High-level design:
OntologyColumnMappingStepis the binding step.suggestPropertyForColumnshares its scoring withsuggestColumnForProperty. A save writes one revision-checkedreplaceAssetper table, built from the table's existing bindings. The prototype has the same step behindif (false)and instead binds each picked column to its guess with no review. This PR keeps the reviewable step, so nothing is bound without being seen. ADR:2026-11-05-binding-a-tables-columns-shows-each-suggestion-and-keeps-unseen-bindings records both rules and the 5-node cap.utils/dataColumnLayout.tslays out the column nodes, andOntologyDataColumnPanelshows a selected column.utils/dataPanelView.tscomputes the pan that keeps a selected table and its columns left of an open panel. The canvas has no native scroll container, so it pans instead of reserving space.useMappingTargetOptionsgives the drawer and the edit form one option source.OntologyIriInputgainsonSubmit(Enter on a pasted IRI) andisLoading(a loading row).Tests:
Use cases covered
Unit tests
OntologyColumnMappingStep.test.tsx(12),OntologyBindingSuggestion.utils.test.ts,OntologyStudioModel.utils.test.ts,dataColumnLayout.test.ts(6),dataPanelView.test.ts(4),OntologyDataGraph.test.tsx,OntologyNativeDataMode.test.tsx,OntologyNewClassPanel.test.tsx,OntologyExplorerPage.test.tsx,OntologyConceptEditor.test.tsx.Backend integration tests
Playwright (UI) tests
OntologyNativeDataMode.spec.ts: binding step (4 cases), 15 of 15.OntologyNativeDataColumns.spec.ts(new): column nodes, the cap, and the 1280 cases in both modes. WithOntologyNativeDataMode.spec.ts, 22 of 22.OntologyConceptDrawer.spec.ts: mapping by label, pasted IRI, Enter, tabbing into the mapping field, and the error shown only on commit. 28 of 28.OntologyReview.spec.ts27 of 27, andOntologyStudio.spec.ts8 of 8.Measurements
RdfFirstIndexRunIT(rdf lane) queued the first RDF index run and saw it complete about 13 s later. The plan's limit is one minute. The database held seed data only.Manual testing performed
None beyond the runs above.
UI screen recording:
Not attached yet.
Checklist:
Fixes <issue-number>: <short explanation>Fixes #<issue-number>above.REVIEW.md.