| sh:property | sh:class sflo:ArtifactResolutionMode;
sh:maxCount "1"^^xsd:integer;
sh:message "A repository-backed Knop source binding SHOULD declare one sflo:hasArtifactResolutionMode value typed sflo:ArtifactResolutionMode.";
sh:minCount "1"^^xsd:integer;
sh:nodeKind sh:IRI;
sh:path sflo:hasArtifactResolutionMode;
sh:severity sh:Warning.
|
| sh:property | sh:class sflo:RepositorySourceLocator;
sh:maxCount "1"^^xsd:integer;
sh:message "A repository-backed Knop source binding MUST identify exactly one sflo:hasTargetRepositorySource value typed sflo:RepositorySourceLocator.";
sh:minCount "1"^^xsd:integer;
sh:nodeKind sh:BlankNodeOrIRI;
sh:path sflo:hasTargetRepositorySource;
sh:severity sh:Violation.
|
| sh:property | sh:datatype xsd:string;
sh:maxCount "1"^^xsd:integer;
sh:message "A repository-backed Knop source binding MUST declare exactly one sflo:targetLocalRelativePath string literal.";
sh:minCount "1"^^xsd:integer;
sh:path sflo:targetLocalRelativePath;
sh:severity sh:Violation.
|
| sh:property | sh:datatype xsd:string;
sh:maxCount "1"^^xsd:integer;
sh:message "A repository-backed Knop source binding SHOULD declare sflo:expectsContentDigest when deterministic byte replay matters.";
sh:path sflo:expectsContentDigest;
sh:severity sh:Warning.
|
| sh:property | sh:maxCount "1"^^xsd:integer;
sh:message "A repository-backed Knop source binding MUST identify exactly one sflo:hasTargetArtifact IRI.";
sh:minCount "1"^^xsd:integer;
sh:nodeKind sh:IRI;
sh:path sflo:hasTargetArtifact;
sh:severity sh:Violation.
|
| sh:sparql | rdf:type sh:SPARQLConstraint;
sh:message "A repository-backed source binding SHOULD include sourceRepositoryCommit, expectsContentDigest, or hasContentDigest evidence when deterministic replay matters.";
sh:select "PREFIX sflo: <https://semantic-flow.github.io/sflo/ontology/>\nSELECT $this WHERE {\n $this sflo:hasTargetRepositorySource ?locator .\n FILTER NOT EXISTS { ?locator sflo:sourceRepositoryCommit ?commit }\n FILTER NOT EXISTS { $this sflo:expectsContentDigest ?digest }\n FILTER NOT EXISTS { ?locator sflo:hasContentDigest ?locatorDigest }\n}";
sh:severity sh:Warning.
|