Skip to main content

OntoBDC

OntoBDC is an offline-first semantic runtime for portable datasets and containers. Its annotation subsystem lets any host create, validate, persist, render, query, and navigate typed knowledge attached to files, representations, WorkStreams, and dimensions without requiring a central platform.

Typed annotations

OntoBDC persists five concrete categories. The abstract enrichment class is never written as if it were a note.

Category Purpose Geometry
Note Contextual explanation one or many points
Issue Problem or question with lifecycle point, bounding box, or none
Classification Semantic classification by URI bounding box or none outside a representation
Location Representation, geospatial, relative, or positional location depends on location kind
Record Evidence such as a photo, document, measurement, or invoice point, bounding box, or none

Each annotation separates:

  • the annotated target (oa:hasTarget);
  • the organizing Subjects (dcterms:subject);
  • creator and modifier;
  • assignee, resolver, and recorder roles;
  • logical source and visual representation;
  • normalized selector geometry.

Illustration placeholder — semantic anatomy: show one annotation connected independently to its target, two Subjects, creator, assignee, WorkStream dimension, logical source, and representation source.

Editor

The generic editor is category-driven. The host provides labels, theme, actor context, and optional entity resolvers; OntoBDC owns forms, validation, geometry, persistence, and rendering.

The category is selected before category-specific fields and becomes immutable after the first save. Point, multiple-point, and bounding-box tools persist normalized coordinates so the same marker can be restored at the same position.

Illustration placeholder — typed editor: capture the category chooser, an Issue form, geometry toolbar, bounding box, field-level validation, and save action.

Workspace

The annotation workspace lists spatial and non-spatial annotations and exposes a stable API:

workspace.setAnnotations(annotations);
workspace.setFilters({ category, subject, person, workStream });
workspace.selectAnnotation(annotationId);
workspace.clearSelection();
workspace.openAnnotation(annotation);
workspace.refresh();

Filters can combine category, controlled kinds/statuses, people and roles, Subject, source, WorkStream, dimension, date, and geometry presence. Counters and legend are derived from the same data and visual contracts used by the renderer.

Illustration placeholder — workspace: show combined category/status/Subject filters, counters, a selected non-spatial Record, details, and the corresponding highlighted marker.

Subject Page

A Subject is an optional reusable skos:Concept; it is not the annotation target. The Subject Page provides three synchronized views:

  • Space: groups by representation first and only compares normalized geometry inside the same representation;
  • Timeline: distinguishes creation, modification, recording, status, and resolution events;
  • People: groups ordinary Person entities by author, modifier, assignee, resolver, and recorder roles.

Annotations without a Subject remain available under Unassigned subjects.

Illustration placeholder — Subject Page: three captures of the same Subject in Space, Timeline, and People, including a group without spatial position and a person exercising two roles.

WorkStream integration

WorkStream is an OntoBDC concept. A host can relate annotations to a WorkStream, one 5W2H dimension, one logical resource, and one representation. Selecting an item in the workspace can reopen its representation and marker; selecting a marker selects the same workspace item.

Illustration placeholder — WorkStream flow: show WorkStream → dimension → resource → representation → annotation, with Subjects and people branching from the annotation.

Offline persistence

The runtime is designed for local containers and file:// use:

  1. load the strict dataset;
  2. calculate its revision;
  3. validate the complete next serialization;
  4. reject a save if the source changed externally;
  5. write through the File System Access API;
  6. reopen and verify the written content.

Invalid datasets are reported rather than partially ignored. There is no schema-1 reader, legacy fallback, automatic migration, or automatic RDF merge.

Illustration placeholder — persistence flow: diagram load/revision/edit/validate/compare/write/verify, with the conflict and invalid-dataset stop paths highlighted.

Host integration

Load the packaged annotation modules in dependency order and create the runtime with host-neutral context:

const runtime = OntoBDCAnnotations.createRuntime({
  actorContext: { actorUri: "urn:person:example", displayName: "Example" },
  normalizeContext,
  labels,
  visual: { contract: OntoBDCAnnotationVisualContract, theme }
});

The host may implement entityResolver.search(...) and entityResolver.resolve(...) for people, Subjects, or resources. OntoBDC does not require a database or authentication system.

Development validation

python -m pip install -e '.[dev]'
pytest
node --check src/ontobdc/view/plugin/asset/js/annotation/*.js

Browser coverage targets Edge/Chromium first because directory access depends on the File System Access API. A release candidate must also validate wheel/ZIP package data, an anonymous demo container, reopen-after-save, offline operation, keyboard navigation, and visual contrast.

Breaking change

The annotation contract is strict. Existing schema-1 data must be corrected manually. OntoBDC does not interpret EnrichmentAnnotation as a Note and provides no legacy property aliases.

Licensed under Apache 2.0.

Metadata

Release files for ontobdc 0.13.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ontobdc 0.13.0
File Size Uploaded
ontobdc-0.13.0.tar.gz 178.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ontobdc 0.13.0
File Interpreter ABI Platform
ontobdc-0.13.0-py3-none-any.whl Python 3 none any Details

Total release size: 459.9 kB

Release files / ontobdc-0.13.0.tar.gz

Download URL ontobdc-0.13.0.tar.gz
Size 178.9 kB
Tags Source
SHA-256 checksum
How to use checksums
d9361c30dc874d6cf9595aee8b018a26ba7e6b29d5da8ed03d96ce1ae19259a6
BLAKE2b-256 checksum
How to use checksums
60523214089e9d30f9bef2c6b0dbd758595dd5adb7d4013907fdbc9ec3f6366f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 5, 2026.

Transparency log

Release files / ontobdc-0.13.0-py3-none-any.whl

Download URL ontobdc-0.13.0-py3-none-any.whl
Size 281.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0503e7f595dceb9cde286556517a13d246306be53cb0b79bc12c2cca2ba3d035
BLAKE2b-256 checksum
How to use checksums
3ff2a65e8d7632c9a7c3d4cf7c89bba441a4593ec490a31124fd6246b9a5df5c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 5, 2026.

Transparency log

Release history Release notifications | RSS feed

0.22.0

2 release files

0.21.0

2 release files

0.20.3

2 release files

0.20.2

2 release files

0.20.1

2 release files

0.20.0

2 release files

0.19.0

2 release files

0.18.0

2 release files

0.17.0

2 release files

0.16.4

2 release files

0.16.3

2 release files

0.16.2

2 release files

0.16.1

2 release files

0.16.0

2 release files

0.15.0

2 release files

0.14.0

2 release files

This release

0.13.0 This release

2 release files

0.11.0

2 release files

0.10.0

2 release files

0.9.0

2 release files

0.8.1

2 release files

0.8.0

2 release files

0.7.0

2 release files

0.6.9

2 release files

0.6.8

2 release files

0.6.7

2 release files

0.6.6

2 release files

0.6.5

2 release files

0.6.4

2 release files

0.6.3

2 release files

0.6.2

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page