Mapping
draftStatus of this Document
This report was published by the User Journal Graph Community Group . It is not a W3C Standard nor is it on the W3C Standards Track. Please note that under the W3C Community Contributor License Agreement (CLA) there is a limited opt-out and other conditions apply. Learn more about W3C Community and Business Groups .
1. Overview
This module defines the basic vocabulary and processing model for mapping causally ordered Runtime events back to the intended Graph journey model.
Runtime records what happened. Graph defines the intended journey topology. Mapping connects the two
by resolving each RuntimeEvent.stateRef in the local journey scope supplied by the event's
journeyInstanceRef, then associating the resolved execution with an explicit root Graph
Journey.
Mapping surfaces model drift, tracking gaps, deep links, menu jumps, and other out-of-model movement. It does not assume every jump is an error.
2. Normative Artifacts
This module is published through the following artifacts:
mapping.ttl: ontology, published athttps://ujg.specs.openuji.org/tr/2026.06/ns/mappingmapping.context.jsonld: JSON-LD term mappings, published athttps://ujg.specs.openuji.org/tr/2026.06/ns/mapping.context.jsonldmapping.shape.ttl: SHACL validation rules, published athttps://ujg.specs.openuji.org/tr/2026.06/ns/mapping.shape
Examples in this page compose the shared baseline context https://ujg.specs.openuji.org/tr/2026.06/ns/context.jsonld
with the Mapping context.
3. Terminology
JourneyMapping: An addressable mapping record that binds one Runtime execution chain to the root Graph
Journeyused to interpret it.MappedStep: An addressable mapping record for one
RuntimeEventin the mapped chain.Mapped runtime: The
JourneyExecutionwhose causalRuntimeEventchain is being resolved.Mapped state: A Graph
StateorCompositeStateresolved from aRuntimeEvent.stateRef.Relevant effective transition: A Graph transition that can explain an observed movement between two resolved runtime states.
Jump: A non-root mapped step where no relevant effective transition explains the observed movement.
4. Mapping Model
A JourneyMapping links:
mapping:mappedRuntimeRefto the RuntimeJourneyExecutionbeing mapped.mapping:mappedJourneyRefto the root GraphJourneyfor the interpreted execution.mapping:mappedStepRefto theMappedSteprecords for events in the runtime chain.
Each MappedStep links:
mapping:mappedEventRefto the RuntimeRuntimeEventbeing interpreted.mapping:mappedStateRefto the resolved GraphStateorCompositeState.mapping:explainedByTransitionRef, when present, to the effectiveTransitionorOutgoingTransitionthat explains the movement.
Mapping does not serialize a separate step scope. For each MappedStep, the local Graph Journey
scope is derived from the referenced RuntimeEvent: resolve RuntimeEvent.journeyInstanceRef to
its JourneyInstance, then use that instance's journeyRef.
The Runtime event order remains defined by Runtime's causal chain: a root event followed by the
unique successor sequence obtained through previousId. mappedStepRef is a set of step records;
its JSON order is not normative.
5. Ontology
The normative Mapping ontology is defined below and is published at
https://ujg.specs.openuji.org/tr/2026.06/ns/mapping.
@prefix ujg: <https://ujg.specs.openuji.org/tr/2026.06/ns/core#> .
@prefix ujggraph: <https://ujg.specs.openuji.org/tr/2026.06/ns/graph#> .
@prefix ujgruntime: <https://ujg.specs.openuji.org/tr/2026.06/ns/runtime#> .
@prefix ujgmapping: <https://ujg.specs.openuji.org/tr/2026.06/ns/mapping#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix dct: <http://purl.org/dc/terms/> .
<https://ujg.specs.openuji.org/tr/2026.06/ns/mapping#> a owl:Ontology ;
rdfs:label "UJG Mapping Editor's Draft Vocabulary"@en ;
dct:description "UJG Mapping ontology declaration" .
### Classes
ujgmapping:JourneyMapping a owl:Class ;
rdfs:subClassOf ujg:Node .
ujgmapping:MappedStep a owl:Class ;
rdfs:subClassOf ujg:Node .
### Properties
ujgmapping:mappedJourneyRef a owl:ObjectProperty ;
rdfs:domain ujgmapping:JourneyMapping ;
rdfs:range ujggraph:Journey .
ujgmapping:mappedRuntimeRef a owl:ObjectProperty ;
rdfs:domain ujgmapping:JourneyMapping ;
rdfs:range ujgruntime:JourneyExecution .
ujgmapping:mappedStepRef a owl:ObjectProperty ;
rdfs:domain ujgmapping:JourneyMapping ;
rdfs:range ujgmapping:MappedStep .
ujgmapping:mappedEventRef a owl:ObjectProperty ;
rdfs:domain ujgmapping:MappedStep ;
rdfs:range ujgruntime:RuntimeEvent .
ujgmapping:mappedStateRef a owl:ObjectProperty ;
rdfs:domain ujgmapping:MappedStep ;
rdfs:range [
a owl:Class ;
owl:unionOf ( ujggraph:State ujggraph:CompositeState )
] .
ujgmapping:explainedByTransitionRef a owl:ObjectProperty ;
rdfs:domain ujgmapping:MappedStep ;
rdfs:range [
a owl:Class ;
owl:unionOf ( ujggraph:Transition ujggraph:OutgoingTransition )
] . @prefix ujg: <https://ujg.specs.openuji.org/tr/2026.06/ns/core#> .
@prefix ujggraph: <https://ujg.specs.openuji.org/tr/2026.06/ns/graph#> .
@prefix ujgruntime: <https://ujg.specs.openuji.org/tr/2026.06/ns/runtime#> .
@prefix ujgmapping: <https://ujg.specs.openuji.org/tr/2026.06/ns/mapping#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix dct: <http://purl.org/dc/terms/> .
<https://ujg.specs.openuji.org/tr/2026.06/ns/mapping#> a owl:Ontology ;
rdfs:label "UJG Mapping Editor's Draft Vocabulary"@en ;
dct:description "UJG Mapping ontology declaration" .
### Classes
ujgmapping:JourneyMapping a owl:Class ;
rdfs:subClassOf ujg:Node .
ujgmapping:MappedStep a owl:Class ;
rdfs:subClassOf ujg:Node .
### Properties
ujgmapping:mappedJourneyRef a owl:ObjectProperty ;
rdfs:domain ujgmapping:JourneyMapping ;
rdfs:range ujggraph:Journey .
ujgmapping:mappedRuntimeRef a owl:ObjectProperty ;
rdfs:domain ujgmapping:JourneyMapping ;
rdfs:range ujgruntime:JourneyExecution .
ujgmapping:mappedStepRef a owl:ObjectProperty ;
rdfs:domain ujgmapping:JourneyMapping ;
rdfs:range ujgmapping:MappedStep .
ujgmapping:mappedEventRef a owl:ObjectProperty ;
rdfs:domain ujgmapping:MappedStep ;
rdfs:range ujgruntime:RuntimeEvent .
ujgmapping:mappedStateRef a owl:ObjectProperty ;
rdfs:domain ujgmapping:MappedStep ;
rdfs:range [
a owl:Class ;
owl:unionOf ( ujggraph:State ujggraph:CompositeState )
] .
ujgmapping:explainedByTransitionRef a owl:ObjectProperty ;
rdfs:domain ujgmapping:MappedStep ;
rdfs:range [
a owl:Class ;
owl:unionOf ( ujggraph:Transition ujggraph:OutgoingTransition )
] . 6. JSON-LD Context
The normative Mapping JSON-LD context is defined below and is published at
https://ujg.specs.openuji.org/tr/2026.06/ns/mapping.context.jsonld.
{
"@context": {
"@version": 1.1,
"ujgmapping": "https://ujg.specs.openuji.org/tr/2026.06/ns/mapping#",
"mapping": "https://ujg.specs.openuji.org/tr/2026.06/ns/mapping#",
"JourneyMapping": "ujgmapping:JourneyMapping",
"MappedStep": "ujgmapping:MappedStep",
"mappedJourneyRef": {
"@id": "ujgmapping:mappedJourneyRef",
"@type": "@id"
},
"mappedRuntimeRef": {
"@id": "ujgmapping:mappedRuntimeRef",
"@type": "@id"
},
"mappedStepRef": {
"@id": "ujgmapping:mappedStepRef",
"@type": "@id",
"@container": "@set"
},
"mappedEventRef": {
"@id": "ujgmapping:mappedEventRef",
"@type": "@id"
},
"mappedStateRef": {
"@id": "ujgmapping:mappedStateRef",
"@type": "@id"
},
"explainedByTransitionRef": {
"@id": "ujgmapping:explainedByTransitionRef",
"@type": "@id"
}
}
} {
"@context": {
"@version": 1.1,
"ujgmapping": "https://ujg.specs.openuji.org/tr/2026.06/ns/mapping#",
"mapping": "https://ujg.specs.openuji.org/tr/2026.06/ns/mapping#",
"JourneyMapping": "ujgmapping:JourneyMapping",
"MappedStep": "ujgmapping:MappedStep",
"mappedJourneyRef": {
"@id": "ujgmapping:mappedJourneyRef",
"@type": "@id"
},
"mappedRuntimeRef": {
"@id": "ujgmapping:mappedRuntimeRef",
"@type": "@id"
},
"mappedStepRef": {
"@id": "ujgmapping:mappedStepRef",
"@type": "@id",
"@container": "@set"
},
"mappedEventRef": {
"@id": "ujgmapping:mappedEventRef",
"@type": "@id"
},
"mappedStateRef": {
"@id": "ujgmapping:mappedStateRef",
"@type": "@id"
},
"explainedByTransitionRef": {
"@id": "ujgmapping:explainedByTransitionRef",
"@type": "@id"
}
}
} 7. Validation
The normative Mapping SHACL shape is defined below and is published at
https://ujg.specs.openuji.org/tr/2026.06/ns/mapping.shape.
@prefix ujggraph: <https://ujg.specs.openuji.org/tr/2026.06/ns/graph#> .
@prefix ujgruntime: <https://ujg.specs.openuji.org/tr/2026.06/ns/runtime#> .
@prefix ujgmapping: <https://ujg.specs.openuji.org/tr/2026.06/ns/mapping#> .
@prefix ujgmappingshape: <https://ujg.specs.openuji.org/tr/2026.06/ns/mapping.shape#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
ujgmappingshape:StateLikeShape a sh:NodeShape ;
sh:nodeKind sh:IRI ;
sh:or (
[ sh:class ujggraph:State ]
[ sh:class ujggraph:CompositeState ]
) .
ujgmappingshape:TransitionLikeShape a sh:NodeShape ;
sh:nodeKind sh:IRI ;
sh:or (
[ sh:class ujggraph:Transition ]
[ sh:class ujggraph:OutgoingTransition ]
) .
ujgmappingshape:JourneyMappingShape a sh:NodeShape ;
sh:targetClass ujgmapping:JourneyMapping ;
sh:nodeKind sh:IRI ;
sh:property [
sh:path ujgmapping:mappedJourneyRef ;
sh:class ujggraph:Journey ;
sh:nodeKind sh:IRI ;
sh:minCount 1 ;
sh:maxCount 1 ;
] ;
sh:property [
sh:path ujgmapping:mappedRuntimeRef ;
sh:class ujgruntime:JourneyExecution ;
sh:nodeKind sh:IRI ;
sh:minCount 1 ;
sh:maxCount 1 ;
] ;
sh:property [
sh:path ujgmapping:mappedStepRef ;
sh:class ujgmapping:MappedStep ;
sh:nodeKind sh:IRI ;
sh:minCount 1 ;
] .
ujgmappingshape:MappedStepShape a sh:NodeShape ;
sh:targetClass ujgmapping:MappedStep ;
sh:nodeKind sh:IRI ;
sh:property [
sh:path ujgmapping:mappedEventRef ;
sh:class ujgruntime:RuntimeEvent ;
sh:nodeKind sh:IRI ;
sh:minCount 1 ;
sh:maxCount 1 ;
] ;
sh:property [
sh:path ujgmapping:mappedStateRef ;
sh:node ujgmappingshape:StateLikeShape ;
sh:minCount 1 ;
sh:maxCount 1 ;
] ;
sh:property [
sh:path ujgmapping:explainedByTransitionRef ;
sh:node ujgmappingshape:TransitionLikeShape ;
sh:maxCount 1 ;
] . @prefix ujggraph: <https://ujg.specs.openuji.org/tr/2026.06/ns/graph#> .
@prefix ujgruntime: <https://ujg.specs.openuji.org/tr/2026.06/ns/runtime#> .
@prefix ujgmapping: <https://ujg.specs.openuji.org/tr/2026.06/ns/mapping#> .
@prefix ujgmappingshape: <https://ujg.specs.openuji.org/tr/2026.06/ns/mapping.shape#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
ujgmappingshape:StateLikeShape a sh:NodeShape ;
sh:nodeKind sh:IRI ;
sh:or (
[ sh:class ujggraph:State ]
[ sh:class ujggraph:CompositeState ]
) .
ujgmappingshape:TransitionLikeShape a sh:NodeShape ;
sh:nodeKind sh:IRI ;
sh:or (
[ sh:class ujggraph:Transition ]
[ sh:class ujggraph:OutgoingTransition ]
) .
ujgmappingshape:JourneyMappingShape a sh:NodeShape ;
sh:targetClass ujgmapping:JourneyMapping ;
sh:nodeKind sh:IRI ;
sh:property [
sh:path ujgmapping:mappedJourneyRef ;
sh:class ujggraph:Journey ;
sh:nodeKind sh:IRI ;
sh:minCount 1 ;
sh:maxCount 1 ;
] ;
sh:property [
sh:path ujgmapping:mappedRuntimeRef ;
sh:class ujgruntime:JourneyExecution ;
sh:nodeKind sh:IRI ;
sh:minCount 1 ;
sh:maxCount 1 ;
] ;
sh:property [
sh:path ujgmapping:mappedStepRef ;
sh:class ujgmapping:MappedStep ;
sh:nodeKind sh:IRI ;
sh:minCount 1 ;
] .
ujgmappingshape:MappedStepShape a sh:NodeShape ;
sh:targetClass ujgmapping:MappedStep ;
sh:nodeKind sh:IRI ;
sh:property [
sh:path ujgmapping:mappedEventRef ;
sh:class ujgruntime:RuntimeEvent ;
sh:nodeKind sh:IRI ;
sh:minCount 1 ;
sh:maxCount 1 ;
] ;
sh:property [
sh:path ujgmapping:mappedStateRef ;
sh:node ujgmappingshape:StateLikeShape ;
sh:minCount 1 ;
sh:maxCount 1 ;
] ;
sh:property [
sh:path ujgmapping:explainedByTransitionRef ;
sh:node ujgmappingshape:TransitionLikeShape ;
sh:maxCount 1 ;
] . The rules below define the remaining module semantics beyond the structural constraints captured by the SHACL shape.
Runtime chain source: A consumer mapping runtime behavior MUST reconstruct event order using the Runtime causal chain model.
Step correspondence: Each
MappedStepMUST identify oneRuntimeEventin the mapped runtime chain throughmappedEventRef.Local scope derivation: For each
MappedStep, the Consumer MUST resolve the referencedRuntimeEvent.journeyInstanceRefand use that JourneyInstance'sjourneyRefas the step's local GraphJourneyscope.State resolution: Each
MappedStep.mappedStateRefMUST be the GraphStateorCompositeStateresolved from itsRuntimeEvent.stateRefin the derived local scope or imported documents.Journey ownership:
mappedJourneyRefidentifies the root GraphJourneyfor the mapped execution. The root JourneyInstance of each mapped event's derived ancestor chain SHOULD reference the same GraphJourney.Step order: Mapping does not define a separate step order. Consumers MUST order mapped steps by applying Runtime chain reconstruction to each step's
mappedEventRef.Origin derivation: The root event step is derived from the absence of
RuntimeEvent.previousId. It records the starting resolved state and is not an observed movement.Same-instance transition lookup: When the previous and current mapped steps have the same local JourneyInstance, a non-root mapped step is explained when
explainedByTransitionRefpoints to one relevant effective transition in that instance's local scope. A relevant effective transition is either:a Graph
Transitionwhosefromis the previous resolved state and whosetois the current resolved state; oran effective
OutgoingTransitioncontributed by anOutgoingTransitionGroupreferenced by the local scope, where the previous resolved state is in the local scope and the outgoing transition'stois the current resolved state.
Subjourney entry lookup: When the current event's derived ancestor chain enters a subjourney relative to the previous event's derived ancestor chain, the entering JourneyInstance SHOULD provide
viaStateRef. A movement into the subjourney is explained only whenexplainedByTransitionRefpoints to a relevant effective transition in the parent scope whosefromis the previous resolved state and whosetois the entering instance'sviaStateRef.Subjourney exit lookup: When the current event's derived ancestor chain exits a subjourney relative to the previous event's derived ancestor chain, the exiting JourneyInstance SHOULD provide
viaStateRef. A movement out of the subjourney is explained only whenexplainedByTransitionRefpoints to a relevant effective transition in the parent scope whosefromis the exiting instance'sviaStateRefand whosetois the current resolved state.Multiple boundary changes: If a movement enters or exits more than one journey boundary, Consumers MUST evaluate exits from the previous local instance toward the nearest common ancestor, then entries from that ancestor toward the current local instance. If any required
viaStateRefor relevant effective transition is missing, the movement is a jump.Condition eligibility: If a consumer implements [UJG Conditions], a guarded transition only explains a mapped step when the transition is eligible under Condition semantics.
Jump derivation: A non-root mapped step is a jump when no relevant effective transition explains the observed movement, or when a journey boundary movement lacks the
viaStateRefneeded to evaluate it. A jump is a derived processing result, not serialized Mapping vocabulary.No intent assumption: A derived jump reports that the observed movement is not explained by the mapped graph. It does not by itself decide whether the movement is legitimate or erroneous.
8. Minimal Example
{
"@context": [
"https://ujg.specs.openuji.org/tr/2026.06/ns/context.jsonld",
"https://ujg.specs.openuji.org/tr/2026.06/ns/mapping.context.jsonld"
],
"@id": "https://example.com/ujg/mapping/execution-12345.jsonld",
"@type": "UJGDocument",
"nodes": [
{
"@id": "urn:mapping:execution-12345",
"@type": "JourneyMapping",
"mappedRuntimeRef": "urn:ujg:execution:12345",
"mappedJourneyRef": "urn:ujg:journey:checkout",
"mappedStepRef": [
"urn:mapping:execution-12345:100",
"urn:mapping:execution-12345:200",
"urn:mapping:execution-12345:300"
]
},
{
"@id": "urn:mapping:execution-12345:100",
"@type": "MappedStep",
"mappedEventRef": "urn:ujg:event:12345:100",
"mappedStateRef": "urn:ujg:state:cart"
},
{
"@id": "urn:mapping:execution-12345:200",
"@type": "MappedStep",
"mappedEventRef": "urn:ujg:event:12345:200",
"mappedStateRef": "urn:ujg:state:payment",
"explainedByTransitionRef": "urn:ujg:transition:cart-to-payment"
},
{
"@id": "urn:mapping:execution-12345:300",
"@type": "MappedStep",
"mappedEventRef": "urn:ujg:event:12345:300",
"mappedStateRef": "urn:ujg:state:confirmation",
"explainedByTransitionRef": "urn:ujg:transition:payment-to-confirmation"
}
]
} {
"@context": [
"https://ujg.specs.openuji.org/tr/2026.06/ns/context.jsonld",
"https://ujg.specs.openuji.org/tr/2026.06/ns/mapping.context.jsonld"
],
"@id": "https://example.com/ujg/mapping/execution-12345.jsonld",
"@type": "UJGDocument",
"nodes": [
{
"@id": "urn:mapping:execution-12345",
"@type": "JourneyMapping",
"mappedRuntimeRef": "urn:ujg:execution:12345",
"mappedJourneyRef": "urn:ujg:journey:checkout",
"mappedStepRef": [
"urn:mapping:execution-12345:100",
"urn:mapping:execution-12345:200",
"urn:mapping:execution-12345:300"
]
},
{
"@id": "urn:mapping:execution-12345:100",
"@type": "MappedStep",
"mappedEventRef": "urn:ujg:event:12345:100",
"mappedStateRef": "urn:ujg:state:cart"
},
{
"@id": "urn:mapping:execution-12345:200",
"@type": "MappedStep",
"mappedEventRef": "urn:ujg:event:12345:200",
"mappedStateRef": "urn:ujg:state:payment",
"explainedByTransitionRef": "urn:ujg:transition:cart-to-payment"
},
{
"@id": "urn:mapping:execution-12345:300",
"@type": "MappedStep",
"mappedEventRef": "urn:ujg:event:12345:300",
"mappedStateRef": "urn:ujg:state:confirmation",
"explainedByTransitionRef": "urn:ujg:transition:payment-to-confirmation"
}
]
} This example states that the causal event chain for urn:ujg:execution:12345 has been resolved
against the checkout root journey. The first mapped step is the root event. The later mapped steps
record the relevant effective transitions that explain the observed movements.
If a mapped movement is explained by a reusable outgoing transition, explainedByTransitionRef
points to the OutgoingTransition resource. A movement explained by an effective
OutgoingTransition from the mapped journey's OutgoingTransitionGroup is explained by the Graph
model and does not need a serialized status value.
9. Nested Scope Example
{
"@context": [
"https://ujg.specs.openuji.org/tr/2026.06/ns/context.jsonld",
"https://ujg.specs.openuji.org/tr/2026.06/ns/mapping.context.jsonld"
],
"@id": "https://example.com/ujg/mapping/nested-execution.jsonld",
"@type": "UJGDocument",
"nodes": [
{
"@type": "JourneyExecution",
"@id": "urn:ujg:execution:nested-1"
},
{
"@type": "JourneyInstance",
"@id": "urn:ujg:journey-instance:checkout:nested-1",
"journeyRef": "urn:ujg:journey:checkout"
},
{
"@type": "JourneyInstance",
"@id": "urn:ujg:journey-instance:checkout:nested-1:payment",
"journeyRef": "urn:ujg:journey:payment",
"parentInstanceRef": "urn:ujg:journey-instance:checkout:nested-1",
"viaStateRef": "urn:ujg:state:checkout-payment"
},
{
"@type": "RuntimeEvent",
"@id": "urn:ujg:event:nested-1:100",
"executionId": "urn:ujg:execution:nested-1",
"stateRef": "urn:ujg:state:cart",
"journeyInstanceRef": "urn:ujg:journey-instance:checkout:nested-1"
},
{
"@type": "RuntimeEvent",
"@id": "urn:ujg:event:nested-1:200",
"executionId": "urn:ujg:execution:nested-1",
"previousId": "urn:ujg:event:nested-1:100",
"stateRef": "urn:ujg:state:payment-card",
"journeyInstanceRef": "urn:ujg:journey-instance:checkout:nested-1:payment"
},
{
"@id": "urn:mapping:nested-1",
"@type": "JourneyMapping",
"mappedRuntimeRef": "urn:ujg:execution:nested-1",
"mappedJourneyRef": "urn:ujg:journey:checkout",
"mappedStepRef": [
"urn:mapping:nested-1:100",
"urn:mapping:nested-1:200"
]
},
{
"@id": "urn:mapping:nested-1:100",
"@type": "MappedStep",
"mappedEventRef": "urn:ujg:event:nested-1:100",
"mappedStateRef": "urn:ujg:state:cart"
},
{
"@id": "urn:mapping:nested-1:200",
"@type": "MappedStep",
"mappedEventRef": "urn:ujg:event:nested-1:200",
"mappedStateRef": "urn:ujg:state:payment-card",
"explainedByTransitionRef": "urn:ujg:transition:cart-to-checkout-payment"
}
]
} {
"@context": [
"https://ujg.specs.openuji.org/tr/2026.06/ns/context.jsonld",
"https://ujg.specs.openuji.org/tr/2026.06/ns/mapping.context.jsonld"
],
"@id": "https://example.com/ujg/mapping/nested-execution.jsonld",
"@type": "UJGDocument",
"nodes": [
{
"@type": "JourneyExecution",
"@id": "urn:ujg:execution:nested-1"
},
{
"@type": "JourneyInstance",
"@id": "urn:ujg:journey-instance:checkout:nested-1",
"journeyRef": "urn:ujg:journey:checkout"
},
{
"@type": "JourneyInstance",
"@id": "urn:ujg:journey-instance:checkout:nested-1:payment",
"journeyRef": "urn:ujg:journey:payment",
"parentInstanceRef": "urn:ujg:journey-instance:checkout:nested-1",
"viaStateRef": "urn:ujg:state:checkout-payment"
},
{
"@type": "RuntimeEvent",
"@id": "urn:ujg:event:nested-1:100",
"executionId": "urn:ujg:execution:nested-1",
"stateRef": "urn:ujg:state:cart",
"journeyInstanceRef": "urn:ujg:journey-instance:checkout:nested-1"
},
{
"@type": "RuntimeEvent",
"@id": "urn:ujg:event:nested-1:200",
"executionId": "urn:ujg:execution:nested-1",
"previousId": "urn:ujg:event:nested-1:100",
"stateRef": "urn:ujg:state:payment-card",
"journeyInstanceRef": "urn:ujg:journey-instance:checkout:nested-1:payment"
},
{
"@id": "urn:mapping:nested-1",
"@type": "JourneyMapping",
"mappedRuntimeRef": "urn:ujg:execution:nested-1",
"mappedJourneyRef": "urn:ujg:journey:checkout",
"mappedStepRef": [
"urn:mapping:nested-1:100",
"urn:mapping:nested-1:200"
]
},
{
"@id": "urn:mapping:nested-1:100",
"@type": "MappedStep",
"mappedEventRef": "urn:ujg:event:nested-1:100",
"mappedStateRef": "urn:ujg:state:cart"
},
{
"@id": "urn:mapping:nested-1:200",
"@type": "MappedStep",
"mappedEventRef": "urn:ujg:event:nested-1:200",
"mappedStateRef": "urn:ujg:state:payment-card",
"explainedByTransitionRef": "urn:ujg:transition:cart-to-checkout-payment"
}
]
} The second mapped step resolves its local scope from
urn:ujg:event:nested-1:200 to urn:ujg:journey-instance:checkout:nested-1:payment, whose
journeyRef is urn:ujg:journey:payment. The transition reference explains the boundary movement
into the payment subjourney through the entering instance's viaStateRef.