@prefix rdf:     <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs:    <http://www.w3.org/2000/01/rdf-schema#> .
@prefix owl:     <http://www.w3.org/2002/07/owl#> .
@prefix xsd:     <http://www.w3.org/2001/XMLSchema#> .
@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix geo:     <http://www.opengis.net/ont/geosparql#> .
@prefix :        <vocab#> .

# ---- Ontology declaration -----------------------------------------------

<vocab>
    a               owl:Ontology ;
    rdfs:label      "Linked BNetzA vocabulary"@en , "Linked-BNetzA-Vokabular"@de ;
    dcterms:title   "Linked BNetzA vocabulary"@en , "Linked-BNetzA-Vokabular"@de ;
    dcterms:description
        "Classes and properties COINED by the linked-bnetza wrapper. This wrapper is organisation-centric (Bundesnetzagentur), not dataset-centric: it covers two independent, geolocated sub-datasets sharing this vocabulary — the public Ladesäulenregister (EV charging points) and the netzausbau.de grid-expansion-project geometries (Bundesbedarfsplangesetz / Energieleitungsausbaugesetz). Geometry uses GeoSPARQL (geo:asWKT) throughout. Stable English local-names are the identifiers; rdfs:label carries display names in en + de." ;
    dcterms:source  <https://www.bundesnetzagentur.de/> .

# ---- Ladesäulenregister classes ------------------------------------------

:Ladesaeule
    a               rdfs:Class ;
    rdfs:label      "Charging station"@en , "Ladesäule"@de ;
    rdfs:comment    "A public EV charging station from the Bundesnetzagentur Ladesäulenregister, identified by its Ladeeinrichtungs-ID. May carry 1–6 individual Ladepunkte (connectors)." .

:Ladepunkt
    a               rdfs:Class ;
    rdfs:label      "Charge point"@en , "Ladepunkt"@de ;
    rdfs:comment    "One connector of a charging station: connector type, rated power, EVSE-ID, public key." .

# ---- Ladesäulenregister properties ---------------------------------------

:betreiber          a rdf:Property ; rdfs:domain :Ladesaeule ;
    rdfs:label "Operator"@en , "Betreiber"@de .
:anzeigename        a rdf:Property ; rdfs:domain :Ladesaeule ;
    rdfs:label "Display name"@en , "Anzeigename"@de .
:status             a rdf:Property ; rdfs:domain :Ladesaeule ;
    rdfs:label "Status"@en , "Status"@de .
:art                a rdf:Property ; rdfs:domain :Ladesaeule ;
    rdfs:label "Charging-station type"@en , "Art der Ladeeinrichtung"@de .
:anzahlLadepunkte   a rdf:Property ; rdfs:domain :Ladesaeule ; rdfs:range xsd:integer ;
    rdfs:label "Number of charge points"@en , "Anzahl Ladepunkte"@de .
:nennleistungKW     a rdf:Property ; rdfs:range xsd:decimal ;
    rdfs:label "Rated power (kW)"@en , "Nennleistung (kW)"@de ;
    rdfs:comment "Used on both :Ladesaeule (station total) and :Ladepunkt (per connector)." .
:inbetriebnahme     a rdf:Property ; rdfs:domain :Ladesaeule ; rdfs:range xsd:date ;
    rdfs:label "Commissioning date"@en , "Inbetriebnahmedatum"@de .
:kreis              a rdf:Property ; rdfs:domain :Ladesaeule ;
    rdfs:label "District"@en , "Kreis/kreisfreie Stadt"@de .
:bundesland         a rdf:Property ; rdfs:domain :Ladesaeule ;
    rdfs:label "Federal state"@en , "Bundesland"@de .
:standortbezeichnung a rdf:Property ; rdfs:domain :Ladesaeule ;
    rdfs:label "Site description"@en , "Standortbezeichnung"@de .
:parkraum           a rdf:Property ; rdfs:domain :Ladesaeule ;
    rdfs:label "Parking information"@en , "Informationen zum Parkraum"@de .
:bezahlsysteme      a rdf:Property ; rdfs:domain :Ladesaeule ;
    rdfs:label "Payment systems"@en , "Bezahlsysteme"@de .
:oeffnungszeiten    a rdf:Property ; rdfs:domain :Ladesaeule ;
    rdfs:label "Opening hours"@en , "Öffnungszeiten"@de .
:hasLadepunkt       a rdf:Property ; rdfs:domain :Ladesaeule ; rdfs:range :Ladepunkt ;
    rdfs:label "has charge point"@en , "hat Ladepunkt"@de .
:steckertyp         a rdf:Property ; rdfs:domain :Ladepunkt ;
    rdfs:label "Connector type"@en , "Steckertyp"@de .
:evseId             a rdf:Property ; rdfs:domain :Ladepunkt ;
    rdfs:label "EVSE ID"@en , "EVSE-ID"@de .
:publicKey          a rdf:Property ; rdfs:domain :Ladepunkt ;
    rdfs:label "Public key"@en , "Public Key"@de .

# ---- netzausbau.de Vorhaben class -----------------------------------------

:Vorhaben
    a               rdfs:Class ;
    rdfs:label      "Grid-expansion-project feature"@en , "Netzausbau-Vorhabenobjekt"@de ;
    rdfs:comment    "A point or line-corridor feature from a netzausbau.de layer: a named waypoint (layer 'punkt'), an offshore connection cable ('anbindungsleitung'), or a Bundesbedarfsplangesetz / Energieleitungsausbaugesetz project corridor segment ('bbplg' / 'enlag')." .

:layer              a rdf:Property ; rdfs:domain :Vorhaben ;
    rdfs:label "Source layer"@en , "Quell-Layer"@de ;
    rdfs:comment "One of: punkt, anbindungsleitung, bbplg, enlag." .
:name               a rdf:Property ; rdfs:domain :Vorhaben ;
    rdfs:label "Name"@en , "Name"@de .
:startEnd           a rdf:Property ; rdfs:domain :Vorhaben ;
    rdfs:label "Border/start-end marker"@en , "Grenzpunkt-Markierung"@de ;
    rdfs:comment "'punkt' layer only: 'ja' marks a national-border waypoint." .
:vorhaben           a rdf:Property ; rdfs:domain :Vorhaben ;
    rdfs:label "Project"@en , "Vorhaben"@de .
:typ                a rdf:Property ; rdfs:domain :Vorhaben ;
    rdfs:label "Type"@en , "Typ"@de .
:vorhabenstatus     a rdf:Property ; rdfs:domain :Vorhaben ;
    rdfs:label "Project status"@en , "Vorhabenstatus"@de .
:vorhabennummer     a rdf:Property ; rdfs:domain :Vorhaben ;
    rdfs:label "Project number"@en , "Vorhabennummer"@de .
:link               a rdf:Property ; rdfs:domain :Vorhaben ;
    rdfs:label "Reference link"@en , "Link"@de .
:technik            a rdf:Property ; rdfs:domain :Vorhaben ;
    rdfs:label "Technology"@en , "Technik"@de .
:vgi                a rdf:Property ; rdfs:domain :Vorhaben ;
    rdfs:label "VGI (Vorhaben von gemeinsamem Interesse) flag"@en , "VGI"@de .
:vgiNr              a rdf:Property ; rdfs:domain :Vorhaben ;
    rdfs:label "VGI number"@en , "VGI-Nummer"@de .
:rechtsgrundlage    a rdf:Property ; rdfs:domain :Vorhaben ;
    rdfs:label "Legal basis"@en , "Rechtsgrundlage"@de .
:vorhabentraeger    a rdf:Property ; rdfs:domain :Vorhaben ;
    rdfs:label "Project sponsor"@en , "Vorhabenträger"@de .
:spannung           a rdf:Property ; rdfs:domain :Vorhaben ;
    rdfs:label "Voltage"@en , "Spannung"@de .
:zustaendigkeit     a rdf:Property ; rdfs:domain :Vorhaben ;
    rdfs:label "Responsibility"@en , "Zuständigkeit"@de .
:ausfuehrung        a rdf:Property ; rdfs:domain :Vorhaben ;
    rdfs:label "Execution / implementation"@en , "Ausführung"@de .
:grundlage          a rdf:Property ; rdfs:domain :Vorhaben ;
    rdfs:label "Basis"@en , "Grundlage"@de .
:datenquelle        a rdf:Property ; rdfs:domain :Vorhaben ;
    rdfs:label "Data source (as stated by the source layer itself)"@en , "Datenquelle"@de .

# ---- Kraftwerksliste class -------------------------------------------------

:Kraftwerk
    a               rdfs:Class ;
    rdfs:label      "Power plant entry"@en , "Kraftwerksliste-Eintrag"@de ;
    rdfs:comment    "One row of BNetzA's Kraftwerksliste — either an individual plant ≥10 MW (Datensatztyp Einzelanlage, id = its EinheitMastrNummer lowercased) or an aggregated bucket of all <10 MW plants per Bundesland × Energieträger × Kraftwerksstatus (Datensatztyp Kleinanlagen_aggregiert, id = a SYNTHETIC slug — not an upstream identifier)." .

:datensatztyp       a rdf:Property ; rdfs:domain :Kraftwerk ;
    rdfs:label "Record type"@en , "Datensatztyp"@de ;
    rdfs:comment "'Einzelanlage' or 'Kleinanlagen_aggregiert'." .
:einheitMastrNummer a rdf:Property ;
    rdfs:label "MaStR-Nr of the generation unit"@en , "EinheitMastrNummer"@de ;
    rdfs:comment "ORIGINAL casing (e.g. SEE900600559253) — a literal, not a minted cross-link to linked-mastr. Used on :Kraftwerk, :ZubauEintrag and :RueckbauEintrag." .
:anlagenbetreiber   a rdf:Property ;
    rdfs:label "Plant operator"@en , "Anlagenbetreiber"@de ;
    rdfs:comment "Used on :Kraftwerk (as Anlagenbetreiber), :ZubauEintrag and :RueckbauEintrag." .
:land               a rdf:Property ; rdfs:domain :Kraftwerk ;
    rdfs:label "Country"@en , "Land"@de .
:jahrInbetriebnahme a rdf:Property ; rdfs:domain :Kraftwerk ; rdfs:range xsd:gYear ;
    rdfs:label "Commissioning year"@en , "Jahr der Inbetriebnahme"@de .
:jahrStilllegung    a rdf:Property ; rdfs:domain :Kraftwerk ; rdfs:range xsd:gYear ;
    rdfs:label "Decommissioning year"@en , "Jahr der Stilllegung"@de .
:kraftwerksstatus   a rdf:Property ; rdfs:domain :Kraftwerk ;
    rdfs:label "Plant status"@en , "Kraftwerksstatus"@de .
:energietraeger     a rdf:Property ;
    rdfs:label "Energy source"@en , "Energieträger"@de ;
    rdfs:comment "Used on :Kraftwerk, :ZubauEintrag and :RueckbauEintrag." .
:hauptbrennstoff    a rdf:Property ; rdfs:domain :Kraftwerk ;
    rdfs:label "Main fuel"@en , "Hauptbrennstoff"@de .
:waermeauskopplungKwk a rdf:Property ; rdfs:domain :Kraftwerk ; rdfs:range xsd:boolean ;
    rdfs:label "Combined heat and power"@en , "Wärmeauskopplung (KWK)"@de .
:erneuerbarerEnergietraeger a rdf:Property ; rdfs:domain :Kraftwerk ; rdfs:range xsd:boolean ;
    rdfs:label "Renewable energy source"@en , "Erneuerbarer Energieträger"@de .
:bruttoleistungMW   a rdf:Property ; rdfs:domain :Kraftwerk ; rdfs:range xsd:decimal ;
    rdfs:label "Gross capacity (MW)"@en , "Bruttoleistung (MW)"@de .
:nettonennleistungMW a rdf:Property ; rdfs:domain :Kraftwerk ; rdfs:range xsd:decimal ;
    rdfs:label "Net rated capacity (MW)"@en , "Nettonennleistung (MW)"@de .
:technologieStromerzeugung a rdf:Property ; rdfs:domain :Kraftwerk ;
    rdfs:label "Generation technology"@en , "Technologie der Stromerzeugung"@de .
:volleinspeisungTeileinspeisung a rdf:Property ; rdfs:domain :Kraftwerk ;
    rdfs:label "Full/partial feed-in"@en , "Voll-/Teileinspeisung"@de .
:spannungsebene     a rdf:Property ; rdfs:domain :Kraftwerk ;
    rdfs:label "Voltage level"@en , "Spannungsebene"@de .
:anschlussnetzbetreiber a rdf:Property ; rdfs:domain :Kraftwerk ;
    rdfs:label "Connecting grid operator"@en , "Anschlussnetzbetreiber"@de ;
    rdfs:comment "Verbatim compound string from the source, e.g. 'Amprion GmbH (SNB976890256486)' — the MaStR-Nr suffix is NOT split out." .
:bestandteilGrenzkraftwerk a rdf:Property ; rdfs:domain :Kraftwerk ; rdfs:range xsd:boolean ;
    rdfs:label "Part of a cross-border plant"@en , "Bestandteil Grenzkraftwerk"@de .
:grenzkraftwerkNettonennleistungMW a rdf:Property ; rdfs:domain :Kraftwerk ; rdfs:range xsd:decimal ;
    rdfs:label "Cross-border plant net rated capacity (MW)"@en , "Grenzkraftwerk Nettonennleistung (MW)"@de .

# ---- Zu- und Rückbau classes -----------------------------------------------
#
# Each is ONE FLAT document (/zubau, /rueckbau) — every row is a BLANK NODE
# nested under the document's collection thing, NOT a separately-dereferenceable
# per-row URI (36/40 rows is small enough for one document each; see
# ZubauRueckbauRecord's class javadoc for the reasoning).

:ZubauUebersicht
    a               rdfs:Class ;
    rdfs:label      "Planned-additions overview"@en , "Zubau-Übersicht"@de ;
    rdfs:comment    "The single /zubau document's main resource — 'planned conventional generation capacity additions, expected in construction or trial operation' per § 35 EnWG reporting." .
:ZubauEintrag
    a               rdfs:Class ;
    rdfs:label      "Planned-addition entry"@en , "Zubau-Eintrag"@de ;
    rdfs:comment    "One row (blank node) of the /zubau document." .
:hasZubauEintrag    a rdf:Property ; rdfs:domain :ZubauUebersicht ; rdfs:range :ZubauEintrag ;
    rdfs:label "has planned-addition entry"@en , "hat Zubau-Eintrag"@de .
:voraussichtlicheAufnahme a rdf:Property ; rdfs:domain :ZubauEintrag ; rdfs:range xsd:gYear ;
    rdfs:label "Expected start of commercial generation"@en , "Voraussichtliche Aufnahme der kommerziellen Stromerzeugung"@de .

:RueckbauUebersicht
    a               rdfs:Class ;
    rdfs:label      "Planned-decommissionings overview"@en , "Rückbau-Übersicht"@de ;
    rdfs:comment    "The single /rueckbau document's main resource — 'conventional generation capacity expected to exit the market'." .
:RueckbauEintrag
    a               rdfs:Class ;
    rdfs:label      "Planned-decommissioning entry"@en , "Rückbau-Eintrag"@de ;
    rdfs:comment    "One row (blank node) of the /rueckbau document." .
:hasRueckbauEintrag a rdf:Property ; rdfs:domain :RueckbauUebersicht ; rdfs:range :RueckbauEintrag ;
    rdfs:label "has planned-decommissioning entry"@en , "hat Rückbau-Eintrag"@de .
:kategorie          a rdf:Property ; rdfs:domain :RueckbauEintrag ;
    rdfs:label "Decommissioning category"@en , "Kategorie der erwarteten Stilllegung"@de .

# ---- Shared Zubau/Rückbau (and Kraftwerk) properties -----------------------

:anlagenname        a rdf:Property ;
    rdfs:label "Plant name"@en , "Anlagenname"@de ;
    rdfs:comment "Used on :ZubauEintrag and :RueckbauEintrag." .
:plz                a rdf:Property ;
    rdfs:label "Postal code"@en , "PLZ"@de ;
    rdfs:comment "Used on :ZubauEintrag and :RueckbauEintrag. Not necessarily a German PLZ — at least one real row is Austrian (e.g. 'AT-6183')." .
:ort                a rdf:Property ;
    rdfs:label "Location"@en , "Ort"@de ;
    rdfs:comment "Used on :ZubauEintrag and :RueckbauEintrag." .
:leistungMW         a rdf:Property ; rdfs:range xsd:decimal ;
    rdfs:label "Capacity (MW)"@en , "Leistung (MW)"@de ;
    rdfs:comment "Used on :ZubauEintrag and :RueckbauEintrag." .
