we are designing a project that would listen to dialog between airport controllers and pilots to prevent runway incursions (eg. one airplane is taking off while other is crossing the runway). Our professor wants us to use Jena for knowledge base (or anything else but it should be some sort of rule-based engine). Inference is not t开发者_开发问答he main thing in Jena and there's not much documentation and examples of this. So we need an engine that would get messages from pilots as input and output possible risks of incursion or any other error in message protocol. It should be easy to write rules, and should be easy to provide engine with real time data.
I image it something like this:
- A pilot sends a message that he lands on some runway, the system remembers that the runway is busy and no one should cross it
- If someone is given an instruction to cross this runway, the engine should fire a rule that something is wrong
- When the pilot sends a message that he left the runway and goes to the gate, the system clears the runway and lets other planes to use it.
So is Jena, or prolog or any other rules engine suitable for this? I mean it is suitable, but do we really need to use it? I asked the prof. if we could just keep state of the runway and use some simple checks based on messages we receive and he said that it is not scalable and we need the knowledge base. Can someone give me any advise on which approach to use for this system? If you recommend k.b., then which one should we use? The project is written in java.
Thank you.
I would surely recommend ILOG JRULES for your needs. I have been using ILOG JRULES and am really impressed with its performance and accuracy.
Update: Then I would suggest to go for Drools also you might want to check Open Source Rule Engines in Java
A couple of colleagues at work really love the open source Drools.
You could use jena for this, but it's primarily an rdf toolkit. If you're not already using RDF, or familiar with it, then I'd look elsewhere.
Your case is interesting in that it sounds fairly dynamic. Forward chaining reasoners (like Drools) might not be the best choice, since update events will invalidate the deductions. Try something prolog-ish.
精彩评论