knowsys / knowsys/nemo

API design for rule program analyses and/or transformations

Open
#611 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

api program analysis question
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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.