$Id: README 3167 2009-11-16 10:50:26Z josd $

Euler is an inference engine supporting logic based proofs. It is a backward-chaining reasoner
enhanced with Euler path detection. It has implementations in Java, C#, Python, Javascript and Prolog.
Via N3 it is interoperable with W3C Cwm.


Installation of Euler
---------------------

When you use SVN see http://sourceforge.net/svn/?group_id=77046
and checkout modules 2004/01swap, 2005/11swap and 2006/02swap in EULER_SVNDIR

Stable file releases of the eulersharp package can be downloaded from
http://sourceforge.net/project/showfiles.php?group_id=77046
or the latest version can be downloaded from 
http://eulersharp.sourceforge.net/2004/01swap/deployment/Euler.zip
and extract the downloaded file to EULER_INSTALLDIR.


Just running Euler via command line
-----------------------------------

Current engine

Eye - Euler Yap engine
Install Yap platform plus wget network utility and make sure that both are in the PATH environment variable
For Windows there is a self extracting executable including yap and wget (run and add C:\Progra~1\Eye\bin to the PATH).
Usage: eye <options>* <data>* <query>
eye
	yap -l euler.yap -g main --
	java -cp Euler.jar euler.Eye [--ttl <time to live in msec>] [--path <yap path>]
<options>
	--nope			no proof explanation
	--no-branch		no branch engine
	--no-blank		no blank nodes in output
	--quiet			incomplete e:falseModel explanation
	--quick			do not prove all e:falseModel
	--think			generate e:consistentGives
	--step <count>		set maximimum step count (default 500000)
	--plugin <yap_resource>	plugin yap_resource
	--debug			output debug info
	--profile		output profile info
	--version		show version info
	--help			show help info
<data>
	<n3_resource>
	--trules <n3_resource>
<query>
	--query <n3_resource>
	--tquery <n3_resource>
	--pass


Aternative engines

EyeS - Euler Yap engine for SWI-Prolog
Install SWI-Prolog platform and make sure that plcon is in the PATH environment variable
Usage: eyes <options>* <data>* <query>
eyes
	plcon -q -g [eyes],main --
	java -cp Euler.jar euler.Eyes [--ttl <time to live in msec>]
<options>
	--nope			no proof explanation
	--no-branch		no branch engine
	--no-blank		no blank nodes in output
	--quiet			incomplete e:falseModel explanation
	--quick			do not prove all e:falseModel
	--think			generate e:consistentGives
	--step <count>		set maximimum step count (default 500000)
	--debug			output debug info
	--version		show version info
	--help			show help info
<data>
	<n3_resource>
	--trules <n3_resource>
<query>
	--query <n3_resource>
	--tquery <n3_resource>
	--pass

EyeJ - Euler Yap engine for JLog
Usage: java -cp Euler.jar euler.ProofEngine <options>* <data>* <query>
<options>
	--nope			no proof explanation
	--no-branch		no branch engine
	--quiet			incomplete e:falseModel explanation
	--quick			do not prove all e:falseModel
	--think			generate e:consistentGives
	--help			show help info
<data>
	<n3_resource>
	--trules <n3_resource>
<query>
	--query <n3_resource>
	--tquery <n3_resource>
	--pass


Previous engines

Euler Java version: install JVM platform and either add
EULER_SVNDIR/2004/01swap/bin/Euler.jar or EULER_INSTALLDIR/bin/Euler.jar
to the CLASSPATH
Some additional jar files might be required in the CLASSPATH
 o RDF/XML support requires JENA_INSTALLDIR/lib jar files
 o XSD support requires http://eulersharp.sourceforge.net/2004/01swap/lib/xercesImpl.jar
 o SQLite support requires http://eulersharp.sourceforge.net/2004/01swap/lib/sqlitejdbc-v053.jar
Usage: java euler.EulerRunner <options> [--rules|--trules] uris --query|--tquery uri
options:
  --prolog          translate to prolog
  --prolog-bchain   translate to prolog backchain-only
  --sem             translate to SEM
  --sql             translate to SQL
  --pass            pass-thru the N3
  --json            translate to JSON
  --prover9         translate to prover9
  --nope            no proof explanation
  --nobe            no belief explanation
  --nefq            no ex falso quodlibet
  --think           give all solutions
  --step count      maximum number of reasoning steps
  --debug           output debug info via stderr
  --trace           output trace info via stderr
  --test            output test run
  --test-as         output test run as service
  --profile         enable profiling
  --help            show help

Euler2 C# version: install .NET platform and either add
EULER_SVNDIR/2004/01swap/bin/Release/Euler.exe or EULER_INSTALLDIR/bin/Release/Euler.exe to the PATH
Usage: mono Euler.exe [--step count] [--debug] [--trace] uris [--nope] [--think] --query uri

Euler3 Python version: install Python platform
Start Codd webizer service as described in "Just running Euler via RESTfull webservice"
Usage: java euler.EulerRunner --pass --test-as [--why] [--once] [--debug] uris --query uri

Euler4 Javascript version: install Javascript platform
Start Codd webizer service as described in "Just running Euler via RESTfull webservice"
Usage: java euler.EulerRunner --json --test-as uris --query uri

Euler5 SWI-Prolog version: install SWI-Prolog platform
For Windows add SWI_INSTALLDIR\pl\bin to PATH environment variable
For Linux sudo ln -s /usr/local/bin/pl /usr/local/bin/plcon
Start Codd webizer service as described in "Just running Euler via RESTfull webservice"
Usage: java euler.EulerRunner --prolog|--prolog-bchain|--sem --test-as  [--nope] [--nobe] [--nefq] [--rules|--trules] uris --query|--tquery uri


Just running Euler via RESTfull webservice
------------------------------------------

This is done as "webized command line" so same steps as above and
start the Codd webizer in EULER_DATADIR as
java euler.Codd
  --chatty 0 is the default and use up to 99 to get more debug info
  --port 80 is the default and check when the webizer starts with e.g.
    20 Oct 2006 19:18:07 GMT http://yourhost.yourdomain:80/ Codd 1.5.34
  --properties ./codd.properties is the default and check its contents

The configuration is done in EULER_DATADIR/codd.properties like for instance
http://eulersharp.sourceforge.net/2004/01swap/codd.properties

Following examples work as mapped services
  o http://localhost/medService?WHO=Ann
  o http://localhost/medic?why=think

or as straight webized command lines
  o http://localhost/.cwm+http%3A%2F%2Fwww.agfa.com%2Fw3c%2Feuler%2FmedP.n3+http%3A%2F%2Fwww.agfa.com%2Fw3c%2Feuler%2Frpo-rules.n3+-think+-filter%3Dhttp%3A%2F%2Fwww.agfa.com%2Fw3c%2Feuler%2FmedF.n3+-why
  o http://localhost/.euler5as+--prolog+http%3A%2F%2Fwww.agfa.com%2Fw3c%2Feuler%2Fmedic.n3+--query+http%3A%2F%2Fwww.agfa.com%2Fw3c%2Feuler%2FmedicF.n3

For all the tests run via Codd.java which uses Process.java to wrap
Yap, Cwm, SWI-Prolog, prover9, etc. To the external world it is then
also a primitive webservice (a URI standing for a set of N3 triples).