README

This version is OBSOLETED.

Please see new version.

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 EYE_HOME.

See also INSTALL.


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

Current engine

EYE - Euler Yet another proof Engine
Get the self contained Euler.jar or get the jar file from the maven repository.
This jar file includes a 32 bit version of YAP for Windows and Linux and for any other usage
install YAP + SWI-Prolog + wget network utility and make sure that they are in the PATH environment variable.

Usage: eye <options>* <data>* <query>*
eye
	java -jar Euler.jar[--no-install] [--swipl] [--yap]
	swipl -q -f euler.yap -g main --
	yap -q -f euler.yap -g main --
<options>
	--nope			no proof explanation
	--no-branch		no branch engine
	--no-blank		no blank nodes in output
	--no-qvars		no quantified variables in output
	--no-qnames		no qnames in output
	--no-span		no span control
	--quiet			incomplete e:falseModel explanation
	--quick-false		do not prove all e:falseModel
	--quick-possible	do not prove all e:possibleModel
	--quick-answer		do not prove all answers
	--think			generate all proof paths
	--ances			generate e:ancestorModel
	--step <count>		set maximimum step count
	--wcache <uri> <file>	to tell that uri is cached as file
	--tmp-file <file>	temporary file used by N3 Socket
	--wget-path <path>	the path followed by wget
	--ignore-syntax-error	do not halt in case of syntax error
	--n3p			output N3 P-code
	--image <file>		output PVM code
	--strings		output log:outputString objects
	--warn			output warning info
	--debug			output debug info
	--debug-cnt		output debug info about counters
	--debug-pvm		output debug info about PVM code
	--profile		output profile info
	--statistics		output statistics info
	--version		show version info
	--license		show license info
	--help			show help info
<data>
	<n3_resource>		N3 facts and rules
	--turtle <ttl_resource>	Turtle data
	--plugin <n3p_resource>	plugin N3 P-code
<query>
	--query <n3_resource>	output filtered with filter rules
	--pass			output deductive closure
	--pass-all		output deductive closure plus rules


Previous engines

Euler Java version: install JVM platform and either add
EULER_SVNDIR/2004/01swap/bin/Euler.jar or EYE_HOME/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
 o JSON support requires http://eulersharp.sourceforge.net/2004/01swap/lib/json.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 EYE_HOME/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 (the subdirectory that will be web exposed) 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).