Component Interactions
Runtime collaboration
flowchart TB
subgraph CLI["CLI Layer (Picocli)"]
ConvertCmd["ConvertCommand\n(extends BaseConvertCommand)"]
ValidateCmd["ValidateCommand\n(extends BaseValidateCommand)"]
RenderCmd["RenderCommand\n(extends BaseRenderCommand:\nindex, IRIs, output, exit codes)\nBPMN + PlantUML only"]
end
subgraph Parsing["Parsing Layer"]
Parser["Parser\n(ExchangeParser / BpmnXmlToRdf / PlantUmlParser)"]
TypeMap["TypeMapping\n(loads YAML config)"]
end
subgraph Emission["Emission Layer"]
Emitter["LinkedArchiEmitter\n(extends BaseLinkedArchiEmitter)"]
Vocab["LinkedArchiVocab\n(pre-resolved IRIs)"]
Minting["IriMinting\n(notation + modelId → stable IRIs)"]
BaseEmitter["BaseLinkedArchiEmitter\n• emitStandardFolders()\n• emitFolderMember()\n• emitProvenance()"]
end
subgraph Output["Output Layer"]
RdfIo["RdfIo\n(writer factory + serialization)"]
Format["OutputFormat\n(TRIG / TURTLE / JSONLD / ...)"]
end
subgraph Verification["Verification Layer (tests)"]
Verifier["ConversionVerifier\n• checkRelationshipsHaveEndpoints()\n• checkViewNodesHaveView()\n• checkNoGeneratedIris()\n• countEntities()"]
end
subgraph SVG["SVG Rendering"]
SvgRend["Notation renderer\nBpmnSvgRenderer (builds SVG from BPMNDI)\nPumlSvgRenderer (PlantUML layout engine)"]
end
ConvertCmd -->|"loads"| TypeMap
ConvertCmd -->|"invokes"| Parser
ConvertCmd -->|"passes model to"| Emitter
ConvertCmd -->|"writes via"| RdfIo
ValidateCmd -->|"loads shapes + data"| RdfIo
RenderCmd -->|"delegates to"| SvgRend
Parser -->|"produces"| Emitter
Emitter -->|"inherits"| BaseEmitter
Emitter -->|"uses"| Vocab
Emitter -->|"uses"| Minting
Emitter -->|"reads overrides from"| TypeMap
BaseEmitter -->|"uses"| Vocab
BaseEmitter -->|"uses"| Minting
RdfIo -->|"resolves"| Format
Verifier -.->|"validates output of"| Emitter
Step-by-step execution
- ConvertCommand (CLI entry point) parses CLI args, loads
TypeMapping from YAML, creates the notation-specific Parser
- Parser reads the source file → produces an intermediate model (data classes)
- LinkedArchiEmitter receives the model + options and:
- Creates
IriMinting (parameterized by notation slug + model ID)
- Creates
LinkedArchiVocab (resolves arch:, archvis:, dct:, schema: IRIs once)
- Calls
BaseLinkedArchiEmitter.emitStandardFolders() for the folder hierarchy
- Emits elements/relationships using
TypeMapping for type resolution and IriMinting for IRI construction
- Calls
BaseLinkedArchiEmitter.emitFolderMember() for ordered membership
- Calls
BaseLinkedArchiEmitter.emitProvenance() for the provenance graph
- RdfIo takes the in-memory model +
OutputFormat and serializes to file
- ConversionVerifier (used in tests) validates the emitted model against the foundational ontology contract
Core components reference
| Component |
Role |
UriUtil |
IRI normalization (ensureTrailingSlash) and path joining |
IriMinting |
Mints stable IRIs: {base}{notation}/{modelId}/{segment}/{id} |
TypeMapping |
Loads YAML type-mapping files; unified superset of all sections |
OutputFormat |
Enum of supported RDF serialization formats with extension inference |
RdfIo |
Writes RDF models with explicit writer factory registration |
LinkedArchiVocab |
Pre-resolved IRI constants for arch:, archvis:, dct:, schema: |
BaseLinkedArchiEmitter |
Abstract base: folder emission, membership, provenance |
ConversionVerifier |
Validation checks for converter output |
DiagramsIndex |
Parses diagram-index.yaml for batch conversion |
BaseConvertCommand |
Picocli base with shared CLI flags |
BaseValidateCommand |
Picocli base for SHACL validation commands |