RelationshipPath Specification

Relationship path specification and it's repeatable counterpart are used to define paths from one ECClass to another, optionally traversing through multiple relationships.

Attributes

Name | Required? | Type | Default | Meaning -|-|-|-|-|- relationship | Yes | SingleSchemaClassSpecification | | Specification of the relationship to follow. direction | Yes | "Forward" \| "Backward" | | Direction in which the relationship should be followed. targetClass | No | SingleSchemaClassSpecification | Other end of relationship | Specification of the related class. count | No | number \| "*" | 1 | Number of times the relationship should be traversed.

Example

A single-step relationship path which simply jumps from current ECClass to BisCore.PhysicalElement through BisCore.ModelModelsElement relationship:

{
  "relationship": { "schemaName": "BisCore", "className": "ModelModelsElement" },
  "direction": "Forward",
  "targetClass": { "schemaName": "BisCore", "className": "PhysicalElement" }
}

A multi-step relationship path which jumps from current ECClass through BisCore.ElementOwnsChildElements relationship two times in a backward direction:

{
  "relationship": { "schemaName": "BisCore", "className": "ElementOwnsChildElements" },
  "direction": "Backward",
  "count": 2
}

A two-step relationship path that first jumps from current ECClass through BisCore.ModelModelsElement and then through BisCore.ElementOwnsUniqueAspects:

[{
  "relationship": { "schemaName": "BisCore", "className": "ModelModelsElement" },
  "direction": "Forward"
}, {
  "relationship": { "schemaName": "BisCore", "className": "ElementOwnsUniqueAspects" },
  "direction": "Forward"
}]

A recursive relationship path which recursively walks through a relationship and accumulates all ECInstances it finds:

{
  "relationship": { "schemaName": "BisCore", "className": "ElementOwnsChildElements" },
  "direction": "Forward",
  "count": "*"
}

A two-step relationship path that first jumps from current ECClass through BisCore.ModelModelsElement, then recursively walks through BisCore.ElementOwnsChildElements relationship and then finds all related BisCore.ElementUniqueAspects:

[{
  "relationship": { "schemaName": "BisCore", "className": "ModelModelsElement" },
  "direction": "Forward"
}, {
  "relationship": { "schemaName": "BisCore", "className": "ElementOwnsChildElements" },
  "direction": "Forward",
  "count": "*"
}, {
  "relationship": { "schemaName": "BisCore", "className": "ElementOwnsUniqueAspects" },
  "direction": "Forward",
  "targetClass": { "schemaName": "BisCore", "className": "ElementUniqueAspect" }
}]

Last Updated: 21 May, 2020