Skip to content

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/views when geometry exists, and lineage in …/graph/provenance. Backstage emits no views; a LeanIX inventory has views only when --diagrams-export is 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:ModelConcept carries arch:inModel to 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 carry arch:QualifiedRelationship, arch:source, and arch:target. Direct predicate shortcuts are optional and enabled with --emit-direct-rel-triples.
  • SKOS metadata — converters can emit skos:prefLabel for labels and skos:notation for source identifiers. The --emit-skos-labels and --emit-skos-notation defaults differ where the source notation requires different treatment, so consult the relevant converter page rather than assuming one default.
  • Output formatsTRIG, TURTLE, JSONLD, RDFXML, NTRIPLES, or NQUADS. TriG, JSON-LD, and N-Quads preserve named graphs; Turtle, RDF/XML, and N-Triples merge them. --output is repeatable and takes path[: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, or no-diagrams. Profiles filter available content rather than causing a converter to invent views or geometry absent from its input.
  • Type-mapping overrides--type-mapping accepts a shared YAML superset schema. elements:, relationships:, predicates:, and qualifiedPredicates: provide common mappings; some sections are converter-specific. object-properties: and views: are ArchiMate-only, vocab: and metadata-predicates: are BPMN-only, and spec-relations:, spec-literals:, and metadata-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:Entity also matches an upstream document that a source file identifies with prov: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's schema:name unconditionally. Run times, image identity, repository, revision, digest, and blob URL depend on invocation and source metadata and should be OPTIONAL.