InfraEngine User Manual (Draft)

InfraEngine is a working prototype of a Semantic Web engine that combines

The system runs as a Web server, providing a Web user interface. It is implemented in SWI Prolog. It is released under the GNU General Public License.

The system was originally written in 2002, the underlying planning system in 1999. It has been slightly revised and adapted to recent versions of SWI-Prolog in 2007.

Homepage:, Contact:

Related Documents


1. Installation

The system has been tested on Debian Linux and Mac OS-X platforms, details on requirements are shown in the table in Section 1.1. It should be possible to install the system analogously also on other Linux platforms and on Windows with Cygwin.

1.1 Required Further Software

Software Tested versions For Debian 4.0 “etch” For Mac OS-X 10.4 with Fink 0.8.1
SWI-Prolog 5.6.43
  1. Download the stable release of SWI-Prolog/XPCE for Linux (RPM package) from
  2. Convert the RPM package to a DEB package by calling alien as root, e.g.:
    # alien -v pl-5.6.40-290.i586.rpm
  3. Install the DEB package, e.g.:
    # dpkg -i pl_5.6.40-291_i386.deb
Download and install the stable release of SWI-Prolog/XPCE for MacOS X 10.4 from

Unfortunately version 5.6.43 seems to require a newer version of libXft.2.dylib than that provided by Apple. With Darwinports it can be installed by

$ sudo port install xft2

Version 5.6.40 works out of the box.

dot 1.16 and 2.8 Package graphviz Fink package graphviz
Arial and Courier-Bolds fonts for dot - Packages gsfonts and msttcorefonts Fink package msttcorefonts

The dot program must find the fonts. This requires that files arial.ttf and courier-bold.ttf are in the directory $DOTFONTPATH. A way to achieve this is by copying the two fonts to some directory:

$ mkdir ~/my-fonts-for-dot
$ cp /sw/lib/X11/fonts/msttf/arial.ttf ~/my-fonts-for-dot/
$ cp /sw/lib/X11/fonts/msttf/courbd.ttf ~/my-fonts-for-dot/courier-bold.ttf
and setting DOTFONTPATH e.g. by the following line in ~/.bash_profile:
export DOTFONTPATH="${HOME}/my-fonts-for-dot"
wget GNU Wget 1.10.2 Package wget Fink package wget
htpasswd unspecified Package apache2-utils Comes with OS-X as /usr/bin/htpasswd

1.2 Setting up the System

  1. Unpack the distribution archive. A directory infra is created.
    $ tar xzvf infra.tgz
  2. Move the infra directory to some place. Write access to the infra directory is not required. By default, the application assumes infra is placed directly in your home directory. If another location is used, set the environment variable INFRADIR, for example by a line like the following in ~/.bash_profile:
    export INFRADIR=/usr/local/software/infra
  3. Create the user specific directory ~/.infra with configuration files and stores for temporary data with the command
    $ infra/bin/
    This command creates a password file ~/.infra/passwd with an entry for a single user of the Web server interface of the system. The user name is by default the value of $USER, but can also be supplied as optional argument to The password is prompted by

    If ~/.infra already exists, then aborts without any effect.

    Configuration settings are in ~/.infra/config.rdf. This file can of course be manually adapted to specific needs.

2. Usage

2.1 Invocation

  1. Start the Web server with
    $ infra/bin/
    Optionally a port number can be given as argument to The default port is 2210.

  2. Open the root page of the server in a Web browser. For the default port, its URL is:

2.2 Password Protection

Access to the server is password protected as configured in a password file, which by default is ~/.infra/passwd. This is implemented with the basic method of the HTTP authentication of the SWI-Prolog HTTP support library.

3. Top Level Page Types

The following page types are accessible from the top level menu links. The Knowledgebase top level menu link indicate the current knowledgebase, to which the respective page refers. Namespace abbreviations in all of these page types link to a Namespaces page. A Knowledgebases page can be used to navigate to a different current knowledgebase.

Classes Page

Displays classes in the current knowledgebase, indendation indicating subclass relations. Class names link to the respective Class pages.

[See also: an example.]

[Deficiencies: Classes which are populated with direct instances should be indicated.]

Properties Page

Displays properties in the current knowledgebase, indendation indicating sub-property relations. Property names link to the respective Property pages.

[See also: an example.]

Namespaces Page

Displays namespace abbreviations defined in the current knowledgebase. Access to the Add Namespace command.

[See also: an example.]

Knowledgebases Page

[To be written; for now see this example.]

Queries Page

[To be written. For now see this example.]

Solutions Page

[To be written. For now see this example.]

Main Page

[To be written; for now see this example.]

4. Specialized Object Views

Class View

[To be written; for now see this example.]

Property View

[To be written; similar to the Class view.]

Knowledgebase View

[To be written; for now see this example.]

Query View

[To be written; for now see this example.]

Solution View

[To be written; for now see this example.]

5. Generic Object Views

Object View

[To be written; for now see this example.]

RDF View

[To be written; for now see this example.]


[To be written; for now see this example.]

Graph View

[To be written; for now see this example.]

6. Commands

The following operations can be invoked by Web forms on Command pages. Submission leads to a Result page reporting the outcome.

Create Knowledgebase Command

Create a knowledge base. The knowledge base is identified by an URI (or user:ID if namespace abbreviations are used), where ID is the value submitted to the Identifier field. The value of Comment is text that is associated with the knowledgebase with the rdfs:comment property.

Accessible from Main, Knowledgebases and Knowledgebase pages.

Delete Knowledgebase Command

Delete the current knowledgebase.

Accessible from Knowledgebase pages.

Add Documents Command

Add the triples of one or more specified RDF documents to a knowledgebase. The document is then associated with the knowledgebase via the property.

In some contexts, Newly Generated can be chosen as knowledgebase. A new knowledgebase is then created that contains just these triples.

Accessible from Knowledgebase pages and from the modified Web pages delivered by Browse the Web.

Browse the Web Command

Browse the Web through a proxy that decorates pages with headers that allow to perform Add Documents on RDF documents linked from them.

Accessible from Main and Knowledgebase pages.

[Deficiencies: A mouse-right menu entry on the link would be better than the header. Current implementation does not work with many web pages.]

Reload Documents Command

Clear the knowledgebase and add the triples from all RDF documents associated with the knowledgebase via the property.

Accessible from Knowledgebase pages.

[Deficiencies: Information added for example by the Add Namespace command gets lost. It should be clarified where this extra information is kept.]

Add Namespace Command

Add a namespace abbreviation for a URI prefix to the current knowledgebase. The abbreviation is then used to display objects from the knowledgebase. The URI form field is defaulted by suggestions inferred from the knowledgebase.

Accessible from Namespaces pages.

Christoph Wernhard (