LarKC Workflow Description Language
The intention of this page is to serve as an entry point for discussions regarding the workflow description language used by the LarKC platform.
Workflow Description Language
There are still some questions which have to be discussed. Please add them here as needed.
Generally, we are utilizing blank nodes for instances of plugins. So triples like the following are used (the second example uses the abbreviation a for rdf:type):
_:p1 |
rdf:type |
urn:eu.larkc.plugin.transform.?TestTransformer |
_:p1 |
a |
urn:eu.larkc.plugin.identify.?TestIdentifier |
The following table lists predicates which may be used in a workflow description.
Note: This list is by no means complete or final. The work on the workflow description language is still ongoing so the used predicates may change frequently.
Predicate |
Domain |
Range |
Meaning |
larkc:pluginConnectsTo |
Plugin instance |
Plugin instance |
connects two plugins |
rdf:type |
Plugin instance |
Plugin type (plugin registry) |
defines the type of a plugin |
rdf:type |
Endpoint instance |
Endpoint type (mapping) |
defines the type of an endpoint |
larkc:sparqlQuery |
Plugin instance |
?SparqlQuery |
connects a SPARQL query to a specific plugin |
larkc:links |
Endpoint instance |
Path |
specifies to which path an endpoint is connected |
larkc:hasInput |
Path |
Plugin instance |
Defines the plugins where the query is given to when the specific path is called |
larkc:hasOutput |
Path |
Plugin instance |
Defines the plugins where the results can be retrieved when the specific path is called |
larkc:hasParameters |
Plugin instance |
Parameter set |
connects a plugin to its parameters (the parameters set is likey a blank node that becomes the subject of parameter statements) |
larkc:hasInputBehaviour |
Parameter set |
enum (one, n, all) |
defines for how many inputs the plugin instance is awaiting until it proceeds |
larkc:hasOutputBehaviour |
Parameter set |
enum (one, n, all) |
not yet used |
larkc:runsOn |
Parameter set |
URN where the plugin should be executed |
defines where the plugin should be executed |
larkc:isInputSplittable |
Parameter set |
boolean value |
defines if multiple instances of the plugin can run with subsets of the input |
larkc:query |
Parameter set |
Query |
connects a query to a specific plugin |
Example workflow in N3 format
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . @prefix larkc: <http://larkc.eu/schema#> . # Define four plug-ins _:plugin1 a <urn:eu.larkc.plugin.identify.TestIdentifier> . _:plugin2 a <urn:eu.larkc.plugin.identify.TestIdentifier> . _:plugin3 a <urn:eu.larkc.plugin.transform.TestTransformer> . _:plugin4 a <urn:eu.larkc.plugin.decider.TestDecider> . _:plugin5 a <urn:eu.larkc.plugin.decider.TestDecider> . # Connect the plug-ins _:plugin1 larkc:connectsTo _:plugin3 . _:plugin2 larkc:connectsTo _:plugin3 . _:plugin3 larkc:connectsTo _:plugin4 . _:plugin3 larkc:connectsTo _:plugin5 . # Define the plug-in parameter _:plugin3 larkc:hasParameter _:pp1 . _:pp1 larkc:hasInputBehaviour "1" . # Define a path to set the input and output of the workflow _:path1 a larkc:Path . _:path1 larkc:hasInput _:plugin1 . _:path1 larkc:hasOutput _:plugin4 . # Define a path to set the input and output of the workflow _:path2 a larkc:Path . _:path2 larkc:hasInput _:plugin2 . _:path2 larkc:hasOutput _:plugin5 . # Connect an endpoint to the path <urn:eu.larkc.endpoint.sparql.ep1> a <urn:eu.larkc.endpoint.sparql> . <urn:eu.larkc.endpoint.sparql.ep1> larkc:links _:path1 . # Connect an endpoint to the path <urn:eu.larkc.endpoint.sparql.ep2> a <urn:eu.larkc.endpoint.sparql> . <urn:eu.larkc.endpoint.sparql.ep2> larkc:links _:path2 .
