Comments (8)
This could be the facts -
engine << [ "CompanyA", "offers", "serviceA" ]
engine << [ "CompanyB", "offers", "serviceB" ]
engine << [ "CompanyA", "offers", "serviceB" ]
engine << [ "CompanyB", "offers", "serviceC" ]
engine << [ "IncidentA", "requires", "serviceC" ]
engine << [ "IncidentA", "requires", "serviceA" ]
from wongi-engine.
One way of doing it:
q = engine.query( "demo" ) {
search_on :Incident
forall {
has :Incident, "requires", :Service
has :Company, "offers", :Service
}
}
engine.execute "demo", Incident: "IncidentA"
q.tokens.each do |token|
puts token[:Company]
end
from wongi-engine.
Or do you mean that a single company should satisfy all requirements?
from wongi-engine.
Thanks @ulfurinn. yes that's exactly it. It should satisfy all requirements i.e we need companies that offer all the services required by the Incident. Would love a pointer as to how I can do that :)
from wongi-engine.
In that case:
engine.query( "demo" ) {
search_on :Incident
forall {
has :Incident, "requires", :Service
has :Company, "offers", :Service
none {
has :Incident, "requires", :OtherService
neg :Company, "offers", :OtherService
}
}
}
Translated back into English, "if a company offers one of the services, there do not exist any other services that are required but not offered by the same company".
from wongi-engine.
Wow. That's awesome man. Thanks for this 👍
from wongi-engine.
@ulfurinn I understand now how to write these rules. But I still cant understand how I can use Rails models in place of these strings (services, incidents & companies). Do I just use a string representation of the model - like service_#{service.id}
?
Are there any best practices to load the facts into the engine? Initializing the engine in the app, etc.
from wongi-engine.
Any Ruby value with a sane implementation of operator ==
can be used inside fact triples, expect symbols with special meanings.
from wongi-engine.
Related Issues (20)
- Finding latest fact by date? HOT 1
- Overlays and Statement Generator do not appear to work together HOT 11
- Many rules matching only one subject
- How to use it to match some patterns and accordingly return a variable HOT 1
- any matcher question HOT 5
- Custom Action Class deexecute method seems not work HOT 1
- Dynamically add conditions to a rule
- raise ruleset xxx already exist error when multithreading is used HOT 2
- How to retract a fact upon matching action? HOT 1
- Get error when using none HOT 1
- Performance for loading facts (engine << [fact]) HOT 5
- what is the benefit of using Wongi HOT 1
- Help needed HOT 2
- Sometimes I got a `can't add a new key into hash during iteration` error HOT 1
- Minor documentation fixes HOT 2
- Explain "Collectors" in the documentation
- Issues with `Network#remove_production` HOT 1
- Using the output of an action in a generated fact HOT 4
- Examples don't work HOT 1
- What happened to engine.entity? HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from wongi-engine.