Releases: ralforion/orionbelt-ontology-builder
Releases · ralforion/orionbelt-ontology-builder
v1.4.0
Features
- Autosave to your browser, with automatic restore (#19): the working ontology is now mirrored into the browser's
localStorageon every change and restored automatically when the page reloads — a refresh no longer wipes unsaved work. A sidebar "Autosave to this browser" toggle turns it off, and "Discard saved session" clears the saved copy and resets the workspace. Note: this is per-browser/per-device and not a replacement for Export.
Fixes
- SKOS concepts can be deleted again (#21): the concept Delete button set a session-state key that didn't match the one the confirmation handler checked (
confirm_delete_<id>vsconfirm_delete_c_<id>), so the confirm dialog never appeared and concepts could not be deleted. The keys now match. All other delete buttons (classes, properties, individuals, concept schemes) were audited and were already correct.
Internals
- New
streamlit-local-storagedependency for the autosave component. - New
persist_autosave()/maybe_restore_autosave()helpers; restore is hash-guarded, size-capped (~4 MB), tolerant of the localStorage component's two-pass handshake and its occasional value wrapping, and never clobbers an already-populated session. - New
tests/test_autosave.py; 240 tests pass.
v1.3.2
Fixes
- Property edit (Object + Data) Domain/Range no longer collapses to base namespace: editing an object/data property whose domain or range pointed at an imported class (e.g.
foaf:Organization) and clicking Save would silently rewrite the reference tomyont:Organization. Dropdowns now use URI-keyed values. - Add Class / Property / Individual Relation now operates on URIs: relation forms used local-name dropdowns, so adding a relation between two duplicate-named imported resources could land the triple on a fresh base-namespace resource instead of the one the user picked. Forms now key by URI.
- Sidebar global search navigates to the exact resource: previously search results used local-name session keys that no longer matched the v1.3.0 URI-keyed view panes.
search()now exposes each result's URI and the sidebar uses URI-hash keys. - Visualization
rdf:typeedge points to the correct class: an individual typed asfoaf:Organizationis now rendered against the foaf node, not whichever Organization class happened to be matched first by name.
Internals
- New
build_uri_options(items, include_none)helper for URI-keyed dropdowns over any entity list (classes / properties / individuals). OntologyManager.get_individuals()now exposesclass_urisalongside the local-nameclasseslist.OntologyManager.search()now includesuriin each result.- 234 tests pass (+5 cross-namespace regressions).
v1.3.1
What's New
- PyPI package now ships all bundled data: previous v1.x wheels included only the Python modules and broke for
pip installusers (samples, vis-network bundle, logos, favicon were missing). v1.3.1 ships a properorionbelt_ontology_builderPython package with all data files included, sopip install orionbelt-ontology-builderproduces a working installation.
Fixes
- Restore the compact UI layout (reduced top padding, custom file uploader styling) that regressed during the v1.3.1 package restructure.
Internals
- Source modules and data directories moved into
orionbelt_ontology_builder/. Top-levelapp.py,ontology_manager.py,templates.pyare kept as backward-compatible re-export shims sostreamlit run app.pyand existing tests keep working unchanged. - Page config and custom CSS now applied inside
main()so they re-emit on every Streamlit rerun. - Wheel verified to contain 37 files (modules + samples + lib + assets + favicon); clean-venv install + sample loading verified.
Notes
This is a packaging-only release on top of v1.3.0 — no behavior changes for the hosted app.
v1.3.0
What's New
- gUFO upper ontology: NEMO/UFES gUFO v1.0.0 (Lightweight Unified Foundational Ontology) added as a second selectable upper ontology alongside gist. Suitable for OntoUML-style conceptual modeling with kinds, roles, phases, events, situations, qualities, and relators.
- Reference Ontologies tab: New Import / Export tab for importing widely-used domain vocabularies — currently PROV-O, FOAF, and GoodRelations (all bundled). The loader supports both bundled vocabularies and on-demand HTTPS downloads with SHA256 pinning and on-disk caching, ready for additional remote ontologies (urllib stdlib only — no new dependencies).
- Cross-namespace duplicate handling: When a reference vocabulary introduces a class, property, or individual whose local name already exists in your ontology (e.g.
gist:Organization+foaf:Organization), the UI now shows the namespace prefix to disambiguate (Organization (foaf)/Organization (gist)) instead of crashing with duplicate-key errors. Operations like delete and rename target the specific URI without affecting the other.
Fixes
- Visualization cache now invalidates on any ontology change — load, replace, undo, redo, or any edit — instead of relying on a brittle triple-count fingerprint that missed same-size loads.
- Visualization iframe re-mounts on every rebuild so the displayed graph always reflects the current data.
- Visualization 'Selected classes' filter now resets to all-selected on any ontology mutation, so a stale filter no longer hides newly loaded content.
- Graph viewer node identity is URI-based, fixing the case where two classes with the same local name from different namespaces were collapsed into a single visible node.
- Selectors throughout the app sort case-insensitively.
Internals
OntologyManager.get_classes/get_object_properties/get_data_properties/get_*_relationsnow expose URI fields (parent_uris,child_uris,domain_uri,range_uri,subject_uri,object_uri) that downstream callers use for disambiguation.- Test count: 230 (+15 new regression tests for cross-namespace duplicates, the Reference Ontologies registry, and gUFO integration).
v1.2.1
What's New
- Graph PNG Download: Download button in the graph viewer to export the current visualization as a PNG image
- Local vis-network Bundle: vis-network.js loaded locally instead of from CDN for reliable offline use
Fixes
- Fix startup log message repeating on every Streamlit rerun
- Add favicon and startup version logging
v1.2.0
What's New
- Upper Ontologies: Load gist (Semantic Arts) upper ontology with selectable modules as a foundation for your domain ontology
- Segmented Controls: Replaced all tab navigation with
st.segmented_controlfor stable tab state and consistent branded UI - Theme: ORIONBELT logo blue (
#0D2B7A) as primary color across all UI elements - View/Edit buttons: Now idempotent — clicking View or Edit when already open stays open instead of toggling closed
Fixes
- Fix tab jumping to first tab on first button click (Import/Export page)
- Fix class dropdown closing when navigating from graph visualization and clicking View
- Fix gist
.ttlfiles excluded by.gitignoreon Streamlit Cloud deployment - Replace bare
except:withexcept Exception:in ontology_manager - Remove unused imports, dead code, and fix lint issues in tests
v1.1.3
Fixes
- Graph visualization class filter: Fixed a bug where loading a new ontology would lose all class nodes in the graph visualization. The persisted class filter now validates against the current ontology's classes and resets when stale.
- Dead code cleanup: Removed unused functions, methods, and fixed lint issues.
🤖 Generated with Claude Code
v1.1.2
What's Changed
- Remove datatype range nodes from graph visualization — reduces clutter by eliminating separate datatype box nodes and their edges from the vis-network graph
- Suppress rdflib ConjunctiveGraph deprecation warning in tests
- Remove dead code: unused imports, variables, and assignments
Full Changelog: https://github.com/ralfbecher/orionbelt-ontology-builder/compare/v1.1.1...v1.1.2
v1.1.1
Fixes
- Dead View/Edit buttons: Replaced
st.button()return-value checks withon_clickcallbacks across all entity pages, fixing unreliable button clicks after repeated navigation - Duplicate key errors: Use URI-based hash keys for individual widgets to prevent crashes when multiple individuals share the same name
- Overlapping graph edges: Spread parallel edges with alternating curve directions so multiple edges between the same nodes are visually separated
v1.1.0
What's New
Graph Visualization Improvements
- Dynamic legend — only shows node/edge types actually present in the graph
- Persistent settings — all viz checkboxes, sliders, and class filters survive page navigation
- Faster rendering — replaced pyvis with lightweight graph builder, targeted triple queries instead of full graph scan
- Optimized physics — batch stabilization scaled by node count with brief settle animation
- Render button — forces fresh layout to fix overlapping nodes
- Reorganized controls — Ind. Edges and Triples moved to row 1, Maximize and Highlight Issues to row 2
SKOS UX Enhancements
- Graph triples view for visible nodes
- Individual edges toggle
Bug Fixes
- Fixed crash when filtering out classes referenced by individual edges
- Ind. Edges default changed to off
Full Changelog: https://github.com/ralfbecher/orionbelt-ontology-builder/compare/v1.0.2...v1.1.0