Standard / BUS-1 v0.2 / Clause 9

9 Relationships§

AGREED The predicate set grew from 27 tokens in v0.1 to 42: twenty inverse pairs, symmetric connectedTo, and the deliberately weak references. Additions are listed in Decision Record group C.

9.1 Relationships are entities§

A relationship is an addressable entity with its own identifier, provenance, and validity period. It has a predicate, a subject, and an object, and MAY carry a medium, port qualifiers, and arbitrary qualifiers.

{ "id": "urn:uuid:...2014",
  "type": "bus:Relationship",
  "predicate": "bus:feeds",
  "subject": "urn:uuid:...051",         // AHU-1
  "object":  "urn:uuid:...052",         // VAV-2-01
  "medium": "air",
  "subjectPort": "supply", "objectPort": "inlet",
  "qualifiers": { "designFlow": { "value": 0.42, "unit": "m3/s" } } }

9.2 The normative predicate set§

An implementation MUST NOT use a bus:-prefixed predicate outside this set.

PredicateInverseMeaning, subject to object
bus:containsbus:containedInSpatial or organizational containment. Transitive.
bus:hasPartbus:partOfCompositional part of an asset. Transitive. Equipment to component.
bus:hasMemberbus:memberOfGrouping without containment. Not transitive. System to equipment, zone to space.
bus:locatedInbus:hasLocationPhysical placement of an asset in a space.
bus:servesbus:servedByDelivery of a service to a space, zone, or asset.
bus:feedsbus:fedByDirected flow of a medium. Requires medium.
bus:connectedTo(symmetric)Undirected physical connection, qualified by medium and port.
bus:powersbus:poweredByElectrical supply. What an operator traces during an outage.
bus:measuresbus:measuredByObservation. Point to the thing observed.
bus:commandsbus:commandedByActuation by a point. Point to the thing acted upon.
bus:controlsbus:controlledByGovernance by a controller, sequence, or strategy.
bus:hostsbus:hostedByProvision of an addressable home for a point. Device to point.
bus:appliesTobus:hasApplicableAttachment of intent, an alarm definition, or a result to what it concerns.
bus:implementsbus:implementedByA sequence or schedule realizes an intent.
bus:explainsbus:explainedByKnowledge accounts for why something is as it is.
bus:supportsbus:supportedByKnowledge or evidence supports an assertion.
bus:justifiesbus:justifiedByA rationale justifies a decision or change.
bus:derivedFrombus:derivesDependence of a calculated value on its inputs.
bus:documentedBybus:documentsAttachment of a resource to what it describes.
bus:representsbus:representedByA drawing or element depicts a building entity.
bus:replacesbus:replacedByLifecycle succession.
bus:references(none)A link that is real but whose nature is not modeled. Deliberately weak.

Both directions of a pair are defined so an exporter can write whichever is natural. An implementation MUST NOT assert both directions of the same pair for the same subject and object; that is redundancy, and it diverges under editing. A receiving system MAY substitute the inverse on re-export, and test RT-3 accepts that.

9.3 Predicate semantics§

  • bus:feedsMUST carry a medium. A flow relationship with no medium is not interpretable, and the medium is the property most often lost when a topology is flattened into a hierarchy.
  • bus:connectedTo — is symmetric and MUST NOT be asserted twice for the same pair. A duct has a direction and a pipe joint does not; one predicate cannot carry both, which is why there are two.
  • bus:measures and bus:commands — the subject MUST be a point. This is what separates a point from a value: a point is the thing that stands in a relationship to what it observes or acts upon.
  • bus:replaces — both endpoints MUST remain in the model. Replacement does not delete.

9.4 Ports§

OPEN The port model is unresolved. subjectPort and objectPort are free strings and are a placeholder, not a model.

Without a port model it is not possible to say which branch, which side of a valve, or that a coil has a supply and a return. This is the largest remaining expressiveness gap in the information model. It is also the change most likely to turn a clean specification into an ontology, and it should be decided against a real hydronic plant rather than in the abstract.

9.5 Extension predicates§

An implementation MAY define additional predicates in a declared namespace, and SHOULD do so rather than overloading bus:references. An importer MUST preserve relationships whose predicate it does not recognize.