BPMN Deep Dive¶
1. What is BPMN¶
Business Process Model and Notation (BPMN) is the OMG standard for graphical representation of business processes. Version 2.0.2 (formal/2013-12-09) defines a rich metamodel with 130+ classes covering:
- Process orchestration — activities, events, gateways, sequence flows
- Collaboration — participants (pools), message flows between organisations
- Choreography — expected message exchange sequences between parties
- Conversation — logical groupings of message exchanges
- Data — data objects, stores, inputs/outputs, associations
- Diagram interchange — geometry, shapes, edges, labels, styles
The specification is available at omg.org/spec/BPMN/2.0.2.
2. BPMN vs ArchiMate — Different Density, Different Purpose¶
BPMN is execution-oriented. It was designed so that a process model can be directly executed by a BPMN engine (Camunda, jBPM, etc.). This means every detail matters: timer durations, conditional expressions, data mappings, correlation keys, multi-instance loop cardinalities.
ArchiMate is governance-oriented. A Business Process in ArchiMate is a single element with a name and maybe a description. It exists to show how processes relate to capabilities, applications, and technology — not to specify execution logic.
The density difference is dramatic. A single ArchiMate Business Process element might correspond to an entire BPMN model with 50+ elements (tasks, gateways, events, lanes, data objects, sequence flows, boundary events).
| Dimension | ArchiMate | BPMN |
|---|---|---|
| Purpose | Cross-layer governance | Process execution |
| Process granularity | 1 element per process | 10–100 elements per process |
| Relationships | Typed (Triggering, Flow, Access) | Sequence Flow, Message Flow, Data Association |
| Events | Not modeled | 13 event types × 3 positions (start/intermediate/end) |
| Data | DataObject (passive structure) | DataObject, DataInput, DataOutput, DataStore, DataState, ItemDefinition, I/O Specifications |
| Diagram interchange | Not in the standard | Full geometry model (BPMNDI/DI/DC) |
This density difference has direct implications for ontology design.
3. The Density Problem¶
A faithful 1:1 lift of every BPMN-XML element into RDF creates many triples whose semantic value at the enterprise architecture level is near zero:
- Pool/lane geometry (x, y, width, height)
- Sequence flow waypoints (arrays of coordinate pairs)
- Marker styles (isExpanded, isMarkerVisible, participantBandKind)
- I/O specifications (InputSet, OutputSet, DataInput, DataOutput bindings)
- Correlation keys and subscriptions
- Extension elements and attribute values
If the goal is rendering BPMN diagrams, RDF buys nothing over the native XML. The value of RDF materializes only when you intend to query, validate, or reason across BPMN and other models.
This is why Linked.Archi provides two BPMN profiles:
| Profile | Location | Classes | Properties | Use case |
|---|---|---|---|---|
| BPMN Full | modelingLanguages/bpmn/ |
144 | 199 | Spec fidelity, round-tripping, tooling, execution |
| BPMN Lite | modelingLanguages/bpmn-lite/ |
29 | 10 | EA reasoning, cross-model queries, thin lift |
The choice is a designer decision. Both are available as building blocks.
4. BPMN Full — Spec-Faithful Ontology¶
The full suite (modelingLanguages/bpmn/) is a 1:1 OWL mapping of the BPMN 2.0.2 XMI/CMOF, validated against the normative XSD artifacts. It preserves the compositional structure of the spec.
4.1 Example: Timer Start Event (Nobel Prize Process)¶
The BPMN 2.0.2 spec examples include a Nobel Prize nomination process that starts on a timer:
<!-- .reference/omg/bpmn202/2010-06-03/Nobel Prize/Nobel Prize Process.bpmn -->
<startEvent name="September Year n-1" id="_6-84">
<timerEventDefinition>
<timeDate/>
</timerEventDefinition>
</startEvent>
In the full ontology, this becomes:
@prefix bpmn: <https://meta.linked.archi/bpmn/onto#> .
@prefix ex: <https://example.org/nobel-prize/> .
ex:sept_start a bpmn:StartEvent ;
bpmn:name "September Year n-1" ;
bpmn:id "_6-84" ;
bpmn:eventDefinitions ex:sept_start_timer .
ex:sept_start_timer a bpmn:TimerEventDefinition ;
bpmn:timeDate [] .
The compositional pattern (event + event definition) supports events with multiple triggers without combinatorial subclass explosion.
4.2 Example: Collaboration with Message Flow¶
@prefix bpmn: <https://meta.linked.archi/bpmn/onto#> .
@prefix ex: <https://example.org/order-process/> .
ex:customer_pool a bpmn:Participant ;
bpmn:name "Customer" .
ex:supplier_pool a bpmn:Participant ;
bpmn:name "Supplier" .
ex:order_collab a bpmn:Collaboration ;
bpmn:name "Order Fulfillment" ;
bpmn:participants ex:customer_pool, ex:supplier_pool ;
bpmn:messageFlows ex:order_msg_flow .
ex:order_msg_flow a bpmn:MessageFlow ;
bpmn:name "Purchase Order" ;
bpmn:sourceRef ex:send_order_task ;
bpmn:targetRef ex:receive_order_task ;
bpmn:messageRef ex:purchase_order_msg .
ex:purchase_order_msg a bpmn:Message ;
bpmn:name "Purchase Order" .
4.3 SPARQL: Find all tasks in a process¶
PREFIX bpmn: <https://meta.linked.archi/bpmn/onto#>
SELECT ?process ?task ?taskName WHERE {
?process a bpmn:Process ;
bpmn:flowElements ?task .
?task a/rdfs:subClassOf* bpmn:Task ;
bpmn:name ?taskName .
}
5. BPMN Lite — EA-Level Thin Lift¶
The lite profile (modelingLanguages/bpmn-lite/) converts only the BPMN constructs that carry semantic value at the EA level. Layout and notation detail stays in the original .bpmn file, referenced by URI.
5.1 Same Example: Timer Start Event¶
@prefix bpmnl: <https://meta.linked.archi/bpmn-lite/onto#> .
@prefix arch: <https://meta.linked.archi/core#> .
@prefix ex: <https://example.org/nobel-prize/> .
ex:sept_start a bpmnl:StartEvent ;
arch:name "September Year n-1" ;
bpmnl:eventType "timer" ;
bpmnl:sourceRef <file:///models/nobel-prize.bpmn> .
Three triples instead of five. No separate EventDefinition instance. The eventType property captures the trigger type as a simple string. The sourceRef points back to the original BPMN file for full detail.
5.2 Same Example: Collaboration with Message Flow¶
@prefix bpmnl: <https://meta.linked.archi/bpmn-lite/onto#> .
@prefix arch: <https://meta.linked.archi/core#> .
@prefix ex: <https://example.org/order-process/> .
ex:customer a bpmnl:Participant ;
arch:name "Customer" .
ex:supplier a bpmnl:Participant ;
arch:name "Supplier" .
ex:order_msg a bpmnl:MessageFlow ;
arch:source ex:customer ;
arch:target ex:supplier ;
arch:name "Purchase Order" .
Flat, queryable, and directly joinable with ArchiMate or C4 elements in the same graph.
5.3 SHACL Validation¶
The lite profile includes SHACL shapes (linkedarchi-bpmn-lite-shacl.ttl) that enforce basic constraints:
# From modelingLanguages/bpmn-lite/linkedarchi-bpmn-lite-shacl.ttl
:StartEventShape a sh:NodeShape ;
sh:targetClass bpmnl:StartEvent ;
sh:property [
sh:path bpmnl:eventType ;
sh:in ( "none" "timer" "message" "signal" "conditional" ) ;
sh:message "A StartEvent eventType must be one of: none, timer, message, signal, conditional." ;
] ;
.
:SequenceFlowShape a sh:NodeShape ;
sh:targetClass bpmnl:SequenceFlow ;
sh:property [
sh:path arch:source ;
sh:minCount 1 ;
sh:maxCount 1 ;
sh:message "A SequenceFlow must have exactly one source." ;
] ;
sh:property [
sh:path arch:target ;
sh:minCount 1 ;
sh:maxCount 1 ;
sh:message "A SequenceFlow must have exactly one target." ;
] ;
.
5.4 SPARQL: Cross-model query (BPMN Lite + ArchiMate)¶
The real value of the lite profile — querying across notations in a single graph:
PREFIX bpmnl: <https://meta.linked.archi/bpmn-lite/onto#>
PREFIX archi: <https://meta.linked.archi/archimate3/onto#>
PREFIX arch: <https://meta.linked.archi/core#>
# Find ArchiMate ApplicationServices that are realized by BPMN ServiceTasks
SELECT ?service ?serviceName ?task ?taskName WHERE {
?service a archi:ApplicationService ;
arch:name ?serviceName .
?task a bpmnl:ServiceTask ;
arch:name ?taskName .
?service arch:realizedBy ?task .
}
PREFIX bpmnl: <https://meta.linked.archi/bpmn-lite/onto#>
PREFIX archi: <https://meta.linked.archi/archimate3/onto#>
PREFIX arch: <https://meta.linked.archi/core#>
# Find all processes owned by a participant, with their tasks
SELECT ?participant ?participantName ?task ?taskName WHERE {
?participant a bpmnl:Participant ;
arch:name ?participantName .
?task a/rdfs:subClassOf* bpmnl:Task ;
arch:name ?taskName ;
arch:partOf ?participant .
}
6. When to Use Which¶
| Scenario | Recommended profile |
|---|---|
| Building a BPMN modeler or execution engine | Full |
| Round-tripping BPMN XML ↔ RDF ↔ BPMN XML | Full |
| Validating BPMN models against the spec | Full |
| Cross-model EA queries (BPMN + ArchiMate + C4) | Lite |
| Populating an architecture knowledge graph from Camunda/jBPM exports | Lite (thin lift) |
| Tracing business capabilities to process tasks | Lite |
| Governance: "which processes handle PII data?" | Lite |
| Academic research on BPMN semantics | Full |
Nothing prevents using both in the same graph — the lite classes carry skos:exactMatch links to the full ontology classes, so data can be promoted or demoted between profiles.
7. Linking BPMN to Other Notations¶
Cross-notation linking is handled outside the BPMN ontologies themselves. Available mechanisms:
| Mechanism | Example | When to use |
|---|---|---|
skos:exactMatch |
ex:bpmn_task skos:exactMatch ex:archi_service |
Equivalent concepts across notations |
arch:partOf / arch:hasPart |
ex:task arch:partOf ex:capability |
Structural decomposition |
arch:refines / arch:refinedInto |
ex:bpmn_process arch:refines ex:archi_bp |
Refinement across abstraction levels |
| Project-specific IDs | ex:task ex:camundaId "proc-123" |
Tool integration |
| Cross-mapping extensions | Dedicated bridge ontology | Reusable organisational standard |
The choice depends on the organisation's integration strategy. Linked.Archi provides the building blocks; the organisation owns the model.
8. File Inventory¶
BPMN Full (modelingLanguages/bpmn/)¶
| File | Content |
|---|---|
bpmn-metamodel.ttl |
Metamodel manifest |
bpmn-viewpoints.ttl |
4 viewpoints |
bpmn-deliverable-templates.ttl |
Deliverable templates |
linkedarchi-bpmn-onto.ttl |
Core ontology (144 classes, 199 properties) |
linkedarchi-bpmn-shacl.ttl |
SHACL shapes |
linkedarchi-bpmn-infra-onto.ttl |
Infrastructure (Definitions, Import) |
linkedarchi-bpmn-infra-shacl.ttl |
Infrastructure shapes |
linkedarchi-bpmndi-onto.ttl |
BPMN Diagram Interchange |
linkedarchi-bpmndi-shacl.ttl |
BPMNDI shapes |
linkedarchi-di-onto.ttl |
DI abstract classes |
linkedarchi-di-shacl.ttl |
DI shapes |
linkedarchi-dc-onto.ttl |
DC datatypes (Bounds, Point, Font) |
linkedarchi-dc-shacl.ttl |
DC shapes |
linkedarchi-bpmn-suite-alignment.ttl |
Alignment to arch:Element |
linkedarchi-bpmn-suite-imports.ttl |
Import aggregator |
linkedarchi-bpmn-suite-shapes.ttl |
Combined shapes |
BPMN Lite (modelingLanguages/bpmn-lite/)¶
| File | Content |
|---|---|
bpmn-lite-metamodel.ttl |
Metamodel manifest |
linkedarchi-bpmn-lite-onto.ttl |
Lite ontology (29 classes, 10 properties) |
linkedarchi-bpmn-lite-shacl.ttl |
SHACL shapes |
9. References¶
- OMG BPMN 2.0.2 Specification — formal/2013-12-09
- BPMN 2.0.2 Normative Artifacts — XSD, CMOF, XMI
- Local reference:
.reference/omg/bpmn202/— Semantic.xsd, BPMNDI.xsd, DI.xsd, DC.xsd, Infrastructure.cmof, examples - ArchiMEO BPMN comparison — Design approach comparison