@prefix c: <https://ontology.inferal.com/modules/advertising-configuration-history/> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

c:CaptureShape a sh:NodeShape ; sh:targetClass c:Capture ; sh:nodeKind sh:IRI ;
  sh:property [ sh:path c:sourceArtifact ; sh:maxCount 1 ; sh:minCount 1 ; sh:class c:SourceArtifact ; sh:nodeKind sh:IRI ] ;
  sh:property [ sh:path c:providerSchema ; sh:maxCount 1 ; sh:minCount 1 ; sh:nodeKind sh:IRI ] ;
  sh:property [ sh:path c:sourceContextSha256 ; sh:maxCount 1 ; sh:minCount 1 ; sh:datatype xsd:string ; sh:pattern "^[0-9a-f]{64}$" ] ;
  sh:property [ sh:path c:capturedAt ; sh:maxCount 1 ; sh:minCount 1 ; sh:datatype xsd:dateTime ] ;
  sh:property [ sh:path c:declaredAccountContext ; sh:maxCount 1 ; sh:nodeKind sh:IRI ] ;
  sh:property [ sh:path c:captureDescriptorHash ; sh:maxCount 1 ; sh:datatype xsd:string ; sh:pattern "^[0-9a-f]{64}$" ] .

c:SourceArtifactShape a sh:NodeShape ; sh:targetClass c:SourceArtifact ; sh:nodeKind sh:IRI ;
  sh:property [ sh:path c:sourcePath ; sh:maxCount 1 ; sh:minCount 1 ; sh:datatype xsd:string ; sh:minLength 1 ] ;
  sh:property [ sh:path c:sha256 ; sh:maxCount 1 ; sh:minCount 1 ; sh:datatype xsd:string ; sh:pattern "^[0-9a-f]{64}$" ] .

c:DerivationShape a sh:NodeShape ; sh:targetClass c:Derivation ; sh:nodeKind sh:IRI ;
  sh:property [ sh:path c:capture ; sh:maxCount 1 ; sh:minCount 1 ; sh:class c:Capture ; sh:nodeKind sh:IRI ] ;
  sh:property [ sh:path c:sourceGraph ; sh:maxCount 1 ; sh:minCount 1 ; sh:nodeKind sh:IRI ] ;
  sh:property [ sh:path c:projectionGraph ; sh:maxCount 1 ; sh:minCount 1 ; sh:nodeKind sh:IRI ] ;
  sh:property [ sh:path c:derivationPackage ; sh:maxCount 1 ; sh:minCount 1 ; sh:datatype xsd:string ; sh:pattern "^[0-9a-f]{64}$" ] ;
  sh:property [ sh:path c:projectedCount ; sh:maxCount 1 ; sh:minCount 1 ; sh:datatype xsd:integer ; sh:minInclusive 0 ] ;
  sh:property [ sh:path c:projectionStanding ; sh:maxCount 1 ; sh:minCount 1 ; sh:in ("projected-specifications" "no-projected-specifications") ] .

c:ConfigurationObservationShape a sh:NodeShape ; sh:targetClass c:ConfigurationObservation ; sh:nodeKind sh:IRI ;
  sh:property [ sh:path c:derivation ; sh:maxCount 1 ; sh:minCount 1 ; sh:class c:Derivation ; sh:nodeKind sh:IRI ] ;
  sh:property [ sh:path c:representedRecord ; sh:maxCount 1 ; sh:minCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ] ;
  sh:property [ sh:path c:representationKind ; sh:maxCount 1 ; sh:minCount 1 ; sh:nodeKind sh:IRI ] .
