Linked.Archi Converters¶
The converters read a source modelling notation and produce an RDF dataset aligned to the https://meta.linked.archi/ ontology namespaces. Dataset-aware formats preserve named graphs; triple-only formats flatten them. The output is consumable by SPARQL engines and RDF tooling without parsing the source notation.
Each converter is a self-contained command-line tool. They are the part of the toolchain available for download today.
Available Converters¶
| Converter | Input | Ontology alignment |
|---|---|---|
| ArchiMate | ArchiMate Exchange XML | am: (https://meta.linked.archi/archimate3/onto#) |
| BPMN | BPMN 2.0 XML | bpmn: (https://meta.linked.archi/bpmn/onto#) |
| PlantUML | PlantUML diagrams | UML 2.5.1, uml: (https://meta.linked.archi/uml/onto#) |
| Structurizr / C4 | Structurizr workspace JSON | c4: (https://meta.linked.archi/c4/onto#) |
| Backstage | Backstage catalogue YAML (catalog-info.yaml) |
bs: (https://meta.linked.archi/backstage/onto#) |
| LeanIX | SAP LeanIX fact sheet export, with an optional diagram export | lmm: (https://meta.linked.archi/leanix/onto#) |
A Backstage catalogue and a LeanIX workspace are collected rather than authored in one file. backstage-pull and leanix-pull fetch converter inputs but do not themselves produce RDF. Source identity is recorded per collected file or export. Backstage currently partitions its semantic output by input file; the other five converters write one semantic graph per model.
Full per-converter documentation — commands, CLI options, type mappings, input coverage, and worked examples — is on the converters site: Linked.Archi Converters documentation.
Downloads¶
Prebuilt artifacts for the latest main build are published as static files — no login or token required. See the downloads page for the full list and instructions.
Individual converter JARs¶
Self-contained fat JARs. Requires JRE 25+ on the target machine.
| Converter | JAR |
|---|---|
| ArchiMate | archimate2linkedarchi.jar |
| BPMN | bpmn2linkedarchi.jar |
| PlantUML | plantuml2linkedarchi.jar |
| Structurizr / C4 | structurizr2linkedarchi.jar |
| Backstage | backstage2linkedarchi.jar |
| LeanIX | leanix2linkedarchi.jar |
Distribution bundle¶
The full distribution contains every converter (fat JAR plus wrapper script), the two input collectors, example configuration, and the user docs. The archive has a stable download name; its extracted directory carries the actual version.
curl -fLO https://linked-archi.gitlab.io/linked-archi-tools/converters/converters/downloads/linked-archi-converters-latest.tar
bundle_dir="$(tar -tf linked-archi-converters-latest.tar | sed -n '1s#/.*##p')"
tar -xf linked-archi-converters-latest.tar
export PATH="$PWD/$bundle_dir/bin:$PATH"
bpmn2linkedarchi --version
Docker¶
Every converter is bundled in a single container image, published to the GitLab Container Registry:
docker pull registry.gitlab.com/linked-archi/linked-archi-tools/converters/converters:latest
docker run --rm -v "$PWD:/work" -w /work \
registry.gitlab.com/linked-archi/linked-archi-tools/converters/converters:latest \
bpmn2linkedarchi convert process.bpmn --base-iri https://example.org/la/ -o out.trig
Tags: :latest (most recent default-branch build) and :<commit-sha> for a specific commit.
For versioned, immutable artifacts suited to CI pipelines and reproducible builds, pull from the project's GitLab Package Registry — see the downloads page and the CI usage guide.
Quick Start from Source¶
Building requires JDK 25. Run Gradle from the converter project checkout, not from linked-archi-meta:
cd tools/converters/linked-archi-converters
./gradlew build
# Convert a BPMN process to TriG
java -jar converter-bpmn/build/libs/bpmn2linkedarchi.jar convert \
process.bpmn --base-iri https://example.org/la/ \
--model-id demo -o out.trig
# Convert ArchiMate Exchange XML to TriG
java -jar converter-archimate/build/libs/archimate2linkedarchi.jar convert \
--input model.xml --output out.trig \
--base https://example.org/la/ --model-id demo
The output extension selects the format when neither an inline format nor --format is supplied.
Output Conventions¶
The converters share a common RDF contract, but they emit only the graphs and view detail supported by their inputs:
- Named graphs — lifted facts go in
…/graph/semantic; Backstage currently uses…/graph/semantic/{slug}per input. Curated model structure goes in…/graph/model, diagram geometry in…/graph/viewswhen geometry exists, and lineage in…/graph/provenance. Backstage emits no views; a LeanIX inventory has views only when--diagrams-exportis supplied; Structurizr and LeanIX views have no authored geometry. A profile can therefore be a no-op when its target content does not exist. See DD-15 and the converters' Output Serialization page. - Model membership is asserted — every
arch:ModelConceptcarriesarch:inModelto its model, in the same graph as the concept. A flattened artifact therefore remains reassemblable even though source graph boundaries are gone. - Core typing and endpoints — notation elements also carry
arch:Element; relationship resources carryarch:QualifiedRelationship,arch:source, andarch:target. Direct predicate shortcuts are optional and enabled with--emit-direct-rel-triples. - SKOS metadata — converters can emit
skos:prefLabelfor labels andskos:notationfor source identifiers. The--emit-skos-labelsand--emit-skos-notationdefaults differ where the source notation requires different treatment, so consult the relevant converter page rather than assuming one default. - Output formats —
TRIG,TURTLE,JSONLD,RDFXML,NTRIPLES, orNQUADS. TriG, JSON-LD, and N-Quads preserve named graphs; Turtle, RDF/XML, and N-Triples merge them.--outputis repeatable and takespath[:FORMAT[:PROFILE]], so one conversion run can publish several artifacts with one provenance activity. - View profiles — each output can select
full,no-geometry,no-views, orno-diagrams. Profiles filter available content rather than causing a converter to invent views or geometry absent from its input. - Type-mapping overrides —
--type-mappingaccepts a shared YAML superset schema.elements:,relationships:,predicates:, andqualifiedPredicates:provide common mappings; some sections are converter-specific.object-properties:andviews:are ArchiMate-only,vocab:andmetadata-predicates:are BPMN-only, andspec-relations:,spec-literals:, andmetadata-literals:are Backstage-only. See the canonical Type Mapping Configuration page.
Because every notation is aligned to the Linked.Archi foundational ontology, the landscape can be queried through common core types while preserving each source language's own semantics.
Provenance¶
The provenance graph records the conversion run as a prov:Activity, the software agent that performed it, source inputs as prov:Entity resources, and emitted graphs as prov:Bundle resources. A source entity always records its repository-relative path or filename with schema:name. Where known, dcterms:isPartOf identifies the repository, dcterms:identifier the revision, schema:sha256 the content digest, and prov:alternateOf a browsable commit-pinned file URL. dcterms:source remains a property of output model or view resources; it is not the source entity's path predicate.
A source file, commit, run, agent, person, or derivation lives under {base}provenance/{kind}/…, outside any model, so one file at one revision is one node across every model and run. Statements about those nodes are still written into each model's provenance graph, keeping that graph a complete description of the model's lineage. provenance is a reserved top-level segment of the base IRI and cannot be used as a notation slug — see DD-29.
Two constraints when querying it:
?s a prov:Entityalso matches an upstream document that a source file identifies withprov:alternateOf. Add; schema:name ?path— and, when repository identity matters,; dcterms:isPartOf ?repo— to isolate source files.- When provenance is enabled, bind only the conversion derivations, the source's
schema:name, and the agent'sschema:nameunconditionally. Run times, image identity, repository, revision, digest, and blob URL depend on invocation and source metadata and should beOPTIONAL.