@prefix arc: <https://ontology.inferal.com/modules/advertising-reporting-context/> .
@prefix adm: <https://ontology.inferal.com/modules/advertising-measurement/> .
@prefix rng: <https://ontology.inferal.com/modules/range/> .
@prefix time: <http://www.w3.org/2006/time#> .
@prefix prov: <http://www.w3.org/ns/prov#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
arc:CandidateShape a sh:NodeShape ; sh:targetClass arc:ProjectionCandidate ; sh:nodeKind sh:IRI ;
    sh:property [ sh:path arc:forNativeReport ; sh:minCount 1 ; sh:maxCount 1 ] ;
    sh:property [ sh:path arc:capture ; sh:minCount 1 ; sh:maxCount 1 ; sh:nodeKind sh:IRI ] ;
    sh:property [ sh:path arc:provider ; sh:minCount 1 ; sh:maxCount 1 ; sh:datatype xsd:string ] ;
    sh:property [ sh:path arc:sourceArtifactSha256 ; sh:minCount 1 ; sh:maxCount 1 ; sh:pattern "^[0-9a-f]{64}$" ] ;
    sh:property [ sh:path arc:contextDigest ; sh:minCount 1 ; sh:maxCount 1 ; sh:pattern "^[0-9a-f]{64}$" ] ;
    sh:property [ sh:path arc:interpretationDigest ; sh:minCount 1 ; sh:maxCount 1 ; sh:pattern "^[0-9a-f]{64}$" ] .
arc:ObservationShape a sh:NodeShape ; sh:targetClass arc:QualifiedMetricObservation ; sh:nodeKind sh:IRI ;
    sh:property [ sh:path arc:candidate ; sh:minCount 1 ; sh:maxCount 1 ; sh:class arc:ProjectionCandidate ] ;
    sh:property [ sh:path adm:reportingWindow ; sh:minCount 1 ; sh:maxCount 1 ; sh:class adm:ReportingWindow ] ;
    sh:property [ sh:path adm:observedValue ; sh:minCount 1 ; sh:maxCount 1 ; sh:nodeKind sh:IRI ] ;
    sh:property [ sh:path prov:wasDerivedFrom ; sh:minCount 2 ] .
arc:WindowShape a sh:NodeShape ; sh:targetClass adm:ReportingWindow ;
    sh:property [ sh:path adm:windowStart ; sh:minCount 1 ; sh:maxCount 1 ; sh:class time:Instant ] ;
    sh:property [ sh:path adm:windowEnd ; sh:minCount 1 ; sh:maxCount 1 ; sh:class time:Instant ] ;
    sh:property [ sh:path rng:lowerInclusive ; sh:minCount 1 ; sh:maxCount 1 ; sh:hasValue true ] ;
    sh:property [ sh:path rng:upperInclusive ; sh:minCount 1 ; sh:maxCount 1 ; sh:hasValue false ] .
arc:InstantShape a sh:NodeShape ; sh:targetObjectsOf adm:windowStart, adm:windowEnd ;
    sh:property [ sh:path time:inXSDDateTimeStamp ; sh:minCount 1 ; sh:maxCount 1 ; sh:datatype xsd:dateTimeStamp ] .
