Orchestrata Ultimate / RTM / 105-ontology-domain-model

RTM: 105-ontology-domain-model

Requirement to symbol to test rows for 105-ontology-domain-model: Ontology-Driven Domain Model Generation.

At a glance

Item Value
Requirement IDs 50
Traced from src/ 28 (56.0%)
Untraced 22
Cited from tests/ 0 (0.0%)
Traced in src/ but not cited from tests/ 28

Reading this matrix

This matrix lists each of the 50 requirement IDs of spec 105-ontology-domain-model with the src/ symbols that cite it and the tests that cite it. 28 of them (56.0%) have at least one citing symbol and 22 have none.

0 requirements are also cited from tests/, and 28 are traced in code but never named by a test. A test citation is a @traces on a test function; it shows intent to cover, not that the test runs or reaches the symbol.

Rows showing none in the symbols column are the gaps to close first. The densest untraced groups are REQ-105-* (22).

Requirement to symbols to tests

Requirement Symbols in src/ Tests citing it
REQ-105-001 owl:Class / rdfs:Class → an Entity in the IR. orchestrata_ultimate/domaingen/reader _build_entities L111
orchestrata_ultimate/domaingen/reader parse_ontology L174
none
REQ-105-012 Accept the ontology as a .ttl file path or raw Turtle text. orchestrata_ultimate/domaingen/reader _parse_graph L92
orchestrata_ultimate/domaingen/reader parse_ontology L174
none
REQ-105-013 Parse via rdflib (Graph().parse, Turtle); RDF-star input tolerated. orchestrata_ultimate/domaingen/reader _parse_graph L92
orchestrata_ultimate/domaingen/reader parse_ontology L174
none
REQ-105-014 owl:DatatypeProperty with rdfs:domain D → a Field on entity D. orchestrata_ultimate/domaingen/reader _attach_datatype_properties L134 none
REQ-105-015 owl:ObjectProperty with rdfs:domain D, rdfs:range R → a Relationship on D... orchestrata_ultimate/domaingen/reader _attach_object_properties L150
orchestrata_ultimate/domaingen/reader parse_ontology L174
none
REQ-105-016 rdfs:subClassOf → Entity.parent (single; multiple parents → first + warning). orchestrata_ultimate/domaingen/reader _build_entities L111
orchestrata_ultimate/domaingen/reader parse_ontology L174
none
REQ-105-002 Cardinality — owl:FunctionalProperty / owl:maxCardinality 1 → many=False;... none none
REQ-105-017 owl:minCardinality >= 1 (or owl:someValuesFrom) → Field/Relationship.required=True. orchestrata_ultimate/domaingen/reader _apply_restrictions L76
orchestrata_ultimate/domaingen/reader _restriction_required_prop L53
orchestrata_ultimate/domaingen/reader parse_ontology L174
none
REQ-105-018 xsd datatype → Python type map (string→str, integer/int→int,... orchestrata_ultimate/domaingen/reader _attach_datatype_properties L134 none
REQ-105-019 rdfs:label → human name (fallback: IRI local name); rdfs:comment → docstring. orchestrata_ultimate/domaingen/reader _build_entities L111 none
REQ-105-020 IRI local-name extraction (after # or final /); preserve full iri on the IR node. orchestrata_ultimate/domaingen/reader _local L34 none
REQ-105-021 owl:inverseOf → Relationship.inverse. orchestrata_ultimate/domaingen/reader parse_ontology L174 none
REQ-105-022 Entities group into Modules (bounded contexts); default = one module named after the... none none
REQ-105-023 The ontology base IRI / prefix is captured on DomainModel.namespace. orchestrata_ultimate/domaingen/reader _namespace_of L42
orchestrata_ultimate/domaingen/reader parse_ontology L174
none
REQ-105-024 Parse failure raises OntologyParseError(BaseError) with file + cause (ERR-105-001). orchestrata_ultimate/domaingen/reader OntologyParseError L29
orchestrata_ultimate/domaingen/reader _parse_graph L92
none
REQ-105-025 Object property with no rdfs:range is skipped with a warning (ERR-105-002), not a crash. orchestrata_ultimate/domaingen/reader _attach_object_properties L150
orchestrata_ultimate/domaingen/reader parse_ontology L174
none
REQ-105-003 Render a DomainModel to valid Turtle (classes, datatype/object properties with... orchestrata_ultimate/domaingen/ttl _esc L28
orchestrata_ultimate/domaingen/ttl _render_class L33
orchestrata_ultimate/domaingen/ttl _render_datatype_properties L56
+2 more
none
REQ-105-004 parse_ontology(render_ontology(ir)) equals ir structurally (entities, fields,... orchestrata_ultimate/domaingen/reader parse_ontology L174
orchestrata_ultimate/domaingen/ttl render_ontology L96
none
REQ-105-026 TTL rendering is deterministic — sorted entities/properties, stable prefixes, no... orchestrata_ultimate/domaingen/ttl _render_class L33
orchestrata_ultimate/domaingen/ttl _render_datatype_properties L56
orchestrata_ultimate/domaingen/ttl _render_object_properties L74
+1 more
none
REQ-105-011 Adding an Entity and/or Relationship to the IR regenerates both the ontology... orchestrata_ultimate/domaingen/ttl render_ontology L96 none
REQ-105-027 Round-trip preserves namespace, labels, comments, and cardinality. none none
REQ-105-008 The generated repository emits only INSERT SPARQL; no UPDATE/DELETE is ever... orchestrata_ultimate/domaingen/generator generate_code L79 none
REQ-105-028 Each node attribute is an RDF-star assertion << :e :attr v >> annotated with... none none
REQ-105-029 Relationship (edge) triples << :a :rel :b >> are annotated identically — temporality... none none
REQ-105-030 Annotations are append-only; no existing triple/annotation is mutated in place. none none
REQ-105-031 Every assertion carries prov:txFrom (transaction time, when recorded, UTC... none none
REQ-105-032 Every assertion carries :validFrom and :validTo (valid time, when true in the domain). none none
REQ-105-033 Open intervals use a sentinel :validTo "9999-12-31T00:00:00Z" (or unbound), never... none none
REQ-105-009 Changing a value/edge inserts a new annotated assertion and a tombstone that... none none
REQ-105-034 A tombstone is itself an inserted assertion; the original assertion remains untouched... none none
REQ-105-035 "Logical delete" = insert a tombstone closing :validTo; the triple is never... none none
REQ-105-010 as_of(T) returns node state at instant T via SPARQL-star: txFrom <= T ∧... none none
REQ-105-036 as_of(T) works for relationships (edge history), not just node attributes. none none
REQ-105-037 "Current state" view = latest txFrom, not tombstoned, validTo in the future. none none
REQ-105-038 A separate transaction-time-only ("as-recorded") and valid-time-only query mode is... none none
REQ-105-039 Generated SPARQL is parameterized/escaped; ontology IRIs are validated before... none none
REQ-105-040 No DELETE/DROP/CLEAR is ever generated; a generation-time check fails the build... orchestrata_ultimate/domaingen/generator CodeGenError L42
orchestrata_ultimate/domaingen/generator generate_code L79
none
REQ-105-041 A named-graph-per-version persistence mode is documented as an alternative to RDF-star... none none
REQ-105-042 Stardog connection failure raises RepositoryError/StardogConnectionError (both... orchestrata_ultimate/domaingen/stardog StardogConnection L26
orchestrata_ultimate/domaingen/stardog StardogConnectionError L21
orchestrata_ultimate/domaingen/stardog _client L51
+2 more
none
REQ-105-049 generate_shacl emits a sh:NodeShape per entity (sh:targetClass); fields →... orchestrata_ultimate/domaingen/constraints _property L20
orchestrata_ultimate/domaingen/constraints generate_shacl L25
none
REQ-105-050 SHACL is deterministic, valid Turtle, emitted as constraints.ttl by generate_code;... orchestrata_ultimate/domaingen/constraints generate_shacl L25 none
REQ-105-005 Per module, generate domain/<module>/{entities.py, repository.py, __init__.py}... orchestrata_ultimate/domaingen/generator generate_code L79 none
REQ-105-043 Layout is screaming — top-level packages are named for the domain/bounded context,... orchestrata_ultimate/domaingen/generator generate_code L79 none
REQ-105-044 Modular monolith — a module imports only its own package + shared core;... none none
REQ-105-045 Entity class is a dataclass with typed fields; parent reflected via inheritance;... none none
REQ-105-007 Every generated module uses core.logging.get_logger(__name__). orchestrata_ultimate/core/logging get_logger L165 none
REQ-105-046 Domain errors inherit core.base.error.BaseError; class names end in Error. none none
REQ-105-047 Generated code has no print and no bare except:. none none
REQ-105-006 Codegen is deterministic/idempotent — re-running on the same IR yields... orchestrata_ultimate/domaingen/generator _env L47
orchestrata_ultimate/domaingen/generator _topo_sort L58
orchestrata_ultimate/domaingen/generator generate_code L79
+1 more
none
REQ-105-048 All TTL/code writes are confined to the target root; path traversal is rejected... orchestrata_ultimate/domaingen/generator CodeGenError L42
orchestrata_ultimate/domaingen/generator _safe L124
none