725 lines
18 KiB
Markdown
725 lines
18 KiB
Markdown
|
|
# Infrastructure Object Model (IOM) v1.0
|
||
|
|
|
||
|
|
> Ett universellt språk för fysisk infrastruktur — från observation till kunskapsgraf.
|
||
|
|
> Status: Aktiv utveckling | Senast uppdaterad: 2026-06-26
|
||
|
|
> Produktionspaus: HÄVD 2026-06-25
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Sammanfattning
|
||
|
|
|
||
|
|
IOM är en tio-lagers modell för att representera, identifiera, observera och analysera fysisk infrastruktur. Modellen är inspirerad av industriella artikelnummeringssystem (Volkswagen-koncernen) och anpassad för den byggda miljön.
|
||
|
|
|
||
|
|
**Kärnprincip:** Objektet förändras aldrig. Endast observationerna förändras.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Lager 1 — Objektshierarkin (Taxonomi)
|
||
|
|
|
||
|
|
### Struktur
|
||
|
|
|
||
|
|
```
|
||
|
|
Domän
|
||
|
|
├── System
|
||
|
|
│ ├── Delsystem
|
||
|
|
│ │ ├── Objekt
|
||
|
|
│ │ │ ├── Komponent
|
||
|
|
│ │ │ │ └── Detalj
|
||
|
|
```
|
||
|
|
|
||
|
|
### Exempel: Transport
|
||
|
|
|
||
|
|
```
|
||
|
|
TRN (Transport)
|
||
|
|
├── BRG (Broar)
|
||
|
|
│ ├── CBR (Betongbro)
|
||
|
|
│ │ ├── ABT (Brofäste)
|
||
|
|
│ │ │ ├── FND (Fundament)
|
||
|
|
│ │ │ ├── DRN (Dränering)
|
||
|
|
│ │ │ └── BLT (Bultförband)
|
||
|
|
│ │ ├── DCK (Brodäck)
|
||
|
|
│ │ │ ├── SUR (Betongyta)
|
||
|
|
│ │ │ ├── EXP (Expansionsfog)
|
||
|
|
│ │ │ └── RAL (Räcke)
|
||
|
|
│ │ └── PIE (Brobane)
|
||
|
|
│ │ ├── SUB (Påle)
|
||
|
|
│ │ └── CAP (Pålhuv)
|
||
|
|
```
|
||
|
|
|
||
|
|
### Exempel: Energi
|
||
|
|
|
||
|
|
```
|
||
|
|
ENE (Energi)
|
||
|
|
├── DST (Distribution)
|
||
|
|
│ ├── TRS (Transformatorstation)
|
||
|
|
│ │ ├── TRN (Transformator)
|
||
|
|
│ │ ├── FND (Fundament)
|
||
|
|
│ │ ├── FNC (Stängsel)
|
||
|
|
│ │ │ ├── GAT (Grind)
|
||
|
|
│ │ │ └── SGN (Skyltning)
|
||
|
|
│ │ └── BSH (Busset)
|
||
|
|
│ ├── EVC (Laddinfrastruktur)
|
||
|
|
│ │ ├── CHA (Laddstation)
|
||
|
|
│ │ │ ├── FND (Fundament)
|
||
|
|
│ │ │ ├── POL (Stolpe)
|
||
|
|
│ │ │ ├── DSP (Display)
|
||
|
|
│ │ │ ├── RFID (RFID-läsare)
|
||
|
|
│ │ │ ├── TRM (Kortterminal)
|
||
|
|
│ │ │ ├── CBL (CCS-kabel)
|
||
|
|
│ │ │ ├── T2C (Type2-kabel)
|
||
|
|
│ │ │ ├── CAM (Kamera)
|
||
|
|
│ │ │ ├── LGT (Belysning)
|
||
|
|
│ │ │ ├── SGN (Skylt)
|
||
|
|
│ │ │ └── BOL (Skyddspollare)
|
||
|
|
│ │ └── CAB (Kabelskåp)
|
||
|
|
```
|
||
|
|
|
||
|
|
### Kodstandard
|
||
|
|
|
||
|
|
- **3 bokstäver** per nivå
|
||
|
|
- **Versaler** (A-Z)
|
||
|
|
- **Unika inom förälder**
|
||
|
|
- **Engelska förkortningar** (industristandard)
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Lager 2 — Global Object ID (GOID)
|
||
|
|
|
||
|
|
### Format
|
||
|
|
|
||
|
|
```
|
||
|
|
[DOM]-[SYS]-[SUB]-[OBJ]-[COMP]-[DET]-[SEQ]
|
||
|
|
```
|
||
|
|
|
||
|
|
### Exempel
|
||
|
|
|
||
|
|
| ID | Tolkning |
|
||
|
|
|---|---|
|
||
|
|
| `TRN-BRG-ABT-CON-001` | Transport → Bro → Brofäste → Betong → Instans 1 |
|
||
|
|
| `ENE-EVC-CHA-AC22-003` | Energi → Laddinfra → Laddstation → AC 22kW → Gen 3 |
|
||
|
|
| `TRN-ROD-SGN-WAR-2847` | Transport → Väg → Varningsskylt → Vägarbete → Instans 2847 |
|
||
|
|
|
||
|
|
### Regler
|
||
|
|
|
||
|
|
- **Permanent**: ID ändras aldrig efter tilldelning
|
||
|
|
- **Unikt globalt**: Ingen kollision mellan domäner
|
||
|
|
- **Sekvens**: Löpnummer inom lägsta nivå
|
||
|
|
- **Revision**: Hanteras separat (se Lager 6)
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Lager 3 — Objektets DNA (Metadata)
|
||
|
|
|
||
|
|
### Obligatoriska fält
|
||
|
|
|
||
|
|
| Fält | Typ | Exempel |
|
||
|
|
|---|---|---|
|
||
|
|
| `goid` | string | "TRN-BRG-ABT-CON-001" |
|
||
|
|
| `object_type` | enum | "abutment" |
|
||
|
|
| `material` | array | ["concrete_c35", "reinforcement_b500b"] |
|
||
|
|
| `dimensions` | object | `{length: 12.5, width: 3.2, height: 2.1, unit: "m"}` |
|
||
|
|
| `manufacturer` | string | "Skanska Concrete AB" |
|
||
|
|
| `manufacturing_year` | integer | 2018 |
|
||
|
|
| `installation_date` | date | "2019-03-15" |
|
||
|
|
| `design_lifespan` | integer (år) | 50 |
|
||
|
|
| `owner` | entity-ref | "kommun:stockholm" |
|
||
|
|
| `maintainer` | entity-ref | "entreprenor:ncc" |
|
||
|
|
| `standard` | string | "Eurocode 2" |
|
||
|
|
| `certification` | string | "CE-markt, EN 206" |
|
||
|
|
|
||
|
|
### Materialkatalog (urval)
|
||
|
|
|
||
|
|
```yaml
|
||
|
|
concrete:
|
||
|
|
- C20/25
|
||
|
|
- C30/37
|
||
|
|
- C35/45
|
||
|
|
- C40/50
|
||
|
|
|
||
|
|
steel:
|
||
|
|
- B500B
|
||
|
|
- S355
|
||
|
|
- galvanised_steel
|
||
|
|
|
||
|
|
composite:
|
||
|
|
- carbon_fiber
|
||
|
|
- glass_fiber
|
||
|
|
- aramid
|
||
|
|
|
||
|
|
timber:
|
||
|
|
- oak
|
||
|
|
- pine
|
||
|
|
- larch
|
||
|
|
- glulam
|
||
|
|
|
||
|
|
stone:
|
||
|
|
- granite
|
||
|
|
- marble
|
||
|
|
- sandstone
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Lager 4 — Komponentstruktur (BOM)
|
||
|
|
|
||
|
|
### Koncept: Infrastructure Bill of Materials
|
||
|
|
|
||
|
|
Varje objekt har en komplett komponentlista — precis som inom fordonsindustrin.
|
||
|
|
|
||
|
|
### Exempel: Gatlykta
|
||
|
|
|
||
|
|
```yaml
|
||
|
|
goid: "TRN-LGT-STR-LED-0001"
|
||
|
|
name: "Gatlykta Drottningholm"
|
||
|
|
components:
|
||
|
|
- goid: "TRN-LGT-FND-CON-0001"
|
||
|
|
name: "Fundament"
|
||
|
|
quantity: 1
|
||
|
|
unit: "st"
|
||
|
|
|
||
|
|
- goid: "TRN-LGT-BLT-GAL-0001"
|
||
|
|
name: "Förankringsbultar M24"
|
||
|
|
quantity: 4
|
||
|
|
unit: "st"
|
||
|
|
|
||
|
|
- goid: "TRN-LGT-POL-GAL-0001"
|
||
|
|
name: "Stolpe 6m"
|
||
|
|
quantity: 1
|
||
|
|
unit: "st"
|
||
|
|
|
||
|
|
- goid: "TRN-LGT-COV-ALU-0001"
|
||
|
|
name: "Kopplingslucka"
|
||
|
|
quantity: 1
|
||
|
|
unit: "st"
|
||
|
|
|
||
|
|
- goid: "TRN-LGT-ELC-COP-0001"
|
||
|
|
name: "Elanslutning"
|
||
|
|
quantity: 1
|
||
|
|
unit: "st"
|
||
|
|
|
||
|
|
- goid: "TRN-LGT-FUS-STD-0001"
|
||
|
|
name: "Säkring"
|
||
|
|
quantity: 1
|
||
|
|
unit: "st"
|
||
|
|
|
||
|
|
- goid: "TRN-LGT-ARM-LED-0001"
|
||
|
|
name: "Armatur LED"
|
||
|
|
quantity: 1
|
||
|
|
unit: "st"
|
||
|
|
|
||
|
|
- goid: "TRN-LGT-DRV-LED-0001"
|
||
|
|
name: "Drivdon"
|
||
|
|
quantity: 1
|
||
|
|
unit: "st"
|
||
|
|
|
||
|
|
- goid: "TRN-LGT-SNS-PHO-0001"
|
||
|
|
name: "Fotocell"
|
||
|
|
quantity: 1
|
||
|
|
unit: "st"
|
||
|
|
|
||
|
|
- goid: "TRN-LGT-SGN-REF-0001"
|
||
|
|
name: "Märkskylt"
|
||
|
|
quantity: 1
|
||
|
|
unit: "st"
|
||
|
|
```
|
||
|
|
|
||
|
|
### Regler
|
||
|
|
|
||
|
|
- Varje komponent är ett eget objekt med eget GOID
|
||
|
|
- Komponenter kan ha egna komponenter (nästling)
|
||
|
|
- Kvantitet och enhet specificeras alltid
|
||
|
|
- Komponentens livslängd kan skilja sig från förälderns
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Lager 5 — Standardiserade egenskaper
|
||
|
|
|
||
|
|
### Grundschema (alla objekt)
|
||
|
|
|
||
|
|
| Egenskap | Typ | Beskrivning |
|
||
|
|
|---|---|---|
|
||
|
|
| `material` | array | Materialkomposition |
|
||
|
|
| `dimension` | object | Längd, bredd, höjd, diameter |
|
||
|
|
| `color` | string | RAL-kod eller beskrivning |
|
||
|
|
| `geometry` | geojson | Punkt, linje eller polygon |
|
||
|
|
| `location` | object | `{lat, lng, elevation, accuracy}` |
|
||
|
|
| `orientation` | float | Grader från nord (0-360) |
|
||
|
|
| `condition` | integer 1-5 | Skickgradering |
|
||
|
|
| `risk_level` | integer 1-5 | Sammanlagd risk |
|
||
|
|
| `age_years` | integer | Beräknad ålder |
|
||
|
|
| `function_status` | enum | "operational", "degraded", "failed", "unknown" |
|
||
|
|
| `accessibility` | enum | "public", "restricted", "private" |
|
||
|
|
|
||
|
|
### Skickgradering (1-5)
|
||
|
|
|
||
|
|
| Nivå | Beskrivning | Åtgärdstid |
|
||
|
|
|---|---|---|
|
||
|
|
| 1 | Utmärkt | Ingen åtgärd |
|
||
|
|
| 2 | Gott | Planerat underhåll |
|
||
|
|
| 3 | Tillfredsställande | Underhåll inom 12 mån |
|
||
|
|
| 4 | Dåligt | Åtgärd inom 3 mån |
|
||
|
|
| 5 | Kritiskt | Omedelbar åtgärd |
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Lager 6 — Observationer
|
||
|
|
|
||
|
|
### Kärnprincip
|
||
|
|
|
||
|
|
> Objektet förändras aldrig. Observationerna förändras.
|
||
|
|
|
||
|
|
### Struktur
|
||
|
|
|
||
|
|
```yaml
|
||
|
|
observation:
|
||
|
|
id: "OBS-2026-0012847"
|
||
|
|
timestamp: "2026-06-26T09:15:00Z"
|
||
|
|
observer: "zoomer:anna_k" # eller sensor, ai, etc.
|
||
|
|
object_goid: "TRN-BRG-ABT-CON-001"
|
||
|
|
|
||
|
|
# Vad observerades
|
||
|
|
findings:
|
||
|
|
- type: "crack"
|
||
|
|
code: "1300" # Se Lager 7
|
||
|
|
description: "Spricka i betong"
|
||
|
|
measurement: "3 mm"
|
||
|
|
location: "northeast_corner"
|
||
|
|
confidence: 0.98 # AI-konfidens
|
||
|
|
|
||
|
|
- type: "corrosion"
|
||
|
|
code: "1100"
|
||
|
|
description: "Ytrost på armering"
|
||
|
|
measurement: "15% coverage"
|
||
|
|
confidence: 0.87
|
||
|
|
|
||
|
|
# Media
|
||
|
|
media:
|
||
|
|
- type: "image"
|
||
|
|
url: "https://.../img_2847.jpg"
|
||
|
|
timestamp: "2026-06-26T09:15:03Z"
|
||
|
|
geotag: {lat: 59.3293, lng: 18.0686}
|
||
|
|
|
||
|
|
- type: "depth_map"
|
||
|
|
url: "https://.../depth_2847.bin"
|
||
|
|
|
||
|
|
# Kontext
|
||
|
|
weather:
|
||
|
|
temperature: 22
|
||
|
|
conditions: "sunny"
|
||
|
|
|
||
|
|
# AI-analys
|
||
|
|
ai_analysis:
|
||
|
|
model: "infrastructure-v3.2"
|
||
|
|
overall_condition: 3
|
||
|
|
recommended_action: "schedule_inspection"
|
||
|
|
next_observation_due: "2026-09-26"
|
||
|
|
```
|
||
|
|
|
||
|
|
### Historikexempel
|
||
|
|
|
||
|
|
```yaml
|
||
|
|
object: "TRN-BRG-ABT-CON-001"
|
||
|
|
observations:
|
||
|
|
- id: "OBS-2027-004921"
|
||
|
|
date: "2027-08-14"
|
||
|
|
findings: [{type: "crack", measurement: "3 mm", confidence: 0.98}]
|
||
|
|
condition: 3
|
||
|
|
|
||
|
|
- id: "OBS-2028-006633"
|
||
|
|
date: "2028-03-22"
|
||
|
|
findings:
|
||
|
|
- {type: "crack", measurement: "5 mm", confidence: 0.95}
|
||
|
|
- {type: "corrosion", measurement: "light", confidence: 0.82}
|
||
|
|
- {type: "water_leakage", confidence: 0.91}
|
||
|
|
condition: 4
|
||
|
|
|
||
|
|
- id: "OBS-2030-009104"
|
||
|
|
date: "2030-06-10"
|
||
|
|
findings: [{type: "repaired", confidence: 1.0}]
|
||
|
|
condition: 2
|
||
|
|
notes: "Renoverad: spricka injekterad, armering rengjord och skyddad"
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Lager 7 — Felklassificering
|
||
|
|
|
||
|
|
### Hierarkisk kodstruktur
|
||
|
|
|
||
|
|
```
|
||
|
|
1000 — Korrosion
|
||
|
|
├── 1100 — Ytrost
|
||
|
|
├── 1200 — Genomrost
|
||
|
|
└── 1250 — Galvanisk korrosion
|
||
|
|
|
||
|
|
1300 — Betongspricka
|
||
|
|
├── 1310 — Plastisk krympning
|
||
|
|
├── 1320 — Temperaturspricka
|
||
|
|
└── 1330 — Lastspricka
|
||
|
|
|
||
|
|
1400 — Påkörningsskada
|
||
|
|
├── 1410 — Ytskada
|
||
|
|
├── 1420 — Deformation
|
||
|
|
└── 1430 — Genomskjutning
|
||
|
|
|
||
|
|
1500 — Saknad komponent
|
||
|
|
├── 1510 — Stöld
|
||
|
|
├── 1520 — Ej installerad
|
||
|
|
└── 1530 — Avlägsnad
|
||
|
|
|
||
|
|
1600 — Lutning / Deformation
|
||
|
|
├── 1610 — Sättning
|
||
|
|
├── 1620 — Böjning
|
||
|
|
└── 1630 — Vridning
|
||
|
|
|
||
|
|
1700 — Vibration
|
||
|
|
├── 1710 — Mekanisk
|
||
|
|
└── 1720 — Aerodynamisk
|
||
|
|
|
||
|
|
1800 — Vegetation
|
||
|
|
├── 1810 — Blockerande
|
||
|
|
├── 1820 — Rotinträngning
|
||
|
|
└── 1830 — Fuktbevarande
|
||
|
|
|
||
|
|
1900 — Blockering
|
||
|
|
├── 1910 — Fysisk
|
||
|
|
├── 1920 — Digital
|
||
|
|
└── 1930 — Organisk
|
||
|
|
```
|
||
|
|
|
||
|
|
### Användning
|
||
|
|
|
||
|
|
- AI väljer kod, inte beskrivning
|
||
|
|
- Mänsklig granskare kan justera
|
||
|
|
- Koder är flerspråkiga (samma kod, lokal beskrivning)
|
||
|
|
- Historik spåras per kod
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Lager 8 — Riskmodell
|
||
|
|
|
||
|
|
### Riskdimensioner
|
||
|
|
|
||
|
|
| Dimension | Skala | Exempel: Livboj saknas |
|
||
|
|
|---|---|---|
|
||
|
|
| `safety` | 0-10 | 10 (direkt livsfara) |
|
||
|
|
| `economic` | 0-10 | 2 (låg kostnad) |
|
||
|
|
| `environmental` | 0-10 | 0 (ingen miljöpåverkan) |
|
||
|
|
| `operational` | 0-10 | 1 (minimal driftpåverkan) |
|
||
|
|
| `legal` | 0-10 | 8 (regleringsbrott) |
|
||
|
|
| `aesthetic` | 0-10 | 3 (liten visuell påverkan) |
|
||
|
|
|
||
|
|
### Sammanlagd risk
|
||
|
|
|
||
|
|
```python
|
||
|
|
def calculate_risk(observation, object_context):
|
||
|
|
"""
|
||
|
|
Viktad summa baserad på objektstyp och miljö.
|
||
|
|
En brofästes säkerhetsrisk väger tyngre än en gatlyktas.
|
||
|
|
"""
|
||
|
|
weights = object_context.risk_weights # Definierad per objekttyp
|
||
|
|
|
||
|
|
total = sum(
|
||
|
|
observation.risk_scores[dim] * weights[dim]
|
||
|
|
for dim in RISK_DIMENSIONS
|
||
|
|
) / sum(weights.values())
|
||
|
|
|
||
|
|
return min(10, max(0, total))
|
||
|
|
```
|
||
|
|
|
||
|
|
### Riskmatris (exempel)
|
||
|
|
|
||
|
|
| Objekt | Säkerhet | Ekonomi | Miljö | Drift | Juridik | Estetik | **Total** |
|
||
|
|
|---|---|---|---|---|---|---|---|
|
||
|
|
| Brofäste, spricka 5mm | 8 | 6 | 2 | 5 | 4 | 1 | **5.2** |
|
||
|
|
| Gatlykta, trasig | 2 | 3 | 1 | 2 | 1 | 4 | **2.2** |
|
||
|
|
| Laddstation, kabel skadad | 9 | 5 | 1 | 7 | 6 | 2 | **6.3** |
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Lager 9 — Relationer (Kunskapsgraf)
|
||
|
|
|
||
|
|
### Relationstyper
|
||
|
|
|
||
|
|
```yaml
|
||
|
|
relations:
|
||
|
|
# Fysiska
|
||
|
|
connected_to: "Ansluten till"
|
||
|
|
part_of: "Del av"
|
||
|
|
contains: "Innehåller"
|
||
|
|
supports: "Bär upp"
|
||
|
|
crosses: "Korsar"
|
||
|
|
adjacent_to: "Gränsar till"
|
||
|
|
|
||
|
|
# Logiska
|
||
|
|
depends_on: "Beror på"
|
||
|
|
replaces: "Ersätter"
|
||
|
|
compatible_with: "Kompatibel med"
|
||
|
|
|
||
|
|
# Organisatoriska
|
||
|
|
owned_by: "Ägs av"
|
||
|
|
maintained_by: "Underhålls av"
|
||
|
|
operated_by: "Driftsätts av"
|
||
|
|
insured_by: "Försäkrad av"
|
||
|
|
|
||
|
|
# Temporala
|
||
|
|
preceded_by: "Föregicks av"
|
||
|
|
succeeded_by: "Efterträddes av"
|
||
|
|
```
|
||
|
|
|
||
|
|
### Exempel: Bro som kunskapsgraf
|
||
|
|
|
||
|
|
```yaml
|
||
|
|
object: "TRN-BRG-ABT-CON-001"
|
||
|
|
relations:
|
||
|
|
- type: "part_of"
|
||
|
|
target: "TRN-BRG-CON-001"
|
||
|
|
target_name: "Bromöllan bro"
|
||
|
|
|
||
|
|
- type: "connected_to"
|
||
|
|
target: "TRN-ROD-ASP-001"
|
||
|
|
target_name: "Europaväg 6"
|
||
|
|
|
||
|
|
- type: "crosses"
|
||
|
|
target: "ENV-WAT-RIV-001"
|
||
|
|
target_name: "Rönne å"
|
||
|
|
|
||
|
|
- type: "owned_by"
|
||
|
|
target: "org:trafikverket"
|
||
|
|
|
||
|
|
- type: "maintained_by"
|
||
|
|
target: "org:skanska"
|
||
|
|
|
||
|
|
- type: "contains"
|
||
|
|
target: "TRN-BRG-ABT-DRN-001"
|
||
|
|
target_name: "Brofäste dränering"
|
||
|
|
```
|
||
|
|
|
||
|
|
### Grafquery (exempel)
|
||
|
|
|
||
|
|
```cypher
|
||
|
|
// Hitta alla objekt som underhålls av samma entreprenör
|
||
|
|
// och har risknivå > 7
|
||
|
|
MATCH (o:Object)-[:maintained_by]->(e:Entity {name: "Skanska"})
|
||
|
|
MATCH (o)<-[:observed_on]-(obs:Observation)
|
||
|
|
WHERE obs.risk_level > 7
|
||
|
|
RETURN o.goid, o.name, obs.risk_level, obs.date
|
||
|
|
ORDER BY obs.risk_level DESC
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Lager 10 — Digital tvilling
|
||
|
|
|
||
|
|
### Koncept
|
||
|
|
|
||
|
|
Varje stad blir en levande graf där:
|
||
|
|
- Noder = objekt (Lager 1-5)
|
||
|
|
- Kanter = relationer (Lager 9)
|
||
|
|
- Tidsdimension = observationer (Lager 6)
|
||
|
|
- Egenskaper = tillstånd (Lager 5, 7, 8)
|
||
|
|
|
||
|
|
### Hierarkisk vy
|
||
|
|
|
||
|
|
```
|
||
|
|
Stad (Stockholm)
|
||
|
|
└── Transportnät
|
||
|
|
└── Broar (47 st)
|
||
|
|
└── Bromöllan bro
|
||
|
|
└── Brofäste #1 (TRN-BRG-ABT-CON-001)
|
||
|
|
├── Betong: C35
|
||
|
|
├── Spricka (OBS-2028-006633)
|
||
|
|
│ ├── 5 mm
|
||
|
|
│ ├── AI confidence: 95%
|
||
|
|
│ └── Risk: 5.2
|
||
|
|
├── Renovering (OBS-2030-009104)
|
||
|
|
│ └── Status: reparerad
|
||
|
|
└── Rekommendation
|
||
|
|
└── Nästa inspektion: 2031-06-10
|
||
|
|
```
|
||
|
|
|
||
|
|
### Frågetyper som möjliggörs
|
||
|
|
|
||
|
|
1. **Tillståndsfrågor**
|
||
|
|
- "Visa alla broar i dåligt skick"
|
||
|
|
- "Hitta objekt med korrosionsrisk > 7"
|
||
|
|
|
||
|
|
2. **Prediktiva frågor**
|
||
|
|
- "Vilka objekt kommer troligen behöva åtgärd inom 12 månader?"
|
||
|
|
- "Trend för sprickbredd i brofästen byggda 2015-2020"
|
||
|
|
|
||
|
|
3. **Kontradiktionsfrågor**
|
||
|
|
- "Kommunen rapporterar 12 broar i gott skick — visa observationer"
|
||
|
|
- "Trafikverket säkerhetsklass 3 — visa objekt med risk > 8"
|
||
|
|
|
||
|
|
4. **Geografiska frågor**
|
||
|
|
- "Alla objekt inom 500m av väg E6 med underhållsbehov"
|
||
|
|
- "Värmekarta: korrosionsrisk per kommun"
|
||
|
|
|
||
|
|
5. **Ekonomiska frågor**
|
||
|
|
- "Uppskattad underhållskostnad nästa 5 år"
|
||
|
|
- "Avskrivningsvärde för objekt byggda 2000-2010"
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Integration med quiXzoom
|
||
|
|
|
||
|
|
### Dataflöde
|
||
|
|
|
||
|
|
```
|
||
|
|
Zoomer tar bild
|
||
|
|
↓
|
||
|
|
AI klassificerar → Felkod (Lager 7)
|
||
|
|
↓
|
||
|
|
Objekt identifieras → GOID (Lager 2) eller skapas
|
||
|
|
↓
|
||
|
|
Observation skapas → Lager 6
|
||
|
|
↓
|
||
|
|
Risk beräknas → Lager 8
|
||
|
|
↓
|
||
|
|
Relationer uppdateras → Lager 9
|
||
|
|
↓
|
||
|
|
Digital tvilling uppdateras → Lager 10
|
||
|
|
```
|
||
|
|
|
||
|
|
### Exempel: Mission "Smutsiga skyltfönster"
|
||
|
|
|
||
|
|
1. **Före observation**
|
||
|
|
- Objekt: `COM-FAC-WIN-GLA-2847` (existerar eller skapas)
|
||
|
|
- Metadata: `{material: "glass", dimensions: {w: 4.2, h: 2.1}}`
|
||
|
|
|
||
|
|
2. **Observation**
|
||
|
|
- `OBS-2026-0012847`: `{type: "dirt_accumulation", code: "2100", confidence: 0.94}`
|
||
|
|
- Bilder, GPS, timestamp
|
||
|
|
|
||
|
|
3. **Efter observation**
|
||
|
|
- Objektets tillstånd: `condition: 3`
|
||
|
|
- Risk: `aesthetic: 7` (påverkar butikens image)
|
||
|
|
- Relation: `owned_by → "org:hm_stores"`
|
||
|
|
- Nästa observation: `+30 dagar`
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Integration med aamos-ledger
|
||
|
|
|
||
|
|
### Objekt som tillgångar
|
||
|
|
|
||
|
|
```yaml
|
||
|
|
# IOM → Ledger
|
||
|
|
asset:
|
||
|
|
goid: "TRN-BRG-ABT-CON-001"
|
||
|
|
account: "1220" # Anläggningstillgångar
|
||
|
|
acquisition_value: 4500000 # SEK, men visas som USD i rapporter
|
||
|
|
depreciation_rate: 2 # 50 år
|
||
|
|
annual_depreciation: 90000
|
||
|
|
|
||
|
|
# Kopplat till IOM
|
||
|
|
object_type: "abutment"
|
||
|
|
installation_date: "2019-03-15"
|
||
|
|
design_lifespan: 50
|
||
|
|
|
||
|
|
# Bokföring
|
||
|
|
transactions:
|
||
|
|
- date: "2019-03-15"
|
||
|
|
type: "acquisition"
|
||
|
|
amount: 4500000
|
||
|
|
|
||
|
|
- date: "2026-12-31"
|
||
|
|
type: "depreciation"
|
||
|
|
amount: 90000
|
||
|
|
|
||
|
|
- date: "2030-06-10"
|
||
|
|
type: "maintenance"
|
||
|
|
amount: 350000
|
||
|
|
note: "Sprickreparation"
|
||
|
|
```
|
||
|
|
|
||
|
|
### Observationer som bokföringshändelser
|
||
|
|
|
||
|
|
| Observation | Bokföringshändelse |
|
||
|
|
|---|---|
|
||
|
|
| Renovering | Underhållskostnad (konto 6110) |
|
||
|
|
| Komponentbyte | Nyanskaffning eller underhåll |
|
||
|
|
| Skada (försäkringsärende) | Försäkringsersättning |
|
||
|
|
| Risknivå > 8 | Avskrivningsprövning |
|
||
|
|
| Objekt avvecklat | Avyttring eller skrotning |
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Bilaga A: Domänkoder (urval)
|
||
|
|
|
||
|
|
| Kod | Domän | Beskrivning |
|
||
|
|
|---|---|---|
|
||
|
|
| TRN | Transport | Vägar, järnvägar, broar, tunnlar |
|
||
|
|
| ENE | Energi | El, gas, värme, laddinfrastruktur |
|
||
|
|
| TEL | Telekom | Master, kablar, fiber, 5G |
|
||
|
|
| VAS | Vatten & Avlopp | Ledningar, pumpstationer, reningsverk |
|
||
|
|
| HAM | Hamn & Sjöfart | Kajer, farleder, bouyer |
|
||
|
|
| TRS | Tåg & Spår | Räls, kontaktledning, signaler |
|
||
|
|
| OFF | Offentligt | Pumpar, nödtelefoner, toaletter |
|
||
|
|
| BEL | Belysning | Gatubelysning, trafiksignaler |
|
||
|
|
| BYG | Byggnad | Fasader, tak, entréer, fönster |
|
||
|
|
| KRI | Kritisk infra | Försvar, sjukhus, datacenter |
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Bilaga B: JSON-Schema (observation)
|
||
|
|
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
||
|
|
"title": "IOM Observation",
|
||
|
|
"type": "object",
|
||
|
|
"required": ["id", "timestamp", "object_goid", "findings"],
|
||
|
|
"properties": {
|
||
|
|
"id": {"type": "string", "pattern": "^OBS-[0-9]{4}-[0-9]{7}$"},
|
||
|
|
"timestamp": {"type": "string", "format": "date-time"},
|
||
|
|
"observer": {"type": "string"},
|
||
|
|
"object_goid": {"type": "string", "pattern": "^[A-Z]{3}(-[A-Z]{3})+-[0-9]+$"},
|
||
|
|
"findings": {
|
||
|
|
"type": "array",
|
||
|
|
"items": {
|
||
|
|
"type": "object",
|
||
|
|
"required": ["type", "code"],
|
||
|
|
"properties": {
|
||
|
|
"type": {"type": "string"},
|
||
|
|
"code": {"type": "string", "pattern": "^[0-9]{4}$"},
|
||
|
|
"description": {"type": "string"},
|
||
|
|
"measurement": {"type": "string"},
|
||
|
|
"confidence": {"type": "number", "minimum": 0, "maximum": 1}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"media": {
|
||
|
|
"type": "array",
|
||
|
|
"items": {
|
||
|
|
"type": "object",
|
||
|
|
"properties": {
|
||
|
|
"type": {"enum": ["image", "video", "depth_map", "thermal", "lidar"]},
|
||
|
|
"url": {"type": "string", "format": "uri"},
|
||
|
|
"timestamp": {"type": "string", "format": "date-time"}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"ai_analysis": {
|
||
|
|
"type": "object",
|
||
|
|
"properties": {
|
||
|
|
"model": {"type": "string"},
|
||
|
|
"overall_condition": {"type": "integer", "minimum": 1, "maximum": 5},
|
||
|
|
"recommended_action": {"type": "string"},
|
||
|
|
"next_observation_due": {"type": "string", "format": "date"}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Version
|
||
|
|
|
||
|
|
- **Version:** 1.0.0
|
||
|
|
- **Datum:** 2026-06-26
|
||
|
|
- **Författare:** Erik Svensson / Landvex
|
||
|
|
- **Nästa granskning:** 2026-07-26
|