Appendix 1. How to get, install and run TROEPS


TROEPS is being developed on Sun SparcStations under SunOS 5.4 (a.k.a. Solaris). It runs and has been tested under SunOS 4.3 and Windows-NT; it can be ported to other platforms either by INRIA or by yourself by recompiling the sources. It can be used as a library linkable to other programs.
TROEPS has been developed with the standard Unix utility Lex, YACC (now replaced by FLex and Bison) and the Ilog TALK LISP compiler. It is thus made of a set of C programs that should be compilable with any C compiler as soon as Ilog TALK libraries are available. The knowledge servers use a small set of Java applet and should be used on any kind of platform on which it is possible to find a HTTP client.
Ilog TALK compiler and libraries are available from Ilog SA , 9 rue de Verdun, BP 85, 94253 Gentilly, France.

Getting TROEPS and its documentation

TROEPS and its documentation are available for public distribution under the term of the COPYRIGHT file provided with the distribution. They can be retrieved through anonymous ftp (file transfer protocol) on the machine under the names:
Our HTTP server provides various information (among which the latest release and the manual on-line). The URL are:

Do not hesitate to browse anywhere on our site (beginning with a lot of information about new developments is available there.

Installing TROEPS

TROEPS can be installed anywhere in your system provided that you follow the instructions below. Assume that TROEPS is installed in the directory TRDIR. The files can be obtained by:
$ gunzip
$ gunzip current.tar.gz | tar xf -
Let assume that TRDIR is stored in a variable $TRDIR and that there is a $PORTNAME variable. The content of the tar-file consists in the following files and directories:
the INRIA Copyright notice;
a simple but useful TROEPS mode for emacs;
contains some sample knowledge bases (useful for building your own);
is a sample C program calling TROEPS;
the help HTML files for the interface;
contains the set of .h files for using TROEPS from C;
the JAVA applets for the interface;
contains C sources and libraries for SunOS 4.3 port;
contains C sources and libraries for SunOS 5.4 (Solaris) port with the gnu compiler;
contains C sources and libraries for SunOS 5.4 (Solaris) port;
contains the TALK sources of TROEPS;
contains the C sources for analyser and hytropes cgi-script;
contains the test files for TROEPS;
is the workspace description file for using TROEPS under TALK;
is the workspace description file for T-TREE;
is the workspace description file for revision
is the workspace description file for using hypertext extensions.

Running TROEPS under the TALK interpreter

In order to use it, it is only required that the installation directory be in the path. This can be achieved by the following assertion:

(pushf (workspace-path) #f"$TRDIR")
(in-workspaces '(trpws))

which can be typed either in your .talkrc file, in another file that you load or an italk tty input. The following sample session shows a way to use TROEPS at the interactive toplevel of Ilog TALK:

$ italk
;;; ILOG Talk version 3.3 [sparc_5_gnu]
;;; Copyright (c) 1989-1997 by ILOG
;;; Write to for help
;;; Image saved on Fri Jul  4 19:26:59 1997
;;; Connecting to Emacs server...connected.
;;; Loading workspace 'talk': Ilog Talk kernel workspace
;;; Loading workspace 'trp': Troeps development workspace
;;; Loading workspace 'trt': Troeps taxonomy building tool workspace
;;; Loading workspace 'htrp': Troeps knowledge server development workspace
;;; Loading workspace 'divers': executables and utility files workspace
;;; Welcome to ILOG Talk.
;;; Type (exit) to leave Talk.
? (load-program-unit 'libtrl)
;;; Loading library 'libtrl': Troeps textual interface
;;; Loading run-time environment of 'libtrl': (libtrp)
;;; Loading library 'libtrp': The core Troeps library
;;; Loading object file "/home/lotse/sherpa/TROPES.0/src/sparc_5_gnu/lib/"
;;; Loading object file "/home/lotse/sherpa/TROPES.0/src/sparc_5_gnu/lib/"
= libtrl
? (load-program-unit 'trtdum)
;;; Loading module 'trtdum': Troeps dummy basic type descriptions
;;; Loading object file "/home/lotse/sherpa/TROPES.0/src/sparc_5_gnu/o/trtdum.o"
= trtdum
? (tr-init)
= t
? (setf (languages) '(french english))
= (french english)
? (tr-load-base #f"examples/real-estate.bdf")
= t
? (setf co (tr-find-concept "house"))
= (tr-concept "house")
? (setf ob (tr-find-object co '("rue Monge" 3 2)))
= (tr-object (tr-concept "house") '("rue Monge" 3 2 ))
? (tr-get-value ob "surface")
= 45.
? (exit)

Running TROEPS as a WWW server

See the "Knowledge server" part.

Editing knowledge bases under emacs

A simple TROEPS mode is available under emacs (emacs 19 or above) when you add the following line in your .emacs:
(load-file "$TRDIR/emacs/troeps-emacs.elc")
The mode is triggered by files with .bdf and .idf extensions. It provides a very useful "fontification" of knowledge bases (colouring or changing fonts of keywords, strings... on the fly) and a pop-up menu allowing to insert a new frame (new concept, new bridge...) in a base.

Recompiling the TROEPS libraries

This feature is not available yet (except if you do it under the TALK environment in which case you should refer to the Ilog TALK manual).

Using the TROEPS libraries

TROEPS extension is programmed in Ilog TALK. However, it can be used from an alien language (C, C++, etc.). For that purpose, TROEPS is supplied with several libraries ( libtrp, libtrl, libtrh, libtrr and libtrt) along with the corresponding include file ( trp.h, trl.h) which enables its use from these languages. Some slight changes with regard to the manual must be observed:
An example of C file using TROEPS is the following (which can be found under $TRDIR/examples/cmain):
#include <stdio.h>
#include <ctype.h>
#include <trp.h>
#include <trl.h>

#if defined(__STDC__) || defined(__cplusplus)
extern int IltInit(int argc, char** argv, char** envp);
extern int IltInit();

#if defined(__STDC__) || defined(__cplusplus)
int main(int argc, char** argv, char** envp)
int main(argc, argv, envp)
int argc; char **argv, envp;
  void *ob, *co;
  double *surf;

  void** vector_concept_views;

  IltInit(argc, argv, envp);
  co = tr_find_concept(TR_STR("house"));
  ob = tr_find_object(co, TR_CONS( TR_STR("rue Monge"),
                                   TR_CONS( TR_INT(3),
                                            TR_LIST( TR_INT(2)))));
  vector_concept_views = TR_VECTOR(0);
  surf = tr_get_value(ob, TR_STR("surface"), vector_concept_views);
  printf("%.2f is the value of the surface of %s.\n",
         *surf, ilt_string(ob));
It can be compiled through the following Makefile:

# edit this variable for computing
CLIBS= -lnsl -lm -ldl

all: once Makefile

${PORTNAME}/o/pgm.o: ${INC}/trp.h ${INC}/trl.h pgm.c Makefile
        cc -g -c -PIC  pgm.c -I$(ILTINC) -I$(INC) -o ${PORTNAME}/o/pgm.o

${PORTNAME}/bin/pgm: ${PORTNAME}/o/pgm.o ${TRELAB} $(MODULO)  Makefile
        cc -PIC -o ${PORTNAME}/bin/pgm \
				-L$(LDDIR) -L${ILT_DIR}/lib/${PORTNAME} \
				${PORTNAME}/o/pgm.o ${TRELAB} $(MODULO) \
           	-ltrp -ltrl -ltrt -ltrh -l trr -liltcrt -liltrt -lilteval $(CLIBS)

once: ${PORTNAME}/bin/pgm
The elaboration of the program takes a while for saving an image of the resulting state. You can now call your program by ${PORTNAME}/bin/pgm.

Reporting bugs/getting advice

This can be done preferably through mail to