SHACL Shapes for BPMNDI (draft)
type: Ontology
description: SHACL shapes validating BPMN 2.0.2 Diagram Interchange classes — BPMNDiagram, BPMNPlane, BPMNShape, BPMNEdge, and BPMNLabel.
issued: 2026-01-27
imports: infra#
imports: onto#
imports: di#
imports: core#
imports: dc#
imports: di-core#
version info: 2.0.2

BPMNDiagramShape
type: NodeShape
comment: BPMNDiagram → di:Diagram. plane redefines Diagram.rootElement.
target class: BPMNDiagram
property:
  path: plane
  min count: 1
  max count: 1
  class: BPMNPlane
property:
  path: labelStyle
  class: BPMNLabelStyle

BPMNEdgeShape
type: NodeShape
comment: BPMNEdge → di:LabeledEdge → di:Edge → di:DiagramElement. Inherits di:waypoint [2..*] : dc:Point from Edge.
target class: BPMNEdge
property:
  path: label
  max count: 1
  class: BPMNLabel
property:
  path: bpmnElement
  max count: 1
  class: BaseElement
property:
  path: sourceElement
  max count: 1
  class: DiagramElement
property:
  path: targetElement
  max count: 1
  class: DiagramElement
property:
  path: waypoint
  min count: 2
  class: Point
  comment: Inherited from di:Edge.
property:
  path: messageVisibleKind
  max count: 1
  datatype: string
  in: initiating
  in: non_initiating

BPMNLabelShape
type: NodeShape
comment: BPMNLabel → di:Label → di:Node → di:DiagramElement. Inherits di:bounds [0..1] : dc:Bounds from Label.
target class: BPMNLabel
property:
  path: labelStyle
  max count: 1
  class: BPMNLabelStyle
property:
  path: bounds
  max count: 1
  class: Bounds
  comment: Inherited from di:Label.

BPMNLabelStyleShape
type: NodeShape
target class: BPMNLabelStyle
property:
  path: font
  min count: 1
  max count: 1
  class: Font

BPMNPlaneShape
type: NodeShape
comment: BPMNPlane → di:Plane → di:Node → di:DiagramElement. Inherits di:planeElement [0..*] : di:DiagramElement from Plane.
target class: BPMNPlane
property:
  path: bpmnElement
  max count: 1
  class: BaseElement
property:
  path: planeElement
  class: DiagramElement
  comment: Inherited from di:Plane.

BPMNShapeShape
type: NodeShape
comment: BPMNShape → di:LabeledShape → di:Shape → di:Node → di:DiagramElement. Inherits di:bounds [1..1] : dc:Bounds from Shape.
target class: BPMNShape
property:
  path: bpmnElement
  max count: 1
  class: BaseElement
property:
  path: isHorizontal
  max count: 1
  datatype: boolean
property:
  path: isExpanded
  max count: 1
  datatype: boolean
property:
  path: isMarkerVisible
  max count: 1
  datatype: boolean
property:
  path: label
  max count: 1
  class: BPMNLabel
property:
  path: isMessageVisible
  max count: 1
  datatype: boolean
property:
  path: participantBandKind
  max count: 1
  datatype: string
  in: top_initiating
  in: middle_initiating
  in: bottom_initiating
  in: top_non_initiating
  in: middle_non_initiating
  in: bottom_non_initiating
property:
  path: choreographyActivityShape
  max count: 1
  class: BPMNShape
property:
  path: bounds
  min count: 1
  max count: 1
  class: Bounds
  comment: Inherited from di:Shape.