Skip to content

Releases: ralforion/orionbelt-ontology-builder

v1.4.0

24 Jun 10:28
6c20b8e

Choose a tag to compare

Features

  • Autosave to your browser, with automatic restore (#19): the working ontology is now mirrored into the browser's localStorage on 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> vs confirm_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-storage dependency 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

10 May 21:59
a51a4a6

Choose a tag to compare

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 to myont: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:type edge points to the correct class: an individual typed as foaf:Organization is 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 exposes class_uris alongside the local-name classes list.
  • OntologyManager.search() now includes uri in each result.
  • 234 tests pass (+5 cross-namespace regressions).

v1.3.1

10 May 12:17
f9892df

Choose a tag to compare

What's New

  • PyPI package now ships all bundled data: previous v1.x wheels included only the Python modules and broke for pip install users (samples, vis-network bundle, logos, favicon were missing). v1.3.1 ships a proper orionbelt_ontology_builder Python package with all data files included, so pip install orionbelt-ontology-builder produces 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-level app.py, ontology_manager.py, templates.py are kept as backward-compatible re-export shims so streamlit run app.py and 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

10 May 11:47
33bb720

Choose a tag to compare

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_*_relations now 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

03 May 22:35
c075543

Choose a tag to compare

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

24 Apr 16:11
0d0a112

Choose a tag to compare

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_control for 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 .ttl files excluded by .gitignore on Streamlit Cloud deployment
  • Replace bare except: with except Exception: in ontology_manager
  • Remove unused imports, dead code, and fix lint issues in tests

v1.1.3

16 Apr 16:04
11f1012

Choose a tag to compare

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

12 Apr 09:35

Choose a tag to compare

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

07 Apr 21:31
9c2482d

Choose a tag to compare

Fixes

  • Dead View/Edit buttons: Replaced st.button() return-value checks with on_click callbacks 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

02 Apr 07:25
5231c68

Choose a tag to compare

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