From 4c5a51d66697530d4fa83ef3ff2f03f2b470767b Mon Sep 17 00:00:00 2001 From: Julian Rojas Date: Fri, 2 Aug 2024 13:22:57 +0200 Subject: [PATCH] Generalize channel definitions --- rdf-connect-js.ttl | 338 +-------------------------------------------- rdf-connect.ttl | 337 +++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 342 insertions(+), 333 deletions(-) diff --git a/rdf-connect-js.ttl b/rdf-connect-js.ttl index 6426095..ce1dbf5 100644 --- a/rdf-connect-js.ttl +++ b/rdf-connect-js.ttl @@ -1,3 +1,4 @@ +@prefix rdf: . @prefix xsd: . @prefix rdfs: . @prefix sh: . @@ -41,78 +42,6 @@ rdfc-js:JSWriterChannel a rdfs:Class ; rdfs:comment "Writing end of a channel to which JavaScript processors can write/push in-memory data flows" ; dct:created "2024-08-01"^^xsd:date . -rdfc-js:JSFileChannel a rdfs:Class ; - rdfs:subClassOf rdfc:Channel ; - rdfs:label "JavaScript file channel" ; - rdfs:comment "A channel that enables file-based communication for JavaScript processors" ; - dct:created "2024-08-01"^^xsd:date . - -rdfc-js:JSFileReaderChannel a rdfs:Class ; - rdfs:subClassOf rdfc:ReaderChannel ; - rdfs:label "JavaScript file reader channel" ; - rdfs:comment "Reading end of a file channel from which JavaScript processors can read/listen to data flows" ; - dct:created "2024-08-01"^^xsd:date . - -rdfc-js:JSFileWriterChannel a rdfs:Class ; - rdfs:subClassOf rdfc:WriterChannel ; - rdfs:label "JavaScript file writer channel" ; - rdfs:comment "Writing end of a file channel to which JavaScript processors can write/push data flows" ; - dct:created "2024-08-01"^^xsd:date . - -rdfc-js:JSHttpChannel a rdfs:Class ; - rdfs:subClassOf rdfc:Channel ; - rdfs:label "JavaScript HTTP channel" ; - rdfs:comment "A channel that enables HTTP-based communication for JavaScript processors" ; - dct:created "2024-08-01"^^xsd:date . - -rdfc-js:JSHttpReaderChannel a rdfs:Class ; - rdfs:subClassOf rdfc:ReaderChannel ; - rdfs:label "JavaScript HTTP reader channel" ; - rdfs:comment "Reading end of an HTTP channel from which JavaScript processors can read/listen to data flows" ; - dct:created "2024-08-01"^^xsd:date . - -rdfc-js:JSHttpWriterChannel a rdfs:Class ; - rdfs:subClassOf rdfc:WriterChannel ; - rdfs:label "JavaScript HTTP writer channel" ; - rdfs:comment "Writing end of an HTTP channel to which JavaScript processors can write/push data flows" ; - dct:created "2024-08-01"^^xsd:date . - -rdfc-js:JSWebSocketChannel a rdfs:Class ; - rdfs:subClassOf rdfc:Channel ; - rdfs:label "JavaScript WebSocket channel" ; - rdfs:comment "A channel that enables WebSocket-based communication for JavaScript processors" ; - dct:created "2024-08-01"^^xsd:date . - -rdfc-js:JSWebSocketReaderChannel a rdfs:Class ; - rdfs:subClassOf rdfc:ReaderChannel ; - rdfs:label "JavaScript WebSocket reader channel" ; - rdfs:comment "Reading end of a WebSocket channel from which JavaScript processors can read/listen to data flows" ; - dct:created "2024-08-01"^^xsd:date . - -rdfc-js:JSWebSocketWriterChannel a rdfs:Class ; - rdfs:subClassOf rdfc:WriterChannel ; - rdfs:label "JavaScript WebSocket writer channel" ; - rdfs:comment "Writing end of a WebSocket channel to which JavaScript processors can write/push data flows" ; - dct:created "2024-08-01"^^xsd:date . - -rdfc-js:JSKafkaChannel a rdfs:Class ; - rdfs:subClassOf rdfc:Channel ; - rdfs:label "JavaScript Kafka channel" ; - rdfs:comment "A channel that enables Kafka-based communication for JavaScript processors" ; - dct:created "2024-08-01"^^xsd:date . - -rdfc-js:JSKafkaReaderChannel a rdfs:Class ; - rdfs:subClassOf rdfc:ReaderChannel ; - rdfs:label "JavaScript Kafka reader channel" ; - rdfs:comment "Reading end of a Kafka channel from which JavaScript processors can read/listen to data flows" ; - dct:created "2024-08-01"^^xsd:date . - -rdfc-js:JSKafkaWriterChannel a rdfs:Class ; - rdfs:subClassOf rdfc:WriterChannel ; - rdfs:label "JavaScript Kafka writer channel" ; - rdfs:comment "Writing end of a Kafka channel to which JavaScript processors can write/push data flows" ; - dct:created "2024-08-01"^^xsd:date . - ################################################################# # JavaScript Shapes ################################################################# @@ -130,10 +59,10 @@ rdfc-js:JSRunnerShape a sh:NodeShape ; sh:name "supports channel" ; sh:minCount 0 ; sh:class rdfc-js:JSChannel, - rdfc-js:JSFileChannel, - rdfc-js:JSHttpChannel, - rdfc-js:JSWebSocketChannel, - rdfc-js:JSKafkaChannel + rdfc:FileChannel, + rdfc:HttpChannel, + rdfc:WebSocketChannel, + rdfc:KafkaChannel ] . rdfc-js:JSProcessorShape a sh:NodeShape ; @@ -237,259 +166,4 @@ rdfc-js:WriterChannelShape a sh:NodeShape ; sh:maxCount 1 ; sh:minCount 1 ; sh:class rdfl:TypedExtract - ] . - -rdfc-js:JSFileChannelShape a sh:NodeShape ; - sh:targetClass rdfc-js:JSFileChannel ; - sh:property [ - sh:path rdfc:reader ; - sh:name "reader" ; - sh:maxCount 1 ; - sh:class rdfc-js:JSFileReaderChannel - ], [ - sh:path rdfc:writer ; - sh:name "writer" ; - sh:maxCount 1 ; - sh:class rdfc-js:JSFileWriterChannel - ] . - -rdfc-js:JSFileRWChannelShape a sh:NodeShape; - sh:targetClass rdfc-js:JSFileReaderChannel, rdfc-js:JSFileWriterChannel ; - sh:property [ - sh:path rdfc-js:filePath ; - sh:name "path" ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:datatype xsd:string ; - sh:description "Path of the used file" - ], [ - sh:path rdfc-js:fileOnReplace ; - sh:name "onReplace" ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:datatype xsd:boolean ; - sh:description "Boolean indicating if the files is always replaced, or appended to" - ], [ - sh:path rdfc-js:fileReadFirstContent ; - sh:name "readFirstContent" ; - sh:maxCount 1 ; - sh:datatype xsd:boolean ; - sh:description "Boolean indicating whether or not the initial content is also a message" - ], [ - sh:path rdfc-js:fileEncoding ; - sh:name "encoding" ; - sh:maxCount 1 ; - sh:datatype xsd:string ; - sh:description "The encoding used for the file" - ]. - -rdfc-js:JSHttpChannelShape a sh:NodeShape ; - sh:targetClass rdfc-js:JSHttpChannel ; - sh:property [ - sh:path rdfc:reader ; - sh:name "reader" ; - sh:maxCount 1 ; - sh:class rdfc-js:JSHttpReaderChannel - ], [ - sh:path rdfc:writer ; - sh:name "writer" ; - sh:maxCount 1 ; - sh:class rdfc-js:JSHttpWriterChannel - ] . - -rdfc-js:JSHttpChannelReaderShape a sh:NodeShape ; - sh:targetClass rdfc-js:JSHttpReaderChannel ; - sh:property [ - sh:path rdfc-js:httpEndpoint ; - sh:name "endpoint" ; - sh:maxCount 1 ; - sh:datatype xsd:string ; - sh:description "Used endpoint" - ], [ - sh:path rdfc-js:httpPort ; - sh:name "port" ; - sh:maxCount 1 ; - sh:datatype xsd:integer ; - sh:description "Used port" ; - ], [ - sh:path rdfc-js:binary ; - sh:name "binary" ; - sh:maxCount 1 ; - sh:datatype xsd:boolean ; - sh:description "Stream raw bytes if true" ; - ], [ - sh:path rdfc-js:waitHandled ; - sh:name "waitHandled" ; - sh:maxCount 1 ; - sh:datatype xsd:boolean ; - sh:description "Wait for handlers to be have handled the incoming message" - ], [ - sh:path rdfc-js:responseCode ; - sh:name "responseCode" ; - sh:maxCount 1 ; - sh:datatype xsd:integer ; - sh:description "Specify the expected response code (default 200)" - ] . - -rdfc-js:JSHttpChannelWriterShape a sh:NodeShape ; - sh:targetClass rdfc-js:JSHttpWriterChannel ; - sh:property [ - sh:path rdfc-js:httpEndpoint ; - sh:name "endpoint" ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:datatype xsd:string ; - sh:description "Used endpoint" - ], [ - sh:path rdfc-js:httpMethod ; - sh:name "method" ; - sh:minCount 1 ; - sh:maxCount 1 ; - sh:datatype xsd:string ; - sh:description "Used method" - ] . - -rdfc-js:JSWebSocketChannelShape a sh:NodeShape ; - sh:targetClass rdfc-js:JSHWebSocketChannel ; - sh:property [ - sh:path rdfc:reader ; - sh:name "reader" ; - sh:maxCount 1 ; - sh:class rdfc-js:JSWebSocketReaderChannel - ], [ - sh:path rdfc:writer ; - sh:name "writer" ; - sh:maxCount 1 ; - sh:class rdfc-js:JSWebSocketWriterChannel - ] . - -rdfc-js:JSWebSocketReaderChannelShape a sh:NodeShape ; - sh:targetClass rdfc-js:JSWebSocketReaderChannel ; - sh:property [ - sh:name "url" ; - sh:path rdfc-js:wsUrl ; - sh:datatype xsd:string ; - sh:maxCount 1 ; - sh:minCount 1 - ] . - -rdfc-js:JSWebSocketWriterChannelShape a sh:NodeShape ; - sh:targetClass rdfc-js:JSWebSocketWriterChannel ; - sh:property [ - sh:name "port" ; - sh:path rdfc-js:wsPort ; - sh:datatype xsd:integer ; - sh:maxCount 1 ; - sh:minCount 1 ; - ], [ - sh:name "host" ; - sh:path rdfc-js:wsHost ; - sh:datatype xsd:string ; - sh:maxCount 1 ; - sh:minCount 1 ; - ] . - -rdfc-js:JSKafkaChannelShape a sh:NodeShape ; - sh:targetClass rdfc-js:JSKafkaChannel ; - sh:property [ - sh:path rdfc:reader ; - sh:name "reader" ; - sh:maxCount 1 ; - sh:class rdfc-js:JSKafkaReaderChannel - ], [ - sh:path rdfc:writer ; - sh:name "writer" ; - sh:maxCount 1 ; - sh:class rdfc-js:JSKafkaWriterChannel - ] . - -rdfc-js:JSKafkaReaderChannelShape a sh:NodeShape ; - sh:targetClass rdfc-js:JSKafkaReaderChannel ; - sh:property [ - sh:path rdfc-js:kafkaTopic ; - sh:name "topic" ; - sh:minCount 1 ; - sh:maxCount 1 ; - sh:class rdfc-js:KafkaTopic ; - sh:description "Information about the used topic" - ], [ - sh:path rdfc-js:kafkaConsumer ; - sh:name "consumer" ; - sh:minCount 1 ; - sh:maxCount 1 ; - sh:class rdfc-js:KafkaConsumer ; - sh:description "Information about the kafka consumer" - ], [ - sh:path rdfc-js:kafkaBroker ; - sh:name "broker" ; - sh:minCount 1 ; - sh:maxCount 1 ; - sh:class rdfc-js:KafkaBroker ; - sh:description "Information about the kafka broker" - ] . - -rdfc-js:JSKafkaWriterChannelShape a sh:NodeShape ; - sh:targetClass rdfc-js:JSKafkaWriterChannel ; - sh:property [ - sh:path rdfc-js:kafkaTopic ; - sh:name "topic" ; - sh:minCount 1 ; - sh:maxCount 1 ; - sh:class rdfc-js:KafkaTopic ; - sh:description "Information about the used topic" - ], [ - sh:path rdfc-js:kafkaBroker ; - sh:name "broker" ; - sh:minCount 1 ; - sh:maxCount 1 ; - sh:class :KafkaBroker ; - sh:description "Information about the kafka broker" - ], [ - sh:path rdfc-js:kafkaProducer ; - sh:name "producer" ; - sh:minCount 1 ; - sh:maxCount 1 ; - sh:class rdfc-js:KafkaProducer ; - sh:description "Information about the kafka producer" - ] . - -rdfc-js:KafkaTopicShape a sh:NodeShape ; - sh:targetClass rdfc-js:KafkaTopic ; - sh:property [ - sh:path rdfc-js:topicName ; - sh:name "name" ; - sh:minCount 1 ; - sh:maxCount 1 ; - sh:datatype xsd:string ; - sh:description "Name of the topic" - ], [ - sh:path rdfc-js:topicFromBeginning ; - sh:name "fromBeginning" ; - sh:maxCount 1 ; - sh:datatype xsd:boolean ; - sh:description "Restart the topic from the beginning" - ] . - -rdfc-js:KafkaConsumerShape a sh:NodeShape ; - sh:targetClass rdfc-js:KafkaConsumer ; - sh:property [ - sh:path rdfc-js:groupId ; - sh:name "groupId" ; - sh:minCount 1 ; - sh:maxCount 1 ; - sh:datatype xsd:string ; - sh:description "Group identifier" - ]. - -rdfc-js:KafkaBrokerShape a sh:NodeShape ; - sh:targetClass rdfc-js:KafkaBroker ; - sh:property [ - sh:path rdfc-js:brokerHost ; - sh:name "hosts" ; - sh:minCount 1 ; - sh:datatype xsd:string ; - sh:description "Broker host to connect to" - ]. - -rdfc-js:KafkaProducerShape a sh:NodeShape ; - sh:targetClass rdfc-js:KafkaProducer . + ] . \ No newline at end of file diff --git a/rdf-connect.ttl b/rdf-connect.ttl index fa16a92..718ab8f 100644 --- a/rdf-connect.ttl +++ b/rdf-connect.ttl @@ -94,4 +94,339 @@ rdfc:writer a rdfs:Property ; rdfs:comment "Indicates the writer end of a channel" ; rdfs:domain rdfc:Channel ; rdfs:range rdfc:WriterChannel ; - dct:created "2024-08-01"^^xsd:date . \ No newline at end of file + dct:created "2024-08-01"^^xsd:date . + +################################################################# +# Channel types +################################################################# + +rdfc:FileChannel a rdfs:Class ; + rdfs:subClassOf rdfc:Channel ; + rdfs:label "File channel" ; + rdfs:comment "A channel that passes data among processors via files" ; + dct:created "2024-08-02"^^xsd:date . + +rdfc:FileReaderChannel a rdfs:Class ; + rdfs:subClassOf rdfc:ReaderChannel ; + rdfs:label "File reader channel" ; + rdfs:comment "Reading end of a file channel from which processors can read/listen to data flows" ; + dct:created "2024-08-02"^^xsd:date . + +rdfc:FileWriterChannel a rdfs:Class ; + rdfs:subClassOf rdfc:WriterChannel ; + rdfs:label "File writer channel" ; + rdfs:comment "Writing end of a file channel to which processors can write/push data flows" ; + dct:created "2024-08-02"^^xsd:date . + +rdfc:HttpChannel a rdfs:Class ; + rdfs:subClassOf rdfc:Channel ; + rdfs:label "HTTP channel" ; + rdfs:comment "A channel that enables HTTP-based communication for processors" ; + dct:created "2024-08-02"^^xsd:date . + +rdfc:HttpReaderChannel a rdfs:Class ; + rdfs:subClassOf rdfc:ReaderChannel ; + rdfs:label "HTTP reader channel" ; + rdfs:comment "Reading end of an HTTP channel from which processors can read/listen to data flows" ; + dct:created "2024-08-02"^^xsd:date . + +rdfc:HttpWriterChannel a rdfs:Class ; + rdfs:subClassOf rdfc:WriterChannel ; + rdfs:label "HTTP writer channel" ; + rdfs:comment "Writing end of an HTTP channel to which processors can write/push data flows" ; + dct:created "2024-08-02"^^xsd:date . + +rdfc:WebSocketChannel a rdfs:Class ; + rdfs:subClassOf rdfc:Channel ; + rdfs:label "WebSocket channel" ; + rdfs:comment "A channel that enables WebSocket-based communication for processors" ; + dct:created "2024-08-02"^^xsd:date . + +rdfc:WebSocketReaderChannel a rdfs:Class ; + rdfs:subClassOf rdfc:ReaderChannel ; + rdfs:label "WebSocket reader channel" ; + rdfs:comment "Reading end of a WebSocket channel from which processors can read/listen to data flows" ; + dct:created "2024-08-02"^^xsd:date . + +rdfc:WebSocketWriterChannel a rdfs:Class ; + rdfs:subClassOf rdfc:WriterChannel ; + rdfs:label "WebSocket writer channel" ; + rdfs:comment "Writing end of a WebSocket channel to which processors can write/push data flows" ; + dct:created "2024-08-02"^^xsd:date . + +rdfc:KafkaChannel a rdfs:Class ; + rdfs:subClassOf rdfc:Channel ; + rdfs:label "Kafka channel" ; + rdfs:comment "A channel that enables Kafka-based communication for processors" ; + dct:created "2024-08-02"^^xsd:date . + +rdfc:KafkaReaderChannel a rdfs:Class ; + rdfs:subClassOf rdfc:ReaderChannel ; + rdfs:label "Kafka reader channel" ; + rdfs:comment "Reading end of a Kafka channel from which processors can read/listen to data flows" ; + dct:created "2024-08-02"^^xsd:date . + +rdfc:KafkaWriterChannel a rdfs:Class ; + rdfs:subClassOf rdfc:WriterChannel ; + rdfs:label "Kafka writer channel" ; + rdfs:comment "Writing end of a Kafka channel to which processors can write/push data flows" ; + dct:created "2024-08-02"^^xsd:date . + +################################################################# +# Channel Shapes +################################################################# + +rdfc:FileChannelShape a sh:NodeShape ; + sh:targetClass rdfc:FileChannel ; + sh:property [ + sh:path rdfc:reader ; + sh:name "reader" ; + sh:maxCount 1 ; + sh:class rdfc:FileReaderChannel + ], [ + sh:path rdfc:writer ; + sh:name "writer" ; + sh:maxCount 1 ; + sh:class rdfc:FileWriterChannel + ] . + +rdfc:FileRWChannelShape a sh:NodeShape; + sh:targetClass rdfc:FileReaderChannel, rdfc:FileWriterChannel ; + sh:property [ + sh:path rdfc:filePath ; + sh:name "path" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:datatype xsd:string ; + sh:description "Path of the used file" + ], [ + sh:path rdfc:fileOnReplace ; + sh:name "onReplace" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:datatype xsd:boolean ; + sh:description "Boolean indicating if the files is always replaced, or appended to" + ], [ + sh:path rdfc:fileReadFirstContent ; + sh:name "readFirstContent" ; + sh:maxCount 1 ; + sh:datatype xsd:boolean ; + sh:description "Boolean indicating whether or not the initial content is also a message" + ], [ + sh:path rdfc:fileEncoding ; + sh:name "encoding" ; + sh:maxCount 1 ; + sh:datatype xsd:string ; + sh:description "The encoding used for the file" + ]. + +rdfc:HttpChannelShape a sh:NodeShape ; + sh:targetClass rdfc:HttpChannel ; + sh:property [ + sh:path rdfc:reader ; + sh:name "reader" ; + sh:maxCount 1 ; + sh:class rdfc:HttpReaderChannel + ], [ + sh:path rdfc:writer ; + sh:name "writer" ; + sh:maxCount 1 ; + sh:class rdfc:HttpWriterChannel + ] . + +rdfc:HttpChannelReaderShape a sh:NodeShape ; + sh:targetClass rdfc:HttpReaderChannel ; + sh:property [ + sh:path rdfc:httpEndpoint ; + sh:name "endpoint" ; + sh:maxCount 1 ; + sh:datatype xsd:string ; + sh:description "Used endpoint" + ], [ + sh:path rdfc:httpPort ; + sh:name "port" ; + sh:maxCount 1 ; + sh:datatype xsd:integer ; + sh:description "Used port" ; + ], [ + sh:path rdfc:binary ; + sh:name "binary" ; + sh:maxCount 1 ; + sh:datatype xsd:boolean ; + sh:description "Stream raw bytes if true" ; + ], [ + sh:path rdfc:waitHandled ; + sh:name "waitHandled" ; + sh:maxCount 1 ; + sh:datatype xsd:boolean ; + sh:description "Wait for handlers to be have handled the incoming message" + ], [ + sh:path rdfc:responseCode ; + sh:name "responseCode" ; + sh:maxCount 1 ; + sh:datatype xsd:integer ; + sh:description "Specify the expected response code (default 200)" + ] . + +rdfc:HttpChannelWriterShape a sh:NodeShape ; + sh:targetClass rdfc:HttpWriterChannel ; + sh:property [ + sh:path rdfc:httpEndpoint ; + sh:name "endpoint" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:datatype xsd:string ; + sh:description "Used endpoint" + ], [ + sh:path rdfc:httpMethod ; + sh:name "method" ; + sh:minCount 1 ; + sh:maxCount 1 ; + sh:datatype xsd:string ; + sh:description "Used method" + ] . + +rdfc:WebSocketChannelShape a sh:NodeShape ; + sh:targetClass rdfc:WebSocketChannel ; + sh:property [ + sh:path rdfc:reader ; + sh:name "reader" ; + sh:maxCount 1 ; + sh:class rdfc:WebSocketReaderChannel + ], [ + sh:path rdfc:writer ; + sh:name "writer" ; + sh:maxCount 1 ; + sh:class rdfc:WebSocketWriterChannel + ] . + +rdfc:WebSocketReaderChannelShape a sh:NodeShape ; + sh:targetClass rdfc:WebSocketReaderChannel ; + sh:property [ + sh:name "url" ; + sh:path rdfc:wsUrl ; + sh:datatype xsd:string ; + sh:maxCount 1 ; + sh:minCount 1 + ] . + +rdfc:WebSocketWriterChannelShape a sh:NodeShape ; + sh:targetClass rdfc:WebSocketWriterChannel ; + sh:property [ + sh:name "port" ; + sh:path rdfc:wsPort ; + sh:datatype xsd:integer ; + sh:maxCount 1 ; + sh:minCount 1 ; + ], [ + sh:name "host" ; + sh:path rdfc:wsHost ; + sh:datatype xsd:string ; + sh:maxCount 1 ; + sh:minCount 1 ; + ] . + +rdfc:KafkaChannelShape a sh:NodeShape ; + sh:targetClass rdfc:KafkaChannel ; + sh:property [ + sh:path rdfc:reader ; + sh:name "reader" ; + sh:maxCount 1 ; + sh:class rdfc:KafkaReaderChannel + ], [ + sh:path rdfc:writer ; + sh:name "writer" ; + sh:maxCount 1 ; + sh:class rdfc:KafkaWriterChannel + ] . + +rdfc:KafkaReaderChannelShape a sh:NodeShape ; + sh:targetClass rdfc:KafkaReaderChannel ; + sh:property [ + sh:path rdfc:kafkaTopic ; + sh:name "topic" ; + sh:minCount 1 ; + sh:maxCount 1 ; + sh:class rdfc:KafkaTopic ; + sh:description "Information about the used topic" + ], [ + sh:path rdfc:kafkaConsumer ; + sh:name "consumer" ; + sh:minCount 1 ; + sh:maxCount 1 ; + sh:class rdfc:KafkaConsumer ; + sh:description "Information about the kafka consumer" + ], [ + sh:path rdfc:kafkaBroker ; + sh:name "broker" ; + sh:minCount 1 ; + sh:maxCount 1 ; + sh:class rdfc:KafkaBroker ; + sh:description "Information about the kafka broker" + ] . + +rdfc:KafkaWriterChannelShape a sh:NodeShape ; + sh:targetClass rdfc:KafkaWriterChannel ; + sh:property [ + sh:path rdfc:kafkaTopic ; + sh:name "topic" ; + sh:minCount 1 ; + sh:maxCount 1 ; + sh:class rdfc:KafkaTopic ; + sh:description "Information about the used topic" + ], [ + sh:path rdfc:kafkaBroker ; + sh:name "broker" ; + sh:minCount 1 ; + sh:maxCount 1 ; + sh:class rdfc:KafkaBroker ; + sh:description "Information about the kafka broker" + ], [ + sh:path rdfc:kafkaProducer ; + sh:name "producer" ; + sh:minCount 1 ; + sh:maxCount 1 ; + sh:class rdfc:KafkaProducer ; + sh:description "Information about the kafka producer" + ] . + +rdfc:KafkaTopicShape a sh:NodeShape ; + sh:targetClass rdfc:KafkaTopic ; + sh:property [ + sh:path rdfc:topicName ; + sh:name "name" ; + sh:minCount 1 ; + sh:maxCount 1 ; + sh:datatype xsd:string ; + sh:description "Name of the topic" + ], [ + sh:path rdfc:topicFromBeginning ; + sh:name "fromBeginning" ; + sh:maxCount 1 ; + sh:datatype xsd:boolean ; + sh:description "Restart the topic from the beginning" + ] . + +rdfc:KafkaConsumerShape a sh:NodeShape ; + sh:targetClass rdfc:KafkaConsumer ; + sh:property [ + sh:path rdfc:groupId ; + sh:name "groupId" ; + sh:minCount 1 ; + sh:maxCount 1 ; + sh:datatype xsd:string ; + sh:description "Group identifier" + ]. + +rdfc:KafkaBrokerShape a sh:NodeShape ; + sh:targetClass rdfc:KafkaBroker ; + sh:property [ + sh:path rdfc:brokerHost ; + sh:name "hosts" ; + sh:minCount 1 ; + sh:datatype xsd:string ; + sh:description "Broker host to connect to" + ]. + +rdfc:KafkaProducerShape a sh:NodeShape ; + sh:targetClass rdfc:KafkaProducer . \ No newline at end of file