PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfconnect: <https://w3id.org/rdf-connect#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>

rdfconnect:Processor a rdfs:Class ;
  rdfs:label "Processor"@en ;
  rdfs:comment "A processing unit that performs an action within a pipeline."@en ;
  rdfs:subClassOf <http://www.w3.org/ns/prov#Activity> .

rdfconnect:implementationOf a rdf:Property ;
  rdfs:label "implementation of"@en ;
  rdfs:comment "Abstract property that conveys the implementation language of a processor."@en ;
  rdfs:domain rdfconnect:Processor ;
  rdfs:range rdfconnect:Processor .

rdfconnect:Writer a rdfs:Class ;
  rdfs:label "Writer"@en ;
  rdfs:comment "A component that handles output data from a processor."@en .

<http://www.w3.org/ns/prov#SoftwareAgent> a rdfs:Class .

<http://www.w3.org/ns/prov#Activity> a rdfs:Class .

<http://xmlns.com/foaf/0.1/Person> a rdfs:Class .

rdfconnect:ExecutionContext a rdfs:Class ;
  rdfs:label "Execution Context"@en ;
  rdfs:comment "Entity that defines an execution context used by a pipeline, which is composed by a runner and a set of processor instances."@en .

rdfconnect:instantiates a rdf:Property ;
  rdfs:label "instantiates"@en ;
  rdfs:comment "Declares the runner instance used in an execution context."@en ;
  rdfs:domain rdfconnect:ExecutionContext ;
  rdfs:range rdfconnect:Runner .

rdfconnect:processor a rdf:Property ;
  rdfs:label "processor"@en ;
  rdfs:comment "Declares a processor instance used in an execution context, part of a pipeline."@en ;
  rdfs:domain rdfconnect:ExecutionContext ;
  rdfs:range rdfconnect:Processor .

rdfconnect:Runner a rdfs:Class ;
  rdfs:label "Runner"@en ;
  rdfs:comment "An agent responsible for executing processors based on specific implementations."@en ;
  rdfs:subClassOf <http://www.w3.org/ns/prov#SoftwareAgent> .

rdfconnect:handlesSubjectsOf a rdf:Property ;
  rdfs:label "handle subjects of"@en ;
  rdfs:comment "The property that defines which type of processors a runner can handle, typically linked to a specific implementation property."@en ;
  rdfs:domain rdfconnect:Runner ;
  rdfs:range <https://w3id.org/linkml/Any> .

rdfconnect:CommandRunner a rdfs:Class ;
  rdfs:label "Command Runner"@en ;
  rdfs:comment "A runner that executes processors via shell commands."@en ;
  rdfs:subClassOf rdfconnect:Runner .

<https://w3id.org/linkml/Any> a rdfs:Class ;
  rdfs:comment "An unconstrained type or object"@en .

rdfconnect:Reader a rdfs:Class ;
  rdfs:label "Reader"@en ;
  rdfs:comment "A component that provides input data to a processor."@en .

<http://www.w3.org/ns/prov#Entity> a rdfs:Class .

rdfconnect:Pipeline a rdfs:Class ;
  rdfs:label "Pipeline"@en ;
  rdfs:comment "A sequence of processors and runners forming a data processing workflow."@en ;
  rdfs:subClassOf <http://www.w3.org/ns/prov#Entity> .

rdfconnect:consistsOf a rdf:Property ;
  rdfs:label "consists of"@en ;
  rdfs:comment "Relates a pipeline to an execution context (runner and processors) it uses."@en ;
  rdfs:domain rdfconnect:Pipeline ;
  rdfs:range rdfconnect:ExecutionContext .

rdfconnect:class a rdf:Property ;
  rdfs:label "class"@en ;
  rdfs:comment "The class name of a processor. Applicable for any object-oriented programming language."@en ;
  rdfs:range xsd:string .

rdfconnect:command a rdf:Property ;
  rdfs:label "command"@en ;
  rdfs:comment "Shell command used by an orchestrator to execute a runner instance."@en ;
  rdfs:range xsd:string .

rdfconnect:entrypoint a rdf:Property ;
  rdfs:label "entrypoint"@en ;
  rdfs:comment "The folder location of the main script or module entry point of a JavaScript processor."@en ;
  rdfs:range xsd:anyURI .

rdfconnect:file a rdf:Property ;
  rdfs:label "file"@en ;
  rdfs:comment "The file name containing the processor logic of a JavaScript processor."@en ;
  rdfs:range xsd:anyURI .

rdfconnect:jar a rdf:Property ;
  rdfs:label "jar"@en ;
  rdfs:comment "Path to the JAR file containing the processor logic of a Java processor."@en ;
  rdfs:range xsd:anyURI .

rdfconnect:javaImplementationOf a rdf:Property ;
  rdfs:label "Java Implementation Of"@en ;
  rdfs:comment "Indicates that a processor is implemented in Java and is a specialization of implementationOf."@en ;
  rdfs:range xsd:string ;
  rdfs:subPropertyOf rdfconnect:implementationOf .

rdfconnect:jsImplementationOf a rdf:Property ;
  rdfs:label "JavaScript Implementation Of"@en ;
  rdfs:comment "Indicates that a processor is implemented in JavaScript and is a specialization of implementationOf."@en ;
  rdfs:range xsd:string ;
  rdfs:subPropertyOf rdfconnect:implementationOf .

rdfconnect:module_path a rdf:Property ;
  rdfs:label "module path"@en ;
  rdfs:comment "The module path of a processor implemented in Python."@en ;
  rdfs:range xsd:string .

rdfconnect:pyImplementationOf a rdf:Property ;
  rdfs:label "Python Implementation Of"@en ;
  rdfs:comment "Indicates that a processor is implemented in Python and is a specialization of implementationOf."@en ;
  rdfs:range xsd:string ;
  rdfs:subPropertyOf rdfconnect:implementationOf .
