| sh:property | sh:class sflo:ArtifactResolutionMode;
sh:maxCount "1"^^xsd:integer;
sh:message "If present, an ExtractionSource sflo:hasArtifactResolutionMode value MUST be typed sflo:ArtifactResolutionMode.";
sh:nodeKind sh:IRI;
sh:path sflo:hasArtifactResolutionMode;
sh:severity sh:Violation.
|
| sh:property | sh:class sflo:HistoricalState;
sh:maxCount "1"^^xsd:integer;
sh:message "If present, sflo:hasRequestedTargetState should be a single IRI typed sflo:HistoricalState.";
sh:nodeKind sh:IRI;
sh:path sflo:hasRequestedTargetState;
sh:severity sh:Warning.
|
| sh:property | sh:class sflo:RdfDocument;
sh:maxCount "1"^^xsd:integer;
sh:message "An ExtractionSource MUST identify exactly one target artifact, and that artifact must be an IRI typed sflo:RdfDocument.";
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 "An ExtractionSource SHOULD declare sflo:hasArtifactResolutionMode unless exact target coordinates make the source state obvious.";
sh:select "PREFIX sflo: <https://semantic-flow.github.io/sflo/ontology/>\nSELECT $this WHERE {\n $this a sflo:ExtractionSource .\n FILTER NOT EXISTS { $this sflo:hasArtifactResolutionMode ?mode }\n FILTER NOT EXISTS { $this sflo:hasRequestedTargetState ?state }\n FILTER NOT EXISTS { $this sflo:hasTargetLocatedFile ?file }\n FILTER NOT EXISTS { $this sflo:expectsContentDigest ?digest }\n}";
sh:severity sh:Warning.
|