Relationship

Definition

A Relationship models the physical or conceptual association between two map elements as an edge, with the optional inclusion of an intermediary element that plays a contributing contextual role in the relationship. The semantic intent of a Relationship is determined by the nature of the referenced elements and their respective roles in the map itself.

Feature Structure

  • Relationship objects are Feature objects and MAY be unlocated
  • Relationship objects MUST have an "id" member with a FEATURE-ID value
  • Relationship objects MUST have a "feature_type" member with the value "relationship"
  • Relationship objects MUST have a "geometry" member with a null or GEOMETRY value

Property Keys

Property Type Description
category RELATIONSHIP-CATEGORY The category that best describes the Relationship.
direction "directed" or "undirected" Directionality of declared Relationship from origin to destination.
origin null or FEATURE-REFERENCE Reference to Feature serving as the origin element in the Relationship.
intermediary null or JSON array of FEATURE-REFERENCE Reference to Feature(s) serving as the intermediary element(s) in the Relationship.
destination null or FEATURE-REFERENCE Reference to Feature serving as the destination element of the Relationship.
hours null or HOURS Hours of operation constraining temporal applicability of destination from origin (via intermediary).

Example

{
  "id": "11111111-1111-1111-1111-111111111111",
  "type": "Feature",
  "feature_type": "relationship",
  "geometry": null,
  "properties": {
    "category": "traversal",
    "direction": "directed",
    "hours": null,
    "origin": {
      "id": "22222222-2222-2222-2222-222222222222",
      "feature_type": "unit"
    },
    "intermediary": [{
      "id": "33333333-3333-3333-3333-333333333333",
      "feature_type": "opening"
    }],
    "destination": {
      "id": "44444444-4444-4444-4444-444444444444",
      "feature_type": "unit"
    }
  }
}

Guidance

  • Associations modeled as Relationship features MAY be physical or conceptual in nature.
  • SHOULD be used to model the directed path through an intermediary Opening marked as "directed".
  • SHOULD be used to model the directed path through Units that support a vertical traversal capability.
  • SHOULD be used to model the vertical traversal path of an elevator by associating "elevator" Units present on different Levels of a Building.
  • MAY be used to model a curated route between two map elements by providing a LINEAL geometry.

Property Capturing Rules

ORIGIN

  • MUST be specified if destination is null.

DESTINATION

  • MUST be specified if origin is null.

INTERMEDIARY

  • Restrictions, access control and temporal constraints associated with a declared intermediary MUST be considered applicable to a traversal path, and are typically the motivating factor for Relationship definition (i.e. indicating direction of travel through a unidirectional Opening or along a Unit capturing the physical footprint of an escalator).

DIRECTION

  • MUST be declared as "undirected" if the declared association between origin and destination is bidirectional in nature, considered irrelevant or explicitly prohibited by the nature of the association or other contextually relevant restrictions.

    While an undirected relationship renders the ordering of origin and destination effectively irrelevant, map makers SHOULD NOT arbitrarily swap these values upon redelivery of the same Relationship feature to avoid spurious change detection.

HOURS

  • MAY be captured to describe temporal variances in criteria, i.e. alternate curated routes with different LINEAL geometries based on time of day.

Geometry Capturing Rules

  • MAY be assigned a geometry value to associate a spatial aspect to the relationship being captured, but are unlocated by default.
  • SHOULD NOT be assumed to be or treated as a map element displayed by default in a mapping application, but rather as a special purpose aspect to be used for tailored use cases or task specific purposes.
  • SHOULD be null when no curated spatial representation of the declared association between origin and destination exists or is required.

Use Cases

Below are the permissible combinations of feature references in a Relationship record and a description of the connectivity they represent or imply.

Convention Description
O - ∅ ⟶ D Directed association or traversal from Origin to Destination
O - ∅ - D Undirected association or traversal between Origin and Destination
O - I ⟶ D Directed association or traversal from Origin to Destination via Intermediary
O ⟵ I ⟶ D Undirected association or traversal between Origin and Destination via Intermediary
∅ - I ⟶ D Directed association or traversal from conceptual location outside of the scope of the map to Destination via Intermediary
O - I ⟶ ∅ Directed association or traversal from Origin to location outside of the scope of the map via Intermediary

Unidirectional Door

Convention O - I ⟶ D

  • Unidirectional travel though an Opening MUST be captured with the following elements:

    • MUST have category "traversal"
    • MUST be declared as "directed"
    • MUST reference an Opening as the intermediary
    • MUST reference the Units on either side of the Opening as origin and destination.
    • SHOULD have a "geometry" value of null

Scenario One

A pedestrian is only permitted to traverse from the origin (Unit) to the destination (Unit), via an intermediary (Opening).

Data View

{
  "id": "11111111-1111-1111-1111-111111111111",
  "type": "Feature",
  "feature_type": "relationship",
  "geometry": null,
  "properties": {
    "category": "traversal",
    "direction": "directed",
    "hours": null,
    "origin": {
      "id": "22222222-2222-2222-2222-222222222222",
      "feature_type": "unit"
    },
    "intermediary": [{
      "id": "33333333-3333-3333-3333-333333333333",
      "feature_type": "opening"
    }],
    "destination": {
      "id": "44444444-4444-4444-4444-444444444444",
      "feature_type": "unit"
    }
  }
}

Scenario Two

A pedestrian is only permitted to traverse from the origin (Unit) to a destination (Unit) via two (2) intermediaries (Openings). Each Relationship is captured separately.

Data View

{
  "id": "11111111-1111-1111-1111-111111111111",
  "type": "Feature",
  "feature_type": "relationship",
  "geometry": null,
  "properties": {
    "category": "traversal",
    "direction": "directed",
    "hours": null,
    "origin": {
      "id": "22222222-2222-2222-2222-222222222222",
      "feature_type": "unit"
    },
    "intermediary": [{
      "id": "33333333-3333-3333-3333-333333333333",
      "feature_type": "opening"
    }],
    "destination": {
      "id": "44444444-4444-4444-4444-444444444444",
      "feature_type": "unit"
    }
  }
}
{
  "id": "99999999-9999-9999-9999-999999999999",
  "type": "Feature",
  "feature_type": "relationship",
  "geometry": null,
  "properties": {
    "category": "traversal",
    "direction": "directed",
    "hours": null,
    "origin": {
      "id": "22222222-2222-2222-2222-222222222222",
      "feature_type": "unit"
    },
    "intermediary": [{
      "id": "55555555-5555-5555-5555-555555555555",
      "feature_type": "opening"
    }],
    "destination": {
      "id": "44444444-4444-4444-4444-444444444444",
      "feature_type": "unit"
    }
  }
}

Convention ∅ - I ⟶ D

  • Unidirectional travel though an Opening MUST be captured with the following elements:

    • MUST have category "traversal"
    • MUST be declared as "directed"
    • MUST reference an Opening as the intermediary
    • MUST reference the destination Unit adjacent to the Opening.
    • SHOULD have a "geometry" value of null

Scenario Three

A pedestrian is only permitted to traverse from "...outside the scope of the map..." to the destination (Unit), via an intermediary (Opening).

Data View

{
  "id": "11111111-1111-1111-1111-111111111111",
  "type": "Feature",
  "feature_type": "relationship",
  "geometry": null,
  "properties": {
    "category": "traversal",
    "direction": "directed",
    "hours": null,
    "origin": null,
    "intermediary": [{
      "id": "33333333-3333-3333-3333-333333333333",
      "feature_type": "opening"
    }],
    "destination": {
      "id": "44444444-4444-4444-4444-444444444444",
      "feature_type": "unit"
    }
  }
}
  • Bi-directional travel though an Opening MUST be captured with the following elements:

    • MUST have category "traversal"
    • MUST be declared as "undirected"
    • MUST reference an Opening as the intermediary
    • MUST reference the destination Unit adjacent to the Opening.
    • SHOULD have a "geometry" value of null

Scenario Four

A pedestrian is permitted to traverse from "...outside the scope of the map..." to the destination (Unit), via an intermediary (Opening), and vice-versa.

Data View

{
  "id": "11111111-1111-1111-1111-111111111111",
  "type": "Feature",
  "feature_type": "relationship",
  "geometry": null,
  "properties": {
    "category": "traversal",
    "direction": "undirected",
    "hours": null,
    "origin": null,
    "intermediary": [{
      "id": "33333333-3333-3333-3333-333333333333",
      "feature_type": "opening"
    }],
    "destination": {
      "id": "44444444-4444-4444-4444-444444444444",
      "feature_type": "unit"
    }
  }
}

Convention O - I ⟶ ∅

  • Unidirectional travel though an Opening MUST be captured with the following elements:

    • MUST have category "traversal"
    • MUST be declared as "directed"
    • MUST reference an Opening as the intermediary
    • MUST reference the origin Unit adjacent to the Opening.
    • SHOULD have a "geometry" value of null

Scenario Five

A pedestrian is only permitted to traverse from an origin (Unit) to "... a location outside the scope of the map..." , via an intermediary (Opening).

Data View

{
  "id": "11111111-1111-1111-1111-111111111111",
  "type": "Feature",
  "feature_type": "relationship",
  "geometry": null,
  "properties": {
    "category": "traversal",
    "direction": "directed",
    "hours": null,
    "origin": {
      "id": "22222222-2222-2222-2222-222222222222",
      "feature_type": "unit"
    },
    "intermediary": [{
      "id": "33333333-3333-3333-3333-333333333333",
      "feature_type": "opening"
    }],
    "destination": null
  }
}

Ramp

Convention O - I ⟶ D

  • Unidirectional travel through Openings MUST be captured with the following elements:

    • MUST have category "ramp"
    • MUST be declared as "directed"
    • MUST reference the "ramp" Units as the intermediaries
    • MUST reference the Openings as the origin and destination
    • SHOULD have a "geometry" value of null

Scenario One

A Ramp that provides a vertical traversal capability between different Levels. A pedestrian is only permitted to traverse from the origin (Opening) to the destination (Opening).

Data View

{
  "id": "11111111-1111-1111-1111-111111111111",
  "type": "Feature",
  "feature_type": "relationship",
  "geometry": null,
  "properties": {
    "category": "ramp",
    "direction": "directed",
    "hours": null,
    "origin": {
      "id": "22222222-2222-2222-2222-222222222222",
      "feature_type": "opening"
    },
    "intermediary": [
      {
        "id": "55555555-5555-5555-5555-555555555555",
        "feature_type": "ramp"
      },
      {
        "id": "66666666-6666-6666-6666-666666666666",
        "feature_type": "ramp"
      }
    ],
    "destination": {
      "id": "44444444-4444-4444-4444-444444444444",
      "feature_type": "opening"
    }
  }
}

Convention O - I - D

  • Bi-directional travel through Openings MUST be captured with the following elements:

    • MUST have category "ramp"
    • MUST be declared as "undirected"
    • MUST reference the "ramp" Units as the intermediaries
    • MUST reference Openings as the origin and destination
    • SHOULD have a "geometry" value of null

Scenario Two

A Ramp that provides a vertical traversal capability between different Levels. A pedestrian is permitted to traverse from the origin (Opening) to the destination (Opening), and vice-versa.

Data View

{
  "id": "11111111-1111-1111-1111-111111111111",
  "type": "Feature",
  "feature_type": "relationship",
  "geometry": null,
  "properties": {
    "category": "ramp",
    "direction": "undirected",
    "hours": null,
    "origin": {
      "id": "22222222-2222-2222-2222-222222222222",
      "feature_type": "opening"
    },
    "intermediary": [
      {
        "id": "55555555-5555-5555-5555-555555555555",
        "feature_type": "ramp"
      },
      {
        "id": "66666666-6666-6666-6666-666666666666",
        "feature_type": "ramp"
      }
    ],
    "destination": {
      "id": "44444444-4444-4444-4444-444444444444",
      "feature_type": "opening"
    }
  }
}

Scenario Three

A Ramp that provides a vertical traversal capability between different Levels. A pedestrian is permitted to traverse from the origin (Opening) to two (2) destinations (Openings), and vice-versa. Each Relationship is captured separately.

Data View

{
  "id": "11111111-1111-1111-1111-111111111111",
  "type": "Feature",
  "feature_type": "relationship",
  "geometry": null,
  "properties": {
    "category": "ramp",
    "direction": "undirected",
    "hours": null,
    "origin": {
      "id": "22222222-2222-2222-2222-222222222222",
      "feature_type": "opening"
    },
    "intermediary": [
      {
        "id": "55555555-5555-5555-5555-555555555555",
        "feature_type": "ramp"
      },
      {
        "id": "66666666-6666-6666-6666-666666666666",
        "feature_type": "ramp"
      }
    ],
    "destination": {
      "id": "44444444-4444-4444-4444-444444444444",
      "feature_type": "opening"
    }
  }
}
{
  "id": "99999999-9999-9999-9999-999999999999",
  "type": "Feature",
  "feature_type": "relationship",
  "geometry": null,
  "properties": {
    "category": "ramp",
    "direction": "undirected",
    "hours": null,
    "origin": {
      "id": "22222222-2222-2222-2222-222222222222",
      "feature_type": "opening"
    },
    "intermediary": [
      {
        "id": "55555555-5555-5555-5555-555555555555",
        "feature_type": "ramp"
      },
      {
        "id": "66666666-6666-6666-6666-666666666666",
        "feature_type": "ramp"
      }
    ],
    "destination": {
      "id": "77777777-7777-7777-7777-777777777777",
      "feature_type": "opening"
    }
  }
}

Escalator

Convention O - I ⟶ D

  • Unidirectional travel along an Escalator MUST be captured with the following elements:

    • MUST have category "escalator"
    • MUST be declared as "directed"
    • MUST reference the "escalator" Units as the intermediaries
    • MUST reference the Opening representing the kick plate at the entry of the escalator as the origin
    • MUST reference the Opening representing the kick plate at the exit of the escalator as the destination
    • SHOULD have a "geometry" value of null

Scenario One

An Escalator that provides a vertical traversal capability between different Levels. A pedestrian is only permitted to traverse from the origin (Opening) to the destination (Opening). In this particular case, the mechanical device operates in a single direction of travel during all hours.

Data View

{
  "id": "11111111-1111-1111-1111-111111111111",
  "type": "Feature",
  "feature_type": "relationship",
  "geometry": null,
  "properties": {
    "category": "escalator",
    "direction": "directed",
    "hours": null,
    "origin": {
      "id": "22222222-2222-2222-2222-222222222222",
      "feature_type": "opening"
    },
    "intermediary": [
      {
        "id": "55555555-5555-5555-5555-555555555555",
        "feature_type": "escalator"
      },
      {
        "id": "66666666-6666-6666-6666-666666666666",
        "feature_type": "escalator"
      }
    ],
    "destination": {
      "id": "44444444-4444-4444-4444-444444444444",
      "feature_type": "opening"
    }
  }
}

Scenario Two

A set of Escalators that provides a vertical traversal capability between different Levels. A pedestrian is only permitted to traverse from the origin (Opening) to the destination (Opening). In this particular case, the mechanical devices operate in a single direction of travel during all hours.

Data View

{
  "id": "11111111-1111-1111-1111-111111111111",
  "type": "Feature",
  "feature_type": "relationship",
  "geometry": null,
  "properties": {
    "category": "escalator",
    "direction": "directed",
    "hours": null,
    "origin": {
      "id": "22222222-2222-2222-2222-222222222222",
      "feature_type": "opening"
    },
    "intermediary": [
      {
        "id": "55555555-5555-5555-5555-555555555555",
        "feature_type": "escalator"
      },
      {
        "id": "66666666-6666-6666-6666-666666666666",
        "feature_type": "escalator"
      },
      {
        "id": "77777777-7777-7777-7777-777777777777",
        "feature_type": "escalator"
      },
      {
        "id": "88888888-8888-8888-8888-888888888888",
        "feature_type": "escalator"
      }
    ],
    "destination": {
      "id": "44444444-4444-4444-4444-444444444444",
      "feature_type": "opening"
    }
  }
}

Scenario Three

An Escalator that provides a vertical traversal capability between different Levels. A pedestrian is only permitted to traverse from the origin (Opening) to the destination (Opening) during the specified Hours of 5.00 AM until 11.59 AM.

Data View

{
  "id": "11111111-1111-1111-1111-111111111111",
  "type": "Feature",
  "feature_type": "relationship",
  "geometry": null,
  "properties": {
    "category": "escalator",
    "direction": "directed",
    "hours": "Mo-Su 05:00-11:59",
    "origin": {
      "id": "22222222-2222-2222-2222-222222222222",
      "feature_type": "opening"
    },
    "intermediary": [
      {
        "id": "55555555-5555-5555-5555-555555555555",
        "feature_type": "escalator"
      },
      {
        "id": "66666666-6666-6666-6666-666666666666",
        "feature_type": "escalator"
      }
    ],
    "destination": {
      "id": "44444444-4444-4444-4444-444444444444",
      "feature_type": "opening"
    }
  }
}

Scenario Four

When the direction of travel varies over a period of time, and these temporal qualities are desirable for capture, then each Relationship must be captured separately.

In this second illustration, a pedestrian is only permitted to traverse from the origin (Opening) to the destination (Opening) during the specified Hours of 12.00 noon until 4.59 AM. During the hours 5.00 AM until 11.59 AM, the prior scenario applies.

Data View

{
  "id": "11111111-1111-1111-1111-111111111111",
  "type": "Feature",
  "feature_type": "relationship",
  "geometry": null,
  "properties": {
    "category": "escalator",
    "direction": "directed",
    "hours": "Mo-Su 12:00-04:59",
    "origin": {
      "id": "44444444-4444-4444-4444-444444444444",
      "feature_type": "opening"
    },
    "intermediary": [
      {
        "id": "55555555-5555-5555-5555-555555555555",
        "feature_type": "escalator"
      },
      {
        "id": "66666666-6666-6666-6666-666666666666",
        "feature_type": "escalator"
      }
    ],
    "destination": {
      "id": "22222222-2222-2222-2222-222222222222",
      "feature_type": "opening"
    }
  }
}

Elevator

Convention O - I - D

  • Elevator traversal SHOULD be captured with the following elements:

    • MUST have category "elevator"
    • MUST be declared as "undirected"
    • MUST reference the "elevator" Units as the intermediaries
    • MUST reference the Units as the origin and destination
    • SHOULD have a "geometry" value of null

Scenario One

An Elevator that provides a vertical traversal capability between different Levels.

Data View

{
  "id": "11111111-1111-1111-1111-111111111111",
  "type": "Feature",
  "feature_type": "relationship",
  "geometry": null,
  "properties": {
    "category": "elevator",
    "direction": "undirected",
    "hours": null,
    "origin": {
      "id": "22222222-2222-2222-2222-222222222222",
      "feature_type": "elevator"
    },
    "intermediary": [{
        "id": "55555555-5555-5555-5555-555555555555",
        "feature_type": "elevator"
    }],
    "destination": {
      "id": "44444444-4444-4444-4444-444444444444",
      "feature_type": "elevator"
    }
  }
}

Note: It is not necessary to describe each destination's Relationship with other Elevator Units. These Relationships can be systematically derived.

Curated Path

  • Curated paths between two map elements MAY be represented as associations between an origin and destination feature.

    • MAY be declared as either "directed" or "undirected"
    • MUST contain both an origin and destination
    • MAY contain an intermediary when relevant
    • MUST contain a "geometry" with a LINEAL value representing the curated path from a pedestrian perspective

WARNING: Curated paths defined in this manner are NOT intended for use in defining a comprehensive routing network within a venue and MUST NOT be assumed to be used by default, or even at all, by existing routing systems. Any curated paths provided in a venue delivery MUST be viewed as "hints" or supplementary information that MAY be used when and where appropriate.