# SHACL shapes, rendered from the LinkML model.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

<https://smartdatamodels.org/SummaryGroup>
  a sh:PropertyGroup ;
  sh:order 0 ;
  rdfs:label "Základné"@sk, "Summary"@en .

<https://smartdatamodels.org/DetailGroup>
  a sh:PropertyGroup ;
  sh:order 1 ;
  rdfs:label "Detail"@sk, "Detail"@en .

<https://smartdatamodels.org/WasteContainerShape>
  a sh:NodeShape ;
  sh:targetClass <https://smartdatamodels.org/WasteContainer> ;
  sh:closed false ;
  sh:property [
    sh:path <https://joinedcontext.com/models/containerCode> ;
    sh:name "containerCode" ;
    sh:order 0 ;
    sh:group <https://smartdatamodels.org/SummaryGroup> ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    rdfs:comment "The container's number in the city's waste register (KSNKO)."
  ] ;
  sh:property [
    sh:path <https://joinedcontext.com/models/wasteKind> ;
    sh:name "wasteKind" ;
    sh:order 1 ;
    sh:group <https://smartdatamodels.org/SummaryGroup> ;
    sh:in ( "beverageCartons" "clearGlass" "colouredGlass" "edibleOil" "electronics" "metal" "mixedRecyclables" "paper" "plastic" ) ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    rdfs:comment "What the container takes, as the city's waste register sorts it."
  ] ;
  sh:property [
    sh:path <https://smartdatamodels.org/fillingLevel> ;
    sh:name "fillingLevel" ;
    sh:order 2 ;
    sh:group <https://smartdatamodels.org/SummaryGroup> ;
    sh:datatype xsd:float ;
    sh:maxCount 1 ;
    rdfs:comment "How full the container was at its sensor's last reading, 0 empty to 1 full."
  ] ;
  sh:property [
    sh:path <https://smartdatamodels.org/refWasteContainerIsle> ;
    sh:name "refWasteContainerIsle" ;
    sh:order 3 ;
    sh:group <https://smartdatamodels.org/SummaryGroup> ;
    sh:nodeKind sh:IRI ;
    sh:class <https://smartdatamodels.org/WasteContainerIsle> ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    rdfs:comment "The collection point the container stands at."
  ] ;
  sh:property [
    sh:path <https://smartdatamodels.org/dataProvider> ;
    sh:name "dataProvider" ;
    sh:order 4 ;
    sh:group <https://smartdatamodels.org/DetailGroup> ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    rdfs:comment "Who publishes the data the entity was read from, with the credit its licence asks for, as an application shows it beside the data."
  ] ;
  sh:property [
    sh:path <https://smartdatamodels.org/source> ;
    sh:name "source" ;
    sh:order 5 ;
    sh:group <https://smartdatamodels.org/DetailGroup> ;
    sh:datatype xsd:anyURI ;
    sh:maxCount 1 ;
    rdfs:comment "The open-data service the entity was read from."
  ] ;
  sh:property [
    sh:path <https://purl.org/geojson/vocab#geometry> ;
    sh:name "location" ;
    sh:order 6 ;
    sh:group <https://smartdatamodels.org/DetailGroup> ;
    sh:maxCount 1 ;
    rdfs:comment "Where the entity is, as GeoJSON geometry."
  ] ;
  sh:property [
    sh:path <https://smartdatamodels.org/dateModified> ;
    sh:name "dateModified" ;
    sh:order 7 ;
    sh:group <https://smartdatamodels.org/DetailGroup> ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
    rdfs:comment "When the publisher's station, counter or sensor last reported the values beside it."
  ] .

<https://smartdatamodels.org/WasteContainerIsleShape>
  a sh:NodeShape ;
  sh:targetClass <https://smartdatamodels.org/WasteContainerIsle> ;
  sh:closed false ;
  sh:property [
    sh:path <http://schema.org/name> ;
    sh:name "name" ;
    sh:order 0 ;
    sh:group <https://smartdatamodels.org/SummaryGroup> ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    rdfs:comment "The name, per language, as the publisher writes it."
  ] ;
  sh:property [
    sh:path <https://joinedcontext.com/models/stationCode> ;
    sh:name "stationCode" ;
    sh:order 1 ;
    sh:group <https://smartdatamodels.org/SummaryGroup> ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    rdfs:comment "The collection point's number in the city's waste register, such as 0022/ 001."
  ] ;
  sh:property [
    sh:path <https://joinedcontext.com/models/accessRestriction> ;
    sh:name "accessRestriction" ;
    sh:order 2 ;
    sh:group <https://smartdatamodels.org/SummaryGroup> ;
    sh:in ( "public" "residents" ) ;
    sh:maxCount 1 ;
    rdfs:comment "Who may use the collection point."
  ] ;
  sh:property [
    sh:path <https://joinedcontext.com/models/refDistrict> ;
    sh:name "refDistrict" ;
    sh:order 3 ;
    sh:group <https://smartdatamodels.org/SummaryGroup> ;
    sh:datatype xsd:anyURI ;
    sh:maxCount 1 ;
    rdfs:comment "The city district the record lies in."
  ] ;
  sh:property [
    sh:path <https://joinedcontext.com/models/wasteContainers> ;
    sh:name "wasteContainers" ;
    sh:order 4 ;
    sh:group <https://smartdatamodels.org/DetailGroup> ;
    sh:nodeKind sh:IRI ;
    sh:class <https://smartdatamodels.org/WasteContainer> ;
    rdfs:comment "The monitored containers at this collection point, computed from their refWasteContainerIsle and never stored."
  ] ;
  sh:property [
    sh:path <https://smartdatamodels.org/dataProvider> ;
    sh:name "dataProvider" ;
    sh:order 5 ;
    sh:group <https://smartdatamodels.org/DetailGroup> ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    rdfs:comment "Who publishes the data the entity was read from, with the credit its licence asks for, as an application shows it beside the data."
  ] ;
  sh:property [
    sh:path <https://smartdatamodels.org/source> ;
    sh:name "source" ;
    sh:order 6 ;
    sh:group <https://smartdatamodels.org/DetailGroup> ;
    sh:datatype xsd:anyURI ;
    sh:maxCount 1 ;
    rdfs:comment "The open-data service the entity was read from."
  ] ;
  sh:property [
    sh:path <https://purl.org/geojson/vocab#geometry> ;
    sh:name "location" ;
    sh:order 7 ;
    sh:group <https://smartdatamodels.org/DetailGroup> ;
    sh:maxCount 1 ;
    rdfs:comment "Where the entity is, as GeoJSON geometry."
  ] .
