@prefix nf: <https://ontology.inferal.com/modules/ads-source-fidelity/> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix prov: <http://www.w3.org/ns/prov#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
nf:RawSourceShape a sh:NodeShape; sh:targetClass nf:RawSource; sh:nodeKind sh:IRI;
 sh:property [ sh:path nf:sourceDigest; sh:minCount 1; sh:maxCount 1; sh:datatype xsd:string; sh:pattern "^[0-9a-f]{64}$" ];
 sh:property [ sh:path nf:codec; sh:minCount 1; sh:maxCount 1; sh:hasValue nf:RetainedReadJSONTokenCodecV1 ];
 sh:property [ sh:path nf:sourceStanding; sh:minCount 1; sh:maxCount 1; sh:hasValue nf:CallerSuppliedRetainedSource ];
 sh:property [ sh:path nf:writeAuthorityStanding; sh:minCount 1; sh:maxCount 1; sh:hasValue nf:WriteAuthorityUnassessed ] .
nf:OccurrenceShape a sh:NodeShape; sh:targetClass nf:Occurrence; sh:nodeKind sh:IRI;
 sh:property [ sh:path nf:source; sh:minCount 1; sh:maxCount 1; sh:class nf:RawSource ];
 sh:property [ sh:path nf:ordinal; sh:minCount 1; sh:maxCount 1; sh:datatype xsd:integer; sh:minInclusive 0 ];
 sh:property [ sh:path nf:pointer; sh:minCount 1; sh:maxCount 1; sh:datatype xsd:string ];
 sh:property [ sh:path nf:kind; sh:minCount 1; sh:maxCount 1; sh:in (nf:object nf:array nf:string nf:number nf:boolean nf:null) ];
 sh:property [ sh:path nf:parent; sh:maxCount 1; sh:class nf:Occurrence ];
 sh:property [ sh:path nf:member; sh:maxCount 1; sh:datatype xsd:string ];
 sh:property [ sh:path nf:index; sh:maxCount 1; sh:datatype xsd:integer; sh:minInclusive 0 ];
 sh:property [ sh:path nf:decoded; sh:maxCount 1; sh:datatype xsd:string ];
 sh:property [ sh:path nf:numberLexical; sh:maxCount 1; sh:datatype xsd:string ];
 sh:property [ sh:path nf:booleanValue; sh:maxCount 1; sh:datatype xsd:boolean ] .
nf:AssessmentShape a sh:NodeShape; sh:targetClass nf:SourceAssessment; sh:nodeKind sh:IRI;
 sh:property [ sh:path nf:source; sh:minCount 1; sh:maxCount 1; sh:class nf:RawSource ];
 sh:property [ sh:path nf:occurrence; sh:minCount 1; sh:maxCount 1; sh:class nf:Occurrence ];
 sh:property [ sh:path nf:standing; sh:minCount 1; sh:maxCount 1; sh:in (nf:NativeDatatypeUnassessed nf:ExactRetainedIntegerValue nf:ExactRetainedDecimalValue nf:NativeBinary64OriginUnqualifiedForOriginalDecimal nf:NativeBinary32OriginUnqualifiedForOriginalDecimal) ];
 sh:property [ sh:path nf:originalDecimalQualified; sh:minCount 1; sh:maxCount 1; sh:datatype xsd:boolean ];
 sh:property [ sh:path nf:evidenceNeeded; sh:minCount 1; sh:maxCount 1; sh:in (nf:RetainedNativeDatatypeContext nf:CapturedNativeDatatypeEvidence) ];
 sh:property [ sh:path nf:logicalDatatype; sh:maxCount 1; sh:nodeKind sh:IRI ];
 sh:property [ sh:path nf:writeAuthorityStanding; sh:minCount 1; sh:maxCount 1; sh:hasValue nf:WriteAuthorityUnassessed ] .
