title: A rule-based system in Java and C# environments
body: <p>I need to build a "rule-based" system that can be run and developed in both C# and Java (for a chemistry application). The system needs to be able to get computed properties of objects (through existing libraries) and make decisions on those values. I am not sure what the system will look like but the rules need not be formally consistent (we use a lot of heuristics). As far as possible the rules should be externalised so users and developers can modify them without needing to know about the engine (which should be Open Source and run on both platforms). It's possible that the system will be run through a restricted set of natural-language-like commands. There will be an element of adaptation - new objects (or at least vocabulary) can be added.</p>
  
  <p>This is not as hairy as it sounds - a great deal of progress was made over 30 years ago using FORTRAN but the field has lain fallow. I'd be grateful for pointers to approaches we could experiment with where the overhead of entry was modest. Among the approaches that might work are:</p>
  
  <ol>
  <li>Prolog</li>
  <li>OWL Ontologies</li>
  <li>Decision trees</li>
  <li>RULEML</li>
  <li>Text-based games</li>
  </ol>
  
  <p><strong>EDIT</strong> <strong>The primary aspect of the question is to find a rule-based system</strong> (the Java C# mention is secondary and was simply to prevent answers that might say "Windows has a built-in system".) Please do not answer with approaches to converting Java to C#; I  want a rule-based approach that - in principle - could be implemented on either. So far only one (or two) answers really addresses the rules aspect.</p>