@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 :        <vocab#> .

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

<vocab>
    a               owl:Ontology ;
    rdfs:label      "Linked Netztransparenz vocabulary"@en , "Linked-Netztransparenz-Vokabular"@de ;
    dcterms:title   "Linked Netztransparenz vocabulary"@en , "Linked-Netztransparenz-Vokabular"@de ;
    dcterms:description
        "Classes and properties COINED by the linked-netztransparenz wrapper to model the German TSOs' EEG annual settlement (EEG-Jahresabrechnung, netztransparenz.de): per-renewable-plant master data and the actually-settled energy per plant, year and disposal form (Veräußerungsform). Plant IRIs reuse the eeg/{number} scheme of the sibling linked-mastr wrapper so a MaStR unit's mastr:EegMaStRNummer link dereferences here. Stable English local-names are the identifiers; rdfs:label carries display names in en + de." ;
    dcterms:license <https://www.govdata.de/dl-de/by-2-0> ;
    dcterms:source  <https://www.netztransparenz.de/> .

# ---- Classes ------------------------------------------------------------

:Plant
    a               rdfs:Class ;
    rdfs:label      "Renewable plant"@en , "EEG-Anlage"@de ;
    rdfs:comment    "A renewable-energy generation plant settled under the EEG, identified by its EEG_Mastr_Nr. The IRI is eeg/{number}#it, where {number} is the EEG_Mastr_Nr with the 'EEG' prefix stripped — the same resource the sibling linked-mastr wrapper serves." .

:Settlement
    a               rdfs:Class ;
    rdfs:label      "EEG settlement"@en , "EEG-Abrechnung"@de ;
    rdfs:comment    "The aggregated EEG settlement for one plant in one settlement year for one Veräußerungsform (disposal form): the summed settled energy (Strommenge) and EEG payment (EEG-Zahlung) folded from the per-month Bewegungsdaten transactions." .

# ---- Plant master-data properties ---------------------------------------

:eegMastrNr        a rdf:Property ; rdfs:domain :Plant ;
    rdfs:label "EEG MaStR number"@en , "EEG-MaStR-Nummer"@de ;
    rdfs:comment "The raw EEG_Mastr_Nr including the 'EEG' prefix, e.g. EEG973204832626." .
:anlagenschluessel a rdf:Property ; rdfs:domain :Plant ;
    rdfs:label "EEG plant key"@en , "Anlagenschlüssel"@de .
:gridOperator      a rdf:Property ; rdfs:domain :Plant ;
    rdfs:label "Grid operator"@en , "Netzbetreiber"@de .
:streetAddress     a rdf:Property ; rdfs:domain :Plant ;
    rdfs:label "Street / parcel"@en , "Straße / Flurstück"@de .
:postalCode        a rdf:Property ; rdfs:domain :Plant ;
    rdfs:label "Postal code"@en , "Postleitzahl"@de .
:locality          a rdf:Property ; rdfs:domain :Plant ;
    rdfs:label "Locality"@en , "Ort / Gemarkung"@de .
:bundesland        a rdf:Property ; rdfs:domain :Plant ;
    rdfs:label "Federal state"@en , "Bundesland"@de .
:installedPowerKW  a rdf:Property ; rdfs:domain :Plant ; rdfs:range xsd:decimal ;
    rdfs:label "Installed power (kW)"@en , "Installierte Leistung (kW)"@de ;
    rdfs:comment "Installierte Leistung in kilowatts." .
:energySource      a rdf:Property ; rdfs:domain :Plant ;
    rdfs:label "Energy source"@en , "Energieträger"@de ;
    rdfs:comment "Decoded from the numeric Energieträger code (9 = Solar, 7 = Wind an Land, …)." .
:voltageLevel      a rdf:Property ; rdfs:domain :Plant ;
    rdfs:label "Feed-in voltage level"@en , "Einspeisespannungsebene"@de .
:commissioning     a rdf:Property ; rdfs:domain :Plant ; rdfs:range xsd:date ;
    rdfs:label "Commissioning date"@en , "Inbetriebnahme"@de .
:decommissioning   a rdf:Property ; rdfs:domain :Plant ; rdfs:range xsd:date ;
    rdfs:label "Decommissioning date"@en , "Außerbetriebnahme"@de .
:hasSettlement     a rdf:Property ; rdfs:domain :Plant ; rdfs:range :Settlement ;
    rdfs:label "has settlement"@en , "hat Abrechnung"@de ;
    rdfs:comment "Links a plant to one of its per-year, per-disposal-form settlement aggregates." .

# ---- Settlement properties ----------------------------------------------

:year              a rdf:Property ; rdfs:domain :Settlement ; rdfs:range xsd:gYear ;
    rdfs:label "Settlement year"@en , "Abrechnungsjahr"@de .
:disposalForm      a rdf:Property ; rdfs:domain :Settlement ;
    rdfs:label "Disposal form (slug)"@en , "Veräußerungsform (Slug)"@de ;
    rdfs:comment "Clean slug for the Veräußerungsform: feed-in-tariff (1), market-premium (2), self-consumption-or-other-dv (5), other (anything else)." .
:veraeusserungsform a rdf:Property ; rdfs:domain :Settlement ; rdfs:range xsd:integer ;
    rdfs:label "Veräußerungsform (numeric code)"@en , "Veräußerungsform (Code)"@de .
:strommengeKWh     a rdf:Property ; rdfs:domain :Settlement ; rdfs:range xsd:integer ;
    rdfs:label "Settled energy (kWh)"@en , "Abgerechnete Strommenge (kWh)"@de ;
    rdfs:comment "Summed Strommenge in kWh over all folded transactions in this (year, disposal form)." .
:eegZahlungEUR     a rdf:Property ; rdfs:domain :Settlement ; rdfs:range xsd:decimal ;
    rdfs:label "EEG payment (EUR)"@en , "EEG-Zahlung (EUR)"@de ;
    rdfs:comment "Summed EEG-Zahlung in EUR over all folded transactions in this (year, disposal form)." .

# ---- Linked Data Service (LIDS) terms -----------------------------------
# The /filter endpoint is modelled as a Linked Data Service (Speiser & Harth,
# "Integrating Linked Data and Services with Linked Data Services", ESWC 2011):
# the service-call URI names an input entity (a :Query under a #id fragment),
# minted from the active filter parameters alone, related by :result to each
# matched plant. Resolving the call URI returns the input and its result links.

:Query
    a               rdfs:Class ;
    rdfs:label      "Filter query"@en , "Filterabfrage"@de ;
    rdfs:comment    "The input entity of a /filter service call: the active facet parameters (postal code, energy source, minimum installed power), related by :result to each matched plant. The IRI is filter?{params}#id, minted from the parameters alone." .

:result            a rdf:Property ; rdfs:domain :Query ; rdfs:range :Plant ;
    rdfs:label "result"@en , "Ergebnis"@de ;
    rdfs:comment "Links a :Query call entity to a plant matching its filter facets." .

:plz               a rdf:Property ; rdfs:domain :Query ;
    rdfs:label "postal-code filter"@en , "Postleitzahl-Filter"@de ;
    rdfs:comment "The plz parameter of a /filter call: select plants in this postal code." .

:source            a rdf:Property ; rdfs:domain :Query ;
    rdfs:label "energy-source filter"@en , "Energieträger-Filter"@de ;
    rdfs:comment "The source parameter of a /filter call: select plants of this energy source." .

:minInstalledPowerKW a rdf:Property ; rdfs:domain :Query ; rdfs:range xsd:decimal ;
    rdfs:label "minimum installed power (kW) filter"@en , "Mindestleistung (kW)-Filter"@de ;
    rdfs:comment "The minkw parameter of a /filter call: select plants whose installierte Leistung is at least this many kilowatts." .
