API design for rule program analyses and/or transformations
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 291
- Forks
- 21
- PR merge metrics
- No merged PRs in 30d
Description
Besides materialisation, there are many further things that one can do with a given logic program, such as running acyclicity checks #610, but also program transformations of various kinds can be conceived. The common aspect of these actions is that there is a rather large number of them, and that there can always be some more in the future. This raises some software design issues:
- Implementations for the various actions should be as modular as possible, without traces of action-specific code or data in the regular objects.
- It has to be thought through how to make these actions available in the API. Currently, we are having a reasoner object as the main entry point for calling materialisation, but we should not have a method for every possible action in this struct.
- Some way for making such actions accessible through the command-line needs to be designed, again in a somewhat modular fashion.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the reasoner object and its current materialisation entry point, then review how the proposed rule-program actions could remain modular. Consider the API and command-line access together, including how future analyses and transformations can be added without action-specific data in regular objects. Done means the design addresses all three concerns: modular implementations, extensible API access, and modular CLI access.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- api, backend, cli
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100