@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix lfal: <https://www.mpeters.dev/ns/lfal#> .
@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

# SHACL companion to shapes/appSettings.shex — see SOLID_DATA_MODEL.md §6.
# Resource's main subject is always <#it>.

lfal:AppSettingsShape
  a sh:NodeShape ;
  sh:targetClass lfal:AppSettings ;
  sh:name "App settings" ;
  sh:description "Theme, language, and optional local LLM overrides, stored in the learner's own Pod." ;
  sh:property
    [ sh:path dcterms:modified ; sh:datatype xsd:dateTime ; sh:minCount 1 ; sh:maxCount 1 ; sh:description "Last-modified timestamp" ] ,
    [ sh:path lfal:theme ; sh:datatype xsd:string ; sh:minCount 1 ; sh:maxCount 1 ; sh:description "UI theme: light, dark, or system" ] ,
    [ sh:path dcterms:language ; sh:datatype xsd:language ; sh:minCount 1 ; sh:maxCount 1 ; sh:description "UI language code (BCP 47 tag, e.g. en, de-DE)" ] ,
    [ sh:path lfal:llmProvider ; sh:datatype xsd:string ; sh:maxCount 1 ; sh:description "LLM override: provider name" ] ,
    [ sh:path lfal:llmModel ; sh:datatype xsd:string ; sh:maxCount 1 ; sh:description "LLM override: model name" ] ,
    [ sh:path lfal:llmApiBaseUrl ; sh:datatype xsd:string ; sh:maxCount 1 ; sh:description "LLM override: API base URL" ] ,
    [ sh:path lfal:llmApiKey ; sh:datatype xsd:string ; sh:maxCount 1 ; sh:description "LLM override: API key" ] .
