@prefix rdfc: <https://w3id.org/rdf-connect#>.
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>.
@prefix sh: <http://www.w3.org/ns/shacl#>.
@prefix xsd: <http://www.w3.org/2001/XMLSchema#>.

rdfc:SPARQLIngest rdfc:jsImplementationOf rdfc:Processor;
  rdfs:label "SPARQL Ingest Processor";
  rdfs:comment "A processor that ingests RDF data into a SPARQL endpoint";
  rdfc:file <./lib/SPARQLIngest.js>;
  rdfc:class "SPARQLIngest";
  rdfc:entrypoint <./>.

[ ] a sh:NodeShape;
  sh:targetClass rdfc:SPARQLIngest;
  sh:property [
    sh:path rdfc:memberStream;
    sh:name "memberStream";
    sh:class rdfc:Reader;
    sh:minCount 1;
    sh:maxCount 1;
  ], [
    sh:path rdfc:ingestConfig;
    sh:name "config";
    sh:class rdfc:IngestConfig;
    sh:minCount 1;
    sh:maxCount 1;
  ], [
    sh:path rdfc:sparqlWriter;
    sh:name "sparqlWriter";
    sh:class rdfc:Writer;
    sh:maxCount 1;
  ].

[ ] a sh:NodeShape;
  sh:targetClass rdfc:IngestConfig;
  sh:property [
    sh:path rdfc:operationMode;
    sh:datatype xsd:string;
    sh:name "operationMode";
    sh:maxCount 1;
  ], [
    sh:path rdfc:memberBatchSize;
    sh:datatype xsd:integer;
    sh:name "memberBatchSize";
    sh:maxCount 1;
  ], [
    sh:path rdfc:memberShape;
    sh:datatype xsd:string;
    sh:name "memberShape";
    sh:maxCount 1;
  ], [
    sh:path rdfc:changeSemantics;
    sh:class rdfc:ChangeSemantics;
    sh:name "changeSemantics";
    sh:maxCount 1;
    sh:minCount 0;
  ], [
    sh:path rdfc:targetNamedGraph;
    sh:datatype xsd:string;
    sh:name "targetNamedGraph";
    sh:maxCount 1;
    sh:minCount 0;
  ], [
    sh:path rdfc:transactionConfig;
    sh:class rdfc:TransactionConfig;
    sh:name "transactionConfig";
    sh:maxCount 1;
    sh:minCount 0;
  ], [
    sh:path rdfc:graphStoreUrl;
    sh:datatype xsd:string;
    sh:name "graphStoreUrl";
    sh:maxCount 1;
    sh:minCount 0;
  ], [
    sh:path rdfc:forVirtuoso;
    sh:datatype xsd:boolean;
    sh:name "forVirtuoso";
    sh:maxCount 1;
    sh:minCount 0;
  ], [
    sh:path rdfc:accessToken;
    sh:datatype xsd:string;
    sh:name "accessToken";
    sh:maxCount 1;
    sh:minCount 0;
  ], [
    sh:path rdfc:measurePerformance;
    sh:class rdfc:PerformanceConfig;
    sh:name "measurePerformance";
    sh:maxCount 1;
    sh:minCount 0;
  ].

[ ] a sh:NodeShape;
  sh:targetClass rdfc:PerformanceConfig;
  sh:property [
    sh:path rdfc:name;
    sh:datatype xsd:string;
    sh:name "name";
    sh:maxCount 1;
    sh:minCount 1;
  ], [
    sh:path rdfc:outputPath;
    sh:datatype xsd:string;
    sh:name "outputPath";
    sh:maxCount 1;
    sh:minCount 1;
  ], [
    sh:path rdfc:failureIsFatal;
    sh:datatype xsd:boolean;
    sh:name "failureIsFatal";
    sh:maxCount 1;
    sh:minCount 0;
  ], [
    sh:path rdfc:queryTimeout;
    sh:datatype xsd:integer;
    sh:name "queryTimeout";
    sh:maxCount 1;
    sh:minCount 0;
  ].

[ ] a sh:NodeShape;
  sh:targetClass rdfc:ChangeSemantics;
  sh:property [
    sh:path rdfc:changeTypePath;
    sh:datatype xsd:string;
    sh:name "changeTypePath";
    sh:maxCount 1;
    sh:minCount 1;
  ], [
    sh:path rdfc:createValue;
    sh:datatype xsd:string;
    sh:name "createValue";
    sh:maxCount 1;
    sh:minCount 1;
  ], [
    sh:path rdfc:updateValue;
    sh:datatype xsd:string;
    sh:name "updateValue";
    sh:maxCount 1;
    sh:minCount 1;
  ], [
    sh:path rdfc:deleteValue;
    sh:datatype xsd:string;
    sh:name "deleteValue";
    sh:maxCount 1;
    sh:minCount 1;
  ].

[ ] a sh:NodeShape;
  sh:targetClass rdfc:TransactionConfig;
  sh:property [
    sh:path rdfc:transactionIdPath;
    sh:datatype xsd:string;
    sh:name "transactionIdPath";
    sh:maxCount 1;
    sh:minCount 1;
  ], [
    sh:path rdfc:transactionEndPath;
    sh:datatype xsd:string;
    sh:name "transactionEndPath";
    sh:maxCount 1;
    sh:minCount 1;
  ].

