We would love for you to contribute to ssb-consum-up and help make it even better than it is today!
Please contribute to this repository if any of the following is true:
- You have expertise in Semantic Web, Knowledge Graph Construction or RDF Stream Reasoning,
- You have expertise in message passing, functional programming, network protocols or reasoning systems,
- You want to contribute to the development of Semantic Web technologies and want to help lower the burden of managing complex technical systems.
Prerequisites:
- Knowledge of Semantic Web technologies, notably:
- Knowledge of stream processing / message broker platforms, notably the Apache Kafka platform.
- Knowledge of functional programming, notably the LISP programming language.
- Familiarity with pull requests and issues.
- Familiarity with test design and techniques.
- Knowledge of Markdown for editing
.md
documents.
In particular, we seek the following types of contributions:
- Testing & Validating: RDF streams have an intrinsic explainability characteristic thanks to annotated entities based on shared data models, which encourages to semantize data as soon as possible in the data processing tool chain. It is not clear however, from the data processing architecture, where stream reasoning modules should best stand, both in terms of performance, reasoning capabilities, distributed computing, and ease of management. Feedback on architectures and use-cases including the ssb-consum-up should help identify such decision boundaries and design templates (e.g. moving towards full Kappa architectures), particularly in terms of energy efficiency and network overhead.
- Improving & Extending: participate in making ssb-consum-up code smoother and more robust, for example by adding conditional SPARQL Update actions based on incoming metadata, enabling the processing of data payload with multiple target graph, enabling connection to SPARQL endpoints with authentication, adding multithreading or data buffering, etc.
When contributing, in the general case, please:
- fork and create merge request OR
- raise an issue into the project's space OR
- improve code based on in-code
TODO
notes or below features list.
See also the makefile
for development and testing purposes.
Must have features:
- Single graph from n-quad in JSON-LD message to SPARQL Update
- Multiple graphs from n-quad in JSON-LD message to SPARQL Update
- Single graph from triples in JSON-LD message to SPARQL Update
- Multiple graphs from triples in JSON-LD message to SPARQL Update
- SPARQL Update INSERT as default action
- SPARQL Update action based on incoming Kafka key JSON-LD parameters
- SPARQL Update to target named graph based on CLI parameters
- SPARQL Update to target named graph based on incoming Kafka JSON-LD graph value
- SPARQL Update to target named graph based on CLI parameters with override of the incoming Kafka JSON-LD graph value
- Automatic fall-back to CLI parametrized named graph and SPARQL UPDATE action when incoming Kafka key paramaters are missing
- Drop policy for non-compliant incoming messages
Nice to have features:
- LISP: reduce STYLE-WARNING (see SBCL manual)
- LISP: exception handling on no SPARQL endpoint
- LISP: light cl-json-ld load
- LISP: timeout feature for the infinite loop
- LISP: better logging
- SPARQL: handle end points that do not require the GRAPH clause for the default graph
- CI: test, build and publish binary
- Build generator
GitHub issues are the primary way for communicating about specific proposed changes to this project. Do not open issues for general support questions as we want to keep GitHub issues for bug reports and feature requests.
You may also contact the maintainers by e-mail for more specific purposes and questions.
In both contexts, please be kind and courteous. Language issues are often contentious and we'd like to keep discussion brief, civil and focused on what we're actually doing, not wandering off into too much imaginary stuff. Likewise any spamming, trolling, flaming, baiting or other attention-stealing behaviour is not welcome.
Useful references for development ...
- alexandria - a collection of portable public domain utilities
- cl-json-ld - a library that implements JSON-LD functionality
- librdkafka - the Apache Kafka C/C++ client library
- LISP: stevelosh/building-binaries
- LISP: Adopt
- LISP: Lisp Cookbook - Testing
- LISP: Lisp Lang - Continuous Integration
- Makefile: MakeFile tutorial
- GitLab: GitLab CI - generic packages