Skip to content

Navigation Menu

Sign in
Sign up

Buisness rules evaluation - is this a valid use case for Graph Engine? #360

Unanswered
Discussion options

Hello,

I'm a seasoned .NET developer, but new to Graph Engine, and I find its design interesting. I'm having a hard time, however, finding examples of valid use cases for it. I'm aware of the Publications and Talks page, but it seems like there are no video recordings (a talk usually contains much more spoken content that is actually on the slides). And it doesn't help that there's Microsoft Graph, which renders searching for Microsoft Graph Engine almost impossible.

I have a use case in mind and would appreciate help validating whether GE is a good match. The use case is a business rules engine. The rules can be represented as a directed graph where leaves contain immediate values and all other nodes contain computed values, like so:

graph TD;
X-->W
Y-->W
Z-->W
W["W = f(X, Y, Z)"]
A-->C
B-->C
C["C = g(A, B)"]
W-->Q
C-->Q
Q["Q = h(C, W)"]
class X,Y,Z,A,B leaf;
classDef leaf fill:blue,color:white,stroke:black;
Loading

Blue nodes represent immediate values, while f, g, and h represent arbitrary scalar functions, preferably implemented in C#. Let's assume that:

  • the graph has ~50K nodes,
  • the number of incoming edges may vary from 1-100,
  • there are no cycles,
  • ~90% of nodes perform arbitrary computations to determine their accidental value.

If this is making any sense so far in terms of GE, how would I go about the following:

  1. Defining the graph and the computation functions.
  2. Introducing changes to the graph and the functions.
  3. Updating values of leafs.
  4. Accessing values of any nodes or sub-graphs originating from a single node.

Most important of all - would it work fast?

I understand it's a large question, but I'm not in a rush and am willing to wait for a well-thought answer 😄 Thanks in advance to whoever decides to answer.

You must be logged in to vote

Replies: 3 comments 3 replies

Comment options

What you describe is very doable with the GE without going into gross detail. Your approach is novel and quite different, as GE is a TSL-first design methodology. The TSL compiler creates a high-performance DSL projection of the TSL data and communications model. I have been developing using the GE for 6 years now and have used it to solve the following use-cases:

  • Workflow Engine
  • Rules Engine for OMG BPMN 2.0, CMMN and DMN
  • W3C RDF, RDFS, SKOS, OWL 2
  • Prolog Rule Productions
  • Ontology Knowledge Base and Knowledge Graphs with Rules
  • much more...
You must be logged in to vote
3 replies
Comment options

This is not an answer to your question - just a hint that what you want to do is possible. When I have more time and space, I'll come back to give you a proper answer. I have a growing queue of samples to provide where others have asked questions. It is sometimes hard to find the time when a start-up eats time, like breathing air.

Comment options

Tavi Truman (@TaviTruman) thanks a lot for using how little time you have to validate my idea. It's still quite rough, but knowing that it's a valid use case for GE I'll try and find some time for a POC. I'll also be glad to receive a more in-depth answer later.

Comment options

Paweł Baranowski (@PawelBaranowski) Hi. I just wanted to be in contact and let you know that I am working on production use cases that resemble much of what you described. I use a HyperGraph implementation to manage RBAC solutions in a set of Roles, Functions, Capabilities, and Dispositions. Isomorphic graph productions are managed via bijection and surjection functions as well as a host of domain rules. The GE can easily model the graph and there are several ways to implement a function. I have just started to use GUAN in the application of Prolog-like logic; I also use the GE/LIKQ and inject lambda expressions to influence the Fanoutsearch algorithm. In a few weeks, I will have a project to share.

Comment options

FYI - Microsoft Graph and the Microsoft Trinity Graph Engine are not related.

You must be logged in to vote
0 replies
Comment options

Paweł Baranowski (@PawelBaranowski) FYI - I will publish a sample GE App Server that demonstrates the problem you presented here in a couple of weeks here.

You must be logged in to vote
0 replies
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Category
Q&A
Labels
None yet

AltStyle によって変換されたページ (->オリジナル) /