PREFIX dcat:    <http://www.w3.org/ns/dcat#>
PREFIX dcterms: <http://purl.org/dc/terms/>
PREFIX doap:    <http://usefulinc.com/ns/doap#>
PREFIX foaf:    <http://xmlns.com/foaf/0.1/>
PREFIX hydra:   <http://www.w3.org/ns/hydra/core#>
PREFIX ldp:     <http://www.w3.org/ns/ldp#>
PREFIX prov:    <http://www.w3.org/ns/prov#>
PREFIX rdfs:    <http://www.w3.org/2000/01/rdf-schema#>
PREFIX sh:      <http://www.w3.org/ns/shacl#>
PREFIX skos:    <http://www.w3.org/2004/02/skos/core#>

<#mastrwrap>  a       doap:Project , prov:SoftwareAgent;
        rdfs:comment  "Wrapper that turns the daily Marktstammdatenregister Gesamtdatenexport into per-resource RDF (Turtle / N-Triples / RDF-XML / HTML). Hash IRIs and SKOS catalogues; full vocabulary at /vocab.";
        rdfs:label    "Linked MaStR (mastrwrap)";
        doap:release  [ a              doap:Version;
                        doap:revision  "1.0.0-SNAPSHOT+1092b67"
                      ];
        foaf:page     <index.html> .

<>      a                    dcat:Dataset , ldp:BasicContainer;
        dcterms:description  "Linked-data view of the German Marktstammdatenregister (MaStR). Per-record Turtle for every generation unit, operator, location, permit, EEG-Anlage, KWK-Anlage, storage anlage, grid connection point, grid, market actor; SKOS catalogues for all upstream Katalogwerte; built daily from the Gesamtdatenexport.";
        dcterms:license      <https://www.govdata.de/dl-de/by-2-0>;
        dcterms:publisher    <#mastrwrap>;
        dcterms:source       <https://www.marktstammdatenregister.de/MaStR/Datendownload>;
        dcterms:title        "Linked Marktstammdatenregister";
        hydra:operation      [ a                     hydra:Operation;
                               hydra:method          "GET";
                               hydra:possibleStatus  [ a                 hydra:Status;
                                                       hydra:statusCode  200
                                                     ];
                               hydra:possibleStatus  [ a                 hydra:Status;
                                                       hydra:statusCode  304
                                                     ];
                               hydra:returnsHeader   "ETag" , "Last-Modified" , "Vary"
                             ];
        hydra:search         [ a                             hydra:IriTemplate;
                               rdfs:comment                  "Records with coordinates inside a bounding box: bbox, or sw and ne.";
                               hydra:mapping                 [ a               hydra:IriTemplateMapping;
                                                               rdfs:comment    "Without count, every match is returned in one response.";
                                                               hydra:property  hydra:limit;
                                                               hydra:required  false;
                                                               hydra:variable  "count";
                                                               sh:pattern      "^[1-9][0-9]*$"
                                                             ];
                               hydra:mapping                 [ a               hydra:IriTemplateMapping;
                                                               rdfs:comment    "The south-west corner as lat,lon; with ne, instead of bbox.";
                                                               hydra:required  false;
                                                               hydra:variable  "sw";
                                                               sh:pattern      "^-?[0-9]+(\\.[0-9]+)?,-?[0-9]+(\\.[0-9]+)?$"
                                                             ];
                               hydra:mapping                 [ a               hydra:IriTemplateMapping;
                                                               rdfs:comment    "Representation as a suffix (.ttl, .nt, .rdf, .jsonld, .html, .geojson, .json, .linkset); omit it to negotiate with the Accept header. geojson and json are a GeoJSON FeatureCollection of the hits with coordinates; linkset (or Accept: application/linkset+json) is an RFC 9264 linkset of every hit, offset and count ignored, each an item link to its record's {tail}.jsonld.";
                                                               hydra:required  false;
                                                               hydra:variable  "format";
                                                               sh:pattern      "^(ttl|nt|rdf|jsonld|html|geojson|json|linkset)$"
                                                             ];
                               hydra:mapping                 [ a               hydra:IriTemplateMapping;
                                                               rdfs:comment    "Members to skip; default 0.";
                                                               hydra:property  hydra:offset;
                                                               hydra:required  false;
                                                               hydra:variable  "offset";
                                                               sh:pattern      "^[0-9]+$"
                                                             ];
                               hydra:mapping                 [ a               hydra:IriTemplateMapping;
                                                               rdfs:comment    "The north-east corner as lat,lon; with sw, instead of bbox.";
                                                               hydra:required  false;
                                                               hydra:variable  "ne";
                                                               sh:pattern      "^-?[0-9]+(\\.[0-9]+)?,-?[0-9]+(\\.[0-9]+)?$"
                                                             ];
                               hydra:mapping                 [ a               hydra:IriTemplateMapping;
                                                               rdfs:comment    "west,south,east,north in WGS84 degrees.";
                                                               skos:example    "10.9,49.4,11.1,49.6";
                                                               hydra:required  false;
                                                               hydra:variable  "bbox";
                                                               sh:pattern      "^-?[0-9]+(\\.[0-9]+)?(,-?[0-9]+(\\.[0-9]+)?){3}$"
                                                             ];
                               hydra:operation               [ a                     hydra:Operation;
                                                               hydra:method          "GET";
                                                               hydra:possibleStatus  [ a                 hydra:Status;
                                                                                       hydra:statusCode  304
                                                                                     ];
                                                               hydra:possibleStatus  [ a                 hydra:Status;
                                                                                       hydra:statusCode  503
                                                                                     ];
                                                               hydra:possibleStatus  [ a                 hydra:Status;
                                                                                       hydra:statusCode  200
                                                                                     ];
                                                               hydra:possibleStatus  [ a                 hydra:Status;
                                                                                       hydra:statusCode  406
                                                                                     ];
                                                               hydra:possibleStatus  [ a                 hydra:Status;
                                                                                       hydra:statusCode  400
                                                                                     ];
                                                               hydra:returnsHeader   "Last-Modified" , "Vary" , "ETag"
                                                             ];
                               hydra:template                "within{.format}{?bbox,sw,ne,offset,count}";
                               hydra:variableRepresentation  hydra:BasicRepresentation
                             ];
        hydra:search         [ a                             hydra:IriTemplate;
                               rdfs:comment                  "Records by Gemeinde, optionally narrowed to energy carriers.";
                               hydra:mapping                 [ a               hydra:IriTemplateMapping;
                                                               rdfs:comment    "Energieträger codes, comma-separated: the skos:notation of the concept a unit's mastr:Energietraeger names (2495 is Solare Strahlungsenergie, cl/148#2495).";
                                                               skos:example    "2495";
                                                               hydra:property  skos:notation;
                                                               hydra:required  false;
                                                               hydra:variable  "carrier";
                                                               sh:pattern      "^[0-9]+(,[0-9]+)*$"
                                                             ];
                               hydra:mapping                 [ a               hydra:IriTemplateMapping;
                                                               rdfs:comment    "Representation as a suffix (.ttl, .nt, .rdf, .jsonld, .html, .geojson, .json, .linkset); omit it to negotiate with the Accept header. geojson and json are a GeoJSON FeatureCollection of the hits with coordinates; linkset (or Accept: application/linkset+json) is an RFC 9264 linkset of every hit, offset and count ignored, each an item link to its record's {tail}.jsonld.";
                                                               hydra:required  false;
                                                               hydra:variable  "format";
                                                               sh:pattern      "^(ttl|nt|rdf|jsonld|html|geojson|json|linkset)$"
                                                             ];
                               hydra:mapping                 [ a               hydra:IriTemplateMapping;
                                                               rdfs:comment    "Without count, every match is returned in one response.";
                                                               hydra:property  hydra:limit;
                                                               hydra:required  false;
                                                               hydra:variable  "count";
                                                               sh:pattern      "^[1-9][0-9]*$"
                                                             ];
                               hydra:mapping                 [ a               hydra:IriTemplateMapping;
                                                               rdfs:comment    "An Amtlicher Gemeindeschlüssel or a prefix of one (09 is Bayern, 09564 Nürnberg), the skos:notation of an ags/ member.";
                                                               skos:example    "09564";
                                                               hydra:property  skos:notation;
                                                               hydra:required  true;
                                                               hydra:variable  "ags";
                                                               sh:pattern      "^[0-9]{1,8}$"
                                                             ];
                               hydra:mapping                 [ a               hydra:IriTemplateMapping;
                                                               rdfs:comment    "Members to skip; default 0.";
                                                               hydra:property  hydra:offset;
                                                               hydra:required  false;
                                                               hydra:variable  "offset";
                                                               sh:pattern      "^[0-9]+$"
                                                             ];
                               hydra:operation               [ a                     hydra:Operation;
                                                               hydra:method          "GET";
                                                               hydra:possibleStatus  [ a                 hydra:Status;
                                                                                       hydra:statusCode  304
                                                                                     ];
                                                               hydra:possibleStatus  [ a                 hydra:Status;
                                                                                       hydra:statusCode  503
                                                                                     ];
                                                               hydra:possibleStatus  [ a                 hydra:Status;
                                                                                       hydra:statusCode  200
                                                                                     ];
                                                               hydra:possibleStatus  [ a                 hydra:Status;
                                                                                       hydra:statusCode  400
                                                                                     ];
                                                               hydra:possibleStatus  [ a                 hydra:Status;
                                                                                       hydra:statusCode  406
                                                                                     ];
                                                               hydra:returnsHeader   "ETag" , "Vary" , "Last-Modified"
                                                             ];
                               hydra:template                "filter{.format}{?ags,carrier,offset,count}";
                               hydra:variableRepresentation  hydra:BasicRepresentation
                             ];
        ldp:contains         <sup/> , <san/> , <gem/> , <gnb/> , <sve/> , <sem/> , <sse/> , <adm/> , <ags/> , <sge/> , <som/> , <snb/> , <kwk/> , <sel/> , <cl/> , <sne/> , <eeg/> , <abr/> , <svl/> , <see/>;
        foaf:page            <index.html> .
