# 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/EventShape>
  a sh:NodeShape ;
  sh:targetClass <https://schema.org/Event> ;
  sh:closed false ;
  sh:property [
    sh:path <https://schema.org/name> ;
    sh:name "name", "Název"@cs, "Name"@de, "Name"@en, "Názov"@sk ;
    sh:order 0 ;
    sh:group <https://smartdatamodels.org/SummaryGroup> ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    rdfs:comment "The title of the event as the source writes it, in Slovak."
  ] ;
  sh:property [
    sh:path <https://schema.org/startDate> ;
    sh:name "startDate", "Začátek"@cs, "Beginn"@de, "Start"@en, "Začiatok"@sk ;
    sh:order 1 ;
    sh:group <https://smartdatamodels.org/SummaryGroup> ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    rdfs:comment "When the event starts: an RFC 3339 instant with its offset (`2026-11-14T19:00:00+01:00`, Europe/Bratislava as the source publishes it), or a date alone (`2026-11-14`) for an event that lasts whole days."
  ] ;
  sh:property [
    sh:path <https://schema.org/endDate> ;
    sh:name "endDate", "Konec"@cs, "Ende"@de, "End"@en, "Koniec"@sk ;
    sh:order 2 ;
    sh:group <https://smartdatamodels.org/DetailGroup> ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    rdfs:comment "When the event ends, written as `startDate`; for a whole-day event its last day, inclusive. Absent when the source gives no end: the calendar then shows the start alone."
  ] ;
  sh:property [
    sh:path <https://purl.org/geojson/vocab#geometry> ;
    sh:name "location" ;
    sh:order 3 ;
    sh:group <https://smartdatamodels.org/DetailGroup> ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    rdfs:comment "Where the event takes place, a GeoJSON Point in WGS 84 inside Slovakia (longitude 16.8 to 22.6, latitude 47.7 to 49.7), from the source or from the venue table checked by hand; never a town's centre."
  ] ;
  sh:property [
    sh:path <https://joinedcontext.com/models/venue> ;
    sh:name "venue", "Místo konání"@cs, "Veranstaltungsort"@de, "Venue"@en, "Miesto konania"@sk ;
    sh:order 4 ;
    sh:group <https://smartdatamodels.org/SummaryGroup> ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    rdfs:comment "The name of the place, as the source writes it (a hall, a square, a museum)."
  ] ;
  sh:property [
    sh:path <https://schema.org/address> ;
    sh:name "address", "Adresa"@cs, "Adresse"@de, "Address"@en, "Adresa"@sk ;
    sh:order 5 ;
    sh:group <https://smartdatamodels.org/DetailGroup> ;
    sh:datatype xsd:anyURI ;
    sh:maxCount 1 ;
    rdfs:comment "The postal address of the venue, field by field (Smart Data Models' common PostalAddress); `addressLocality` is the town a calendar filters on. A field the source leaves out is absent, never guessed."
  ] ;
  sh:property [
    sh:path <https://joinedcontext.com/models/eventCategory> ;
    sh:name "eventCategory", "Kategorie"@cs, "Kategorie"@de, "Category"@en, "Kategória"@sk ;
    sh:order 6 ;
    sh:group <https://smartdatamodels.org/SummaryGroup> ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    rdfs:comment "The kind of event in the source's own words (`koncert`, `výstava`, `šport`)."
  ] ;
  sh:property [
    sh:path <https://schema.org/description> ;
    sh:name "description", "Popis"@cs, "Beschreibung"@de, "Description"@en, "Popis"@sk ;
    sh:order 7 ;
    sh:group <https://smartdatamodels.org/DetailGroup> ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    rdfs:comment "What the source says about the event, as plain text without markup."
  ] ;
  sh:property [
    sh:path <https://schema.org/url> ;
    sh:name "url", "Odkaz"@cs, "Link"@de, "Link"@en, "Odkaz"@sk ;
    sh:order 8 ;
    sh:group <https://smartdatamodels.org/DetailGroup> ;
    sh:datatype xsd:anyURI ;
    sh:maxCount 1 ;
    rdfs:comment "The page of the event at its source, where a person reads more or buys a ticket."
  ] ;
  sh:property [
    sh:path <https://smartdatamodels.org/dataProvider> ;
    sh:name "dataProvider", "Poskytovatel"@cs, "Anbieter"@de, "Provider"@en, "Poskytovateľ"@sk ;
    sh:order 9 ;
    sh:group <https://smartdatamodels.org/DetailGroup> ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    rdfs:comment "Who announced the event (the town, the region, the cultural body), as the credit names it."
  ] ;
  sh:property [
    sh:path <https://smartdatamodels.org/source> ;
    sh:name "source", "Zdroj"@cs, "Quelle"@de, "Source"@en, "Zdroj"@sk ;
    sh:order 10 ;
    sh:group <https://smartdatamodels.org/DetailGroup> ;
    sh:datatype xsd:anyURI ;
    sh:maxCount 1 ;
    rdfs:comment "The feed or the page the pipeline read the event from."
  ] ;
  sh:property [
    sh:path <https://joinedcontext.com/models/sourceId> ;
    sh:name "sourceId", "Identifikátor ve zdroji"@cs, "Quell-ID"@de, "Source id"@en, "Identifikátor v zdroji"@sk ;
    sh:order 11 ;
    sh:group <https://smartdatamodels.org/DetailGroup> ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    rdfs:comment "The event's own identifier at its source, so a record can be traced back."
  ] ;
  sh:property [
    sh:path <https://smartdatamodels.org/dateModified> ;
    sh:name "dateModified", "Změněno"@cs, "Geändert"@de, "Modified"@en, "Zmenené"@sk ;
    sh:order 12 ;
    sh:group <https://smartdatamodels.org/DetailGroup> ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
    rdfs:comment "When the source last changed the record."
  ] .
