Use a KIF like language (SUO-IEEE) to represent shared active episodic memories. Java, Prolog and Visual Basic libraries integrate with a first person VRML/MOO system to provide debugging and agent facilities.
Libraries are provided that you need to use SUO-KIF (Standard Upperlevel Ontology - Knowledge Interchange Format) and DAML (DARPA Agent Markup Language) content into an episodic simulation simulation of a virtual world first person VRML/MOO system. The programming languages used where Prolog, Java, and Visual Basic. Combining powerful tools: Microsoft Virtual Worlds and two Edinburgh style of Prologs SWI-Prolog/B-Prolog we can represent episodic models of memory, diagrams for belief engines, or fun 3D role playing games. SWI-Prolog is a stable, free, professional distribution of the prolog virtual machine and compiler. Microsoft Virtual Worlds provides a complementary graphical environment: It supports rapid prototyping of distributed multi-user applications of 3D virtual communities with streaming media and chat. But most importantly it supports a persistent, changeable world state that preserves object level information. B-Prolog is a recent addition thanks to work being done by Feng-Fa Zhou.
The
Virtual Worlds Group http://vworlds.research.microsoft.com
is an organization of individuals who are dedicated to helping
advance the body of research on online multi-user applications. The founding
members of this group are employees of Microsoft
Research and
have created a software platform that enables users to build these applications
and quickly prototype user interfaces. They have released the source code of the
Virtual Worlds software in conjunction with the binary builds in an effort to
actively foster research. The platform is very general purpose and, as such, can
be used to build almost any type of multi-user application. You don't have to
know C++; you should have a basic knowledge of scripting. Interface and object
behavior is programmable in languages like VBScript, Jscript, DHTML and now
available through the Prolog compiler.
PrologVirtualWorlds
Architecture Background
The Microsoft Virtual Worlds
Service is an object remote brokering system: It is based on
many clients and a server sharing references to instances. (COM/ActiveX
Objects)
PrologVirtualWorlds takes advantage of this by connecting
to virtual worlds as an (in)visible Avatar to programmatically alter objects and
invoke methods. It can create or remove properties, design new
methods, and manufacture new object types. Other agents may assist in work
and run from different machines or languages. An agent itself is an
object and can alter it's own interface members, or of others. The
server maintains the consistency of the objects and facilitates news that may
have affected an agent. This
allows us power beyond conventional object orientated programming.
A simple example of agent orientated
programming inside a Moo:
A Rain Agent that enters a room object and emotes that it is raining.
It then begins adding a 'wetness counter' property to each object in
the room. The longer it stays in the room the more it
increments. (This does not have any functional impact on the current workings of
the objects in the room)
Later
you may want to write another agent who enters the room called
'Sun Agent' who's duty is to look for objects that have the property 'wetness'
to decrement.
A third
agent called 'Common Cold' can go thru and look for both a 'health property' and
a 'wetness property' and then decide to alter the 'smile method' from emoting
'beaming smile' to 'tries to smile from behind a stuffed up nose'.
Why
is this important?
As
since all of these actions are moving thru representation terms (it can be
graphically depicted) another agent may in tandem try to analyze what had
just happened and build a 'story script' object. The properties of such a script
are in an action-level-ontology language the represents an instantiated
scene ('story script' objects have a method called replay). Since
information about the methods and properties were public at the time the system
may at later replay the scenario placing different objects in place of the
originals in a non-deterministic way.
Sometimes
we do not have all of the information to heuristically search for a given
situation. As we discover new facts, the situation we learn was not
correctly represented. Since the situation is persistable we can re-instantiate
the episode and put better-educated agents to the task of understanding.
This one day I hope will further our technology and searchablity of
'scenario' and will allow better rule styles to be designed.
Brokering
Model (sites
are not places on the internet they are memory spaces that the object
resides in)
Virtual
World Server Site |
It
holds the persistable objects and maintains the World Model Database.
The server system uses TCP and soon UDP to communicate to clients (Client
Site) about changes to the objects they are referencing. |
||||||
Virtual
World Client Site |
This
holds object interfaces shaped like the server objects. So they look
and act real to programmed code. When you invoke a method on an
object, a signal is sent to the server and it resolves the method to the
proper inheritance level. The correct code at the correct site is
then executed. If you expected a return object, it gives you a
proxy reference to the returned object. |
||||||
Prolog
Virtual Worlds Client Site |
|