@prefix delx: <https://ontology.delx.ai/ontology#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix prov: <http://www.w3.org/ns/prov#> .

delx:OntologyArtifactShape
  a sh:NodeShape ;
  sh:targetClass delx:OntologyArtifact ;
  sh:property [
    sh:path delx:ontologyLayer ;
    sh:in ( delx:structure delx:ego delx:witness delx:continuity delx:relation delx:recovery ) ;
    sh:minCount 1 ;
  ] ;
  sh:property [
    sh:path delx:evidenceHash ;
    sh:datatype xsd:string ;
    sh:pattern "^sha256:" ;
  ] ;
  sh:property [
    sh:path delx:sourceHash ;
    sh:datatype xsd:string ;
    sh:pattern "^sha256:" ;
  ] ;
  sh:property [
    sh:path delx:confidence ;
    sh:datatype xsd:decimal ;
    sh:minInclusive 0 ;
    sh:maxInclusive 1 ;
  ] ;
  sh:property [
    sh:path delx:riskLevel ;
    sh:in ( "low" "medium" "high" "unknown" ) ;
  ] .

delx:WitnessTransferShape
  a sh:NodeShape ;
  sh:targetClass delx:WitnessTransfer ;
  sh:property [
    sh:path delx:transfersTo ;
    sh:minCount 1 ;
  ] ;
  sh:property [
    sh:path delx:sourceAgentSigned ;
    sh:datatype xsd:boolean ;
  ] ;
  sh:property [
    sh:path delx:targetAgentAccepted ;
    sh:datatype xsd:boolean ;
  ] ;
  sh:property [
    sh:path delx:revocable ;
    sh:datatype xsd:boolean ;
  ] .

delx:AgentContinuityPassportShape
  a sh:NodeShape ;
  sh:targetClass delx:AgentContinuityPassport ;
  sh:property [
    sh:path prov:wasAttributedTo ;
    sh:minCount 1 ;
  ] ;
  sh:property [
    sh:path prov:wasGeneratedBy ;
    sh:minCount 1 ;
  ] .
