@prefix : <#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix rec: <https://w3id.org/rec#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix unit: <https://qudt.org/vocab/unit#> .
@prefix geo: <http://www.w3.org/2003/01/geo/wgs84_pos#> .

<#> rdf:type owl:Ontology .


############################
### Building Extenstions ###
############################

# Classses
:Usage rdf:type owl:Class ;
    rdfs:label "Nutzung"@de .

# Object Properties
:usedAs rdf:type owl:ObjectProperty ;
    rdfs:label "genutzt als"@de ;
    rdfs:domain rec:Building ;
    rdfs:range :Usage .

:investor rdf:type owl:ObjectProperty ;
    rdfs:label "Investor"@de ;
    rdfs:domain rec:Building ;
    rdfs:Raumwärme rec:Agent .

:hasEnergyUsage rdf:type owl:ObjectProperty ;
    rdfs:label "hat Energieverbrauch"@de ;
    rdfs:domain rec:Building ;
    rdfs:range :EnergyNeed .

# Datatype Properties

:yearOfConstruction rdf:type owl:DatatypeProperty ;
    rdfs:label "Baujahr"@de ;
    rdfs:domain rec:Building ;
    rdfs:range xsd:integer .

:hasBuildingArea rdf:type owl:ObjectProperty ;
    rdfs:label "Gebäudefläche"@de ;
    rdfs:domain rec:Building ;
    rdfs:range unit:M2 .

:hasLandArea rdf:type owl:ObjectProperty ;
    rdfs:label "Grundstücksfläche"@de ;
    rdfs:domain rec:RealEstate ;
    rdfs:range unit:M2 .

:officeArea rdf:type owl:DatatypeProperty ;
    rdfs:label "Bürofläche"@de ;
    rdfs:domain rec:Building ;
    rdfs:range xsd:decimal .

:hasPVSystem rdf:type owl:DatatypeProperty ;
    rdfs:label "Hat Photovoltaik-Anlage"@de ;
    rdfs:comment "Gibt an, ob das Gebäude über eine Photovoltaikanlage verfügt."@de ;
    rdfs:domain rec:Building ;
    rdfs:range xsd:boolean .


##########################
### Energy Consumption ###
##########################

# Classes
:EnergyNeed rdf:type owl:Class ;
    rdfs:label "Energiebedarf"@de .

:NonRenewableEnergy rdf:type owl:Class ;
    rdfs:subClassOf :EnergyNeed ;
    rdfs:label "Nicht-regenerative Energie"@de .

:RenewableEnergy rdf:type owl:Class ;
    rdfs:subClassOf :EnergyNeed ;
    rdfs:label "Regenerative Energie"@de .

:EnergyGeneration rdf:type owl:Class ;
    rdfs:label "Energieerzeugung"@de .

:EnergyStorage rdf:type owl:Class ;
    rdfs:label "Energiespeicherung"@de .

:EnergyDistribution rdf:type owl:Class ;
    rdfs:label "Energieverteilung"@de .

:EnergyTransfer rdf:type owl:Class ;
    rdfs:label "Energieübergabe"@de .

:EnergyUsage rdf:type owl:Class ;
    rdfs:label "Energienutzung"@de .

:Environment rdf:type owl:Class ;
    rdfs:label "Umwelt"@de .

# Subclasses for NonRenewableEnergy
:Gas rdf:type owl:Class ;
    rdfs:subClassOf :NonRenewableEnergy ;
    rdfs:label "Gas"@de .

:Electricity rdf:type owl:Class ;
    rdfs:subClassOf :NonRenewableEnergy ;
    rdfs:label "Strom"@de .

# Subclasses for Electricity
:GridSupply rdf:type owl:Class ;
    rdfs:subClassOf :Electricity ;
    rdfs:label "Netzbezug"@de .

# Subclasses for RenewableEnergy
:Solar rdf:type owl:Class ;
    rdfs:subClassOf :RenewableEnergy ;
    rdfs:label "Solar"@de .

:AmbientHeat rdf:type owl:Class ;
    rdfs:subClassOf :RenewableEnergy ;
    rdfs:label "Umgebungswärme"@de .

:VentilationHeat rdf:type owl:Class ;
    rdfs:subClassOf :RenewableEnergy ;
    rdfs:label "Lüftungswärme"@de .

:PersonHeat rdf:type owl:Class ;
    rdfs:subClassOf :RenewableEnergy ;
    rdfs:label "Personen"@de .

:GroundwaterHeat rdf:type owl:Class ;
    rdfs:subClassOf :RenewableEnergy ;
    rdfs:label "Grundwasser"@de .

:WoodChips rdf:type owl:Class ;
    rdfs:subClassOf :RenewableEnergy ;
    rdfs:label "Hackschnitzel"@de .

# Subclasses for Solar
:SpaceHeating rdf:type owl:Class ;
    rdfs:subClassOf :Solar ;
    rdfs:label "Raumwärme"@de .

:Photovoltaic rdf:type owl:Class ;
    rdfs:subClassOf :Solar ;
    rdfs:label "Photovoltaik"@de .

# Subclasses for Photovoltaic
:SelfConsumption rdf:type owl:Class ;
    rdfs:subClassOf :Photovoltaic ;
    rdfs:label "Eigenverbrauch"@de .

:GridFeedIn rdf:type owl:Class ;
    rdfs:subClassOf :Photovoltaic ;
    rdfs:label "Netzeinspeisung"@de .

:HallHeatingFromWasteLoss rdf:type owl:Class ;
    rdfs:subClassOf :Photovoltaic ;
    rdfs:label "Raumwärme Halle durch Abwärmeverlust"@de .

:FrostProtectionHBWFromWasteLoss rdf:type owl:Class ;
    rdfs:subClassOf :Photovoltaic ;
    rdfs:label "Frostschutz HRL durch Abwärmeverlust"@de .

# Subclasses for EnergyGeneration
:HallLighting rdf:type owl:Class ;
    rdfs:subClassOf :EnergyGeneration ;
    rdfs:label "Beleuchtung Halle"@de .

:HeatGeneration rdf:type owl:Class ;
    rdfs:subClassOf :EnergyGeneration ;
    rdfs:label "Wärmeerzeugung"@de .

:HallHeat rdf:type owl:Class ;
    rdfs:subClassOf :EnergyGeneration ;
    rdfs:label "Wärme Halle"@de .

:HbwHeat rdf:type owl:Class ;
    rdfs:subClassOf :EnergyGeneration ;
    rdfs:label "Wärme HRL"@de .

# Subclasses for EnergyStorage
:ForkliftBatteryCharging rdf:type owl:Class ;
    rdfs:subClassOf :EnergyStorage ;
    rdfs:label "FFZ-Batterie-Ladung"@de .

:HeatStorage rdf:type owl:Class ;
    rdfs:subClassOf :EnergyStorage ;
    rdfs:label "Wärmespeicherung"@de .

# Subclasses for EnergyDistribution
:HeatDistribution rdf:type owl:Class ;
    rdfs:subClassOf :EnergyDistribution ;
    rdfs:label "Wärmeverteilung"@de .

:IntralogisticsHallDistribution rdf:type owl:Class ;
    rdfs:subClassOf :EnergyDistribution ;
    rdfs:label "Intralogistik Halle"@de .

:intralogisticsHbwDistribution rdf:type owl:Class ;
    rdfs:subClassOf :EnergyDistribution ;
    rdfs:label "Intralogistik HRL"@de .

:HallHeatDistribution rdf:type owl:Class ;
    rdfs:subClassOf :EnergyDistribution ;
    rdfs:label "Wärme Halle"@de .

:HbwHeatDistribution rdf:type owl:Class ;
    rdfs:subClassOf :EnergyDistribution ;
    rdfs:label "Wärme HRL"@de .

# Subclasses for EnergyTransfer
:HeatTransfer rdf:type owl:Class ;
    rdfs:subClassOf :EnergyTransfer ;
    rdfs:label "Wärmeübergabe"@de .

:ForkliftTransfer rdf:type owl:Class ;
    rdfs:subClassOf :EnergyTransfer ;
    rdfs:label "FFZ"@de .

:IntralogisticsHallTransfer rdf:type owl:Class ;
    rdfs:subClassOf :EnergyTransfer ;
    rdfs:label "Intrlogistik Halle"@de .

:intralogisticsHbwTransfer rdf:type owl:Class ;
    rdfs:subClassOf :EnergyTransfer ;
    rdfs:label "Intrlogistik HRL"@de .

:HallHeatTransfer rdf:type owl:Class ;
    rdfs:subClassOf :EnergyTransfer ;
    rdfs:label "Wärme Halle"@de .

:HbwHeatTransfer rdf:type owl:Class ;
    rdfs:subClassOf :EnergyTransfer ;
    rdfs:label "Wärme HRL"@de .

# Subclasses for EnergyUsage
:HallSpaceHeating rdf:type owl:Class ;
    rdfs:subClassOf :EnergyUsage ;
    rdfs:label "Raumwärme Halle"@de .

:Work rdf:type owl:Class ;
    rdfs:subClassOf :EnergyUsage ;
    rdfs:label "Arbeit"@de .

:HbwFrostProtection rdf:type owl:Class ;
    rdfs:subClassOf :EnergyUsage ;
    rdfs:label "Frostschutz HRL"@de .

# Subclasses for Environment
:Cold rdf:type owl:Class ;
    rdfs:subClassOf :Environment ;
    rdfs:label "Kälte"@de .

# Object Properties
:energyAmount rdf:type owl:ObjectProperty ;
    rdfs:domain :EnergyNeed ;
    rdfs:range :EnergyMeasurement ;
    rdfs:label "Energiemenge"@de .

# New class for energy measurements
:EnergyMeasurement rdf:type owl:Class ;
    rdfs:label "Energiemessung"@de .

# Properties for the energy measurement
:value rdf:type owl:DatatypeProperty ;
    rdfs:domain :EnergyMeasurement ;
    rdfs:range xsd:float .

# Units for the energy measurement
:unit rdf:type owl:ObjectProperty ;
    rdfs:domain :EnergyMeasurement ;
    rdfs:range unit:Unit .

# Define kWh/a unit
:KilowattHourPerYear rdf:type unit:Unit ;
    rdfs:label "Kilowattstunde pro Jahr"@de ;
    unit:symbol "kWh/a" .

:hasEnergySource rdf:type owl:ObjectProperty ;
    rdfs:domain :EnergyGeneration ;
    rdfs:range :EnergyNeed ;
    rdfs:label "hat Energiequelle"@de .

:generatesEnergy rdf:type owl:ObjectProperty ;
    rdfs:domain :EnergyGeneration ;
    rdfs:range :EnergyDistribution ;
    rdfs:label "erzeugt Energie"@de .

:storesEnergy rdf:type owl:ObjectProperty ;
    rdfs:domain :EnergyStorage ;
    rdfs:range :EnergyNeed ;
    rdfs:label "speichert Energie"@de .

:distributesEnergy rdf:type owl:ObjectProperty ;
    rdfs:domain :EnergyDistribution ;
    rdfs:range :EnergyTransfer ;
    rdfs:label "verteilt Energie"@de .

:transfersEnergy rdf:type owl:ObjectProperty ;
    rdfs:domain :EnergyTransfer ;
    rdfs:range :EnergyUsage ;
    rdfs:label "übergibt Energie"@de .

:usesEnergy rdf:type owl:ObjectProperty ;
    rdfs:domain :EnergyUsage ;
    rdfs:range :EnergyNeed ;
    rdfs:label "nutzt Energie"@de .

:affectsEnvironment rdf:type owl:ObjectProperty ;
    rdfs:domain :EnergyUsage ;
    rdfs:range :Environment ;
    rdfs:label "beeinflusst Umwelt"@de .

# Data Properties
:temperature rdf:type owl:DatatypeProperty ;
    rdfs:domain :Environment ;
    rdfs:range xsd:float ;
    rdfs:label "Temperatur"@de .
