Tenant modelling
Scenario
This guide continues building on our previous Spatial modelling guide; to get the most out of it, please skim it first.
The owner of the Costello Heights building, Costello Real Estate now wishes to add to their knowledge graph information about their tenants, what part of the property those tenants are leasing, the duration of their lease contract, etc. While such modelling in itself may not provide many business benefits over some existing tenant database system, integrating it into the smart building knowledge graph will allow the property owner to easily query for, e.g., Which tenants will be affected by maintenance work on the lower AHU, or What’s the reported occupancy rate of conference rooms leased by Initech.
Types used
In addition to the types from the previous guide, this modelling task will include:
Conceptually, we think of Leases as events in that they have a start and end timestamp. They add to these attributes certain relationships (see below) that indicate what is being leased, by whom, to whom.
Relationships and Properties used
Relationships
- Architecture.ownedBy -- Relates a piece of architecture to its legal owner.
- Apartment.includes -- Indicates which rooms that make up a given apartment.
- Lease.leasor -- The owner Agent that is leasing out something; in this case, the Costello Real Estate corporation.
- Lease.leasee -- The Agent that is leasing (i.e., making use of) the leased object.
- Lease.leaseOf -- What is being leased; in this case, a Space or an Apartment (a Collection of spaces), but might as well be a desk, or a piece of equipment such as a coffee machine, projector, etc.
Properties
Graphical representation
RDF triples representation (SHACL models)
# Namespaces
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rec: <https://w3id.org/rec#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix : <https://example.com#> .
# Type declarations.
# Spaces
:CostelloHeights rdf:type rec:Building .
:LowerFloor rdf:type rec:Level .
:UpperFloor rdf:type rec:Level .
:AtticFloor rdf:type rec:Level .
:120 rdf:type rec:Room .
:121 rdf:type rec:Room .
:122 rdf:type rec:Room .
:123 rdf:type rec:Room .
:124 rdf:type rec:Room .
# Apartments and leases
:Apartment1 rdf:type rec:Apartment .
:Apartment2 rdf:type rec:Apartment .
:Lease1 rdf:type rec:Lease .
:Lease2 rdf:type rec:Lease .
:UpperFloorLease rdf:type rec:Lease .
:AtticLease rdf:type rec:Lease .
# Agents
:CostelloRealEstate rdf:type rec:Company .
:Initech rdf:type rec:Company .
:LumberghInc rdf:type rec:Company .
:JohnDoe rdf:type rec:Person .
:JaneDoe rdf:type rec:Person .
# Spatial topology & apartment inclusion
:CostelloHeights rec:hasPart :LowerFloor .
:CostelloHeights rec:hasPart :UpperFloor .
:CostelloHeights rec:hasPart :AtticFloor .
:LowerFloor rec:hasPart :120 .
:LowerFloor rec:hasPart :121 .
:LowerFloor rec:hasPart :122 .
:LowerFloor rec:hasPart :123 .
:LowerFloor rec:hasPart :124 .
:Apartment1 rec:includes :120 .
:Apartment1 rec:includes :121 .
:Apartment2 rec:includes :122 .
:Apartment2 rec:includes :123 .
:Apartment2 rec:includes :124 .
# Lease relations
:Lease1 rec:leasor :CostelloRealEstate .
:Lease1 rec:leasee :JohnDoe .
:Lease1 rec:leaseOf :Apartment1 .
:Lease2 rec:leasor :CostelloRealEstate .
:Lease2 rec:leasee :JaneDoe .
:Lease2 rec:leaseOf :Apartment2 .
:UpperFloorLease rec:leasor :CostelloRealEstate .
:UpperFloorLease rec:leasee :Initech .
:UpperFloorLease rec:leaseOf :UpperFloor .
:AtticLease rec:leasor :CostelloRealEstate .
:AtticLease rec:leasee :LumberghInc .
:AtticLease rec:leaseOf :AtticFloor .
# Lease durations
:Lease2 rec:start "2022-01-01T08:00:00Z"^^xsd:dateTime .
:AtticLease rec:start "2015-07-01T08:00:00Z"^^xsd:dateTime .
:AtticLease rec:end "2022-12-31T23:59:59Z"^^xsd:dateTime .
Azure Digital Twins JSON representation (DTDL models)
{
"digitalTwinsFileInfo": {
"fileVersion": "1.0.0"
},
"digitalTwinsGraph": {
"digitalTwins": [
{
"$dtId": "CostelloHeights",
"$etag": "W/\"ee7f9ac5-cde8-482e-9f3f-de4b3da170f8\"",
"geometry": "[[14.16, 57.77], ... , [14.16, 57.77]]",
"$metadata": {
"$model": "dtmi:org:w3id:rec:Building;1"
}
},
{
"$dtId": "UpperFloor",
"$etag": "W/\"3d904969-d842-4bf0-b1f6-7ff6b687460c\"",
"levelNumber": 2,
"$metadata": {
"$model": "dtmi:org:w3id:rec:Level;1"
}
},
{
"$dtId": "LowerFloor",
"$etag": "W/\"459c63ee-04d7-4031-91fb-e50e64a5d8b4\"",
"levelNumber": 1,
"geometry": "[[0.5, 0.5], ... , [15.5, 15.5]]",
"$metadata": {
"$model": "dtmi:org:w3id:rec:Level;1"
}
},
{
"$dtId": "AtticFloor",
"$etag": "W/\"ea99986e-30a3-4ac8-ba9e-54d4fe163e55\"",
"$metadata": {
"$model": "dtmi:org:w3id:rec:Level;1"
}
},
{
"$dtId": "CostelloRealEstate",
"$etag": "W/\"400fb626-1ded-49bc-8d20-6ac6123fe6c4\"",
"$metadata": {
"$model": "dtmi:org:w3id:rec:Company;1"
}
},
{
"$dtId": "Initech",
"$etag": "W/\"db553c47-a3da-4f01-b0c6-d4f85bc9a236\"",
"$metadata": {
"$model": "dtmi:org:w3id:rec:Company;1"
}
},
{
"$dtId": "LumberghInc",
"$etag": "W/\"cc518ea3-90a0-4264-9a49-80f6155792da\"",
"$metadata": {
"$model": "dtmi:org:w3id:rec:Company;1"
}
},
{
"$dtId": "120",
"$etag": "W/\"d1db10f1-a098-4c5d-8e2f-092e8c11f418\"",
"geometry": "[[4.0, 2.5], ... , [4.0, 2.5]]",
"$metadata": {
"$model": "dtmi:org:w3id:rec:Room;1"
}
},
{
"$dtId": "121",
"$etag": "W/\"de627e80-7ec8-438f-a06b-6eed138a53f6\"",
"$metadata": {
"$model": "dtmi:org:w3id:rec:Room;1"
}
},
{
"$dtId": "122",
"$etag": "W/\"6684da81-1756-4cc5-9301-cd8aa60638ab\"",
"$metadata": {
"$model": "dtmi:org:w3id:rec:Room;1"
}
},
{
"$dtId": "123",
"$etag": "W/\"ba40792d-7a5d-4828-86cb-82e5f5b0d169\"",
"$metadata": {
"$model": "dtmi:org:w3id:rec:Room;1"
}
},
{
"$dtId": "124",
"$etag": "W/\"9a17f209-d862-4857-ae31-be650c4c68d5\"",
"$metadata": {
"$model": "dtmi:org:w3id:rec:Room;1"
}
},
{
"$dtId": "JohnDoe",
"$etag": "W/\"0b86cc72-9c8d-420d-a65c-da1253a50c27\"",
"$metadata": {
"$model": "dtmi:org:w3id:rec:Person;1"
}
},
{
"$dtId": "JaneDoe",
"$etag": "W/\"ff575ee8-10e5-4b8d-a3f2-c95a1a1db4c8\"",
"$metadata": {
"$model": "dtmi:org:w3id:rec:Person;1"
}
},
{
"$dtId": "Apartment1",
"$etag": "W/\"b3fde95a-add6-4f10-8d8e-fdd94d9bdff1\"",
"$metadata": {
"$model": "dtmi:org:w3id:rec:Apartment;1"
}
},
{
"$dtId": "Apartment2",
"$etag": "W/\"5bac6a1a-fef9-428d-84cf-5ff9a1b472bf\"",
"$metadata": {
"$model": "dtmi:org:w3id:rec:Apartment;1"
}
},
{
"$dtId": "Lease1",
"$etag": "W/\"016a73c9-3eb2-46ac-8021-1e8ffa02c7f1\"",
"$metadata": {
"$model": "dtmi:org:w3id:rec:Lease;1"
}
},
{
"$dtId": "Lease2",
"$etag": "W/\"1afe7baf-a8be-43c7-8aea-f8cd58fa4ae0\"",
"start": "2022-01-01T08:00:00Z",
"$metadata": {
"$model": "dtmi:org:w3id:rec:Lease;1"
}
},
{
"$dtId": "UpperFloorLease",
"$etag": "W/\"1bb4cc46-1f66-4265-b13d-e83c3dcea198\"",
"$metadata": {
"$model": "dtmi:org:w3id:rec:Lease;1"
}
},
{
"$dtId": "AtticLease",
"$etag": "W/\"2f19f0f0-8e81-456b-815c-000791a03670\"",
"end": "2022-12-31T23:59:59Z",
"start": "2015-07-01T08:00:00Z",
"$metadata": {
"$model": "dtmi:org:w3id:rec:Lease;1"
}
}
],
"relationships": [
{
"$relationshipId": "6fea7ce8-1827-4d6f-8773-dc42ffd124b5",
"$sourceId": "CostelloHeights",
"$targetId": "UpperFloor",
"$relationshipName": "hasPart",
"$etag": "W/\"fbbb0925-b5a2-4221-ad4e-4eb45e6311ef\""
},
{
"$relationshipId": "5451cb07-4a2c-4b0e-b2f8-a81f777e85c6",
"$sourceId": "CostelloHeights",
"$targetId": "LowerFloor",
"$relationshipName": "hasPart",
"$etag": "W/\"99b9f7b6-a150-4923-952f-f08f14bf08be\""
},
{
"$relationshipId": "52a97c6b-3f2e-4c8b-b93c-de854836e4c4",
"$sourceId": "CostelloHeights",
"$targetId": "CostelloRealEstate",
"$relationshipName": "ownedBy",
"$etag": "W/\"c0edc873-c1ef-441f-9cd0-36425f5fda47\""
},
{
"$relationshipId": "1c9beca2-4a8c-45e9-b674-a0c5af9095cf",
"$sourceId": "CostelloHeights",
"$targetId": "AtticFloor",
"$relationshipName": "hasPart",
"$etag": "W/\"0ccbefbe-1558-4353-95ee-a74bf4864e03\""
},
{
"$relationshipId": "ecd6ee86-9a5a-4622-b49b-c7f1152fd9b2",
"$sourceId": "LowerFloor",
"$targetId": "120",
"$relationshipName": "hasPart",
"$etag": "W/\"c40a3d21-422a-4266-adef-d227e91a5b86\""
},
{
"$relationshipId": "68ced7c1-331c-445f-bf0b-a6210e712711",
"$sourceId": "LowerFloor",
"$targetId": "121",
"$relationshipName": "hasPart",
"$etag": "W/\"f00d1bf6-a19c-41ba-b252-03e991ee6686\""
},
{
"$relationshipId": "4355b6e6-594d-4822-b998-10f458416a67",
"$sourceId": "LowerFloor",
"$targetId": "122",
"$relationshipName": "hasPart",
"$etag": "W/\"ffb8efd0-d4ff-4ab3-822f-20033428b831\""
},
{
"$relationshipId": "10be59cf-d2c4-44f6-af5d-fdacaa17bcff",
"$sourceId": "LowerFloor",
"$targetId": "123",
"$relationshipName": "hasPart",
"$etag": "W/\"4dd04bc8-4597-4f34-bd44-786badbf352b\""
},
{
"$relationshipId": "dc5b29bc-3d05-413e-8ab2-7aff6e65db32",
"$sourceId": "LowerFloor",
"$targetId": "124",
"$relationshipName": "hasPart",
"$etag": "W/\"193d754d-bbd8-4c00-b64f-00b1fce90ded\""
},
{
"$relationshipId": "da803177-4322-49aa-8935-afa3a184b79a",
"$sourceId": "Lease1",
"$targetId": "Apartment1",
"$relationshipName": "leaseOf",
"$etag": "W/\"279614fe-1899-4239-a989-cc5426288407\""
},
{
"$relationshipId": "52df1cd8-32ae-4032-8811-e3a12d29b8e4",
"$sourceId": "Lease1",
"$targetId": "JohnDoe",
"$relationshipName": "leasee",
"$etag": "W/\"8a0a6e04-369f-4199-9bae-535138debd7c\""
},
{
"$relationshipId": "e94e8378-c54a-40f8-9e4e-a6d63438bb9b",
"$sourceId": "Lease1",
"$targetId": "CostelloRealEstate",
"$relationshipName": "leasor",
"$etag": "W/\"a756eff8-55f9-418b-a704-f0ba88ebe812\""
},
{
"$relationshipId": "5bbb7b2d-4e7a-4b1c-870c-2a94554a973c",
"$sourceId": "Lease2",
"$targetId": "CostelloRealEstate",
"$relationshipName": "leasor",
"$etag": "W/\"d3a1db30-f152-46fb-a164-4521506e6ca4\""
},
{
"$relationshipId": "1e8c2968-c301-4dfa-912a-8d06e61da650",
"$sourceId": "Lease2",
"$targetId": "JaneDoe",
"$relationshipName": "leasee",
"$etag": "W/\"24b30c8d-23ea-4302-a5de-376afdb0fe99\""
},
{
"$relationshipId": "03a89721-f08e-4fde-b704-0ed28d6de99e",
"$sourceId": "Lease2",
"$targetId": "Apartment2",
"$relationshipName": "leaseOf",
"$etag": "W/\"e31f06b9-4ec0-46a3-a763-c31a45c0db7e\""
},
{
"$relationshipId": "72422cb2-b93e-4500-aedc-2957d9a64814",
"$sourceId": "Apartment1",
"$targetId": "120",
"$relationshipName": "includes",
"$etag": "W/\"09e7f42f-246e-4646-a02f-e62253234655\""
},
{
"$relationshipId": "82884024-788e-4069-b1f5-16f04aa33be5",
"$sourceId": "Apartment1",
"$targetId": "121",
"$relationshipName": "includes",
"$etag": "W/\"46e9396b-fea1-4434-96c0-0bd0284ea3cc\""
},
{
"$relationshipId": "69c44a6c-52b7-47a5-9fcf-c07663f637e8",
"$sourceId": "Apartment2",
"$targetId": "122",
"$relationshipName": "includes",
"$etag": "W/\"9c1e120e-11c0-459a-a3a5-35af9d9b84f9\""
},
{
"$relationshipId": "6d945479-ca06-44db-a151-6ba6c44e78fa",
"$sourceId": "Apartment2",
"$targetId": "123",
"$relationshipName": "includes",
"$etag": "W/\"5aaec31c-b645-41ca-b698-8b0dde28dc90\""
},
{
"$relationshipId": "7e3d1b50-cec9-4e59-96e3-5bb576aa32f3",
"$sourceId": "Apartment2",
"$targetId": "124",
"$relationshipName": "includes",
"$etag": "W/\"a42bff68-bea1-4546-9e4d-d32e8556f7c4\""
},
{
"$relationshipId": "667f3a8b-baaf-46b3-a6e6-bae6f907ad60",
"$sourceId": "UpperFloorLease",
"$targetId": "UpperFloor",
"$relationshipName": "leaseOf",
"$etag": "W/\"8be3936e-c1e9-4894-bdd5-f1452f40dfcf\""
},
{
"$relationshipId": "23368da3-ea7a-45c6-89d6-9bde8486b308",
"$sourceId": "UpperFloorLease",
"$targetId": "Initech",
"$relationshipName": "leasee",
"$etag": "W/\"196ba74b-a984-4330-b9a0-d973ac1c2978\""
},
{
"$relationshipId": "68720ba2-85fa-4ee7-a05c-2622c33324d0",
"$sourceId": "UpperFloorLease",
"$targetId": "CostelloRealEstate",
"$relationshipName": "leasor",
"$etag": "W/\"da5f3c2d-7209-4fee-bb38-ca2d40ebe4f9\""
},
{
"$relationshipId": "1907c610-eb41-4b29-820f-b765e55d94d1",
"$sourceId": "AtticLease",
"$targetId": "AtticFloor",
"$relationshipName": "leaseOf",
"$etag": "W/\"4a0c7ee0-c0c5-4dc3-9976-0c93fec973e0\""
},
{
"$relationshipId": "3c5af3ec-5c3d-443a-9cfb-a3361eafcf11",
"$sourceId": "AtticLease",
"$targetId": "LumberghInc",
"$relationshipName": "leasee",
"$etag": "W/\"54ca5a82-d22d-4241-8ec2-d09bbb119bb6\""
},
{
"$relationshipId": "69edf208-6575-453c-8462-5ab6c3f42091",
"$sourceId": "AtticLease",
"$targetId": "CostelloRealEstate",
"$relationshipName": "leasor",
"$etag": "W/\"b1777032-f1e0-4b2e-a687-32cf3c9fa4f7\""
}
]
}
}