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.
| Predicate | Inverse | Meaning, subject to object |
|---|---|---|
bus:contains | bus:containedIn | Spatial or organizational containment. Transitive. |
bus:hasPart | bus:partOf | Compositional part of an asset. Transitive. Equipment to component. |
bus:hasMember | bus:memberOf | Grouping without containment. Not transitive. System to equipment, zone to space. |
bus:locatedIn | bus:hasLocation | Physical placement of an asset in a space. |
bus:serves | bus:servedBy | Delivery of a service to a space, zone, or asset. |
bus:feeds | bus:fedBy | Directed flow of a medium. Requires medium. |
bus:connectedTo | (symmetric) | Undirected physical connection, qualified by medium and port. |
bus:powers | bus:poweredBy | Electrical supply. What an operator traces during an outage. |
bus:measures | bus:measuredBy | Observation. Point to the thing observed. |
bus:commands | bus:commandedBy | Actuation by a point. Point to the thing acted upon. |
bus:controls | bus:controlledBy | Governance by a controller, sequence, or strategy. |
bus:hosts | bus:hostedBy | Provision of an addressable home for a point. Device to point. |
bus:appliesTo | bus:hasApplicable | Attachment of intent, an alarm definition, or a result to what it concerns. |
bus:implements | bus:implementedBy | A sequence or schedule realizes an intent. |
bus:explains | bus:explainedBy | Knowledge accounts for why something is as it is. |
bus:supports | bus:supportedBy | Knowledge or evidence supports an assertion. |
bus:justifies | bus:justifiedBy | A rationale justifies a decision or change. |
bus:derivedFrom | bus:derives | Dependence of a calculated value on its inputs. |
bus:documentedBy | bus:documents | Attachment of a resource to what it describes. |
bus:represents | bus:representedBy | A drawing or element depicts a building entity. |
bus:replaces | bus:replacedBy | Lifecycle 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:feeds— MUST carry amedium. 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:measuresandbus: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.